Security and data handling

You are asking us to hold the contracts, delivery records and dispute correspondence that decide whether a balance is recoverable. Here is exactly how that is handled.

Tenant isolation

Every business record carries the workspace it belongs to, and every read is filtered by it inside the data-access layer rather than at the route. A record id guessed or copied from another workspace resolves to a 404, not to data. Mutating handlers re-assert ownership before they write.

  • Workspace id enforced on every query, not on the caller's honor
  • Cross-tenant reads fail closed as not-found
  • Record-scoped permissions layered on top of roles
  • Sessions bound to a single workspace and revocable centrally

Append-only audit

Authentication, record changes, evidence decisions, exports, settings changes and every automated action are written to an audit trail that is never updated or deleted. Reversing an automated action writes a new event; it does not erase the original.

  • Auth, record, evidence, export, settings, automation and external categories
  • Actor, timestamp, IP and structured metadata on every event
  • Automated actions store a plain-English reason they fired
  • Reversal is recorded as a new event, never as a deletion

External links

Your customers act without an account. That convenience is bounded: links are signed, purpose-scoped, time-limited and revocable, and only a keyed hash of the token is ever stored — a database read cannot reconstruct a working URL.

  • Only an HMAC of the token is persisted
  • Scoped to a single case and a single purpose
  • Expiry set at issue, revocable at any moment
  • Use count, last-used time and IP recorded

Files and uploads

Every document is screened before it is accepted, stored in private object storage encrypted at rest, checksummed and versioned. Nothing is served from a public URL: every download passes back through an authenticated, tenant-checked route. Superseding a document keeps the prior version — an evidence pack has to be reconstructable exactly as it stood on the day it was sent.

  • File-type allow-list and a hard size ceiling
  • Malware scan status carried on every item
  • Checksums and immutable version history
  • Rejected evidence stays on the record with its reason

Your data, exportable

Nothing here is designed to trap you. Any case exports as a self-contained evidence pack that opens in any browser a decade from now. The whole account exports as readable files whenever you ask, at no charge.

  • Evidence pack: single HTML file, no external assets
  • Invoices, cases and audit trail as CSV
  • Full account export on demand
  • Documented retention and deletion workflow

Access control

Four roles, mapped to how finance teams actually divide the work: account owner, supervisor, operator and auditor. Auditors read everything and change nothing, so you can give an external reviewer access without giving them the ability to alter a record.

  • Owner: billing, workspace and security settings
  • Supervisor: policies, workload, approvals and reporting
  • Operator: daily records, follow-up and resolution tasks
  • Auditor: read-only evidence and reporting
  • MFA for privileged users, configurable session lifetime

Encryption and continuity

Data is encrypted in transit and at rest. Backups are taken on a documented schedule and restoration is tested rather than assumed. Retention periods and the deletion workflow are written down and configurable per workspace, on a privacy-by-design basis: we hold the minimum needed to make a balance defensible, and no more.