Batch scope
The batch boundary changed the audit verdict
The same payments expose a $100 excess together and pass separately when comparison history is omitted.
Audit assertions, with the evidence.
Test records and AI decisions.
Surface control exceptions.
Keep a reviewable audit trail.
Free within daily limits. No card required. View pricing.
The $24,800 invoice has no purchase-order reference. The configured control requires one above $1,000, so this assertion fails.
Exact checks where the answer can be computed. Open questions where it can’t.
Send a record or decision with its context. Get the checks, the evidence, and the open questions back.
Expenses, invoices, payments, vendors, and their approvals.
Claims and payment decisions checked against policies and history.
Invoices checked against rates, terms, caps, and service credits.
Extracted values and generated statements checked against sources.
Actions checked against instructions, granted scopes, and approvals.
Test audit assertions against amounts, dates, duplicates and approval controls. Trace each finding to the supplied evidence. Model answers decide checks only when qualified; unresolved checks stay visible.
Assess an exception’s amount, nature and context in your audit plan. The $1,000 PO threshold is a purchasing control, not audit materiality. OpenAuditor preserves the failed assertion; your team assesses its significance.
In the published synthetic financial audit evaluation: 0 errors in 3,366 held-out true verdicts decided by deterministic tests. The one-sided 95% upper error bound is 0.09%. These corpus results do not measure accuracy on your records. Read the evaluation method.
This synthetic invoice was checked by the local engine in the production configuration; the PO failure decided it, so the model was not asked. The animation illustrates the saved result; it does not submit a request.
Synthetic example. Response computed by the local engine in the production configuration. This page displays a saved example, not a new verification request. Sensitive identifiers are masked in public examples.
The request body, invoice.json:
{
"use_case": "financial-audit",
"item": {
"type": "invoice",
"id": "INV-2026-0841",
"data": {
"vendor_id": "V-1042",
"invoice_number": "INV-2026-0841",
"invoice_date": "2026-09-18",
"amount": "24800.00",
"currency": "USD",
"description": "20 business laptops for the finance team equipment refresh.",
"line_items": [
{
"quantity": "20",
"unit_price": "1240.00",
"description": "Business laptop, 16 GB RAM, 512 GB SSD"
}
],
"tax_amount": "0.00",
"discount_amount": "0.00"
}
},
"context": {
"records": {
"vendor": [
{
"id": "V-1042",
"name": "Northstar IT Supply",
"created_on": "2024-02-12",
"status": "active"
}
],
"invoice": []
},
"engagement": {
"entity": "Illustrative procurement audit",
"period": {"start": "2026-07-01", "end": "2026-09-30"}
}
}
}curl https://openauditor.ai/api/v1/verify \
-H "Authorization: Bearer $OPENAUDITOR_API_KEY" \
-H "Content-Type: application/json" \
-d @invoice.jsonThe response, shortened:
{
"verdict": "false",
"probability_true": "0",
"probability_basis": "deterministic",
"certainty": {
"value": "0.9987",
"basis": "holdout",
"stratum": "false_deterministic",
"bound": "0.00133",
"measured_on": 2253,
"errors": 0
},
"undecided": [],
"assertions": [
{
"id": "not_duplicate",
"test": "procedure:not_duplicate@4",
"outcome": "holds",
"error_bound": "0",
"evidence": ["/item/data/invoice_number", "/item/data/amount"]
},
{
"id": "arithmetic",
"test": "procedure:arithmetic@4",
"outcome": "holds",
"error_bound": "0",
"facts": {"computed": "24800.00", "stated": "24800.00"},
"evidence": ["/item/data/line_items", "/item/data/amount"]
},
{
"id": "vendor_active",
"test": "procedure:vendor_active@4",
"outcome": "holds",
"error_bound": "0",
"evidence": ["/context/records/vendor/0/status", "/item/data/invoice_date"]
},
{
"id": "po_present",
"test": "procedure:po_present@4",
"outcome": "fails",
"error_bound": "0",
"message": "No PO for an invoice of 24800.00, above the threshold of 1000.00.",
"facts": {"required": true},
"evidence": ["/item/data/amount", "/item/data/po_number"]
},
{
"id": "goods_specific",
"test": "question:invoice_specific@1",
"outcome": "not_asked",
"message": "Not asked: a deterministic test already fails this item, so the model cannot change its verdict.",
"evidence": ["/item/data/description", "/item/data/line_items"]
}
],
"risk": {
"points": "1.10",
"probability": "0.0060",
"basis": "prior",
"base_rate": "0.002",
"reasons": [
{"source": "assertion:po_present", "points": "0.60"},
{"source": "indicator:round_amount@2", "points": "0.50"}
]
},
"configuration": "cfg_c924a60e74c0",
"scope": {
"stratum": "false_deterministic",
"evidence": "supplied",
"skipped": [],
"certainty_target": "0.995",
"deterministic_only_verdict": "false"
}
}
| Use case | What it verifies | Item types | Checks | Questions |
|---|---|---|---|---|
| Agent actions | Actions AI agents take in business systems, checked against the agent's grant, approvals, its session's pace, the user's instruction and the inputs it read. | 1 | 8 | 2 |
| AI output verification | Fields an AI extracted from documents and sentences it generated from them, checked against the source text sent with the request. | 2 | 7 | 2 |
| Contract compliance | Vendor invoices and their lines checked against the contract's term, currency, rate card, cap, service-level credits and scope, and against earlier invoices. | 2 | 10 | 2 |
| Financial audit | Expenses, invoices, payments and vendors, and the approvals, releases and changes around them. | 9 | 35 | 4 |
| Insurance claims | Claims tested against their policies, the claimant's and provider's identifiers and the claim history, and the decisions to pay them. | 2 | 12 | 2 |
Measured coverage in published evaluations. A certainty target is not a measured overall accuracy.
| Use case | Rules-only coverage | Model-assisted coverage | Coverage gain (pp) |
|---|---|---|---|
| Agent actions | 10.7% | 10.7% | 0.0 pp |
| AI output verification | 8.0% | 21.1% | 13.2 pp |
| Contract compliance | 27.1% | 27.1% | 0.0 pp |
| Financial audit | 51.4% | 87.2% | 35.9 pp |
| Insurance claims | 46.8% | 46.8% | 0.0 pp |
From the blog
Batch scope
The same payments expose a $100 excess together and pass separately when comparison history is omitted.
Evidence provenance
Seven checks hold. The source of the callback number changes what that means.
Decision risk
A configured error budget, a passing gate and measured certainty answer different questions.
Pro and pilots
Free is open now. Tell us what you would audit: we will let you know when Pro opens, or talk about a pilot on your own records.
Form not loading? Open it on Tally.
Try the sample in your browser or connect the API. The free plan includes 5,000 items a day. See pricing and limits.