Your system serves many merchants. One integration with us gives each of them a complete invoicing establishment with the Authority — their own certificate, their own chain, unlimited invoices — from inside your screen, without ever leaving it.
We reply within business hours · Full documentation in English
ZATCA Tools
Fatoora platform
How the integration works
Certificates, signing, the hash chain, clearance and reporting, archiving — all behind a handful of REST calls. What stays with you is what is really yours: your screen and your relationship with your customer.
No key per merchant, no secret stored per customer. Your one partner key issues invoices for any merchant on your platform with a single header naming them — one secret in your vault, one rotation when needed.
POST /api/v1/invoices
Authorization: Bearer ztkp_live_7f3a…
X-Merchant-Id: 34
{ "type": "simplified", "lines": [ … ] }
201 { "number": "INV-2026-01204",
"status": "accepted", "qr": "…" }
The Authority issues the code to the taxpayer and no API can fetch it. Where it gets typed is free, though: your system collects it from the merchant and passes it to us, and we run the whole onboarding — compliance certificate, the six checks, production certificate — without the merchant ever leaving your screen.
POST /merchants/34/connect
{ "otp": "482917" }
202 connecting → poll /status
A seat is reserved when you create the merchant and its clock starts the day they actually connect to ZATCA. A merchant you created who never finished connecting costs you nothing, and a merchant who left frees their seat for someone else.
Who is connected, who is stuck at the OTP, and whose invoices were rejected. Mint an Onboarding Link for a stuck merchant, and rotate your key yourself at two in the morning without waiting for anyone.
A restaurant chain on your system? Each branch gets its own device, certificate and independent chain through the same API, with reports per branch.
Who this is for
If e-invoicing is a question your customers keep asking you, this integration is your answer — without building the Authority's plumbing yourself.
How to start
POST /api/partner/merchants
{ "name": "مطعم الذواقة",
"vat_number": "3101…", … }
201 { "merchant": { "id": 34 },
"onboarding_url": "…" }
Every endpoint, parameter and error code is in the API reference — in English, the way your developer reads it.
Trust and security
The Authority issues certificates to the taxpayer, not to the software, and there is no such thing as a shared certificate. So every merchant on your platform is a separate establishment with its own certificate, chain and archive — and your key acts on its behalf without touching any of it.
Contact us
Seat counts and terms are agreed according to your size and your system — which is why there is no price on this page. Write to us and we reply within business hours.
Tell us how many merchants and which system, and we set up your partner account and key in one conversation.
{
"partner": {
"name": "Smart POS Co.",
"status": "active",
"seats": { "limit": 50, "used": 37, "remaining": 13 }
}
}