A build-to-order Frappe app that makes ERPNext generate ZATCA Phase-2 compliant UBL e-invoices with cryptographic stamps, compliant QR codes and live Fatoora portal clearance and reporting. ECOSIRE scopes, builds, installs and supports it for your KSA entity. Built to order by ECOSIRE for ERPNext v15, v16 — indicative price from $799.00 USD; request a quote for a scoped proposal.

A build-to-order Frappe app that makes ERPNext generate ZATCA Phase-2 compliant UBL e-invoices with cryptographic stamps, compliant QR codes and live Fatoora portal clearance and reporting. ECOSIRE scopes, builds, installs and supports it for your KSA entity.
No payment now. This sends a quote request to our team — we'll follow up by email with pricing and next steps.
If your company falls under a ZATCA (Fatoora) integration wave, ERPNext out of the box cannot get you compliant. Core ERPNext will print an Arabic/English invoice and even render a basic TLV QR, but it does not onboard a Cryptographic Stamp Identifier (CSID), it does not generate the ZATCA-flavoured UBL 2.1 XML with the required invoice hash chain (PIH/previous-invoice-hash), it does not apply the ECDSA cryptographic stamp, and it does not call the Fatoora clearance or reporting APIs. That last-mile gap — the exact thing ZATCA audits — is where a plain ERPNext deployment runs out of road, and where manual workarounds and spreadsheets quietly create non-compliance risk on every standard (B2B) and simplified (B2C) invoice.
Dedicated Frappe app with its own module, `hooks.py` doc events and fixtures — no monkey-patching of ERPNext core
ZATCA-compliant UBL 2.1 XML generated from `Sales Invoice`/`POS Invoice`, taxes and customer VAT/CR fields
CSR generation and OTP-based CSID onboarding against the ZATCA compliance and production endpoints
ECDSA (secp256k1/256) cryptographic stamping with secure private-key storage in `ZATCA Settings`
SHA-256 invoice hash chain with previous-invoice-hash (PIH) continuity across submitted documents
Compliant Base64 TLV QR code (seller name, VAT, timestamp, total, VAT amount, hash, stamp) on the print format
ECOSIRE builds a dedicated Frappe app (for example ksa_zatca) with its own module, DocTypes and doc-event hooks that plug directly into your ERPNext Sales Invoice and POS Invoice lifecycle. We add a ZATCA Settings single DocType (production/simulation environment, CSR fields, OTP-based onboarding, CSID storage) and a ZATCA E-Invoice Log DocType that records the signed XML, invoice hash, PIH, QR payload, clearance/reporting UUID and the full ZATCA response for every document. On Sales Invoice on_submit, a hooks.py doc event builds the UBL 2.1 XML from the invoice, its taxes and the customer's VAT/CR details, canonicalises it, computes the SHA-256 invoice hash, applies the ECDSA-256 cryptographic stamp using the onboarded private key, and generates the ZATCA-compliant Base64 TLV QR that is embedded on the print format.
The integration then talks to the Fatoora platform the way ZATCA mandates: standard tax invoices are sent to the clearance API and only marked valid once ZATCA returns the cleared, stamped XML, while simplified invoices are cryptographically stamped locally and pushed to the reporting API within the required window. Whitelisted methods exposed over the Frappe REST API let your POS or external systems trigger stamping and reporting programmatically, and a Frappe scheduler event retries any invoice that failed to reach Fatoora (network, token expiry, throttling) so nothing is silently left un-reported. Client scripts surface clearance status, warnings and errors directly on the invoice form, and role profiles restrict who can onboard credentials versus who can submit invoices.
Because this is compliance-critical, it is built to order for your specific ERPNext instance, chart of accounts, tax templates and CR/VAT registration — not shipped as a generic download. After a short scoping call we confirm your ZATCA wave, entity structure, invoice types and print-format requirements, then build, test against the ZATCA sandbox (simulation) portal, and run UAT on a staging copy of your site before go-live. Typical delivery is 2 to 4 weeks from confirmed scope, targeting Frappe/ERPNext v15 and v16, and every engagement ships with the source app, a git repo handover and a post-go-live support window.
Falls under a ZATCA integration wave and is accountable for compliant clearance and reporting. Needs every standard and simplified invoice to be stamped, QR-coded and accepted by Fatoora without manual steps or audit exposure.
Already runs sales and accounting in ERPNext and does not want to bolt on a separate e-invoicing tool. Wants Phase-2 compliance native to the `Sales Invoice` and POS flows their team already uses.
Owns the ERPNext instance and needs a clean, maintainable Frappe app they receive as source with a git handover — not an opaque black box — so they can support, extend and upgrade it across v15/v16.
Operates several companies each with its own VAT/CR registration and wave deadline. Needs per-company ZATCA credentials, environment separation and consistent stamping/reporting across all entities.
Buy the license on ecosire.com and download the Saudi ZATCA Phase-2 E-Invoicing (Fatoora) app ZIP from your account dashboard.
Extract the ZIP into your bench's apps folder, or run `bench get-app` with the path to the extracted app.
Run `bench --site SITE_NAME install-app APP_NAME` followed by `bench migrate` to install Saudi ZATCA Phase-2 E-Invoicing (Fatoora) and apply its schema.
Open the ECOSIRE License settings on your site and activate your license key. Requires the free ecosire_connect and ecosire_license_client apps.
| Criterion | ECOSIRE | Custom Build | Competitor | Odoo Native |
|---|---|---|---|---|
| ZATCA Phase-2 clearance/reporting | Built-in clearance + reporting API flows, verified in sandbox | You build and certify the API integration yourself | Varies; often reporting-only or partial coverage | |
| Cryptographic stamp + CSID onboarding | CSR/OTP onboarding and ECDSA stamping delivered and configured | Must design key handling and onboarding from scratch | Usually included but as a fixed black box | |
| Compliant TLV QR code | Full Base64 TLV QR with hash and stamp on AR/EN format | Depends on your developer implementing the TLV spec | Generally provided | |
| Fit to your ERPNext setup | Built around your COA, tax templates and CR/VAT entities | Fully bespoke but you own all the effort | Generic; you adapt your data to its assumptions | |
| Source code ownership | Full source plus git repo handover | You own it; you also maintain it | Often closed source or licence-locked | |
| Delivery time | 2 to 4 weeks from confirmed scope | Months of build, test and certification | Fast to install, slow to fit your edge cases | |
| Retry + audit logging | Scheduler retries plus per-invoice ZATCA log DocType | Only if you build monitoring yourself | Basic logs, limited retry control | |
| Support and future ZATCA changes | Post-go-live window plus optional maintenance | Internal team on the hook for every rule change | Vendor roadmap, not tailored to you |
No. This is build-to-order. Because ZATCA compliance depends on your specific ERPNext configuration, chart of accounts, tax templates and CR/VAT registration, ECOSIRE builds the Frappe app for your instance, onboards your ZATCA credentials, tests it and installs it. You receive the full source and a git repository at handover.
Typical delivery is 2 to 4 weeks from confirmed scope. After the scoping call we lock down your ZATCA wave, invoice types, entities and print-format requirements; that agreed scope starts the clock. Complex multi-entity or heavily customised setups can extend the timeline, and we tell you up front if so.
Yes. Standard tax invoices go through the ZATCA clearance API and are only marked valid once ZATCA returns the cleared, stamped XML. Simplified invoices are cryptographically stamped locally and pushed to the reporting API within the required window, with a scheduler retry for anything that fails to reach Fatoora.
The app is built for Frappe/ERPNext v15 and v16. We confirm your exact bench and site version during scoping and target that, and the git handover means your team can maintain it across future upgrades.
Every engagement includes a post-go-live support window covering defects, ZATCA rejections and clearance/reporting issues. Because ZATCA periodically revises technical rules, we can also scope an ongoing maintenance arrangement to keep the app aligned with future Fatoora changes.
CSR generation and OTP-based CSID onboarding run against the ZATCA endpoints, and the resulting private key and CSID are stored in a restricted `ZATCA Settings` DocType. Role profiles separate who can onboard credentials from who can submit invoices, and a simulation/production switch prevents accidental cross-environment submissions.
No. The logic lives in a separate Frappe app hooked into `Sales Invoice`/`POS Invoice` doc events rather than modifying ERPNext core. We build and test on a staging copy of your site, run UAT against the ZATCA simulation portal, and only cut over to production with a documented rollback plan.
A build-to-order Frappe app that makes ERPNext generate ZATCA Phase-2 compliant UBL e-invoices with cryptographic stamps, compliant QR codes and live Fatoora portal clearance and reporting. ECOSIRE scopes, builds, installs and supports it for your KSA entity.