SAP Business One in Saudi Arabia: ZATCA Phase 2, 15% VAT and Arabic invoices
By Zain Abbas, Kodenova · Updated
SAP Business One is SAP’s ERP for small and midsize companies, such as distributors, traders, manufacturers and service companies that have outgrown accounting software but do not need a large-enterprise system. It runs in the Kingdom on SAP’s Central MENA localization. Three rules shape the system: VAT at 15%, invoices in Arabic, and ZATCA e-invoicing, whose Phase 2 connects your invoicing system to ZATCA’s Fatoora platform. This page covers all three, with a SQL and HANA query to check your VAT by tax code.
I am Zain Abbas, a SAP Business One developer. Saudi Arabia is one of the 13 countries where Kodenova has clients, and we built ZatcaBridge, a ready-to-install bridge that clears and reports SAP Business One invoices to ZATCA. The regulatory facts below come from ZATCA (the Zakat, Tax and Customs Authority) and from SAP’s own documentation, all linked at the end.
What role does SAP Business One play in Saudi companies?
For a Saudi company, SAP Business One holds sales, purchasing, inventory, banking and the general ledger in one database, on SQL Server or SAP HANA. In the SAP Help Portal, Saudi Arabia is documented as part of one shared localization, Central MENA/AE/EG/LB/OM/QA/SA:
| Area | What SAP documents for Central MENA (including Saudi Arabia) |
|---|---|
| Tax setup | Tax groups and tax definitions, tax code determination rules, withholding tax codes |
| Tax reporting | Tax declaration boxes with row definitions, the tax report, tax declaration box report, tax reconciliation report |
| Documents | Folio number assignment and checks for printed documents |
| Banking | Postdated checks, bills of exchange |
The localization is chosen when the company database is created and cannot be changed later. What the localization does not decide for you is how ZATCA e-invoicing is done. That depends on your SAP Business One version and on the integration you choose, so ask your SAP partner what your current setup covers before you plan.
How do you set up 15% VAT in SAP Business One?
Saudi Arabia raised its standard VAT rate from 5% to 15% on 1 July 2020. Some supplies are zero-rated, some exempt and some outside the scope of VAT. Each treatment needs its own tax code in SAP B1, because ZATCA’s XML carries a VAT category on every line (S, Z, E or O) and zero-rated, exempt and out-of-scope lines also need a reason.
| Treatment | Tax code in SAP B1 | Input VAT recoverable |
|---|---|---|
| Standard-rated | 15% output and input codes | Yes |
| Zero-rated (for example exports of goods) | 0% code, category Z, with a reason | Yes |
| Exempt (for example residential leases) | Exempt code, category E, with a reason | Generally no |
| Out of scope | Separate code, category O, with a reason | Not applicable |
VAT numbers. A Saudi VAT registration number has 15 digits, and the first and last digits are both 3. Validate it on the business partner master data (the Federal Tax ID field), for example in SBO_SP_TransactionNotification, so a wrong number is stopped before it reaches an invoice.
Tax invoice or simplified tax invoice. ZATCA’s invoicing guideline allows a simplified tax invoice for a supply of less than SAR 1,000, and for any supply to a natural person who is not subject to VAT. Supplies to businesses and government entities above that need a standard tax invoice with the buyer’s details. In SAP B1 this decides which flow a document takes in Phase 2.
The setup, rounding and the checks ZATCA runs are explained in Saudi VAT (15%) in SAP Business One. For quick inclusive and exclusive amounts, use the Saudi VAT calculator.
How does ZATCA e-invoicing Phase 2 work?
ZATCA introduced e-invoicing in two phases. Phase 1, the generation phase, took effect on 4 December 2021: invoices must be issued by a compliant electronic solution. Phase 2, the integration phase, applies from 1 January 2023 in waves: the solution must also integrate with ZATCA’s systems. What Phase 2 requires, according to ZATCA’s E-Invoicing Implementation Resolution and XML Implementation Standard:
- Format. Invoices and credit and debit notes are generated as XML, or as PDF/A-3 with the XML embedded. The XML follows the UBL 2.1 Invoice schema, and only XML is shared with ZATCA.
- Cryptographic stamp. Every e-invoice and note carries a cryptographic stamp. Each invoicing unit is onboarded through the Fatoora portal and receives a cryptographic stamp identifier (CSID).
- Hash chain and UUID. Each document has a UUID and includes the hash of the previous invoice, so the sequence cannot be changed without it showing.
- QR code. In Phase 2 a QR code is mandatory on all types of e-invoices and notes. It is a Base64 string of TLV fields: seller name, VAT number, timestamp, total and VAT total, plus the invoice hash, the signature and the public key. Our ZATCA QR code decoder shows each field.
Clearance or reporting. The two invoice types follow different flows:
| Standard tax invoice (usually B2B, B2G) | Simplified tax invoice (usually B2C) | |
|---|---|---|
| Model | Clearance | Reporting |
| Who stamps | ZATCA, after it validates the invoice | Your solution, with your CSID |
| When ZATCA sees it | Before you share it with the buyer | Within 24 hours of generation |
| What SAP B1 must store | Cleared XML, UUID, hash, QR, status | Reported XML, UUID, hash, QR, status |
In SAP Business One this means an integration that builds the XML from each A/R invoice, credit memo and debit memo, signs it, calls ZATCA’s API, and writes the result back to the document so the QR code prints on your layout. Check a generated XML with our ZATCA Phase 2 invoice validator, and see the ZATCA e-invoicing integration for SAP Business One for how we connect it.
When does Phase 2 apply to my company?
Phase 2 is rolled out in waves by taxpayer group, based on VAT-subject revenue. ZATCA notifies the taxpayers in each wave at least six months before their integration date. The latest wave announced at the time of writing:
| Wave | Who is in it | Integrate by |
|---|---|---|
| Wave 25 (announced 24 July 2026) | VAT-subject revenue above SAR 187,500 in any of 2022, 2023, 2024 or 2025 | 1 February 2027 |
A wave notice is a deadline for the whole project, not for the start. Onboarding each invoicing unit, testing every document type in ZATCA’s simulation environment and fixing master data take weeks. The steps for SAP B1 users are in ZATCA Wave 25 for SAP Business One.
What do Arabic invoices and Hijri dates need in SAP Business One?
Arabic. ZATCA’s Guideline for Tax Invoicing and Records quotes the VAT Implementing Regulations: invoices must be issued in Arabic, in addition to any other language, and all tax invoice fields must be completed in Arabic. The Arabic is the approved version; any other language is a translation. The guideline also accepts Western digits, currency codes such as SAR, and proper names such as product names in Latin letters.
In SAP B1 that usually means:
- Foreign names on items and business partners, so the Arabic and English descriptions are both stored.
- A bilingual layout in Crystal Reports or PLD that prints Arabic right to left. Whether it prints cleanly depends on the layout design, so test it early.
- The same Arabic in the XML as on the printed invoice, because the XML is what ZATCA receives.
Hijri dates. We found no Hijri requirement for tax invoice dates in the guideline we checked. Many Saudi companies still want the Hijri date on contracts, HR documents and some customer documents. On SQL Server, CONVERT(nvarchar(30), DocDate, 131) returns a Hijri date (dd/MM/yyyy) that a query, a formatted search or a Crystal Reports layout can use. Microsoft notes that it uses the Kuwaiti algorithm and that Hijri has several variations, so compare it with the calendar your company follows. On SAP HANA we use a calendar table that maps each Gregorian date to its Hijri date.
How do I check output VAT by tax code before the VAT return?
Before trusting a VAT report, I check it against the documents. The query sums A/R invoices (OINV, INV1) and credit memos (ORIN, RIN1, negative) per tax code for one quarter. Compare the totals with your tax report and with what ZATCA received. A difference means a setup, rounding or posting problem.
-- SQL Server: output VAT per tax code, July to September 2026
SELECT X.TaxCode,
V.Name AS TaxName,
V.Rate,
SUM(X.NetSAR) AS NetSAR,
SUM(X.VatSAR) AS VatSAR
FROM (
SELECT L.VatGroup AS TaxCode,
L.LineTotal * (1 - ISNULL(H.DiscPrcnt, 0) / 100) AS NetSAR,
L.VatSum AS VatSAR
FROM OINV H
INNER JOIN INV1 L ON L.DocEntry = H.DocEntry
WHERE H.CANCELED = 'N'
AND H.DocDate BETWEEN '20260701' AND '20260930'
UNION ALL
SELECT L.VatGroup,
-L.LineTotal * (1 - ISNULL(H.DiscPrcnt, 0) / 100),
-L.VatSum
FROM ORIN H
INNER JOIN RIN1 L ON L.DocEntry = H.DocEntry
WHERE H.CANCELED = 'N'
AND H.DocDate BETWEEN '20260701' AND '20260930'
) X
LEFT JOIN OVTG V ON V.Code = X.TaxCode
GROUP BY X.TaxCode, V.Name, V.Rate
ORDER BY X.TaxCode
-- SAP HANA version
SELECT X."TaxCode",
V."Name" AS "TaxName",
V."Rate",
SUM(X."NetSAR") AS "NetSAR",
SUM(X."VatSAR") AS "VatSAR"
FROM (
SELECT L."VatGroup" AS "TaxCode",
L."LineTotal" * (1 - IFNULL(H."DiscPrcnt", 0) / 100) AS "NetSAR",
L."VatSum" AS "VatSAR"
FROM OINV H
INNER JOIN INV1 L ON L."DocEntry" = H."DocEntry"
WHERE H."CANCELED" = 'N'
AND H."DocDate" BETWEEN '20260701' AND '20260930'
UNION ALL
SELECT L."VatGroup",
-L."LineTotal" * (1 - IFNULL(H."DiscPrcnt", 0) / 100),
-L."VatSum"
FROM ORIN H
INNER JOIN RIN1 L ON L."DocEntry" = H."DocEntry"
WHERE H."CANCELED" = 'N'
AND H."DocDate" BETWEEN '20260701' AND '20260930'
) X
LEFT JOIN OVTG V ON V."Code" = X."TaxCode"
GROUP BY X."TaxCode", V."Name", V."Rate"
ORDER BY X."TaxCode"
Notes from running checks like this:
- SAR. LineTotal and VatSum are in local currency, so the company’s local currency must be SAR.
- Cancellations. CANCELED = ‘N’ leaves out a cancelled invoice and its cancellation document together.
- Missing pieces. Freight (INV3, RIN3) and down payment invoices (ODPI) also carry VAT; add them if you use them.
- Input side. For input VAT, run the same query on OPCH, PCH1, ORPC and RPC1.
- Halalas. If the totals differ from the XML by one halala, the cause is usually rounding per line versus per document.
The OINV, INV1, ORIN and RIN1 pages list the fields; the SQL to HANA converter rewrites other queries.
What can Kodenova do for SAP Business One users in Saudi Arabia?
Kodenova has worked on SAP Business One and ERP projects for more than 7 years, for clients in 13 countries, Saudi Arabia among them. I work remotely from Pakistan, which is 2 hours ahead of Saudi Arabia all year, so most of the working day overlaps. We work with clients in Arabic, English and Spanish. The work I do for SAP B1 companies in the Kingdom:
- ZATCA Phase 2 integration: XML, stamp, QR, clearance and reporting, with status written back to each document and a screen for rejected invoices. See ZatcaBridge for SAP Business One and the most common ZATCA rejections.
- VAT setup checks: tax codes per treatment, VAT number validation and rounding that matches what ZATCA recalculates.
- Add-ons inside SAP B1 with the UI API and DI API: approvals, checks before posting, Arabic fields. See the add-on guide.
- Validation rules in SBO_SP_TransactionNotification, for example blocking a B2B invoice for a customer without a VAT number or a building number. See the examples.
- Bilingual layouts in Crystal Reports with the QR code and Arabic text.
- AI on top of SAP B1: connect ChatGPT to SAP Business One with an MCP server, so ChatGPT or Claude answer questions from live SAP data, with permissions.
To be clear about scope: Kodenova is independent and works alongside your SAP partner. Your partner keeps the licences and SAP’s standard support; we build and support the custom work around them. Every project has a fixed price per phase, 3 months of free support after go-live, and you own the code.
ZATCA facts were checked on 6 November 2026 on zatca.gov.sa. Wave criteria and dates change with each announcement, so confirm your own wave with ZATCA before you plan.
Sources
- SAP Help Portal: Localization for Central MENA/AE/EG/LB/OM/QA/SA, SAP Business One 10.0
- SAP Help Portal: Printing Sales and Purchasing Documents in a Foreign Language
- ZATCA: What is e-invoicing? (Phase 1 from 4 December 2021, Phase 2 from 1 January 2023)
- ZATCA: E-invoicing roll-out phases (waves, at least six months' notice)
- ZATCA: Wave 25 of the e-invoicing integration phase (24 July 2026)
- ZATCA: E-Invoicing Implementation Resolution, controls and technical specifications (English, 19 May 2023, PDF)
- ZATCA: Electronic Invoice XML Implementation Standard, version 1.2 (19 May 2023, PDF)
- ZATCA: Guideline for Tax Invoicing and Records under VAT Provisions, version 3 (May 2026, PDF)
- PwC: KSA FAQs on the VAT rate increase to 15% (PDF)
- GOBL: Saudi Arabia tax regime (VAT number format)
- Microsoft Learn: CAST and CONVERT (Transact-SQL), Hijri styles 130 and 131
Related services
Frequently asked questions
Does SAP Business One have a Saudi Arabia localization?
Yes. SAP documents Saudi Arabia as part of the Central MENA localization, together with the UAE, Egypt, Lebanon, Oman and Qatar. It covers tax groups, tax code determination, tax declaration boxes and tax reports. The localization is chosen when the company database is created, so check it before you plan e-invoicing.
What is the difference between clearance and reporting in ZATCA Phase 2?
Clearance applies to standard tax invoices, usually B2B: ZATCA validates and stamps each invoice before you share it with the buyer. Reporting applies to simplified tax invoices, usually B2C: you stamp the invoice yourself, give it to the customer and report it to ZATCA within 24 hours of generating it.
When does my company have to integrate with ZATCA?
Phase 2 is rolled out in waves by revenue. ZATCA notifies each taxpayer of its wave at least six months before the integration date. Wave 25 covers taxpayers whose VAT-subject revenue exceeded SAR 187,500 in any year from 2022 to 2025, with integration due by 1 February 2027.
Do Saudi invoices have to be in Arabic?
Yes. ZATCA's invoicing guideline quotes the VAT Implementing Regulations: invoices must be issued in Arabic, and other languages may be added. The Arabic text is the approved version. Western digits, currency codes such as SAR, and proper names in Latin letters are accepted, so a bilingual SAP B1 layout is the usual answer.
Can SAP Business One show Hijri dates?
There is no single switch we rely on. On SQL Server, CONVERT with style 131 returns a Hijri date, which you can use in a query, a formatted search or a Crystal Reports layout. Microsoft notes it uses the Kuwaiti algorithm, so compare the result with the calendar your company follows. On SAP HANA we use a calendar table.
How does Kodenova work with our SAP partner?
Kodenova is independent and works alongside your SAP partner. Your partner keeps the licences, the SAP Business One system and SAP's standard support. We build the custom work around it: the ZATCA integration, add-ons, validations, portals, reports and AI tools, with documentation your partner can follow. You own the code after each paid phase.
Ready to get started?
Tell us what you need. You get a clear technical answer, a fixed scope and a price, usually within 24 hours.
