- Home
- Apps
- SaaS Tools
- KSA ZATCA E-Invoicing for POS (Fatoora Phase 2)
Illustrative previewA build-to-order ERPNext app that makes your point of sale issue ZATCA Phase-2 compliant simplified tax invoices
— cryptographically stamped, TLV QR-coded, and reported to Fatoora in real time.
ECOSIRE builds, installs, and supports it for Saudi retailers and restaurants.
What is KSA ZATCA E-Invoicing for POS (Fatoora Phase 2)?
A build-to-order ERPNext app that makes your point of sale issue ZATCA Phase-2 compliant simplified tax invoices — cryptographically stamped, TLV QR-coded, and reported to Fatoora in real time. ECOSIRE builds, installs, and supports it for Saudi retailers and restaurants. Built to order by ECOSIRE for ERPNext v15, v16 — indicative price from $999.00 USD; request a quote for a scoped proposal.
Key Features
Built to order, done for you
No DIY setup — a working app, built, installed and supported by ECOSIRE.
- 1
You order
Start with a one-time build price. We scope it with you at kickoff.
- 2
We build & install
ECOSIRE builds, configures and installs it on your ERPNext.
- 3
Go live + support
You go live in about one working week, with two weeks of go-live support. Defects in the code we deliver are fixed free of charge.
Technical Specifications
- ERPNext Compatibility
- —
- License
- Licence confirmation required
- Python Requirement
- Python 3.10+
- Database
- MariaDB 10.6+
About this Product
Saudi retailers and restaurants running ERPNext POS face a hard regulatory wall: ZATCA's Fatoora Phase 2 (the Integration Phase) requires every simplified tax invoice issued at the counter to carry a cryptographic stamp, a TLV-encoded QR code, and to be reported to the ZATCA platform within 24 hours — with your device onboarded via a CSID (Cryptographic Stamp Identifier). ERPNext core gives you POS Invoices, VAT tax templates, and print formats, but it has no concept of a ZATCA CSID, no signed-XML generator, no UUID/PIH invoice hash chain, and no connection to the Fatoora reporting API. Teams try to bridge this with print-format hacks and manual QR strings, and end up with invoices that fail ZATCA validation and block go-live.
ECOSIRE builds a dedicated Frappe app that closes that gap end to end. The app ships as a proper Frappe module with its own DocTypes — a ZATCA Settings singleton for the seller identity, VAT registration, and environment (sandbox / simulation / production), a ZATCA Device DocType that stores each onboarded CSID and its private key, and a ZATCA Invoice Log that records the signed XML, the invoice hash (PIH/ICV chain), the QR payload, and the ZATCA clearance/reporting response for every document. We hook into the POS Invoice lifecycle through hooks.py doc events (on_submit, before_cancel): on submit, a server-side method builds the UBL 2.1 XML, applies the ECDSA cryptographic stamp using the device certificate, generates the Base64 TLV QR per ZATCA's tag specification, and calls the Fatoora reporting endpoint. Simplified invoices (B2C) are reported after issuance; standard tax invoices (B2B) go through the clearance flow. Bilingual Arabic/English tax invoice print formats render the seller/buyer data, VAT breakdown, and QR so the counter can hand over a compliant receipt immediately.
Under the hood the integration is designed to be operable, not a black box. CSID onboarding is driven from the ZATCA Device DocType via whitelisted methods that call ZATCA's compliance and production CSID APIs, so a store manager can onboard a new till without touching the server. Failed reports are queued and retried through a Frappe scheduler event rather than lost, and every attempt is written to the invoice log with the ZATCA request ID and any validation warnings. Role profiles and permissions keep certificate material and settings restricted to your finance/admin roles while cashiers only see the POS. The whole thing exposes clean whitelisted REST endpoints so a headless POS front end or a second location can trigger the same signing pipeline.
The app is built for the ERPNext/Frappe version you run — v15 or the current v16 — and tested against ZATCA's sandbox and simulation environments before it ever touches production. Because this is a build-to-order engagement, we start from your actual chart of accounts, VAT setup, POS profiles, and receipt layout rather than a generic template: the QR tags, invoice numbering, and clearance rules are wired to how your business actually issues invoices.
Delivery works as a scoped project, not a download. After a short scoping call we confirm exactly which invoice types, locations, and devices are in scope, then build, install on your staging site, and run UAT against the ZATCA sandbox. Typical delivery is one working week from confirmed scope. You receive the full source repository, install and configuration docs, a training session for your finance team, and a post-go-live support window so any ZATCA validation edge cases are handled while your first real invoices flow.
What you get
- Installable source code for your version — the complete Frappe app repository built for your ERPNext v15/v16 site
- Installation and configuration on your staging site, including ZATCA Settings, VAT setup, and print-format wiring
- CSID onboarding walkthrough for each POS device against ZATCA compliance and production endpoints
- Technical documentation covering DocTypes, hooks, whitelisted methods, scheduler jobs, and the signing pipeline
- User guide plus a live training session for your finance and store-operations team
- UAT on staging against the ZATCA sandbox/simulation environment, with a documented rollback plan
- Post-go-live support window to handle ZATCA validation edge cases as your first real invoices are issued
- Git repository handover with full commit history so your team or another vendor can maintain it
Who this is for
Saudi retail chain operations lead
Runs multiple ERPNext POS tills across stores and must ensure every counter issues a ZATCA-compliant simplified invoice with a valid QR before the Fatoora deadline, without slowing down checkout.
Restaurant / F&B finance manager
Needs bilingual Arabic/English tax invoices, correct VAT breakdown, and real-time reporting to ZATCA for high-volume B2C sales, plus a clean audit trail of what was reported and when.
ERPNext implementation partner in KSA
Delivering ERPNext to a Saudi client and needs a proven, source-available ZATCA Phase-2 POS integration they can install, extend, and support rather than building the cryptographic stamping and Fatoora API from scratch.
IT / systems administrator at a KSA SME
Responsible for onboarding CSIDs, managing device certificates, and keeping submissions flowing; wants retries, logging, and role-based access so cashiers never touch sensitive settings.
How KSA ZATCA E-Invoicing for POS (Fatoora Phase 2) Compares
| Criterion | ECOSIRE | Custom Build | Competitor | ERPNext Native |
|---|---|---|---|---|
| ZATCA Phase-2 cryptographic stamping | Built in — ECDSA signing on POS submit via doc event | Possible but you build the crypto and XML yourself | Varies; many only cover Phase-1 QR | Not supported at all |
| TLV QR code on simplified invoices | Base64 TLV per ZATCA tag spec, embedded in print format | Hand-coded QR string, easy to get wrong | Often a basic QR, not always full TLV spec | No ZATCA-aware QR generation |
| CSID onboarding & certificate management | Driven from a `ZATCA Device` DocType, no server access needed | Manual scripting per device | Sometimes present, often config-file based | No concept of CSID or certificates |
| Real-time Fatoora reporting/clearance | Wired to the Fatoora API with scheduler retries and logging | You build the API client and retry logic | May report but limited retry/audit handling | No integration with ZATCA platform |
| Fit to your ERPNext setup | Built to your CoA, VAT, POS profiles and receipt layout | Fully bespoke but slow and costly to build | Generic; you adapt your process to the app | Generic core, no KSA specialization |
| Source code & maintainability | Full git repository handed over at delivery | You own it but carry the whole build | Often closed-source or license-locked | Core only, nothing ZATCA to own |
| Delivery time | one working week from confirmed scope, with staging UAT | Months of in-house development and testing | Fast install but generic fit and gaps | Immediate but non-compliant |
| Support & spec-change updates | Post-go-live support window + optional update agreement | Your team maintains it alone | Vendor support quality varies | No ZATCA support path |
Frequently Asked Questions about KSA ZATCA E-Invoicing for POS
How long does delivery take?
This is a build-to-order engagement, not an instant download. After a short scoping call to confirm invoice types, locations, and devices, typical delivery is one working week from confirmed scope — including build, install on your staging site, and UAT against the ZATCA sandbox before production go-live.
How do support and updates work after go-live?
Every engagement includes a post-go-live support window to handle ZATCA validation edge cases as your first real invoices flow. Because you receive the full git repository, your team can maintain and extend it, and we offer ongoing support or update agreements — including adapting to ZATCA specification changes — as a separate arrangement.
Is this a ready-made app I can download from the Frappe marketplace?
No. ECOSIRE builds, installs, and supports this app specifically for your ERPNext setup — your chart of accounts, VAT configuration, POS profiles, and receipt layout. You get the source code and repository at handover, but the app is delivered as a scoped project, not a self-service download.
Which ERPNext versions and ZATCA phases are supported?
The app is built and tested for Frappe/ERPNext v15 and the current v16, and targets ZATCA Fatoora Phase 2 (the Integration Phase): cryptographic stamping, TLV QR codes, CSID onboarding, and real-time reporting/clearance via the Fatoora API.
Does it handle CSID onboarding and multiple POS devices?
Yes. Each till is represented by a `ZATCA Device` DocType that stores its CSID and certificate. Compliance and production CSID requests are driven through whitelisted methods, and the per-device invoice hash chain (PIH/ICV) is maintained so multi-location, multi-device setups pass ZATCA's sequence validation.
What happens if a submission to ZATCA fails or the connection drops?
Failed or queued submissions are retried automatically through a Frappe scheduler event rather than being lost. Every attempt — including the ZATCA request ID and any validation warnings — is recorded in the `ZATCA Invoice Log` DocType, so you always have an auditable trail of what was reported.
Will the tax invoices be bilingual and QR-coded correctly?
Yes. The app ships Arabic/English print formats with proper RTL layout, VAT breakdown, and an embedded Base64 TLV QR code built to ZATCA's tag specification, so the cashier can hand over a compliant simplified tax invoice at the counter immediately.
Related Modules

Kenya PAYE/NSSF/NHIF Payroll
A build-to-order Frappe app that adds Kenya statutory payroll to ERPNext — PAYE tax bands, tiered NSSF, SHIF/NHIF and the Affordable Housing Levy — with KRA iTax P10 and employee P9 outputs. ECOSIRE scopes, builds, installs and supports it for your instance.

Kitchen Display System (KDS) for ERPNext
A real-time kitchen display that streams ERPNext POS orders straight to cook stations with color-coded prep timers, bump-bar controls and multi-station routing. ECOSIRE builds, installs and supports it as a native Frappe app after we scope your kitchen with you.

Leave Management Pro for ERPNext
A build-to-order Frappe app that extends ERPNext leave management with rule-based accrual, carry-forward and encashment, multi-country holiday calendars, team conflict checks and delegated approvers. ECOSIRE scopes, builds, installs and supports it for you — it is not an instant marketplace download.

Lending & Loan Management for ERPNext
A build-to-order ERPNext app for running staff or customer loans end to end — loan products with configurable interest types, automated EMI schedules, interest and penal-interest accrual, disbursement and repayment entries, and collateral tracking. ECOSIRE scopes, builds, installs and supports it on your ERPNext v15/v16 site.
KSA ZATCA E-Invoicing for POS
A build-to-order ERPNext app that makes your point of sale issue ZATCA Phase-2 compliant simplified tax invoices — cryptographically stamped, TLV QR-coded, and reported to Fatoora in real time. ECOSIRE builds, installs, and supports it for Saudi retailers and restaurants.
- ZATCA Phase-2 compliant UBL 2.1 invoice XML generated server-side on POS Invoice submit via a `hooks.py` doc event
- ECDSA cryptographic stamp (digital signature) applied using the device certificate stored on the `ZATCA Device` DocType
- Base64 TLV-encoded QR code built to ZATCA's tag specification (seller name, VRN, timestamp, total, VAT, hash, signature) and rendered on every simplified invoice
- Real-time reporting of B2C simplified invoices and clearance of B2B standard invoices to the Fatoora API