Skip to main content
Version: Latest

4. Runtime Flow

4.1 Invoice Creation → Validation → Signing → QR → Hash → XML → Submission (End-to-End)

This is one synchronous, in-request call chain — there is no async handoff anywhere in it.

4.2 Invoice Validation (Three Layers)

A fourth method, SDK_Validation (referencing an external ZATCA validator tool), exists in InvoiceValidaterService but is commented out — dead code, not part of the live chain.

4.3 QR / Hash / XML Generation Detail

No QR image is ever rendered — the framework produces only the base64 TLV payload string ZATCA's QR spec defines; rendering it as a scannable barcode image, if done at all, happens outside this codebase.

4.4 Clearance vs. Reporting Routing

See Chapter 10 — Invoice Lifecycle for what each SubmissionStatus value means in practice.

4.5 Retry / Failure Handling

No retry mechanism exists. This is a confirmed absence, not an undocumented flow.

SubmissionStatus has only Accepted, AcceptedWithWarnings, Rejected — no Pending/Failed/ RetryCount field exists.

4.6 Background Jobs and Notifications

Neither exists. No Hangfire registration, no Background Jobs Framework job, no polling/sync/retry/renewal scheduler, and no notification of any kind fires anywhere in the e-invoicing flow. See Chapter 12 — Known Limitations for the practical consequences.