How we secure your data
ReconLink is built for Australian accounting practices, which means we are entrusted with sensitive financial data. This page describes the controls we have in place and our roadmap for the controls we are still maturing.
Effective 20 May 2026 · Innovious Group Pty Ltd · ABN 59 637 038 754
Bank transaction data is among the most sensitive material an accounting practice handles. We treat it that way: encryption everywhere, strict multi-tenant isolation, least-privilege access, audit logging on every change, and a written incident response plan. This page reflects the controls in place at the effective date above. As our security posture matures (notably independent attestation), we will publish updates here.
1Hosting and architecture
1.1Where data lives
The primary PostgreSQL database is hosted on Supabase in the AWS Asia-Pacific region. We are currently completing a confirmed migration to AWS Sydney (ap-southeast-2), targeting completion by 30 May 2026. The FastAPI application and background workers run on Railway. Static assets are served via Vercel’s edge network. Contact security@reconlink.com.au for current migration status.
1.2Multi-tenant isolation
ReconLink is a multi-tenant SaaS. Each accounting practice is a tenant. We enforce tenant isolation in two independent layers:
- Database-level row-level security (PostgreSQL RLS) on every multi-tenant table — clients, bank accounts, transactions, coding rules, reconciliations, BAS worksheets and statement imports. The current practice identifier is set on every request via a tenancy middleware and the RLS policy prevents cross-practice reads or writes even if application code is misconfigured.
- Application-level scoping in services and API routes, with automated tests that verify a query cannot return data outside the calling practice’s scope.
1.3Source-document storage
Original PDFs, CSVs and Excel files uploaded as bank statements are stored in Supabase Storage under a content-addressed key with AES-256 encryption at rest. Access is mediated through short-lived signed URLs generated server-side; raw bucket access is not exposed to the browser.
2Encryption
- In transit: TLS 1.2 minimum across all public endpoints, HSTS enabled, modern cipher suites only. Internal service-to-service traffic over authenticated, encrypted channels.
- At rest: AES-256 on the database volume, on the storage bucket and on snapshot backups. Secrets and OAuth refresh tokens are stored with an additional column-level encryption layer using
pgcryptoor KMS-managed keys. - Passwords: hashed with bcrypt. Cleartext passwords are never logged or stored.
3Authentication and access control
3.1Customer authentication
ReconLink accounts are protected by email and password, with 15-minute access tokens and 7-day refresh tokens. Multi-factor authentication is on our roadmap for practice-administrator accounts and will be available via TOTP authenticator apps; it is currently in development and will become mandatory for admin roles once released.
3.2Internal access
ReconLink staff access to production systems is granted on a least-privilege basis. Access requires a unique individual identity (no shared accounts), is tied to named hardware keys for production secrets, and is logged. Routine engineering tasks run through ephemeral, audited tooling rather than long-lived interactive sessions.
3.3Role-based access
Within a practice workspace, users hold one of three roles (admin, accountant, view-only). Roles are enforced in the API layer and reflected in the database via audit-logged role changes. Client-portal users are scoped to a single client and cannot see practice-wide data.
4Audit logging
Every meaningful state change in the platform writes a row to the audit log: who, when, what entity, what changed, the request identifier and the user-agent. Audit log entries are immutable once written; they can be appended to but not retroactively edited. Exports of the audit log are available to practice administrators for their own records and incident investigations.
5Secure software development lifecycle
- Source code lives in a private repository with branch protection on the main branch and required code review for production changes.
- Dependencies are scanned continuously for known vulnerabilities. Critical-severity issues are remediated within 7 days; high within 30.
- Static analysis (mypy, eslint, type checks) and a full automated test suite run on every change before merge.
- Secrets are never committed; we use a managed secret store and pre-commit hooks that block secret-shaped strings.
- Production deploys are immutable, traced to a specific git commit, and reversible by re-deploying the prior revision.
6Logging, monitoring and alerting
We collect application, infrastructure and security logs into a central observability pipeline. Personally identifying information is scrubbed before logs leave the application boundary. Alerts fire to an on-call rotation for production errors, anomalous authentication patterns, rate-limit breaches and integrity failures (for example, a bank reconciliation that fails to balance to the imported statement).
7Incident response
We maintain a written incident response plan covering detection, triage, containment, eradication, recovery, customer communication and post-incident review. Where an incident gives rise to a notifiable data breach under Part IIIC of the Privacy Act 1988 (Cth), we will notify affected individuals and the OAIC as soon as practicable and in any event within the statutory timeframe. Customers are notified by email to workspace administrators.
8Third-party processors
The current list of sub-processors and the categories of data they handle is published in section 6 of our Privacy Policy. Each sub-processor has been assessed for its security posture and is contractually bound to handle data consistently with the Australian Privacy Principles.
9External assurance roadmap
Independent third-party penetration testing, SOC 2 Type II attestation and ISO/IEC 27001 certification are on our roadmap and will be commissioned as our team and customer base grow. We will publish updates to this page as each milestone is reached. In the meantime, the current control set and our planned assurance timeline can be discussed under NDA — reach us at info@reconlink.com.au.
10Customer responsibilities
The strongest controls we deploy depend on customers using the Service responsibly. We ask each practice to:
- Use unique, strong passwords for ReconLink and enable multi-factor authentication once available;
- Keep Authorised User accounts current — disable users who leave the practice promptly;
- Treat the per-client email inbox addresses as unguessable but not secret; if you suspect one has been shared, rotate it from the client’s settings page;
- Review the audit log periodically and report suspected unauthorised access to info@reconlink.com.au.
11Reporting a vulnerability
If you believe you have discovered a security vulnerability in ReconLink, please report it to info@reconlink.com.au with reproduction steps. We commit to acknowledging legitimate reports within two business days, keeping you informed during remediation, and not pursuing legal action against good-faith security research conducted in accordance with the principles of responsible disclosure.
