an overhead view of a team with printed charts and a large screen
Compliance and Internal Audit · Testing · Hub

AI Agents for Internal
Audit Testing

Sampling was a workaround for a cost that no longer applies, and it is weakest exactly where the risk is highest.

Key takeaways
  • Sampling exists because whole population testing was once impossible. It was always a compromise, not a preference.
  • A sample gives an estimated error rate. A population test gives a list of actual items somebody can correct.
  • Sampling is systematically weakest where risk is highest, because a rare event is unlikely to appear in a sample by construction.
  • Whole population testing is only usable if every exception cites source records, the logic is readable, and what was excluded is stated.
  • Continuous monitoring changes when you find out rather than what you find, and most control failures are a cheap correction early and an incident late.

AI agents for internal audit testing read the whole population rather than a sample, cite the source records behind every exception, and run as each period closes rather than once a year. ChatFin reports rules and records rather than scores, because a finding that cannot be examined cannot support an opinion.

The change here is not that testing gets faster. It is that the output changes shape. A sample produces an estimated error rate to extrapolate. A population test produces a list of specific items, each traceable to the ledger lines it came from, which is a correction rather than a finding. ChatFin is built for the second.

Internal auditControls testingContinuous monitoringAudit samplingComplianceAudit evidenceRiskAI agents for finance
01

Sampling was a workaround for a cost that no longer applies

Statistical sampling exists because testing every item by hand was impossible. It was always a compromise, accepted because the alternative was testing nothing. Once the cost of reading the whole population falls, the compromise stops being necessary and its weaknesses stop being acceptable.

What a sample gives youWhat it cannot give you
An estimate of the error rateThe list of actual errors
Confidence within an intervalCertainty about any specific item
A defensible procedureA defensible balance
A finding to extrapolateA correction anyone can make
Coverage of the typicalAny coverage of the rare

The last row is the one that matters most. Sampling is systematically weakest exactly where the risk is highest, because a rare event is unlikely to appear in a sample by construction. ChatFin tests the population, which changes the output from an estimated rate to a list of items.

In ChatFin

ChatFin tests the whole population rather than a sample, which turns an estimated error rate into a list of specific items somebody can act on.

02

A test is only worth what its evidence trail is worth

Whole population testing raises an obvious objection: an auditor cannot rely on a result they cannot examine. That objection is correct, and it is a requirement on how the test is built rather than an argument against it.

Every exception cites its source records. Not a score and not a confidence level, the actual documents and ledger lines it was derived from.
The test logic is readable. A reviewer has to be able to say what rule was applied, not be told a model found something.
The population is stated and reconciled. Testing everything means nothing unless everything is reconciled to the ledger first.
The same test rerun gives the same answer. A test that varies between runs cannot support an opinion.
What was excluded is reported. Every test excludes something, and an unstated exclusion is the difference between a whole population test and a large sample.

ChatFin is built to those constraints. It reports rules and records rather than scores, which is what makes a finding usable in an audit file.

an overhead view of a team with printed charts and a large screen
A finding without an evidence trail cannot support an opinion.
In ChatFin

ChatFin cites source records against every exception and states what was excluded, because an unstated exclusion turns a population test back into a sample.

03

Continuous monitoring changes when you find out, not what you find

Running a control test every period instead of once a year sounds like more of the same thing. The value is different in kind, because most control failures are cheap when caught early and expensive when caught late.

FailureCaught in the periodCaught at year end
Approval limits not enforcedCorrect the routingRestate a year of approvals
Duplicate paymentsRecover from a live vendorRecover from a former vendor
Access not removed on leavingRemove itExplain a year of exposure
Journal posted by an unauthorised userReverse itInvestigate a full year
Vendor and employee bank matchStop the paymentReport a loss

Every row is the same finding. What changes is whether it is a correction or an incident. ChatFin runs the tests on the period's data as the period closes, which is the only point at which most of these are still cheap.

In ChatFin

ChatFin runs control tests as each period closes, which is the point at which most findings are still a correction rather than an incident.

04

Where this underperforms

Three.

The control is genuinely judgemental. Whether a provision estimate is reasonable is not a population test, and pretending otherwise produces false comfort.
Evidence lives outside systems. A control evidenced by a signature on a printed pack cannot be tested continuously until that changes.
The population cannot be reconciled. If the data extract does not tie to the ledger, whole population testing is a large sample with a misleading name, and it should be described that way.
Start with a control you already test by sample, and run it across the full population for the same period. Comparing the two results is the fastest way to see what sampling was missing.

Deeper in audit testing

The use cases this hub covers.

Worked on this page
Internal audit testing · Invoice compliance checks · Continuous controls monitoring

Covered as sections here
Population versus sample · Evidence trails · Exclusion reporting · Timing of detection

Questions heads of audit ask first

Can whole population testing actually be relied on in an audit?

Only if it is built to be examined. That means every exception cites the source records it came from, the test logic is readable as a rule rather than described as a model, the population is reconciled to the ledger, and any exclusion is stated. ChatFin works to those constraints, because an unstated exclusion turns a population test back into a sample.

What does sampling actually miss?

The rare and the deliberate. A sample is designed to characterise the typical, so an event that occurs a handful of times in a year is unlikely to appear in it at all. That is precisely the population most audit work exists to find. ChatFin tests everything, so rarity stops being a defence.

Why does continuous monitoring matter if the findings are the same?

Because the cost of a finding depends on when it surfaces. Approval limits not being enforced is a routing correction inside the period and a year of approvals to re examine at year end. A vendor bank account matching an employee is a stopped payment now and a reported loss later. ChatFin runs as the period closes.

How ChatFin works on audit testing

Test everything, cite everything.

ChatFin reads the whole population and reports a list of items rather than an estimated rate, with the source records cited against each one.

Tests run as each period closes, and what was excluded from the population is stated rather than assumed.

Bring a control you already sample. We will run it across the full population.

Book a demo
AM
Ashok Manthena
CEO and co founder, ChatFin

Ashok Manthena is the CEO and co founder of ChatFin, an AI agent platform for enterprise finance that runs across NetSuite, Acumatica, JD Edwards, SAP and Dynamics 365. He works with CFOs and controllers on governed automation of the close, payables, receivables and reporting. Connect on LinkedIn.

Image credits. Header photograph: an overhead view of a team with printed charts and a large screen, sourced from Pexels and used under the Pexels licence.
All images are served from the Pexels content network. No third party product screenshots, vendor logos or licensed media are used on this page.
Get started

Bring a control you already test by sample.

We will run the same test across the whole population through ChatFin and show you what the sample was not reaching.

✓Whole population tested, not a sample
✓Every exception cites its source records
✓Exclusions stated rather than assumed
Request a demo
Confidential & private