Submission is the easy part. Building a pipeline that survives failures, retries safely, and never double-submits is where the real engineering is.
Every submission resolves to accepted, accepted-with-warnings, or rejected — each routed to a different downstream path in dsFatoora.
Data errors, connectivity errors, and authority-side errors are classified separately so the right team (or automated fix) handles each.
Transient failures retry on an increasing delay, with a dead-letter queue catching anything that still fails after repeated attempts — nothing silently disappears.
Every submission carries a unique key, so a retried request can never result in the same invoice being cleared twice.
Every stage — submission, response, retry, resolution — is logged with a timestamp, satisfying both internal audit needs and ZATCA's own record-keeping expectations.
A continuous reconciliation job compares ERP invoice records against ZATCA's cleared records, surfacing any gap before it becomes a compliance issue.