auditx

Security

Zero-manual-error architecture

AuditX is built so that a number can always be traced back to a document, and a document can always be traced back to an unbroken chain.

Encryption in transit and at rest

TLS 1.3 everywhere; documents encrypted at rest and served only through short-lived signed URLs.

Per-organisation isolation

Postgres row-level security keys every table to your organisation membership — no shared-tenant queries.

Secrets never reach the browser

Model keys and billing secrets live only in server-side functions. The client never sees a provider credential.

Immutable audit log

Every mutation appends sha256(previous_hash + payload). Break one row and the whole chain fails verification.

Role-scoped writes

Owner, Admin, Analyst and Viewer roles gate every mutation path, including tax-profile edits.

Deterministic math

FIFO, CGT bands and WHT are computed in unit-tested code. The model never produces a financial figure.

Hash-chain diagram

genesis
→
0x9f2a…c41d
→
0x71be…08aa
→
0x33c0…9e17
Verifiable client-side from /app/audit-trail

Compliance posture

SOC 2 Type II (in progress)GDPR-alignedPCI handled by Stripe

Data retention follows your plan: 90 days on Free, 2 years on Pro, 7 years on Enterprise. Deletion requests purge documents, extractions and derived ledger rows while preserving a tamper-evident deletion record.

Responsible disclosure

Found something? We triage security reports within one business day and reward valid findings that affect ledger integrity or tenant isolation.