OpenChainGraph · Public-money evidence

The ledger says it happened. What can an outsider check?

A public program moves money over several rails at once – a card network, a bank transfer, a digital wallet, an offline voucher. Whichever rail carried a given payment, the full record of what happened lives inside the operator's own database. An outside audit authority, inspector general, or supreme audit institution has no window into that system.

The question this deck answers: when the full record lives inside the operator's system, what can anyone else actually verify? Not architecture, not a data feed – seven independent questions, each answered by one shipped receipt an outside party can check without ever touching the operator's database.
Settlement

One obligation, discharged exactly once, however many rails carried it

A single payment of public money can cross more than one rail before it lands – a batch file settling to a bank account, an instant-payment leg completing the same obligation. The settlement receipt confirms the obligation was discharged exactly once across every declared rail leg, with a finality class echoed from the caller's own declared basis per rail.

card rail leg bank transfer leg offline voucher leg one obligation verdict: discharged once, not once per rail
art-513 · public-money settlement receipt
Attribution

Every payment lands on a budget line, with every fee named – never netted away

A payment of public money is meant to attribute to a specific ministry, agency, or revenue code. That attribution is checked against the caller's own revenue-code table, and the amount credited is compared to the amount collected with every fee itemised individually. A fee silently netted out of the comparison is exactly the failure this question is built to catch.

collected processing fee rail fee FX conversion fee credited, at par

The verdict compares amount credited to amount collected with every fee named on its own line – a fee that only shows up inside the difference, never itemised, is the specific gap this check exists to close.

art-515 · allocation decision receipt
Reconciliation

The daily duty catches an exception today. Does it survive to the next period?

A daily reconciliation attestation names its exceptions for the window it covers. Nothing in that duty forces a link between one day's named exception and the next day's population – an item can be present and flagged today, and simply absent tomorrow, with no attestation anywhere connecting the two events.

day N · attested exception, named day N+1 · attested same exception no attestation links day N's exception to day N+1's population

Both days pass their own attestation. The gap this question exposes sits between them, in a place no single day's duty is built to look.

art-516 · daily reconciliation attestation
Audit trail

A trail that also covers what the administrator did to the record

A transaction log alone is not a complete trail. An administrator who edits a record, reverses an entry, or changes a permission acts on the same system a payer's transaction passes through – and if that action falls outside the logged chain, the trail has a gap an outside reviewer cannot see from the transaction log alone.

admin edit, unlogged completeness check flags the gap, does not pass it silently

The idea this question tests is not whether payer transactions are logged – they always are. It is whether the same unbroken chain also covers what an administrator did to the record.

art-517 · audit-trail completeness attestation
Authorisation

A bulk run's total must match what was authorised – the check names candidates, not accusations

Salaries, benefits, or vendor payments often go out as one bulk disbursement run. This question compares the run's itemised and aggregate totals against the authorisation record. Where a mismatch appears, the receipt records it as a candidate discrepancy for a human reviewer to resolve, never as a finding of wrongdoing.

authorised candidate discrepancy
art-518 · bulk disbursement integrity
Migration

Migration completeness is checked by partition, because the grand total is where the error hides

When a payment platform migrates to a new system, a matching grand total before and after proves nothing on its own – one partition can lose records while another gains an equal number of duplicates, and the aggregate check never notices. This question compares record counts partition by partition: by program, by period, by agency.

program A1,204 → 1,204 program B886 → 886 program C2,011 → 1,988 program D640 → 663 grand total: 4,741 → 4,741 – looks whole per-partition check: program C lost 23, program D gained 23
art-519 · payment data migration completeness
Exit

Operator exit: what leaves, what is retained, and what is stranded

When an operator's contract ends or a platform is replaced, this question evidences a declared exit posture: which data categories are portable to the successor, which the outgoing operator retains under its own obligations, and which become stranded – inaccessible to anyone once the transition completes. The receipt evaluates that declared posture; it is not a live observation of what actually happens at exit.

operator portable to successor retained by operator stranded, inaccessible
art-520 · operator exit and data portability
Honest posture

What this evidences, and what it does not

Every node above computes over inputs the caller declares. Each receipt evidences that the computation ran correctly over those declared inputs – it says nothing about whether the declarations were true. The exit panel is the sharpest case: it evidences that a declared exit posture satisfies its own stated categories, not what the operator actually does with the data once the transition completes.

A candidate discrepancy in the authorisation match is exactly that – a candidate. It names an item for a human reviewer, and is never itself a finding that anything improper occurred.

All content on this page is static and processed locally in your browser. No data is transmitted. Do not enter real personal data into any OpenChainGraph tool. Use synthetic or anonymised inputs only.