ZATCAPlatform
ZATCA Phase 2 compliant

E-invoicing middleware built for integrators

Connect your ERP or POS to ZATCA Fatoora with a single REST API. Onboard locations, submit invoices asynchronously, and manage compliance at scale — without rebuilding ZATCA logic in every product.

invoice-submission.flow

Your ERP

POST /invoices

Middleware

Sign · Hash · Queue

ZATCA Portal

Report & Clear

99.9%
API uptime SLA
<200ms
Ack latency
3
Environments
24/7
Audit logs

Everything you need for Phase 2

One platform handles onboarding, cryptographic signing, hash chains, and portal submission — so your team ships faster.

Location onboarding

OTP-based CSID provisioning per branch. Compliance checks and production certificates stored encrypted.

Async invoice sync

Queue submissions with automatic retries, idempotency keys, and per-location hash chain protection.

Multi-tenant API

API clients with rate limits, IP allowlists, and strict tenant isolation across businesses and locations.

Sandbox → Production

Developer portal, simulation, and live environments — switch per location without code changes.

Full observability

Redacted request logs, audit events, and full submission history for every invoice.

Enterprise security

Encrypted credentials at rest, secret redaction in logs, and zero exposure of keys or OTP in API responses.

Three steps to go live

Integrate once. Onboard each outlet. Submit invoices — the platform handles ZATCA complexity.

  1. 01

    Get API credentials

    Receive an API key from your platform operator. Configure webhooks and rate limits.

  2. 02

    Onboard each location

    Register businesses and branches, then POST an OTP to provision CSID certificates.

  3. 03

    Submit invoices

    Send invoice JSON — we assign the hash chain, sign XML, and report to ZATCA asynchronously.

POST /api/v1/locations/{id}/invoices 202 Accepted
{
  "external_id": "INV-1001",
  "invoice": {
    "invoice_type": 388,
    "invoice_date": "2026-05-31",
    "total": 115.00,
    "tax": 15.00,
    "currency": "SAR"
  },
  "invoice_items": [...],
  "client": { "tax_number": "..." }
}

Ready to integrate?

Contact our team for API credentials and onboarding support to get your integration live.