Solo
One business, own invoices only
~$40
- 500 inv/mo
- 1 company · 1 prod + 2 sandbox EGS
✦ ZATCA Phase 2 Compliant ✦
For businesses in Saudi Arabia
Esnad sits between your system and ZATCA Fatoora. You send invoice data. We handle the XML, certificates, cryptographic signing, PIH chain, and QR code. Your customers get ZATCA-compliant invoices. You write zero ZATCA code.
No credit card required · Sandbox provisioned within 24 hours · Data in AWS Middle East (me-south-1)
Tell us your company name and plan. We provision your sandbox within 24 hours and email your dashboard login.
We generate keys, build the CSR, run the ZATCA compliance flow, and get your production cert. You provide the OTP from Fatoora. Takes ~60 seconds.
POST JSON to our API. We sign, submit to ZATCA, and return the cleared invoice with UUID and QR.
You only touch Fatoora portal once per year — to generate an OTP for certificate renewal. Everything else is us.
Saudi profile, all namespaces, correct field ordering
9-tag binary, base64, max 700 chars — generated automatically
secp256k1, DER-encoded, embedded in UBL extension
We maintain the Previous Invoice Hash across every invoice, per EGS unit
We alert 30/14/7/1 days before expiry. Renew in one API call.
ZATCA down? We queue and retry. B2C 24h window absorbs short outages. You always get a response.
Clearance inline when Fatoora is healthy; queued with retries when it is not.
Production signed XML encrypted in AWS S3 for 6 years. Sandbox is not archived to S3.
Issue first, we report to ZATCA within the required 24h window.
We POST to your URL when invoices are cleared or reported. HMAC-signed.
We track every ZATCA change. Your API contract stays the same — we absorb updates so you never go outdated.
Download any cleared invoice as PDF via API. No extra setup.
Send egs_unit_id on every invoice so each branch or POS is attributed correctly. One API key can serve many units.
Send the same idempotency key and get the same invoice back — safe retries.
Documented per-plan limits (req/min). No surprises.
Full audit trail of API and dashboard actions in your account.
Invite team members to the dashboard. One account, multiple users.
One organization, many legal entities — each with its own VAT, CR, and EGS units. Switch companies in the dashboard; billing pools across the org.
TOTP-based 2FA for dashboard login. Your keys stay secure.
ZATCA changes requirements, error codes, and formats over time. Build directly and you risk constant rework. With Esnad, your API stays the same — we handle every update, data, and versioning. You get the complete solution; no one else.
You built the POS. Every merchant needs their own ZATCA entity. Add companies under one org, EGS per branch, optional white-label on Platform.
→ Studio or Platform plan
Your Saudi client needs Phase 2 now. Integrate once, ship to them. Multi-entity accounts for holding groups and franchise networks.
→ Business plan SAR 349/mo
Manage ZATCA for 30+ client companies in one org. Separate VAT profiles, shared team access, pooled invoice quota, cert alerts across the board.
→ Studio plan SAR 799/mo
All invoice data, signed XML, and private keys are stored in AWS Middle East regions. No data leaves the GCC. ZATCA data residency guidelines compliant.
Signed XML
Production S3 — 6 yrs · Encrypted
Private Keys
Secrets Mgr · Never in DB
Invoice data
RDS MySQL · Encrypted
We issue our own invoices through Esnad. Every SAR you pay us is ZATCA-compliant.
14-day free trial on all plans. Request access — no credit card.
One business, own invoices only
~$40
POS & agencies — up to 3 companies
~$93
Firms & integrators — up to 10 companies
~$213
White-label & reseller platform: multi-merchant ERPs, POS networks, franchise groups, API partners — custom volume, entities, and branding
Quoted after we learn your volume & use case
The fastest way to integrate ZATCA compliance into any system — without ZATCA boilerplate.
const response = await fetch('https://api.esnadapi.com/v1/invoices/simplified', {
method: 'POST',
headers: {
'Authorization': 'Bearer zatca_live_xxxxxxxxxxxx',
'Idempotency-Key': crypto.randomUUID(),
'Content-Type': 'application/json',
},
body: JSON.stringify({
egs_unit_id: 'egs_abc123',
invoice_number: 'INV-2026-001',
invoice_date: '2026-01-15',
seller: { name: 'Al Noor Trading', vat_number: '310122393500003' },
line_items: [{ description: 'Cappuccino', quantity: 2, unit_price: 18.00, vat_category: 'S' }],
currency: 'SAR'
})
});
const data = await response.json();
// data.uuid, data.qr_code, data.status === 'reported'Flow & integration, API reference, invoices, EGS, webhooks, and rate limits — all on our docs site.
Open docs.esnadapi.com →14-day free trial · 10 live invoices · Provisioned within 24 hours
Questions? support@esnadapi.com