For CPA Firms

Sampling — Auto-Select and the materiality threshold

How Auto-Select fills each sample-analysis widget, the universal Min(40, ⌈20%⌉) rule, the materiality input, and how coverage is reported.

9 min readUpdated 19 April 2026

Sampling in Local Check is deterministic, value-driven, and procedure-specific. Each AUP procedure that requires a sample (Labor §3, Goods & Services §4, CapEx §5, Capacity Building §6 — Training / Providers / R&D, Depreciation §7) has its own sample-analysis widget. The same Auto-Select action and the same coverage formula apply across all of them.

The universal sample-size rule#

Behind every Auto-Select button the platform computes the required sample count using a single formula: `requiredSampleCount = Min(40, ⌈20% × population⌉, populationCount)`. In other words, the platform picks the smaller of (a) 40 records, (b) the count needed to reach 20% of the population, or (c) the entire population if it is smaller still.

Selection order: highest value first

Records are sorted descending by amount (basic salary for labor, depreciation amount for assets, transaction value for suppliers / training / providers / R&D), then picked top-down until the required count is reached. This is value-driven risk-based selection, not stratified random sampling.

The materiality input#

Each sample-analysis widget exposes a Materiality field at the top. Any record whose amount equals or exceeds this threshold is mandatorily included in the sample regardless of the Min(40, ⌈20%⌉) cap. Auto-Select POSTs the value to the API as { action: "autoSelect", materiality: <number> }, and the server flags the qualifying records before completing the value-based fill.

How to run a sample analysis#

  1. 1Open the section's AUP procedure (e.g. Procedure 3.1.f Sample Analysis for Labor).
  2. 2Enter the Materiality amount in SAR (or 0 to skip mandatory inclusion).
  3. 3Click Auto-Select. The platform applies the Min(40, ⌈20%⌉) rule on top of the materiality flagging and returns: sampleSize, sampleValue, populationValue, and coverage percentage.
  4. 4Review the selected records in the table; you can manually toggle the Sample flag on any record to add or remove it.
  5. 5Click Save (or Save & Close) to persist the selection. The coverage indicator reflects the latest state.

Coverage indicator (visual feedback)#

Coverage is computed as `(sampleValue / populationValue) × 100`. The widget paints the indicator using a three-tier scale: ≥ 100% → green, ≥ 70% → emerald, otherwise → amber. The colour reflects platform UI feedback only; the regulatory threshold remains the 20% target enforced by the Auto-Select formula.

Sections that have a sampling widget#

SectionProcedurePopulation sorted by
§3 Labor3.1.fBasic salary (descending)
§4 Goods & Services4.1.hHighest + random invoice per supplier
§5 Capital Expenditure5.1.fAsset transaction value (descending)
§6.1 Training6.1.fTraining cost (descending)
§6.2 Providers6.2.fProvider spend (descending)
§6.3 R&D6.3.gProject cost (descending)
§7 Depreciation7.1.dDepreciation amount (descending)

Suppliers — two transactions per supplier

The §4 supplier widget tracks two transactions per disclosed supplier: the highest-value invoice and a random invoice, in line with LCGPA §4.1. The supplier-level inclusion flag (isSample) is set when a supplier is disclosed, and the two transactions are captured against that supplier inside the widget.

Selection is locked once procedures are reviewed

Re-running Auto-Select after the AUP procedure has been Reviewed/Approved is blocked by the workflow layer. To change the selection at that point you must first reopen the procedure (partner-level action) and document the reason in the audit log.