+40.8M
Cancelled invoices
A clean-up filter dropped the reversal lines, so cancelled invoices counted as spend.
Eternity Verum
Tests generated from a mapping inherit its blind spots. Verum reads the mapping you already have, asks only the questions that change the number, and proves every figure against source, without reading a line of your pipeline's code.
false alarms on numbers that are right
0 false alarms
the same answer as above
the 9th declared untestable, not missed
A mapping records which column feeds which. It rarely records which rows count, in which currency, or what happens to a late invoice. Four of the bugs from our test run:
+40.8M
A clean-up filter dropped the reversal lines, so cancelled invoices counted as spend.
−11.0M
The ledger amount is empty when an invoice is already in ledger currency. Summing that column quietly dropped every domestic invoice.
+38.9M
Advances to suppliers were counted as spend, on top of the invoices they paid for.
−16.8M
The nightly incremental load skipped invoices that arrived after their month closed.
Differences in ledger currency against the correct total, on the synthetic Oracle Payables test datamart.
Point Verum at your raw layer and your reporting tables. Both are read where they live. Nothing is copied.
Upload the source-to-target mapping you already maintain. Verum asks only the questions it leaves open, and shows how much each answer moves the number.
Each check recomputes the expected value from source, compares it with your report, and opens straight to the rows behind every difference.
Before asking, Verum measures whether the answer matters. If every option gives the same number, it doesn't ask. If they differ, you see by how much, then decide.
Every check states what it does not cover. A pass that silently skipped the hard part is worse than no check at all.
You
Verify AP spend by supplier and month matches the spend report.
Verum
Which distribution lines count as AP spend?
Including withholding and prepayment lines moves the total by 0.3M.
Not tested by this check
Nine bugs planted in an Oracle Payables datamart. A check counts as a catch only if it passes on the correct pipeline and fails on the broken one. Verum asked three questions in total.
| Planted bug | Kind | Tests from the mapping | Verum |
|---|---|---|---|
| Join that double-counts | mechanical | — | caught |
| Unmatched suppliers dropped | mechanical | — | caught |
| Late rows never loaded | mechanical | — | caught |
| Two current versions of a supplier | mechanical | — | caught |
| Reversal lines filtered out | business rule | — | caught |
| Ledger amount without its fallback | business rule | — | caught |
| Prepayments counted as spend | business rule | — | caught |
| Withholding netted into spend | business rule | — | caught |
| Supplier history rewritten | business rule | — | declared untestable |
| False alarms on the correct pipeline | 2 of 3 checks | none |
Your source and target stay where they are. Verum queries them read-only and copies nothing.
Expected values come from source by a simpler path. Re-implementing your SQL would re-implement your bugs.
Every check lists its limits next to its verdict, so a green light means what it says.