Hiring guide
Finance report automation: acceptance tests before you trust the dashboard
By CFO Index · Published
A report that refreshes without an error can still be wrong. Before replacing a manual finance report, agree what the automated version must prove: complete inputs, correct calculations, visible exceptions and a usable recovery process. Give your fractional CFO and developer the same acceptance checklist, not just a target launch date.
Define the result before testing the connection
Choose one report and state its entity, period, currency, source records and metric definitions. Keep a dated reference export with independently checked totals. Record which transactions belong in the period and how credits, cancellations and late entries are handled. A successful API connection proves access, not completeness. The developer should explain pagination and incremental updates; the finance owner should confirm what the resulting figures mean.
Build a small set of deliberate failure cases
Use a test environment or controlled copies of source files. Do not create real invoices or revoke production access merely to test a dashboard. The following matrix is an original acceptance template: it is not a claim that any particular reporting tool supplies these checks automatically. Retain the input version, expected result, actual result and reviewer for each case.
| Test input or event | Expected behaviour | Evidence to keep |
|---|---|---|
| The same source batch is loaded twice | A rerun does not duplicate transactions | Stable IDs, record counts and totals before/after |
| An invoice and a credit are both omitted | Gross and document-level checks flag the omissions | Exception list, not just a matching net total |
| A required source stops updating | Affected figures show stale status or distribution is held | Source timestamp, warning and responsible owner |
| A new account or department appears | Unmapped records remain visible for review | Unmapped count and mapping approval |
| A late correction changes a closed period | The correction follows the agreed restatement rule | Original report, changed report and explanation |
| A run fails, then is repeated | Recovery produces one complete approved result | Run log, reconciliation and release decision |
A correct net total can hide two missing records
Hypothetical example: the reference export contains €120,000 of invoices and €20,000 of credit notes, giving €100,000 net. The automated import omits one €10,000 invoice and one €10,000 credit. It now shows invoices of €110,000 and credits of €10,000, still giving €100,000 net. A headline check passes while customer balances and gross activity are incomplete. Match document IDs and amounts, and reconcile invoices and credits separately. The example excludes tax and is not an accounting-policy prescription.
Separate data freshness from report generation time
Show the latest successful source extraction and the business-data cut-off, not only when the chart was rendered. If payroll data is current but sales data is two days old, one green status for the entire report conceals a limitation. Decide which missing source blocks distribution and which can remain with a clear qualification. An old valid value must not silently become today's actual, and missing data must not be replaced with zero unless zero is supported by the source.
Test alerts using the actual refresh method
Microsoft documents that Power BI refreshes can complete with warnings and recommends inspecting refresh history. It also distinguishes scheduled-refresh failure notifications from on-demand or programmatically triggered refreshes, which do not trigger those email notifications. These are Power BI-specific behaviours, not rules for every platform. Ask the implementer to demonstrate the notification route used by your actual schedule, including who notices a run that never starts. Check receipt of the alert rather than accepting a screenshot of an enabled setting.
Require a recoverable release, not permanent manual double work
Run the new and reference reports over an agreed trial period that includes relevant exceptions. Define tolerances for rounding separately from unexplained missing records; do not use a generous percentage tolerance to dismiss a missing major customer. Name the person who can hold distribution, the person who repairs the job and the person who accepts the rerun. Keep the last approved report identifiable. Agree a time-limited fallback and exit criteria so parallel reporting does not become an indefinite extra job.
Accept the process only when another owner can operate it
Ask someone other than the builder to find a source record, explain a failed check and follow the recovery instructions. Handover should include the metric definitions, source map, test results, unresolved limitations and access ownership. The finance owner accepts the financial output; the technical owner accepts operation and recovery. Recheck affected tests after a source or calculation changes. Automation should reduce repetitive preparation without removing accountability for the numbers.