Isolated per tenant
Postgres row-level security separates each customer's data, enforced by the database itself.
Onivo · Security
Onivo AP reads invoices, matches them against purchase orders and receipts, routes approvals, and posts bills into the ERP. Along the way it holds vendor bank details, ERP credentials, and a record of who approved what. This page explains how that data is isolated, encrypted, and audited — and exactly where the invoice travels while it is being processed.
Postgres row-level security separates each customer's data, enforced by the database itself.
ERP tokens and bank details are encrypted with a key dedicated to exactly that data.
Every decision lands in a hash-chained log. Alter one entry and the chain breaks visibly.
Multi-factor authentication is enforced for platform administrators — not offered, enforced.
Data flow
Onivo AP is hosted on Google Cloud, in the us-central1 region. When an invoice arrives — a PDF or an emailed attachment — invoice capture and OCR run on Google Document AI inside Onivo's own Google Cloud project — the same project that runs the rest of the pipeline, under Onivo's own access controls.
One step is different, and we would rather say so plainly than bury it: the AI document-review step sends invoice content to Anthropic's API. If that does not fit your data policy, the step can be disabled per deployment. Everything else described on this page applies either way.
Data controls
Each customer's invoices, vendors, and approvals sit behind per-tenant row-level security in Postgres. The boundary is enforced by the database itself, not just by application code — a query without the right tenant context returns nothing at all.
Data is encrypted in transit with TLS and encrypted at rest. ERP credentials and bank details go further: they are additionally encrypted at the application layer, with a key reserved for that purpose alone. The most sensitive fields in the system get their own lock — how the ERP connection itself is stored and used is on the integrations page.
Every decision on an invoice — an extraction correction, a match override, an approval — is written to a tamper-evident audit log. Each entry carries the hash of the entry before it, so an altered record breaks the chain instead of vanishing quietly.
When a field cannot be read with confidence, Onivo leaves it blank rather than guessing. A blank field gets a human look; a wrong-but-plausible one gets paid.
Process controls
A breach is not the only way to lose money in AP. There is also the same invoice paid twice, an approval that skipped the right person, a total that never matched the purchase order. Onivo treats these as security problems too, and the controls run on every invoice:
Access & disclosure
Multi-factor authentication is enforced for platform administrators — the accounts with the widest reach are the ones that never sign in on a password alone.
When an account signs in from a new device, the owner hears about it. A familiar login stays quiet; an unfamiliar one gets flagged while there is still time to act.
Role-based access controls decide what each of your users can see and do, screen by screen — who reviews, who approves, and who only needs to look something up.
Access to customer data by Onivo staff is strictly limited: named operators only, behind enforced multi-factor authentication and a gated console.
Onivo publishes a security.txt file following RFC 9116, so a researcher who finds something knows exactly where to report it — no hunting for a contact.
If your review needs more than this page — your questionnaire, your IT lead's questions — send them over. We answer specifically, not with boilerplate.
AI & your data
When a reviewer corrects an extracted field — a misread total, a vendor name, a line description — Onivo learns from that correction, so the next invoice from the same vendor reads better. That learning serves your account: it makes extraction more accurate on your vendors' invoices, in your formats.
What it does not do is feed anyone else's models. Your invoice data is not used to train third-party foundation models. The one step that sends invoice content outside Onivo's own cloud is the document-review step disclosed above — named plainly, and disableable per deployment.
Retention & deletion
Retention windows are configurable, and deletion is honored on request. And when the relationship ends, so does our hold on the data: on cancellation, your data is deleted on request — fully.
FAQ
Not yet — Onivo is not SOC 2 certified today. What is in place: tenant isolation enforced at the database row level, encryption in transit and at rest with application-layer encryption for ERP credentials and bank details, a tamper-evident hash-chained audit trail, and enforced multi-factor authentication for platform operators. If your process needs more than this page, we will walk through a security review with your team.
On Google Cloud, in the United States. Data is encrypted in transit and at rest, and each tenant's rows are isolated by the database itself — a query without the right tenant context returns nothing.
Not third-party ones. Extraction learns from your own corrections so it reads your vendors' invoices better over time, and that learning serves your account. Your invoice data is not used to train third-party foundation models.
Access to customer data by Onivo staff is strictly limited: named operators only, behind enforced multi-factor authentication and a gated console. On your side, role-based access controls with per-screen permissions decide what each of your users can see and do.
Retention windows are configurable while you are a customer, and deletion is honored on request. On cancellation, your data is deleted on request.
In transit with TLS, and at rest across the platform. The most sensitive fields — ERP credentials and vendor bank details — are additionally encrypted at the application layer, with a key dedicated to exactly that data.
Bring your security questionnaire, your IT lead, or both. We will walk through tenant isolation, the audit chain, and the data flow on a live system.