Solutions · Finance and procurement

Your AP agent approves invoices. Your auditor asks who really did.

Separation of duties survives automation. The agent that prepares cannot approve, finance signs the totals, and the auditor gets receipts instead of an export.

For CFOs, controllers, heads of procurement and internal controls, and the AP and procurement automation vendors.

What the agent does
Invoice approval within PO tolerance Supplier payment runs Early-payment discounts Expense reimbursements Spend allowances for cloud and ad agents Journal entries
Why it stalls

Every finance team already has the control an agent needs. It is called separation of duties: the person who prepares the invoice cannot approve it, the approver has a limit and the controller signs above that. It worked because people sit in different chairs.

An agent sits in every chair at once. The same AP automation reads the invoice, matches the order, approves it and queues the payment. The ERP's approval step was written for a person clicking, not for an agent calling the API all night. When the auditor asks who approved, the answer is a service account.

Stategram gives the chairs back. Finance signs the totals, risk signs the rules and every change to the numbers needs both signatures. The agent prepares and asks. The permit, the referral to the controller and the receipt name who decided what under which version, so the auditor reads them without asking IT for an export.

What the trust loop adds

Enforce your limits before money moves.

The agent prepares, a person approves

Above the agent's limit, the controller the policy names decides, and the decision is on the record.

Two signatures on every change

Finance and risk both sign the numbers, so no single person can raise a limit.

Totals per supplier and per period

A supplier's monthly total and the day's payment run are counted across every agent and person.

Receipts instead of an export

The auditor checks each decision against the policy version in force, offline, without a database export.

policy: invoice approvals version: 1
events: invoice payment: supplier: id amount: money po amount: money
counters: supplier this month: {unit: EUR, per: supplier, resets: monthly} payment run today: {unit: EUR, resets: daily}
rules: matches the order: on: invoice payment require: amount <= po amount * 1.02 otherwise: ask controller agent limit: on: invoice payment require: amount <= 10 000 EUR otherwise: ask controller supplier total: on: invoice payment count: amount into supplier this month limit: 50 000 EUR daily run: on: invoice payment count: amount into payment run today limit: 250 000 EUR
An example policy

See the policy your risk owner signs.

An example written for this page, with round numbers. It uses only what the policy format has today, and it is not a customer's policy.

Inside the rules the agent acts alone. Above a line, the named person decides. Every change to the numbers is a new signed version.

How it connects
  • Your AP or procurement automation asks for a permit before it approves or pays.
  • Employees' copilots that post entries or approve invoices draw on the same policy.
  • Outsourced AP works under the totals you sign.

How the trust loop works

What we can show today
  • Every change to a policy's numbers is a signed edition, and a policy can name several signers with a threshold.
  • The hosted release gives a permit in 95 ms at p99, and you check every permit yourself, offline.
  • The engine underneath has run money workflows in production since 2022.

Switch on your first agent.

Two weeks, a fixed fee, your limits and a named approver, and the method to do the next workflow yourself.

Leave your email

We will email you to find a time for a 25-minute walkthrough with the founder. No slides, no sales script.

Thanks. We will email you to find a time.
Book a call

Pick a time in the founder's calendar, or tell us about your agent first.

Also on the same core

Every industry and situation