Finance records where every AI change has a basis and an approver
Reconciling invoices against contracts, fixing subscription quantities, correcting tax codes, chasing a mismatched payment — repetitive, high-volume, and exactly the work an agent is good at. It is also the work where a wrong value becomes a restatement.
ActionsLedger applies the control finance already expects from people to an agent: the thing that proposes a change is not the thing that posts it, each value cites its source document, closed periods are immutable, and the trail is append-only.
Amounts without a source document
A corrected invoice total that came from a model summary rather than the contract line. It reconciles today and fails the sample in the next audit.
CONTROL → DOCUMENT SPAN PER AMOUNTWrites into a closed period
A late correction posts against a month that has already been reported. The books move after the fact, quietly.
CONTROL → IMMUTABLE PERIOD WINDOWSOne actor proposing and posting
The same credential drafts the adjustment and commits it. Segregation of duties exists on the org chart but not in the system.
CONTROL → SEPARATION OF DUTIESLogs that only show success
The API returned 200. It does not tell you what the field was before, what it became, or on what basis — which is the only thing an auditor asks.
CONTROL → BEFORE/AFTER + VERDICTRead the source of truth, not a summary
The agent reads contracts, invoices, payment records and the billing system with read-only credentials and produces proposed corrections with the exact document span behind each figure.
Deterministic checks first
Schema validation, value bounds, currency and tax-code validity, reconciliation tolerance and period status all run as code. A proposal that fails any check never reaches a reviewer.
Approval by materiality
Small in-tolerance corrections can auto-merge; anything above the materiality threshold, or touching tax, revenue recognition or credit notes, requires a named approver who is not the proposer.
An audit artifact, not a changelog
Each merge appends before/after values, document references, the policy verdict, the approver and the timestamp, with entry N committing to entry N-1 by hash — so backdating or deletion is detectable rather than invisible.
Controls finance can point at
agent read-only: contracts, invoices, ledger proposer cannot approve its own change approver named human, above materiality merge worker sole writer, open periods only closed period write blocked, fail closed append-only trail: diff · document ref · verdict · approver entry N commits to entry N-1 (sha256) period status re-checked at merge time
Automate the reconciliation, keep the audit intact.
Evidence per amount, an approver who is not the proposer, immutable closed periods, and a trail you can hand to an auditor.