WhatsApp Us

Saudi Arabia · Phase 2 e-invoicing for your own systems

ZATCA e-invoicing integration for custom stores, ERPs and billing systems

ZATCA e-invoicing integration connects the system that issues your invoices to ZATCA's FATOORA platform so Phase 2 documents are cleared or reported automatically. BtechWaleTech is three freelance developers in India who add this to custom checkouts, in-house ERPs and billing tools: CSID onboarding, UBL 2.1 XML, hashing and signing, the QR code, and the clearance and reporting API calls, tested first in ZATCA's developer sandbox. Integration work starts from US$900.

  • Integration work fromUS$900, usually 6–12 weeks
  • CoversOnboarding, XML, signing, QR, APIs, retries
  • DocumentsStandard and simplified invoices, credit and debit notes
  • TestingZATCA SDK validator, then the Integration Sandbox
  • OwnershipCode, keys and cloud account in your name
  • After go-live2 months free maintenance, then from US$120/mo
  • Phase 2 (integration phase)
  • CSID onboarding per device
  • UBL 2.1 XML + hash chain
  • B2B clearance, B2C reporting
  • SDK and sandbox tested
  • Keys stay in your cloud
  • Code in your repository

Three freelance developers in India · India is 2.5 hours ahead of Riyadh · WhatsApp replies 7 days a week

  • 3Developers: one builds, one checks the XML, one runs the plan
  • 2Working days to an itemised integration quote
  • 2Months of free maintenance once you are live
  • 7Days a week we answer on WhatsApp

The short answer

What does ZATCA e-invoicing integration involve, and what does it cost?

ZATCA e-invoicing integration means your invoicing system onboards each device with a CSID, generates UBL 2.1 XML with a hash chain, signature and QR code, then sends B2B invoices for clearance before the buyer sees them and reports B2C invoices within 24 hours. With BtechWaleTech, a direct integration for a custom system starts from US$900 and typically takes 6–12 weeks.

If your invoices come from a store platform, check its built-in e-invoicing first, for example with a Salla store developer. Building a new billing system from scratch? Start with custom software development in Saudi Arabia.

Last updated

ZATCA e-invoicing integration with a remote team, in brief
Who it suitsBusinesses whose invoices come from their own code, not a ready-made package
Starting priceFrom US$900, quoted and invoiced in USD
Typical duration6–12 weeks, driven by document types and number of devices
First deliverableA gap report comparing your invoice data with ZATCA's data dictionary
Test routeOffline SDK validation, then sandbox onboarding and submissions
Your sideFATOORA portal access, OTP generation, VAT and address data, sign-off
Not includedTax advice or VAT return work; your accountant covers that

Integration work we do

ZATCA e-invoicing integration, broken into the pieces that matter

Most projects need all of these; some already have half of them done. The gap report in week one tells you which.

Direct FATOORA API integration

A service inside your stack that onboards each invoicing unit, builds and signs the XML, calls the clearance or reporting API and stores ZATCA's response against the invoice.

Invoice data clean-up

Mapping your existing fields to the data dictionary: seller and buyer VAT numbers, national address parts, VAT categories and exemption reasons, line-level totals and rounding.

Custom checkout and store invoices

Simplified invoices generated at order completion in a custom or WooCommerce-based store, reported within the 24-hour window, with the QR on the customer's PDF.

In-house ERP and billing modules

Standard invoices, credit notes and debit notes from your own ERP or job-costing tool, cleared before they are emailed to the buyer.

Connector to a ready-made solution

When you would rather not run the cryptography yourself, we pass clean invoice data to an e-invoicing solution you have chosen and pull back the cleared result.

Retry queue and failure alerts

Rejected or timed-out submissions go into a queue with the error text, an owner and an alert, so nothing sits unreported past the deadline.

Logistics and property billing

Freight, rent and service-charge invoices generated in bulk from operational systems.

Finance dashboards

Cleared, reported, warned and rejected counts per branch and per day, so finance sees the state at a glance.

Why choose us

Three ways to reach Phase 2: which one fits your invoicing setup?

There is no single right answer. The deciding question is where your invoices are created today and who will maintain that code next year.

Three ways to reach Phase 2: which one fits your invoicing setup?
Question Ready-made e-invoicing solution Add-on from your ERP vendor BtechWaleTech direct integration
Best when Invoices are few and simple, or you are replacing the billing tool anyway Your ERP vendor ships a supported Phase 2 module Invoices come from your own code and must stay there
Changes to your system Invoices move to the new tool or pass through a connector Usually a module switch plus configuration A new service added beside your existing code
Cost pattern Subscription, often per invoice or per branch Module licence or upgrade fee One build from US$900, optional care from US$120/mo
Who holds the private keys The solution provider, inside their platform Your ERP environment Your own cloud account or key vault
Fit with unusual invoices Depends on the product's templates Depends on the module Built around your document types and fields
Speed to go live Fast if data is clean Depends on the vendor's release About 6–12 weeks including sandbox testing
Arabic invoice layout Product templates Vendor templates Your bilingual PDF layout, with you approving the Arabic
Future ZATCA spec updates Handled by the provider Handled by the vendor Handled under care from us or any developer you choose
Local on-site support Often available Often available No; remote only, during your working day

If a supported ready-made solution already covers your invoices without workarounds, that is usually cheaper than a direct build, and we will tell you so in the gap report.

Pricing

What a ZATCA e-invoicing integration costs with us

Direct integrations are priced as custom software, from US$900 in US dollars. The quote grows with the number of document types you issue (standard and simplified invoices, credit and debit notes, self-billing), how many invoicing units need onboarding, how messy the current invoice data is, and whether we also build the PDF layout, retry queue and dashboards. A connector that simply feeds a ready-made solution you already chose is smaller and sits at the lower end. A store that also needs a new checkout starts from US$750. After two free months, care that covers ZATCA specification updates starts from US$120/mo.

Starting prices in INR and USD
ServiceIndia (INR)Worldwide (USD)Typical timelineWhat is included
Static website from ₹10,000 from US$150 1 to 2 weeks Up to 100 pages, Responsive design, Contact form and enquiry setup, Basic SEO tags and sitemap
SEO website (299+ pages) from ₹20,000 from US$300 3 to 5 weeks 299+ SEO pages, Keyword and page planning, Schema, sitemap, and internal linking, Design to deployment included
Ecommerce store from ₹50,000 from US$750 4 to 8 weeks Product and category pages, Payment gateway setup, Order and inventory basics, Performance tuning
Android & iOS app from ₹40,000 from US$600 6 to 10 weeks Android and iOS app (Flutter or React Native), Login, forms and push notifications, Admin panel and API connection, Google Play and App Store publishing
Custom web app or software from ₹60,000 from US$900 6 to 12 weeks Custom features and APIs, User accounts and roles, Admin panel, Deployment and handover
AI automation from ₹40,000 from US$600 2 to 4 weeks Workflow mapping, Tool and CRM integrations, AI agent or automation build, Testing and handover
Monthly SEO from ₹10,000/mo from US$150/mo Ongoing, monthly Technical fixes, On-page and content work, Local SEO and listings, Search Console reporting
Maintenance and support from ₹8,000/mo from US$120/mo Ongoing, monthly Content updates, Bug fixes, Backups and security checks, Speed and uptime checks

All prices are starting points, quoted in INR for India and USD for international clients, not fixed quotes. Final cost depends on the number of pages, features, integrations, content, and timelines. Share your requirement and you get an itemised estimate with nothing hidden. See full pricing.

What is ZATCA e-invoicing integration, and does your business need it?

ZATCA e-invoicing integration is the technical link between the software that creates your tax invoices and ZATCA's FATOORA platform, so each invoice is either cleared or reported electronically. ZATCA calls this Phase 2, the Integration phase, and according to its e-invoicing introduction it became enforceable from 1 January 2023, rolled out in waves of taxpayer groups.

You need a ZATCA e-invoicing integration project when your invoices come from something you or a developer built: a custom online checkout, a bespoke ERP, a job-costing tool, a subscription billing script or a branch POS with its own backend. Popular accounting packages and store platforms usually ship their own Phase 2 support, so the first check is whether the tool you already use does the work for you.

Resident VAT-registered taxpayers are in scope; ZATCA's own summary excludes non-resident taxpayers. If you are unsure whether your entity is covered or which wave it belongs to, that is a question for your tax adviser and for your FATOORA portal notifications, not for a developer.

  • Invoices generated by your own code or a heavily customised system: integration work is needed
  • Invoices from a mainstream accounting tool with Phase 2 support: configuration, not development
  • Invoices from a store platform: check its built-in e-invoicing before paying for anything
  • Invoices typed into spreadsheets or Word: move to a compliant solution; do not integrate the spreadsheet

Phase 1 vs Phase 2: what changed for your invoicing software?

Phase 1 was about generating and storing invoices electronically; Phase 2 is about connecting to ZATCA and producing invoices in a stricter structured format. ZATCA enforced Phase 1, the Generation phase, from 4 December 2021. From that date a handwritten or free-form document stopped being acceptable, and invoices needed a QR code with five basic fields for simplified invoices.

Phase 2 raises the bar for the software itself. The invoice becomes an XML document that follows ZATCA's XML Implementation Standard, which is built on UBL 2.1. Each invoicing unit is onboarded and receives a cryptographic stamp identifier (CSID). Every document carries a hash of the previous one, a digital signature and an extended QR code. And every invoice travels to FATOORA through an API, either before it reaches the buyer (clearance) or shortly after the sale (reporting).

In practice a Phase 1 system that stored PDFs with a QR code is not close to Phase 2 compliance. The data model often lacks fields ZATCA now validates, such as the buyer's structured national address or the reason for a zero-rated line. That is why a ZATCA e-invoicing integration starts with a data audit rather than with code.

How do you know when your business must complete Phase 2 integration?

ZATCA tells you. Its roll-out page states that taxpayers are notified of their Phase 2 wave at least six months in advance, and the integration requirement applies from the date set for your group. Watch the notifications linked to your VAT registration and the FATOORA portal rather than relying on blog posts that guess at thresholds.

Six months sounds generous, but it goes quickly once you count the steps: choosing between a ready-made solution and a direct build, cleaning invoice data, development, sandbox testing, onboarding every live device and training the finance team. For a custom system we suggest starting the gap report as soon as the notice arrives, so that development finishes with at least a month of sandbox and simulation testing left before the deadline.

If your notice has already arrived and the deadline is close, say so in your first message. The honest answer might be that a ready-made solution is the faster route for this deadline, with a direct ZATCA e-invoicing integration built afterwards once the pressure is off. We would rather tell you that than promise a timeline the project cannot meet.

Clearance vs reporting: how B2B and B2C invoices flow to ZATCA

Standard tax invoices (B2B) follow the clearance model, and simplified tax invoices (B2C) follow the reporting model. ZATCA's detailed guideline puts it plainly: a standard document is valid only once it has been cleared, so the seller must submit it for clearance before giving it to the buyer. FATOORA validates it, applies ZATCA's cryptographic stamp and returns an updated QR code.

Simplified documents work differently. You issue them to the customer at the point of sale, then submit them through the Reporting API within 24 hours of the transaction. FATOORA validates them and confirms, but does not stamp them, because your own device already signed them with its production CSID.

This split shapes your architecture. Clearance is synchronous: your system waits for ZATCA's answer before the invoice can be emailed, so a slow or failed call blocks a sales process. Reporting is asynchronous: a queue can batch and retry, which suits a busy checkout or a POS that briefly loses its connection.

Credit and debit notes

They follow the same model as the invoice they relate to: standard notes are cleared, simplified notes are reported, and each references the original document.

Self-billing

Where a ZATCA-approved self-billing agreement exists, the buyer submits the standard document for clearance instead of the seller. Your system needs a flag and a different submission path for these.

What is a CSID, and how does onboarding work for ZATCA integration?

A CSID (cryptographic stamp identifier) is the certificate that identifies one invoicing unit to ZATCA and lets it sign documents. Every E-invoice Generation Solution unit, which ZATCA shortens to EGS, gets its own. A single web server can be one unit; a chain with twelve POS terminals may have twelve.

Onboarding follows the steps in ZATCA's detailed technical guideline. A user with access to the FATOORA portal generates one-time passwords, up to 100 at a time, each valid for one hour. The unit creates a key pair, sends a certificate signing request with the OTP and receives a compliance CSID. It then passes a set of compliance checks by submitting sample documents, and only after that requests its production CSID, which is what live invoices are signed with.

CSIDs expire and need renewal through the same OTP routine before the expiry date. ZATCA's guideline also notes that production CSIDs are revoked automatically if the VAT registration is deregistered or suspended, for example on joining a VAT group, in which case the group re-onboards its units. Your ZATCA e-invoicing integration should therefore store each CSID's expiry and status and alert someone weeks in advance, not on the morning invoices start failing.

  • Portal side (you): generate OTPs in FATOORA and pass them securely to the unit
  • Unit side (the code): key pair, CSR with the right organisation fields, compliance CSID
  • Compliance checks: sample standard and simplified documents that must pass
  • Production CSID: stored in a key vault, never in the application database

Inside a Phase 2 invoice: UBL 2.1 XML, the hash chain and the signature

A Phase 2 invoice is a UBL 2.1 XML document with ZATCA-specific extensions, and FATOORA only accepts documents in XML, not PDF. ZATCA's XML Implementation Standard says tag names must follow the UBL 2.1 sequence and all mandatory UBL elements must be present, which is where hand-rolled string templates tend to break.

Beyond ordinary invoice data, three technical pieces matter. Each document has a UUID and an invoice counter value. Each carries the previous document hash (PDH): the SHA-256 hash of the last document the same unit generated, so all of a unit's standard and simplified documents form one chain. And each is signed with ECDSA using the unit's private key, with the signature, certificate details and signing time placed in the UBL extensions.

The chain rule has a sharp edge. ZATCA records the hash of rejected submissions too, so the next document must still point at the rejected one. A system that deletes a failed invoice and regenerates it with the same number breaks the chain for everything after it. In a ZATCA e-invoicing integration we treat the generated XML as immutable: fixes go into a new document or a credit note, never into an edited copy.

The Phase 2 QR code: which fields it carries and where it goes

The QR code is a base64 string of TLV-encoded fields (tag, length, value) that a phone can read to check the invoice. ZATCA's guideline lists the tags: seller's name, seller VAT number, invoice date and time, invoice total with VAT and VAT total (tags 1 to 5, required since Phase 1), then the XML hash, the ECDSA signature, the public key and, for simplified invoices, ZATCA's signature of the stamp's public key (tags 6 to 9, added in Phase 2).

For simplified invoices your unit builds the full QR itself and prints it on the receipt or PDF straight away. For standard invoices FATOORA adds or updates the QR during clearance, so the PDF you send the buyer should be rendered from the cleared response, not from your original draft.

Common faults we check for: lengths counted in characters instead of UTF-8 bytes (which breaks as soon as the seller's name is Arabic), timestamps in the wrong format, totals rounded differently from the XML, and a QR printed too small to scan on thermal receipts. Each is simple to fix and easy to miss without a decoder in the test suite.

Build a direct ZATCA e-invoicing integration or connect a ready-made solution?

Build direct when invoices are core to a system you own and will keep; connect through a ready-made solution when you want someone else to own the cryptography and the spec updates. Both are legitimate, and ZATCA publishes a Solution Providers directory on its e-invoicing site for businesses that prefer the second route.

A direct build puts every part in your hands: onboarding, XML, signing, API calls and storage. It suits a company with an in-house or long-term development partner, many document types, or invoices generated inside a workflow that a third-party tool cannot see. The cost is the build plus a commitment to keep up with ZATCA's published changes.

A connector is thinner. Your system sends clean invoice data to the provider's API; the provider signs, submits and returns the result, which you store and print. You pay the provider's fees for as long as you use it, and your data model still has to be good enough, so the clean-up work does not disappear.

Choose a direct ZATCA e-invoicing integration when

You issue several document types from your own code, you want the keys in your own cloud account, or per-invoice fees would add up at your volume.

Choose a connector when

The deadline is close, volumes are modest, or nobody will maintain the integration code after launch.

Choose a platform's built-in support when

Your invoices already come from a store or accounting tool that handles Phase 2 itself. Then the work is configuration and testing, not development.

ZATCA e-invoicing integration for online stores and custom checkouts

Online stores mostly issue simplified invoices, so the integration is a reporting flow triggered when an order is paid or completed. The store generates the XML, signs it, adds the QR to the customer's emailed receipt and queues the document for the Reporting API, with retries well inside the 24-hour window.

Which part needs development depends on the platform. Hosted Saudi store platforms and many international ones provide e-invoicing features or apps, and our Shopify developer page for Saudi stores covers that route. Custom checkouts and self-hosted stores built on WooCommerce or similar frameworks are where a direct build or connector usually earns its keep.

Watch the edge cases rather than the happy path. Partial refunds must produce simplified credit notes that reference the original invoice. Cash-on-delivery orders raise the question of when the sale is complete. B2B customers who give a VAT number at checkout may need a standard invoice and clearance instead of reporting. A good gap report lists each of these and agrees with your accountant how the store should treat it before any code is written.

Connecting an in-house ERP or billing system to FATOORA

For an ERP, the usual design is a separate e-invoicing service that the ERP calls when a document is approved, rather than cryptographic code threaded through the old modules. The service owns the keys, the counters and the hash chain, talks to FATOORA and writes the result back: status, cleared XML, QR string and any warnings.

Decide early how many invoicing units you have. One central service that issues all invoices can be a single unit. Branches that issue documents independently, or offline POS devices, each need their own unit, their own CSID and their own chain, which affects how you number invoices and how finance reconciles them.

Clearance adds a blocking call to your approval flow. If your ERP emails the invoice the moment someone clicks approve, that step must now wait for FATOORA's answer and handle a rejection gracefully, showing the error to the person who can fix the data. We usually add an “awaiting clearance” state and a small screen where finance can see and correct rejected documents without calling a developer.

  • One e-invoicing service, called by the ERP, holding keys and counters
  • A clear map of invoicing units: central server, branches, POS devices
  • An “awaiting clearance” status before any standard invoice is sent
  • Cleared XML and ZATCA's response stored with the invoice for archiving

What happens when ZATCA rejects an invoice or the API is down?

FATOORA returns one of three outcomes: valid, accepted with warnings, or invalid. ZATCA's guideline explains that warnings mean the document is accepted but not fully compliant, while an invalid document has at least one fatal error and is rejected with the error messages attached. Your system must record all three and route warnings and errors to a person.

Rejections of standard invoices are urgent, because the buyer cannot receive the invoice until it clears. Rejections of simplified invoices are urgent in a different way: the customer already has the receipt, so the fix must still be reported within the timeframe. In both cases the correction is a new document in the chain, not an edit to the rejected one.

Outages need a written plan. A reporting queue that retries with back-off copes with short interruptions. For clearance, agree with your finance team what the sales process does if the API is unreachable, and check ZATCA's current guidance on disabled clearance, which its guideline says can route standard documents through the Reporting API instead. We build the queue, the alerts and a daily summary of anything older than a few hours.

How to test a ZATCA e-invoicing integration before going live

Test in two layers: offline validation with ZATCA's SDK, then online submissions in the Integration Sandbox. ZATCA describes the Compliance and Enablement Toolbox as a downloadable tool that validates XML invoices, credit and debit notes and QR codes against its published rules, usable locally or through a command-line interface. The sandbox is a test FATOORA backend where a unit can go through onboarding and submit test documents for clearance and reporting.

We wire the SDK into the automated test suite, so every change to the invoice builder is checked against ZATCA's rules before it reaches the sandbox. The test set covers each document type you issue, zero-rated and exempt lines, discounts at line and document level, foreign-currency invoices if you have them, very long Arabic names, and credit notes against both invoice types.

Then comes a rehearsal on production-like data: a copy of last month's real invoices replayed through the new service, with totals compared against your accounting records. Differences of a halala usually point to a rounding rule, and it is far better to find them in rehearsal than in the first live week.

Keys, certificates and access: keeping the integration secure

The private key of each invoicing unit is the most sensitive part of a ZATCA e-invoicing integration, because anyone holding it can sign documents in your name. It belongs in a managed key vault or secrets store in your cloud account, readable only by the e-invoicing service, and never in source code, a shared drive or a chat message.

ZATCA's guideline uses ECDSA on the secp256k1 curve for the unit's key pair. We generate keys inside your environment, so they never pass through our laptops, and we log every signing operation with the document UUID, timestamp and outcome. Admin access to the service uses two-factor login and named accounts, so you can remove any person, including us, on the day they no longer need it.

OTPs deserve the same care. They are short-lived, but whoever generates them in the FATOORA portal controls which units join your account. Keep that permission with a small number of finance or IT staff, and have them enter or pass the OTPs themselves during onboarding sessions rather than sending batches of them to a supplier.

How much does ZATCA e-invoicing integration cost, and what drives the price?

With us, a direct integration for a custom system starts from US$900, and a thin connector to a solution you have already chosen sits at the lower end of that range. Quotes from other providers vary widely, and the gap usually comes from scope, not from hourly rates.

The biggest cost drivers are document variety, device count and data quality. A single web store issuing only simplified invoices is a modest job. An ERP that issues standard invoices, credit notes, debit notes and self-billed documents across several branches, each with its own unit, is several times larger. Data quality is the hidden one: if buyer addresses are free text and VAT categories are missing, the clean-up can take as long as the integration itself.

Running costs matter too. A direct build has hosting and maintenance costs but no per-invoice fee; a ready-made solution usually charges per invoice, per branch or per month. Compare three years of each, not just the first invoice. Your itemised quote from us lists document types, units, screens and tests separately, so you can see exactly what each part costs.

Working with an India-based team on ZATCA integration from Saudi Arabia

India is 2.5 hours ahead of the Kingdom, so a Saudi working day from 8 am to 5 pm sits inside our day, and the Sunday–Thursday week overlaps with ours on four days. Calls happen on Google Meet or Teams in English, and quick questions go through WhatsApp every day of the week.

The money side is simple. Quotes and invoices are in US dollars, the riyal being pegged to the dollar, and you pay by Wise, bank wire or PayPal against the milestones in the written quote. Invoices are issued from India; how your business treats a payment to a non-resident service provider for VAT or withholding tax is a question for your accountant, and we will supply whatever invoice details they need.

Ownership is set up on day one. The repository sits in your organisation's account, the cloud account and key vault are yours, and the FATOORA portal stays with your staff. We work as invited users you can remove.

Days 1–5

Kick-off call, access to a sample of invoices and your current schema, and a walkthrough of how documents are created and sent today.

Days 6–10

Gap report against ZATCA's data dictionary, a list of units to onboard, the agreed architecture and a fixed milestone plan for your approval.

Worked example: a hypothetical Dammam spare-parts wholesaler

Say a spare-parts wholesaler in Dammam, invented for this example, sells to garages on account through its own order system and to walk-in customers through two branch counters. Its notification has arrived, and its current system prints invoices with a Phase 1 QR code.

The gap report finds three document types (standard invoices to garages, simplified invoices at the counters, credit notes for returns), three invoicing units (the central order system and one per counter), and buyer addresses stored as a single text line. Fixing addresses becomes the first task, with a form that asks garages for their structured national address the next time they order.

The build adds an e-invoicing service in the wholesaler's cloud account. Garage invoices wait in “awaiting clearance” for a few seconds before they are emailed; counter receipts print instantly with the full QR and are reported through a queue. Returns generate credit notes linked to the original invoice. After SDK validation and sandbox runs, each unit is onboarded with OTPs generated by the finance manager, and last month's invoices are replayed to confirm totals match. That is a representative shape, not a promise about any real business's timeline.

ZATCA e-invoicing integration checklist and red flags

Run through this list before go-live, and treat the red flags below as reasons to ask harder questions of any developer, including us.

  • Wave notification date recorded, with a sandbox deadline one month before it
  • Every document type listed, with its model: clearance or reporting
  • Every invoicing unit named, with who generates its OTP
  • Seller and buyer data mapped to ZATCA's data dictionary, gaps fixed
  • SDK validation running in automated tests
  • Sandbox onboarding and submissions passed for each document type
  • Private keys in a vault; CSID expiry dates monitored
  • Retry queue, alerts and a daily summary of unsubmitted documents
  • Cleared XML and responses archived with each invoice
  • Finance staff trained to read and fix rejections

Red flags: a quote that never mentions the hash chain or CSID renewal; a plan to store private keys in the database; “we just generate a QR code”; no sandbox testing in the timeline; or anyone who offers tax advice alongside the code. Tax treatment belongs with your accountant, and the integration itself should be tested against ZATCA's tools, not against a promise. If personal data is involved in your invoices, our PDPL website compliance guide covers the data-protection side.

Flows

Clearance vs reporting in a ZATCA e-invoicing integration

Summarised from ZATCA's detailed technical guideline. Your accountant confirms which documents your business issues; we build the flow for each.

Clearance vs reporting in a ZATCA e-invoicing integration
PointStandard documents (B2B): clearanceSimplified documents (B2C): reporting
When sent to ZATCA Before the invoice is given to the buyerWithin 24 hours of the transaction
API used Clearance APIReporting API
Who stamps it FATOORA applies ZATCA's cryptographic stampYour unit signs it with its production CSID
QR code Added or updated by FATOORA in the responseBuilt by your unit and printed immediately
System design Synchronous: the sale waits for the answerQueue with retries inside the window
If rejected Fix data and issue a new document before sendingCorrect and report a new document; chain still continues
Typical source ERP, B2B portal, account billingOnline checkout, POS, counter sales

Scope and price

ZATCA e-invoicing integration scopes and starting prices

Starting prices in USD; your itemised quote reflects document types, units and data clean-up. See all starting prices.

ZATCA e-invoicing integration scopes and starting prices
ScopeStarts atTypical timeWhat it includes
Connector to a ready-made e-invoicing solution From US$9004–6 weeksData mapping, API calls, storing the cleared result
Direct integration, reporting only (one store) From US$9006–8 weeksOnboarding, XML, signing, QR, reporting queue
Direct integration, clearance and reporting From US$9008–12 weeksBoth flows, credit and debit notes, rejection screen
Multi-branch or POS units From US$90010–12 weeksUnit registry, per-unit chains, CSID monitoring
New store with e-invoicing built in From US$7504–8 weeksCheckout, receipts with QR, reporting
Finance dashboard for e-invoice status From US$6002–4 weeksCleared, warned and rejected counts by branch
Care after the free period From US$120/moMonthlySpec updates, CSID renewals, monitoring

Plan

Timeline for a Phase 2 integration against your wave deadline

A typical plan for a direct build. Start from your notification date and work backwards; ZATCA gives at least six months' notice, per its roll-out phases page.

Timeline for a Phase 2 integration against your wave deadline
PhaseWeeksOutputYour input
Gap report 1–2Data mapping, unit list, architectureSample invoices, schema access
Data clean-up 1–3Structured addresses, VAT categoriesDecisions from your accountant
Build 3–5E-invoicing service, queue, screensWeekly demo feedback
SDK and sandbox testing 2–3Passing tests for every document typeSign-off on test cases
Rehearsal on real data 1Replay of a past month, totals reconciledFinance comparison
Onboarding and go-live 1Production CSIDs, first live week watchedOTPs from the FATOORA portal

Across the Kingdom

ZATCA e-invoicing integration for businesses across Saudi Arabia

We work remotely for VAT-registered businesses anywhere in the Kingdom. What differs from city to city is the kind of system that issues the invoices.

  • Riyadh

    Service firms and regional head offices often bill clients from in-house ERPs or project tools, which means standard invoices that must clear before they reach the client.

  • Jeddah

    Importers and wholesalers with trade-account ordering systems issue large volumes of B2B invoices and credit notes, so clearance speed and returns handling matter most.

  • Dammam

    Industrial suppliers and contractors raise progress and service invoices from job-costing software, frequently with several branches each needing its own invoicing unit.

  • Al Khobar

    Clinics, training centres and property managers run billing modules inside booking or tenancy systems, and need simplified and standard invoices from the same code.

  • Jubail

    Suppliers serving industrial plants invoice against purchase orders from custom portals, where matching PO references and buyer details to ZATCA's fields takes care.

  • Makkah

    Hotels, transport operators and caterers issue high volumes of simplified invoices in peak seasons, so the reporting queue must cope with bursts.

  • Madinah

    Hospitality and visitor-service businesses with their own booking engines need receipts with the full QR code issued instantly and reported reliably.

  • Buraidah

    Agricultural traders and date wholesalers in Qassim invoice buyers on account from order systems that often need buyer address data cleaned first.

  • Al Hofuf

    Family-run retail and food groups in Al Ahsa with custom POS backends must onboard each counter as a unit and keep separate hash chains.

  • Taif

    Seasonal hospitality and farm businesses with small custom booking or ordering sites usually need a reporting-only flow tied to online payments.

  • Tabuk

    Contractors and property firms in the north-west bill from project and rental systems, generating standard invoices and credit notes that need clearance.

  • Abha

    Growing hotel, education and retail businesses in Asir ask whether a ready-made solution or a direct build suits their modest invoice volumes.

  • Jazan

    Distributors and logistics operators near the port raise freight and trade invoices from operational software that was never designed around e-invoicing.

  • Yanbu

    Maintenance and logistics companies serving industrial sites issue service invoices from work-order tools, often with multiple contracts per buyer.

How it works

ZATCA e-invoicing integration in six steps

  1. Share how invoices are made today

    Tell us on WhatsApp which system issues your invoices, how many branches or devices create them, and the date on your ZATCA notification, if one has arrived.

  2. Gap report

    We compare sample invoices and your data model with ZATCA's data dictionary, list every document type and unit, and recommend a direct build, a connector or built-in support.

  3. Itemised quote

    Within about two working days you receive a USD quote split into milestones. Nothing is billed before you approve it in writing.

  4. Build with automated validation

    The e-invoicing service is built in your cloud account, with ZATCA's SDK checking every generated document in the test suite from the first week.

  5. Sandbox and rehearsal

    Onboarding and submissions in ZATCA's sandbox for each document type, then a replay of real past invoices to reconcile totals with finance.

  6. Onboard units and go live

    Your staff generate OTPs, each unit receives its production CSID, and we watch the first live week closely before two free months of maintenance begin.

Questions

ZATCA e-invoicing integration: questions businesses ask

What is ZATCA e-invoicing integration?

It is the connection between the software that issues your tax invoices and ZATCA's FATOORA platform, required in Phase 2. Your system onboards each invoicing unit with a CSID, produces UBL 2.1 XML invoices with a hash chain, signature and QR code, and sends them to ZATCA: standard B2B invoices for clearance before the buyer receives them, simplified B2C invoices for reporting within 24 hours.

How much does ZATCA e-invoicing integration cost?

With BtechWaleTech, a direct integration for a custom store, ERP or billing system starts from US$900, quoted in US dollars. The final figure depends on how many document types you issue, how many invoicing units need onboarding, how clean your invoice data is, and whether you also want a rejection screen or dashboard. A ready-made solution may cost less up front but usually charges ongoing fees.

How long does a ZATCA Phase 2 integration take?

A direct integration usually takes 6–12 weeks from approved scope: one to two weeks for the gap report, a few weeks of build, two to three weeks of SDK and sandbox testing, then onboarding. Messy buyer data or many branches push it towards the long end. Since ZATCA gives at least six months' notice of your wave, start soon after the notice arrives.

What is the difference between clearance and reporting?

Clearance applies to standard tax invoices (B2B): your system submits the invoice to ZATCA, which validates and stamps it, and only then can it go to the buyer. Reporting applies to simplified tax invoices (B2C): you give the customer the invoice at the sale and submit it to ZATCA within 24 hours. Clearance is a waiting step; reporting can run through a retry queue.

What is a CSID in ZATCA e-invoicing?

A cryptographic stamp identifier is a certificate that identifies one invoicing unit to ZATCA and lets it sign documents. The unit first gets a compliance CSID using an OTP from the FATOORA portal, passes compliance checks with sample documents, then receives a production CSID for live invoices. Each CSID expires and must be renewed, so the integration should track expiry dates.

Do I need a ZATCA e-invoicing integration if I use accounting software?

Often not. If your invoices come from an accounting package or store platform that supports Phase 2, the work is setting it up, onboarding it and testing it. Integration development is needed when invoices come from your own code, a heavily customised system, or a tool without Phase 2 support. Our first step, the gap report, answers this before any build is quoted.

When does my business have to complete Phase 2?

ZATCA rolls Phase 2 out in waves by taxpayer group and says it notifies taxpayers of their wave at least six months in advance. The date that applies to you is in the notification linked to your VAT registration. We plan backwards from that date, aiming to finish sandbox testing a month before it. Your tax adviser can confirm whether your entity is in scope.

Can you integrate our custom ERP with FATOORA?

Yes. We usually add a separate e-invoicing service that your ERP calls when a document is approved. The service holds the keys, counters and hash chain, builds and signs the XML, calls the clearance or reporting API, and writes the status, cleared XML and QR back to the ERP. Your existing modules change as little as possible.

Is it better to build a direct integration or use a ready-made solution?

Build direct when invoices come from a system you own and will keep, you issue several document types, or per-invoice fees would add up. Use a ready-made solution when the deadline is close, volumes are small, or nobody will maintain the code. ZATCA publishes a Solution Providers directory for the second route. Our gap report recommends one honestly.

How do you test the integration before it goes live?

First with ZATCA's Compliance and Enablement Toolbox, which validates invoice XML and QR codes offline and runs in our automated tests. Then in ZATCA's Integration Sandbox, where a test unit goes through onboarding and submits each document type for clearance or reporting. Finally we replay a month of your real invoices and reconcile totals with finance before onboarding live units.

What happens if ZATCA rejects an invoice?

The system records the error messages, marks the document as rejected and alerts the person who can fix the data. The correction is issued as a new document, because ZATCA records the hash of rejected submissions and the next document must still reference it. For standard invoices, the buyer receives nothing until a corrected invoice clears.

Where are the private keys stored?

In a key vault or secrets store inside your own cloud account, readable only by the e-invoicing service. Keys are generated in your environment, so they never pass through our machines, and signing operations are logged. Admin access uses named accounts with two-factor login, and you can remove any user, including us, whenever you choose.

Does the ZATCA e-invoicing integration work for online stores?

Yes. A store mostly issues simplified invoices, so the integration generates and signs the XML when an order is paid, puts the full QR on the emailed receipt and reports the invoice within 24 hours through a queue. Refunds produce linked credit notes. If you also need a new store, ecommerce builds start from US$750.

Do you handle ZATCA registration or VAT advice?

No. Your staff keep FATOORA portal access, generate OTPs and handle VAT registration matters, and your accountant or tax adviser decides how each transaction is treated. We build and test the software so it produces what ZATCA's published technical rules require, and we can join a call with your accountant to turn their decisions into invoice logic.

Can a team in India handle a ZATCA integration for a Saudi business?

Yes. The work is software against published specifications, a sandbox and APIs, so it runs well remotely. India is 2.5 hours ahead of Saudi Arabia, giving a large daily overlap across the Sunday–Thursday week. Your staff keep control of the FATOORA portal and keys, and every milestone is demonstrated on a test environment in your own cloud account.

How are payments and contracts handled?

You get an itemised quote in US dollars with milestones, and nothing is billed before your written approval. Payment is by Wise, bank wire or PayPal, with invoices issued from India. Confidentiality and change terms are agreed in writing in your quote; see our terms page. Ask your accountant how a payment to a non-resident provider is treated.

Who owns the integration code?

Your business does. The repository is created in your organisation's account from the start, together with the cloud account and key vault. At handover you receive documentation of the architecture, the unit registry, the CSID renewal routine and the test suite, so another developer could maintain it without us.

What maintenance does a ZATCA integration need after go-live?

CSID renewals before expiry, onboarding of new branches or devices, updates when ZATCA publishes new versions of its specifications or SDK, and monitoring of the retry queue. You get two months of free maintenance after launch; ongoing care then starts from US$120/mo a month. Many clients keep care active mainly for specification updates.

Do invoices need to be in Arabic?

Invoice language requirements are a VAT question for your accountant. On the technical side, the XML handles Arabic text fully, and we design bilingual Arabic and English PDF layouts on request. The team writes English, so you supply or approve the Arabic labels, and we test that Arabic seller and buyer names encode correctly in the QR code.

What does the Phase 2 QR code contain?

ZATCA's guideline lists tags for the seller's name, VAT number, invoice date and time, total with VAT and VAT total, plus Phase 2 additions: the XML hash, the ECDSA signature, the public key and, for simplified invoices, ZATCA's signature of the stamp's public key. It is TLV-encoded and base64 encoded; for standard invoices FATOORA adds or updates it during clearance.

What do you need from us to quote a ZATCA e-invoicing integration?

A short description of the system that issues invoices, a handful of sample invoices and credit notes, access to the data schema or an export, the number of branches or devices that issue invoices, and your wave notification date if you have one. With that we can prepare the gap report and an itemised quote in about two working days.

Next step

Got your Phase 2 notification, or expecting it?

Send us a WhatsApp message describing the system that issues your invoices and your wave date. We will reply with a gap-report plan and, within about two working days, an itemised quote, with direct integrations starting from US$900 and every key and line of code staying in your name.