ERP systems typically store unit prices, quantities and taxable amounts at a different decimal precision than ZATCA’s Phase 2 schema expects at the line, tax-subtotal and invoice-total levels. When these values are pushed to the e-invoicing layer without normalization, the cryptographic hash and totals no longer reconcile — and ZATCA rejects the invoice, often without an error message that points clearly back to the root cause.
DynamicSoft’s dsFatoora middleware sits between the ERP and ZATCA’s Fatoora platform and applies a standardized precision-normalization layer before any XML is generated. Every line item, tax subtotal and invoice total is recalculated and rounded according to ZATCA’s rules — consistently, every time — before the UBL 2.1 invoice is signed and submitted.
Across a live KSA retail deployment processing over 1,000,000 invoices in two months across 305+ POS branches, this normalization layer has resulted in zero precision-based rejections — removing what is otherwise one of the most common and hardest-to-diagnose ZATCA Phase 2 errors.
Tell us about your ERP and the mandate you fall under — we’ll show you how we’d handle it.