Skip to main content

Security and data integrity

AI helps. It never bypasses the controls.

The database enforces the accounting rules, tenant isolation and the audit trail, so no one, including the AI, can route around them.

Sample data
A posted journal entry: its number, Posted status and settlement period, and on wider layouts the sole-approver notice with its date and total.
  1. Sole-approver attestation
  2. Link to the source

A posted journal entry and its settlement.

Security in four numbers

Debit-to-credit tolerance on every entry
±0.0001
Database constraint trigger
Window for the poster to un-post, while nothing downstream has used the entry
24 hours
Audit-logged exception
Lifetime of a signed link to a source document
10 min
Private document storage
Designed retention of posted entries and the audit log
11 yr
Retention design

AI controls

The AI is bound too.

It works through the same permissions as a bookkeeper, and what it drafts stays a draft until a person posts it.

  1. Your documents and settlements

    Amazon settlements, bank lines, invoices and receipts.

  2. AI reads, suggests, drafts

    Reads uploaded documents, suggests accounts and writes draft entries. Amazon settlements are composed by fixed rules, not by AI.

  3. The database checks

    Debits equal credits, the period is open, and the entry belongs to your books.

  4. A draft entry

    Nothing is posted yet.

  5. A person posts

    You approve, and the entry is locked.

One automatic rule: cost of goods

After you post a settlement's sale, its cost of goods posts by a fixed rule, not by AI, and only while every database check passes. It never touches a bank account, and you can switch it off in Settings.

  • A field read with under 85% confidence is held for your review. Under 60%, the document is retried with a stronger model first.
  • Text extracted from a document is treated as untrusted data, never as an instruction.
  • Every AI call has a token limit, a timeout and a cost ceiling, and a batch cannot exceed its hard cap.
  • Your data is not used to train models, by us or by the providers on our subprocessor list.

Control register

What the system guarantees, and how to check it

Each row names the control, what enforces it and where you can verify it. Search this page for any term.

  • Debits equal credits

    How it is enforced

    A constraint trigger on journal-entry lines checks that debits equal credits within ±0.0001 when the entry is committed. A write that breaks the rule is rejected, including a server-side one.

    How you can verify it

    In the sandbox, watch a settlement compose into an entry whose difference reads 0.00, then download the composed entry and add the columns yourself. The trigger definition is in the security pack.

    Check it yourself:Open the sandboxcomposed-entry.csvSample datatrial-balance.csvSample data

  • Posted entries are locked

    How it is enforced

    A guard trigger blocks edits to a posted entry and the delete policy refuses it. A correction is a reversal entry linked to the original. One audited exception: the person who posted an entry can un-post it within 24 hours, only while nothing downstream has used it.

    How you can verify it

    Open a posted entry. A reversal carries a badge and a link to its pair.

    Check it yourself:Open the sandbox

  • Exactly one automatic post: cost of goods

    How it is enforced

    After a person posts a settlement's sale, the cost of goods for that settlement posts by a fixed rule, not by AI, and only while every database check passes. The sale, the bank match and every other entry wait for a person. You can switch the rule off in Settings.

    How you can verify it

    In the sandbox, see the cost-of-goods entry that follows a posted sale. In the app, its audit row names the rule and records no approver.

    Check it yourself:Open the sandbox

  • Who approved it

    How it is enforced

    Dual control applies from two active users: the checker and the approver cannot be the preparer. A single-user account approves as sole approver, and every such post writes a permanent attestation to the audit log.

    How you can verify it

    Open a posted entry. The attestation appears on it, in English and Arabic.
  • Amazon access is Finance and Accounting only

    How it is enforced

    The connection asks Amazon for one role, Finance and Accounting, and nothing else. It cannot read inventory, advertising or buyer personal data, because the access we are approved for does not include them.

    How you can verify it

    Open the connect step in the capture below to see what you grant. You can review or withdraw the authorisation in your Amazon seller account at any time.

    Check it yourself:See the connect stepsample-settlement.txtSample data

  • Sign-in and multi-factor

    How it is enforced

    Sign in with email and password, or with an emailed sign-in link. Admin roles must enrol an authenticator app (TOTP) before their per-role enforcement window lapses; after that, admin pages redirect to enrolment. Sensitive pages already require a stepped-up, MFA-verified session for enrolled administrators. A stricter default window and database-boundary enforcement are staged rollouts.

    How you can verify it

    Open the account security page to enrol or review your authenticator.

    Check it yourself:See the security page

  • Tenant isolation

    How it is enforced

    Row-level security is enabled on every business table and keys on both your account and your books. Triggers reject a reference to another tenant's row before it commits.

    How you can verify it

    Request the policy listing from the security pack.
  • Append-only audit log

    How it is enforced

    Every workflow transition writes a row with the actor, the time and the previous and new state. Application roles can read the log; there is no insert, update or delete path from a user session. Rows are designed to be kept for 11 years.

    How you can verify it

    Open the audit log in the app, or any posted entry's history.
  • Source documents stay private

    How it is enforced

    Uploaded documents are held in private storage. Opening one makes the server re-check your tenant scope and issue a signed link that expires after 10 minutes.

    How you can verify it

    Open a source document from an entry, then reuse the link after 10 minutes.
  • Hosted in the EU

    How it is enforced

    The database and document storage run in Stockholm, Sweden. The extraction worker runs elsewhere in the EU. There is one production region.

    How you can verify it

    Every processor, what it does and where, is on the subprocessor list.

    Check it yourself:Subprocessor list

  • No bypass key in the browser

    How it is enforced

    The database key that bypasses row-level security exists only in server environments. It is never in client code, committed workflow files or prompts.

    How you can verify it

    Inspect the page's JavaScript. It contains no such key.
  • Encryption

    How it is enforced

    Provider-managed: our database and storage providers encrypt data at rest with AES-256, and traffic uses TLS 1.2 or later, with HSTS on the public domain.

    How you can verify it

    Check the provider documentation, or inspect the TLS certificate and the HSTS header.
  • Signed callbacks

    How it is enforced

    Billing, extraction-worker and OAuth callbacks verify signatures before they are processed. Each is keyed by event id and payload hash, so a replay does nothing.

    How you can verify it

    Request the callback handling notes from the security pack.
  • Our access to your books

    How it is enforced

    There is no log-in-as-customer path. Read-only incident access needs a written admin grant, expires after 24 hours and is audit-logged.

    How you can verify it

    The access-grant policy is in the security pack.

See it

The two screens behind the claims

Real captures of the product on sample data, not mock-ups.

Sample data
The connect Amazon step of onboarding.

Amazon access: Finance and Accounting only

The access you grant is the Finance and Accounting role. Nothing else is requested.

Back to the register row

Sample data
Account security page with multi-factor sign-in.

Sign-in with multi-factor

Admins enrol an authenticator app here. Sensitive pages ask for a stepped-up code once you are enrolled.

Back to the register row

Hosting and compliance

Where your data lives

One production region, named plainly.

Hosted in the EU
The database and document storage run in Stockholm, Sweden. The extraction worker runs elsewhere in the EU. There is one production region.
Backups
The managed database platform runs automated, encrypted backups. Off-region backup copies, document-bucket replication and quarterly restore drills are part of the general-availability hardening plan, stated here as the plan and not yet a certified current control.
Certifications
SOC 2 and ISO 27001 are targeted, not held. We show no certification badge.
Processors and your rights
Every processor, what it does and where, is listed in full on the subprocessor page. Your rights are in the privacy policy. A Data Processing Addendum is available on request.

Security pack for procurement

The data-processing addendum, the subprocessor list, the control descriptions and answers to your security questionnaire, in one request.

Report a vulnerability: security.txt

Request the security pack

Questions procurement asks

Straight answers

Do you train AI models on our data?
No. We do not opt customer extractions or chat history into any model-training pipeline, and our agreements with the providers on the subprocessor list prohibit training on Customer Data. Anonymised, aggregated counts (pages, entries, document-type mix) may inform product improvement; the underlying content never does.
Can one customer see another customer's data?
No. Row-level security is enabled on every business table and keys on both the account and the books. Triggers reject any cross-tenant reference before it commits, and the key that bypasses these policies never reaches the browser.
Can a posted journal entry be edited or deleted?
No. A guard trigger blocks edits and the delete policy refuses; corrections are reversal entries linked to the original. The one narrow exception is a 24-hour un-post by the person who posted it, only while nothing downstream has used the entry, and it is itself audit-logged.
Where is our data hosted?
In the EU: the database and document storage in Stockholm and the extraction worker elsewhere in the EU, on every plan. There is one production region.
Can you see our books?
Not routinely. There is no log-in-as-customer path. Read-only access to one tenant needs a written admin grant, expires after 24 hours and is audit-logged.
Do you hold SOC 2 or ISO 27001?
Not yet. Both are targeted. The controls on this page already exist, so a certification would formalise them rather than build them.