Skip to main content
iVentureTeam
E-Invoicing

Odoo E-Invoicing Compliance in Egypt: ETA E-Invoice, E-Receipt and KSA

Odoo e-invoicing compliance for Egypt: what Odoo 19 and 20 cover for ETA e-invoices, why the e-receipt needs a partner, and how it compares with ZATCA.

Siddharth JambukiyaSiddharth JambukiyaOdoo Techno-Functional Consultant
November 12, 202613 min read1 view
Odoo E-Invoicing Compliance in Egypt: ETA E-Invoice, E-Receipt and KSA cover

Most Egypt e-invoicing articles list benefits and never say which Odoo version does what. Our Odoo consulting services start by mapping your Odoo e-invoicing compliance gaps against what the ETA expects.

This guide is for finance managers, IT leads and owners in Egypt, plus groups running Egypt and Saudi entities in one database. For the wider Gulf VAT picture, read our guide to Odoo VAT and GCC compliance in the Middle East.

What does Odoo e-invoicing compliance mean in Egypt and Saudi Arabia?

Odoo e-invoicing compliance means your invoices leave Odoo in the tax authority's format, signed, and are accepted by the authority's portal. In Egypt that portal belongs to the Egyptian Tax Authority (ETA); in Saudi Arabia it is ZATCA's Fatoora platform.

Egypt runs two systems. The e-invoice covers sales to businesses. The e-receipt covers sales to end consumers at the point of sale, and has been rolled out to taxpayers in groups named in ETA decisions.

Saudi Arabia uses one system with two document types. A Tax Invoice is cleared by ZATCA before it reaches the buyer, and a Simplified Tax Invoice for consumers is reported after the sale with a QR code.

For an Egyptian company, compliance has three parts:

  • Format: each document is built as a structured JSON file with ETA codes for activity, branch, products and taxes.
  • Signature: a qualified electronic signature from a USB token signs each document.
  • Submission: documents go to the ETA API, which returns accepted or rejected status per document.

What does the standard Odoo Egypt e-invoice module cover in Odoo 19 and 20?

Odoo Egypt e-invoicing: What Odoo covers in 19 and 20

The standard Egypt localization covers ETA e-invoices for sales invoices, credit notes and debit notes, in both Odoo 19 and Odoo 20. It has been available since Odoo 15.0, and it ships under the LGPL licence, so it is in Community as well as Enterprise.

According to the Odoo 20 Egypt localization documentation, you install two modules: Egypt Accounting (l10n_eg) for the chart of accounts and taxes, and Egyptian E-invoice Integration (l10n_eg_edi_eta) for the ETA link.

CapabilityOdoo 19Odoo 20
ETA e-invoice, credit and debit notesYes, through the EDI frameworkYes, through the Send flow
Test environmentProduction checkbox on or offDemo, Pre-production and Production modes
Batch sendingHandled by EDI framework jobsBatches of 10 per API call
Cancelling on the ETA portalEDI cancel with a fixed reasonCancel wizard with your own reason
ETA QR code on the invoice PDFYesYes, once accepted or in test
E-receipt for POS salesNot includedNot included

Two details matter in Odoo 20. The new Demo mode lets you simulate sending without calling the ETA, which helps training. In the Odoo 20 source code the invoicing threshold for customer IDs is a system parameter with a default of 150,000.

If you are planning an upgrade, test ETA sending on a copy first. Our Odoo upgrade services include checking that open, rejected and cancelled ETA documents keep their status after the move.

How do you set up Odoo ETA integration step by step?

You set up Odoo ETA integration by registering Odoo on the ETA portal, entering the API credentials in Accounting settings, and coding your branches, customers and products. Follow this order to avoid most rejections.

  1. Register Odoo on the ETA portal: open View Taxpayer Profile, go to Representatives, click Register ERP and name it Odoo. The portal shows a Client ID and two client secrets.
  2. Ask for pre-production access: pre-production and production credentials differ, so request both and store them safely.
  3. Enter credentials: in Accounting, Configuration, Settings, ETA E-Invoicing Settings, add the ETA Client ID and Secret.
  4. Complete the company: full address including the Building No. field, country and Tax ID.
  5. Set up branches: create one Sales journal per branch, link a branch contact set as a Company, and fill the ETA Activity Code and ETA Branch ID (use 0 if you have one branch).
  6. Code products: give each product a GS1 or EGS barcode, or an ETA Item code on the Accounting tab.
  7. Check taxes: confirm the ETA Code (Egypt) field on each tax matches your registration.
  8. Fix customer records: set Individual or Company, country, and Tax ID or National ID.
  9. Set up USB signing: covered in the next section.
  10. Test: send real-looking invoices to pre-production, then switch credentials and mode to production.

How does ETA USB token signing work with Odoo Online and Odoo.sh?

ETA signing works through a USB token on a Windows PC, connected to your Odoo database by Odoo's Windows virtual IoT. This is the same whether your database runs on Odoo Online, Odoo.sh or your own server.

Each person who signs invoices needs their own USB key, issued by the ETA or Egypt Trust according to Odoo's docs. The key holds the certificate that signs each document.

The Windows virtual IoT is the bridge. Once connected, it shows a Proxy Access Token for Egypt. In Odoo, open Accounting, Configuration, Thumb Drive, enter the ETA USB Pin and token, and click Get certificate.

Practical issues we see:

  • One company at a time: Odoo 20 warns you to sign invoices from one company per batch.
  • PC availability: if the signer's PC is off, invoices wait. Plan a backup signer and token.
  • Middleware errors: a failed signature logs "Cannot connect to the middleware" on the invoice, which usually means the IoT bridge is down.

Does Odoo support the Egypt e-receipt for POS sales?

No, not in the standard Egypt modules: Odoo's Egypt documentation covers ETA e-invoicing only, and the e-receipt for B2C point of sale needs a third-party module or a custom connector. This is the biggest gap for retailers and restaurants.

The ETA has widened the e-receipt mandate in groups. KPMG reports that Decision No. 281/2025 required a further group to issue e-receipts for B2C sales from September 15, 2025, after earlier groups with July 2025 deadlines. Check your own deadline on the ETA list.

Odoo's Apps Store lists ETA e-receipt modules from independent developers. One listing, for example, submits receipts from POS orders, tracks UUIDs and status, and stores a device serial number registered on the ETA portal.

Before you install one, check these points:

  • Hosting: Odoo Online is incompatible with Apps Store and custom modules, so an e-receipt module needs Odoo.sh or on-premise.
  • Plan: Odoo.sh and on-premise need the Custom plan, listed at US$61.00 per user a month billed yearly on Odoo pricing.
  • Offline sales: ask how the module queues receipts when the internet drops.
  • Upgrades: confirm the vendor supports your target version before you upgrade.

If you also take card or wallet payments at the till, our guide to Odoo payment gateways in MENA covers Fawry and POS terminals.

Egypt ETA vs Saudi ZATCA in Odoo: how do they compare?

Saudi ZATCA has fuller standard coverage in Odoo than Egypt ETA, because Odoo ships a POS e-invoicing module for ZATCA but none for the ETA e-receipt. Groups with both countries should plan the Egypt POS work separately.

FactorEgypt ETA in OdooSaudi ZATCA in Odoo
B2B documentsE-invoice signed and submittedTax Invoice cleared before issue
B2C documentsE-receipt, not in standard modulesSimplified invoice reported, with QR
Main modulesl10n_eg, l10n_eg_edi_etal10n_sa, l10n_sa_edi, l10n_sa_edi_pos
Signing methodPersonal USB token through IoTDevice certificate (CSID) per journal
LanguageArabic or English dataArabic required, bilingual allowed
Partner needed forE-receipt, signing logistics, codesOnboarding, testing, edge cases

The Odoo Saudi Arabia localization explains that Phase 2 uses clearance for B2B and reporting for B2C. ZATCA publishes its own rules on the ZATCA e-invoicing portal.

For CSID onboarding, clearance and POS testing in detail, read our Odoo ZATCA Phase 2 guide.

What still needs a partner for Odoo e-invoicing compliance?

The standard modules handle the document format and the API, while a partner usually handles codes, signing logistics, e-receipts and testing. Most failed go-lives trace back to data, not to the module.

Work that typically needs help:

  • ETA code mapping: matching hundreds of products to GS1 or EGS codes and each branch to the right activity code.
  • E-receipt integration: choosing, testing or building the POS connector, and moving you to Odoo.sh if you are on Odoo Online.
  • Multi-branch setup: one journal per branch with correct ETA Branch IDs and contacts.
  • Signing process: who holds the tokens, backup signers, and IoT bridge monitoring.
  • Custom invoice flows: custom modules that change invoice lines or taxes can break the JSON the ETA expects.
  • Groups with KSA entities: running ETA and ZATCA in one multi-company database.

For a country-by-country view of where localizations stop, see our post on Odoo localization gaps.

Why does the ETA reject Odoo invoices, and how do you fix it?

Most ETA rejections come from missing codes, wrong IDs or rounding on discounts, not from a broken module. Check this table before you raise a support ticket.

Rejection causeTypical signFix in Odoo
Product without ETA codeItem code invalidAdd GS1 or EGS barcode, or ETA Item code
Branch contact set as IndividualIssuer data invalidSet branch contact to Company with Tax ID
Missing customer IDReceiver ID requiredAdd Tax ID, or National ID above the threshold
Wrong environment credentialsAuthentication failsMatch credentials to the sending mode
Tax code mismatchTax type invalidCorrect the ETA Code (Egypt) field on the tax
Token or IoT offlineSignature not createdRestart the IoT bridge, check the USB Pin

Foreign currency invoices also need care. Odoo sends the exchange rate on each line when the invoice is not in EGP, so keep your currency rates current before posting.

Odoo e-invoicing compliance by industry

The e-invoicing workload depends on how you sell: B2B distributors mostly need clean codes, while retailers and restaurants also need the e-receipt. The table shows where the effort usually sits.

IndustryPain or cost driverOdoo approachHow iVentureTeam helps
Distribution and wholesaleLarge product catalogs to codeBulk import of GS1 or EGS codesBuild and load the code mapping
ManufacturingMany branches and activity codesOne sales journal per branchDesign branch and journal setup
RetailHigh POS volume to consumersThird-party or custom e-receipt linkVet or build the e-receipt connector
RestaurantsOffline tills and fast servicePOS with queued receipt submissionTest offline and retry behavior
Groups with KSA entitiesTwo authorities in one databaseETA and ZATCA modules per companyConfigure multi-company compliance

Manufacturers with plants in both countries can read our guide to manufacturing ERP in Saudi Arabia and Egypt.

How much does Odoo e-invoicing compliance cost in Egypt?

ETA e-invoicing is usually one part of a wider Odoo project, so its cost sits inside our published implementation ranges rather than as a separate price. Scope drives the number more than the module does.

Our published Odoo implementation ranges are $3k to $9k for small projects (4 to 8 weeks), $9k to $27k for mid-size (8 to 14 weeks) and $27k to $150k+ for large (12 to 24 weeks). Data migration adds $1.2k to $9k depending on source system and years of history.

Cost drivers specific to Egypt:

  • Catalog size: the number of products to code.
  • Branches: each branch adds a journal and activity setup.
  • E-receipt: buying a module or building a connector, plus POS testing.
  • Hosting change: moving from Odoo Online to Odoo.sh if you need Apps Store modules.

For a quick first number, run the Odoo project estimate tool.

How iVentureTeam helps with Odoo e-invoicing compliance

Planning ETA compliance? Price the project

iVentureTeam sets up Egypt ETA and Saudi ZATCA compliance in Odoo, then tests it on pre-production before your first live invoice. We have delivered 150+ ERP projects across 35+ countries with 40+ Odoo specialists over 13+ years.

  • Gap review: your invoice flows, branches and POS checked against ETA requirements through our Odoo consulting services.
  • ETA setup: credentials, branch journals, activity codes, product codes and tax codes.
  • USB signing: Windows virtual IoT install, token setup and a backup signer plan.
  • E-receipt link: we vet third-party modules or build a connector through our Odoo integration services.
  • KSA entities: ZATCA Phase 2 onboarding in the same multi-company database.

Odoo e-invoicing compliance case study: Middle East Retail Business

A Middle East retailer needed every Odoo POS receipt to carry Arabic and English, with tax amounts shown clearly. The client is confidential, and the project was not an ETA integration, but it shows the receipt-level work POS compliance needs.

The business ran Odoo 11 Point of Sale, whose stock receipt printed in a single language. Product names, taxable and non-taxable amounts, subtotal and total all had to appear correctly in both scripts, including right-to-left Arabic.

We rebuilt the POS receipt template, localized those fields, and routed printing through a Raspberry Pi to thermal printers. Delivery took 3 weeks, and the cashier workflow did not change.

Every sale now prints one receipt both the customer and the accountant can read. Read the bilingual Arabic POS receipts case study.

The bottom line on Odoo e-invoicing compliance

Odoo handles Egypt ETA e-invoices well in Odoo 19 and 20, but plan the B2C e-receipt, USB signing and code mapping as separate work items. Saudi ZATCA has fuller standard coverage, including POS.

Start with your product codes and branches, test every document type on pre-production, and decide early how POS sales will reach the ETA. That order avoids most rejections and late surprises.

Ready to get your Odoo ETA integration live?

Book an ETA gap review

Bring your invoice samples and branch list, and we will map your gaps in one session. Plan your Egypt ETA e-invoice and e-receipt rollout with us, call +91-90235-15208, or email business@iventureteam.com.

Frequently Asked Questions

Does Odoo support Egyptian e-invoicing?

+

Yes. Odoo has supported ETA e-invoicing since Odoo 15.0 through the Egyptian E-invoice Integration module. It signs and sends invoices, credit notes and debit notes to the ETA portal in Odoo 19 and Odoo 20.

Is the Odoo ETA module available in Community?

+

Yes. The l10n_eg_edi_eta module is published under the LGPL licence in Odoo's main code repository, so it works in Community and Enterprise. Signing still needs the Windows virtual IoT and a USB token.

Does Odoo support the Egypt e-receipt?

+

Not in the standard Egypt modules. Odoo's Egypt documentation covers e-invoicing only. For POS e-receipts you need a third-party module from the Apps Store or a custom connector, which needs Odoo.sh or on-premise hosting.

Can I use ETA e-invoicing on Odoo Online?

+

Yes, for e-invoices, because the standard module is available on Odoo Online. A third-party e-receipt module is a different case, since Odoo Online is incompatible with Apps Store and custom modules.

What do I need from the ETA to connect Odoo?

+

You need ETA portal access, a Client ID and client secrets from registering Odoo as your ERP, separate pre-production credentials, and a USB signing token for each person who signs invoices.

What changed for Egypt e-invoicing in Odoo 20?

+

ETA sending moved into the invoice Send flow with Demo, Pre-production and Production modes. Odoo 20 sends invoices in batches of 10 and adds a cancel wizard where you type the cancellation reason.

What codes does the ETA require on invoices?

+

The ETA needs your Tax ID, branch ID, activity type code, product codes in GS1 or EGS format, and tax codes. Odoo fills most of them automatically once branches, products and taxes are set up correctly.

How is Egypt ETA different from Saudi ZATCA in Odoo?

+

Egypt uses personal USB tokens to sign, and has no standard Odoo e-receipt module. Saudi ZATCA uses a device certificate, clears B2B invoices before issue, and Odoo includes a POS module for simplified invoices.

How long does an Odoo ETA setup take?

+

A single-branch company with a clean product list can often be live in a few weeks. Many branches, a large catalog or an e-receipt connector add time, so plan pre-production testing for each document type.

Free e-invoicing and tax readiness check

Getting Odoo ready for e-invoicing?

We check your Odoo version, localization and invoice flows against e-invoicing, then send what to set up, what to test and the effort involved.

Free, with no obligation. A senior consultant replies within 12 business hours.