Flagship · FlowCount WHT · Pilot available

The WHT Health Check

Three to five years of payments to non-residents, tied to your ledger, classified by substance, recomputed with effective-dated rules, and signed by a licensed professional. Ten steps, eight gates, and a sample input and expected output at every step.

Your ERP codes WHT by GL account. ZATCA assesses it by substance.

فحص ضريبة الاستقطاع: اكتشف المخاطر قبل الهيئة

The sample at a glance

37 payments. SAR 28.14M. 19 non-resident vendors. Jul 2023 to Jun 2026.

Every figure below comes from an actual engine run on a fictional client population built to exercise every rule. Every number reconciles, and the build refuses to produce a report that does not.

1,501,895.84

total exposure: tax + fines to 30-Sep-2026

Basis: illustrative sample engagement (fictional data)

104,068.99

over-withheld: refund candidates, never netted

Basis: illustrative sample engagement (fictional data)

337,500.00

duplicate payment found along the way

Basis: illustrative sample engagement (fictional data)

87%

of exposure from one root cause: management fees to the parent with nil WHT

Basis: illustrative sample engagement (fictional data)

Findings

Eight findings, priced to the as-of date and ranked.

Each finding is written in 5C form: condition, criteria, cause, effect and recommendation. The findings add back to the lead schedule to the cent.
F1Nil WHT on group management fees, including one quarter paid outside AP4 lines · High
1,308,000.00
F3Software and trademark rights treated as services; one invoice paid twice3 lines · High
87,637.50
F4Permanent-establishment risk: 210 days on site1 lines · High
36,787.50
F5Wrong domestic rates (related-party recharge; no US treaty)2 lines · High
31,586.25
F2Treaty rate on an expired certificate1 lines · High
26,910.00
F6Mixed supply not split; gross-up not applied2 lines · Medium
6,748.34
F7Late remittance, wrong period, no remittance evidence4 lines · Medium
4,226.25
F8Evidence and data gaps4 lines · Medium
0.00
Total exposure, tax + fines to 30-Sep-20261,501,895.84

Basis: illustrative sample engagement (fictional data). Findings F2 to F8 sorted by exposure; F8 records evidence gaps that carry no figure until the documents arrive.

The flow

Ten steps, at one glance

StepNameAI?Primary outputGate after
S1Intake & population buildT1 (optional)As-received extract + hash logG1
S2Completeness & data qualityTB tie-out, DQ logG2
S3Scope & residency screeningIn/out of scope per line
S4Nature-of-payment classificationT2Proposal → gate → reviewer dispositionG3 already passed
S5Treaty, TRC & PE screeningTreaty eligibility, PE flag
S6Rate determination & recalculationExpected WHT, variance
S7Filing & payment timelinessDue dates, delay fines
S8Return reconciliationERP ↔ Form Q ↔ engine by month
S9Exceptions, reason codes, risk, evidenceRanked register, document gapsG4
S10Review, sign-off, reportingT3 (optional)Findings reportG5 → G6 → G7
S1T1 Document AI on scanned contracts and TRCs (optional)

Intake & population build

Get the complete population of payments and credits to non-residents, in the 30-field template, with enough control information to prove later that nothing was lost.

  • Record a file hash and row count for each item received, and agree the row count and total with you in writing.
  • Store the as-received file untouched; corrections happen downstream, with a reason.
  • Where contracts arrive as scans, FlowCount Document AI populates contract description, service location and tax-borne-by-payer, and flags those fields as AI-extracted.
  • Eight recommended fields are added to the template (payment ref, days on site, tax borne by payer, DTA application ref, SAMA FX rate, beneficial owner, certificate date, RCM booked). Without the first four, PE, gross-up and treaty-procedure checks can only return INDETERMINATE.
The one data request (issued at G0)
PBCItemFormat
PBC-01AP payments and credits to non-resident vendors, all company codes, the review period, in the 30-field templateCSV / XLSX from ERP
PBC-02Trial balance for each year in scope, at GL-account levelXLSX
PBC-03Form Q returns as filed, with portal acknowledgements and SADAD receiptsPDF / portal export
PBC-04Contracts / SoWs for the top 80% of spend by vendor, plus every related-party agreementPDF
PBC-05TRCs held, by vendor and year; DTA application referencesPDF
PBC-06Related-party register / group structure chartXLSX / PDF
PBC-07Intercompany netting statements and manual journals to non-resident vendorsXLSX

Gate · G1: every item received or waived in writing; row counts and control totals agreed; hashes logged.

S2Rules only

Completeness & data quality

Prove the population is whole before testing whether it is right.

  • Sum the population by GL account for each year and compare it to the trial balance postings to non-resident vendors. Every difference must be explained; an unexplained difference becomes a finding.
  • Run mandatory-field tests and the duplicate test. Both occurrences of a duplicate are flagged, so the result does not depend on row order.
Expected output: completeness
GLCategoryTB FY2025AP populationDifferencePotential WHTStatusExplanation
610100MGMT4,500,000.003,000,000.001,500,000.00300,000.00FAILJV-2025-0931 intercompany netting: Q3 2025 management fee, not paid through AP
610200TECH2,118,200.002,118,200.000.000.00PASS
… 9 other GLs0.00PASS
Expected output: data-quality log
Payment refTestFindingDownstream effect
PY-25-00688 / PY-25-00702DuplicateInvoice INV-88213 paid twice, 337,500.00 eachWHT still tested (a payment occurred); overpayment recovery raised to AP
PY-26-00391Mandatory fieldPayment date missingRate tested; period and timeliness INDETERMINATE

Why this step earns its fee. The single largest finding in the sample, 300,000 of potential WHT, is not in the data the client handed over. It only surfaces because the population was tied back to the ledger.

Gate · G2: the population ties to the TB, or every difference is a logged finding.

S3Rules only

Scope & residency screening

Remove what WHT does not apply to, and record why, so nothing is silently excluded.

Out of scopeCodeSample line
Resident vendor in the non-resident populationSCP-010 (exception: vendor master fix)Riyadh Office Supplies
Supply of goodsSCP-030Goods element of a mixed supply
Inbound freight into KSA, on or after 15 Sep 2023SCP-020One line clean (nothing withheld); one line 5% withheld: refund
Air ticket for a flight departing outside KSA, on or after 15 Sep 2023SCP-0215% withheld: refund

An out-of-scope line only becomes an exception if tax was withheld on it (a refund) or the vendor master is wrong.

S4T2 Propose

Nature-of-payment classification: the AI step

Decide the WHT category by substance. This is where most real exposure hides, because ERP tax codes follow the GL account and the GL account follows whoever raised the PO.

  • The AI proposes. It reads contract (weight 3) > invoice (2) > PO (1.5) > GL prior (1) and returns a category, a confidence, and the quoted evidence it relied on, restricted to the rulebook categories plus MIXED and UNCLASSIFIED.
  • The gate decides. A proposal is auto-accepted only if confidence ≥ 0.85, it agrees with the GL mapping, and it is not MIXED or UNCLASSIFIED.
  • A reviewer decides the rest, with a disposition, a name and a rationale. With no decision the line stays UNRESOLVED: no WHT figure is computed for it, and it is never guessed.
Expected output: one row of each type
Payment refAI proposedConf.AI evidence (abridged)Gate resultReviewer dispositionFinal
PY-25-00301MGMT1.00contract "Management services"; invoice "management fee"Auto-acceptedMGMT
PY-25-00688ROYALTY0.83contract "right to access and use"; invoice "SaaS"; GL → TECHConflict with GL → reviewConfirmed AI: right to use software is a royalty (firm position). Contested; conservative view taken and the alternative quantified.ROYALTY
PY-26-00170TECH0.57"intellectual property" → ROYALTY; "design services" → TECHLow confidence → reviewOverrode AI: outright assignment of IP is not a licence to use; consideration is for design services.TECH
PY-26-00318UNCLASSIFIED0.00no substantive text (contract blank)AI abstained → reviewDecided: schedule obtained, IT systems administration, a technical service.TECH
PY-26-00144MIXED0.60"spare parts" → GOODS; "installation supervision" → TECHMixed → reviewDecided: goods 85% / services 15% per price schedule.TECH (15% of base)
PY-26-00330OTHER0.83"training" → OTHER; GL → TECHConflict → reviewNone yet: course outline requestedUNRESOLVED

Sample totals: 30 auto-accepted · 6 reviewer-decided (3 confirmed, 1 overridden, 2 decided where the AI abstained or flagged mixed) · 1 awaiting a document.

Gate · G3 must already be passed: golden set at target, thresholds set. At G5, a 10% random sample of auto-accepted lines is re-performed, and every evidence quote is verified to exist verbatim in the source.

S5Rules only

Treaty, TRC & PE screening

Apply a reduced rate only where it is supportable, and catch treaty claims that are not.

  • Treaty rate = the lower of the treaty article rate and the domestic rate (Art. 7, 8, 10, 11 or 12).
  • The treaty rate is used only if the TRC is valid for the payment date. Expired, missing or pending means the domestic rate.
  • No DTA, no relief (for example the United States).
  • Art. 7 relief is blocked where on-site days reach the PE threshold (default 183); the line is rated High and escalated to the Partner.
Expected output
Payment refCountryCategoryArt.TRCDaysDomesticTreatyAppliedResultNote
PY-25-00131INROYALTY12Valid15%10%10.0%PASSValid TRC, DTA application on file
PY-25-00615CNROYALTY12Expired15%10%10.0%FAILTRC expired → domestic applies
PY-25-00520USTELECOM7Missing5%0.0%FAILNo comprehensive DTA with KSA
PY-25-00977PKTECH7Valid2105%0%0.0%FAILArt. 7 relief unsafe: on-site presence ≥ PE threshold
PY-25-00120GBINTEREST11Valid5%0%5.0%Benefit available, not used → refund
S6Rules only

Rate determination & recalculation

Compute what should have been withheld, and compare it to what was withheld. Re-performable as live spreadsheet formulas.

  • Effective dating matters. The same related-party vendor providing technical services is correct at 15% in Aug 2023 (before the amendment) and over-withheld at 15% in Oct 2025, where the correct rate is 5%: a 34,400 refund.
The arithmetic
Amount SAR     = ROUND(Payment Amount × FX, 2)        FX = SAMA rate on payment date
WHT Base       = Amount SAR × Base Portion            portion < 1 only for mixed supplies
               ÷ (1 − rate)  if tax borne by payer    gross-up
Expected WHT   = ROUND(WHT Base × Applicable Rate, 2)
Variance       = Expected − Actual                    |variance| ≤ 1.00 → PASS
Expected output: selected lines
Payment refCategoryAmountPortionGross-upRateWHT baseExpectedActualVarianceCode
PY-25-00301MGMT1,500,000.00100%N20%1,500,000.00300,000.000.00300,000.00TRT-300
PY-25-00688ROYALTY337,500.00100%N15%337,500.0050,625.0016,875.0033,750.00DQ-800
PY-26-00090RENT172,000.00100%Y5%181,052.639,052.638,600.00452.63GRS-250
PY-26-00144TECH780,000.0015%N5%117,000.005,850.000.005,850.00CLS-120
PY-25-00731TECH344,000.00100%N5%344,000.0017,200.0051,600.00(34,400.00)RTE-210
PY-23-00840TECH430,000.00100%N15%430,000.0064,500.0064,500.000.00OK-000

Tie-out: the workpaper formula total for expected WHT, less the engine total, equals 0.00.

S7Rules only

Filing & payment timeliness; delay fines

The due date is the 10th of the month after payment, for both the Form Q return and the remittance. The delay fine is 1% of unpaid tax per 30 days or part, so one day late is a full period. Fines on under-withheld tax accrue to the as-of date fixed at G0.

The fine arithmetic
Due date               = DATE(YEAR(pay), MONTH(pay)+1, 10)
Late periods (paid)    = ROUNDUP(MAX(0, paid − due) / 30, 0)
Fine, late payment     = ROUND(Actual WHT × 1% × late periods, 2)
Periods to as-of       = ROUNDUP(MAX(0, as-of − due) / 30, 0)    only where under-withheld
Fine, unpaid variance  = ROUND(Under-withheld × 1% × periods, 2)
Exposure               = Under-withheld + both fines
Expected output
Payment refPaidDueWHT paidDays latePeriodsFine (late)Under-withheldPeriods to 30-Sep-26Fine (variance)Exposure
PY-25-0035015-May-2510-Jun-2502-Jul-252214,000.004,000.00
PY-26-0022208-Apr-2610-May-2611-May-261175.7575.75
PY-25-0030130-Apr-2510-May-25300,000.001751,000.00351,000.00
PY-25-0061515-Jun-2510-Jul-2509-Jul-250023,400.00153,510.0026,910.00
PY-26-00391(missing)09-Jul-26INDETERMINATE0.00

Sample totals: fines for late remittance 4,226.25 · fines on unpaid variance 126,854.46.

S8Rules only

Return reconciliation: ERP ↔ Form Q ↔ engine

Three independent views of each month should agree. Where they do not, the difference is a finding, not an adjustment.

Expected output: months with differences
PeriodERP bookedForm Q filedERP − Form QEngine expectedEngine − Form QReading
2025-040.000.000.00315,050.00315,050.00Management fee not withheld; crane hire filed in the wrong month
2025-0933,750.0016,875.0016,875.00101,250.0084,375.00Form Q omits WHT booked on the duplicate payment; both SaaS lines under-withheld
2025-1051,600.0051,600.000.0017,200.00(34,400.00)Pre-amendment related-party rate still in the ERP
2026-0414,025.0014,025.000.00314,025.00300,000.00Q1 2026 management fee not withheld

Reconciling item: 3,030.00 of engine-expected WHT cannot be assigned to a month (no payment date). It is shown on the sheet, not hidden.

S9Rules only

Exceptions, reason codes, risk & evidence

Every exception gets a reason code (24 codes in 12 families), a risk rating from a documented model, an owner and a recommended action. Each evidence gap becomes a document request.

The risk model
Impact points from exposure:  ≥100k → 5 · ≥25k → 4 · ≥5k → 3 · ≥1k → 2 · >0 → 1
+1 related party with exposure   +1 treaty misapplied   +2 classification unresolved
+1 evidence missing (+2 if line ≥ 500k)                 +1 late payment
High ≥ 5 · Medium ≥ 2 · else Low            PE risk and duplicate payments force High
Expected output: exception register, top of the ranking
IDPayment refVendorCodeRiskExposure incl. finesRecommended action
WHT-C01JV-2025-0931(not in AP extract)CMP-900High300,000.00Obtain JV support; assess WHT on the netted amount; extend the population to every settlement channel
WHT-001PY-25-00301Parent Holdco LtdTRT-300High351,000.00Pay with fines, or obtain TRC and file a DTA application within 5 years
WHT-002PY-25-00544Parent Holdco LtdTRT-300High342,000.00As above
WHT-003PY-26-00301Parent Holdco LtdTRT-300High315,000.00As above
WHT-004PY-25-00688SaaS Vendor IncDQ-800High37,800.00Recover overpayment; reverse WHT on credit; fix AP duplicate control

25 rows in total.

Check matrix across the population
CheckPASSFAILINDET.N/A
C1 Scope37000
C2 Classification36010
C3 Treaty eligibility56026
C4 WHT amount201610
C5 Return period25714
C6 Filing timeliness25714
C7 Payment timeliness22924
C8 Evidence36010
C9 Data quality34300

Gate · G4: every AI proposal dispositioned or carrying an open request; tie-outs = 0.00; register complete with owners.

S10T3 Draft (optional narrative)

Review, sign-off & reporting

Manager review re-performs every High exception from source documents and a random 10% of auto-accepted lines. The Partner approves ratings and wording; an engagement quality review runs where triggered.

  • The sample meets four EQR triggers: exposure above 1M, a PE finding, a contested SaaS position, and the first use of the classifier.
  • The report shows the contested alternative: treating SaaS at 5% instead of 15% would mean 67,500 less tax.
  • Integrity check built into the report generator: findings must add back to the lead schedule to the cent (1,501,895.84) and opportunities to 104,068.99. If they do not, the report is not produced.
  • G7: issue, lock, archive within 60 days, retain 10 years. Rulebook lessons go to Tax Technical.

Gate · G5 → G6 → G7

What you receive

A decision-ready report. The audit-grade file behind it stays on record.

The full workpaper file (16 tabs, 1,724 live formulas in the sample, 0 errors) is what an EQR partner, a regulator or a ZATCA audit would inspect.
DeliverableWhat it containsAudience
Findings report (PDF / DOCX)Executive summary, 8 findings ranked, a 30-day action list, scope and an explicit "How AI was used" statement, 5C findings, the refund opportunity, appendicesCFO, Head of Tax
Exception register with owners and statusEvery exception, coded, rated and pricedTax, AP, Treasury
Return correction schedule, by monthERP ↔ Form Q ↔ engine, ready for amended returnsTax
Refund claim scheduleOver-withholding by vendor and period, with claim deadlinesTax
Information request (outstanding PBC)What is still needed to conclude INDETERMINATE linesClient finance
Control recommendationsPreventive and detective controls, owner and frequencyFinancial controller

Built to catch

Ten pitfalls this method is designed to catch

Pitfall

Testing only the population the client gave you

Caught by: S2 trial-balance tie-out (CMP-900)

Pitfall

Trusting the GL / ERP tax code

Caught by: S4 substance-based classification; GL as a weak prior

Pitfall

A flat rate table across years

Caught by: Effective-dated rulebook (the 2023 amendment)

Pitfall

Treaty rate "because they're in a treaty country"

Caught by: S5: valid TRC for the payment date, no-DTA countries, PE block

Pitfall

Computing WHT on the net when the payer bears the tax

Caught by: Gross-up (GRS-250)

Pitfall

Mixed goods-and-services contracts

Caught by: MIXED abstention → apportionment (CLS-120)

Pitfall

"Paid on the 11th, near enough"

Caught by: 1% per 30 days or part: one day late costs a full period

Pitfall

Netting refunds against exposure

Caught by: Reported separately (principle P6)

Pitfall

A guess dressed up as a number

Caught by: UNRESOLVED lines carry no expected WHT

Pitfall

Document order changing the answer

Caught by: Shuffle test in the regression suite

Honest limits. Sample data is fictional. Domestic WHT rates and the 15-Sep-2023 amendment were checked against public sources on 29-Sep-2026; treaty rates and FX in the sample are illustrative and are verified against primary text by Tax Technical before any client use (gate G3). Contested positions are flagged, not hidden. This page describes a method; it is not tax advice. A real engagement is signed by a licensed professional at G6.

Four weeks. One data request. A priced answer.

Week 1 acceptance and data, week 2 complete and classify, week 3 quantify and review, week 4 report and decide.