ZATCA Phase 2 e-invoicing
In Saudi Arabia, ZATCA Phase 2 (the Fatoora e-invoicing system) requires every invoice and credit note to be signed, numbered in an unbroken chain and sent to ZATCA. Infotech POS does all of this for you. Once your shop is onboarded, every POS sale and return is an e-invoice, with nothing extra for the cashier to do.
This page explains how to onboard, what the statuses mean, and what to do when ZATCA rejects an invoice.
Before you start
- The add-on. ZATCA Phase 2 is an add-on that your platform operator switches on for your shop. Until then the page does not appear.
- Only the shop owner sees Settings › ZATCA Phase 2. Staff never do, whatever their role.
- Your ZATCA registration. You need the shop's VAT registration and access to the Fatoora portal (fatoora.zatca.gov.sa) with the shop's ERAD account, or someone the taxpayer has authorised.
- Exact details. The VAT number and seller details you enter must match the shop's ZATCA registration, because the one-time password (OTP) is tied to that VAT number.
The three environments
| Environment | Use it for | Invoices |
|---|---|---|
| Sandbox | Trying the setup. No real OTP is needed: leave the OTP empty and ZATCA's sandbox code 123345 is used. | Testing only, not reported to ZATCA for real. |
| Simulation | A final test with the shop's real ZATCA account, through the Fatoora Simulation Portal. | Checked like real ones, but not legally reported. |
| Production | Going live. | Reported to ZATCA for real. |
The recommended path is: Simulation first, make a few test sales, then reset and onboard in Production.
Step 1: Enter the seller details
- Open Settings › ZATCA Phase 2. The badge at the top shows Not onboarded.
- Under Seller, fill in:
| Field | What to enter |
|---|---|
| Seller name | The legal name as registered with ZATCA. |
| VAT number | 15 digits, starting and ending with 3. |
| Identifier type | Commercial registration, MOMRA license, MLSD license, Sagia license, 700 number or Other ID. |
| Commercial registration number (or Identifier) | For a commercial registration: 10 digits. |
| Branch name | Shown on the certificate (organisation unit). |
| Industry | Your business category, e.g. Restaurants. |
| Invoice types | Standard (B2B) and simplified (B2C), Simplified (B2C) only, or Standard (B2B) only. Choose both if you ever sell to VAT-registered businesses. |
- Under National address, fill in Street, Building number (4 digits), Additional number (4 digits, optional), District, City, Postal code (5 digits) and Region.
- Click Update & save.
If something required is missing, the page says Fill in the required details before onboarding.
Step 2: Get the OTP from the Fatoora portal
ZATCA gives the OTP only to the taxpayer, inside the Fatoora portal, so Infotech POS cannot fetch it for you.
- Open the Fatoora portal and sign in with the shop's ERAD account: the VAT/TIN number or the email registered with ZATCA, and its password.
- Simulation only: click the Fatoora Simulation Portal icon on the right side of the portal.
- Choose Onboard new solution unit / device.
- Enter 1 as the number of OTPs (your shop is one solution unit) and confirm.
- Copy the 6-digit OTP shown, or download it.
An OTP works once and expires after 1 hour. If it expires, generate a new one.
In the Sandbox, skip this step.
Step 3: Onboard
- Back on Settings › ZATCA Phase 2, under Onboarding, choose the Environment.
- Paste the 6-digit code into OTP (leave it empty in the sandbox).
- Click Onboard with ZATCA. Any unsaved changes to the details are saved first.
Infotech POS then creates the shop's private key and certificate request, registers with ZATCA using the OTP, passes ZATCA's compliance checks with sample invoices and credit notes, and receives the production certificate. This takes a few seconds. When it succeeds, you see The shop is onboarded with ZATCA and the page shows the EGS serial number, Onboarded at and Certificate valid until.
Onboarding statuses
| Status | Meaning | What to do |
|---|---|---|
| Not onboarded | Nothing sent to ZATCA yet. | Enter the details and onboard. |
| Onboarding in progress | Registration started and the compliance checks are running. | Wait for it to finish. If it stays in this state, use Reset onboarding and onboard again with a new OTP. |
| Onboarded | The shop is registered; every sale and return is now e-invoiced. | Nothing. Watch the certificate date. |
| Onboarding failed | ZATCA refused a step. The error is shown on the page. | Read the error. Common causes are an expired or already used OTP, or details that do not match the ZATCA registration. Correct the details, get a new OTP and onboard again. |
Once onboarded, the details are locked. To change them in Sandbox or Simulation, reset onboarding (see below).
Example: going live
A restaurant owner onboards in Simulation with an OTP from the simulation portal. They make a few sales, one return and one sale to a business customer with a VAT number, and check that they show as Reported and Cleared. Then they click Reset onboarding, choose Production, generate a new OTP in the real Fatoora portal and onboard again.
What happens on every sale and return
- Each sale is signed at once with the next number in the shop's chain, and its receipt prints the Phase 2 QR code.
- Each return is a credit note that refers to the original invoice and gives the return reason.
- The document is sent to ZATCA right after the sale. Anything not sent (network down, ZATCA unavailable) is retried automatically every minute.
- Offline sales are signed and sent when they sync. A receipt printed while offline carries the Phase 1 QR code.
Clearance and reporting
ZATCA treats business and consumer invoices differently:
| Invoice | When | What happens |
|---|---|---|
| Standard (B2B), cleared | The customer has a VAT number and a complete national address: building number (4 digits), postal code (5 digits), street, district and city. | ZATCA checks and stamps the invoice. The stamped invoice and QR are stored with the sale. |
| Simplified (B2C), reported | Every other sale, including walk-in customers. | The invoice is reported to ZATCA. ZATCA expects this within 24 hours. |
To issue standard invoices, record the business customer's VAT number and full address on the customer (see Customers and customer groups) and choose an invoice type that includes standard invoices.
E-invoice statuses
When the shop is onboarded, the page also shows how many e-invoices are in each status:
| Status | Meaning |
|---|---|
| Pending | Signed and waiting to be sent, or waiting for a retry. |
| Reported | A simplified invoice or credit note accepted by ZATCA. |
| Cleared | A standard invoice cleared and stamped by ZATCA. |
| Rejected | ZATCA refused the document. Its errors are shown. |
| Error | The document could not be signed or sent. |
The page also warns about overdue documents: those waiting for more than 20 hours, close to ZATCA's 24-hour limit. If you see overdue documents, check that the server can reach the internet and ZATCA; they are retried automatically.
When an invoice is rejected
- Open Settings › ZATCA Phase 2 and look at the rejected documents. Each shows the errors ZATCA returned.
- Correct the cause where it is in your data, for example a business customer's VAT number or national address.
- Use Send again. The document is signed again from the sale, with a new number in the chain, and sent.
- If it is rejected again and the error is not about your data, contact support.
Renew the certificate
The certificate has an expiry date. When it is less than 30 days away, the page warns: The ZATCA certificate expires soon.
- In the Fatoora portal, choose Renew existing cryptographic stamp identifier (CSID), enter 1 and copy the OTP.
- On the ZATCA page, paste it into Renew certificate and click Renew certificate within the hour.
Renewing keeps the device and the invoice numbering.
Reset onboarding
Reset onboarding removes the shop's ZATCA certificate and keys from Infotech POS, and the invoice numbering for ZATCA starts again. You need a new OTP to onboard again. Use it to move from Simulation to Production or to correct details; to keep going with a new certificate, use Renew certificate instead.
- The owner can reset Sandbox and Simulation, and a Production registration that never received a certificate.
- Once the shop is live in Production, only support can reset it, because a new registration starts a new invoice chain. The page then says To change them, contact support.
- Reset is refused while documents are still waiting to be sent.
After a production reset, the page reminds you for 60 days that the old device is still active on the Fatoora portal. Deactivate it there (Fatoora › Devices). The invoices it issued stay valid.
Good to know
- One e-invoicing unit serves the whole shop: all branches and tills share one counter, and signing happens on the server.
- Lines without VAT are reported as out of scope.
- The platform operator has a read-only ZATCA status page for all shops and watches for overdue, rejected and failed documents.
Related pages
- Taxes
- General settings
- Returns and credit notes
- Selling offline
- Reports (VAT report)
Last updated 17 Oct 2026