ERP systems

Integrating Your System with Egypt's E-Invoice: Signatures and Item Codes Step by Step

A step-by-step guide to connecting your ERP to the ETA e-invoice platform: system registration, GS1 and EGS item codes, eSeal signing, asynchronous submission, cancellations and a testing checklist.

Diagram of an ERP sending a digitally signed invoice with item codes to the Egyptian Tax Authority platform

Integrating your ERP or accounting system with Egypt's e-invoice platform means your system, not an employee, sends every B2B invoice, credit note and debit note to the Egyptian Tax Authority (ETA) as a digitally signed structured document, using item codes the ETA recognises. The key steps are: register your system on the taxpayer's ETA profile, obtain API credentials and an eSeal certificate, register your item codes (GS1 or EGS), build the document and signature exactly as the ETA SDK specifies, submit through the API, and track each document's status.

Many Egyptian companies still issue invoices in one program and then re-enter or upload them on the ETA portal. That works for a handful of invoices a month. It breaks down quickly for a distributor issuing hundreds of invoices a day or a factory in 6th of October dealing with credit notes and returns every week.

This guide walks through the integration step by step from the business side, what your team must prepare, what your developer must build and what to test, using the ETA's own e-invoicing and e-receipt SDK as the reference.

Key takeaways

  • Direct integration uses the ETA's REST APIs: your system authenticates, submits signed documents and reads back their status.
  • Every invoice line needs an item code of type GS1 or EGS. EGS codes follow the pattern EG-TaxpayerID-InternalCode and must be linked to a GS1 GPC "brick" code and approved by the ETA.
  • Documents are signed with an eSeal certificate using the CAdES-BES format over a SHA-256 hash of the canonicalised document.
  • Submission is asynchronous: the API accepts the batch first and validates afterwards, so your system must check back for the final status.
  • Cancellation and rejection windows are configured by the ETA per document type. A good integration reads them from the API instead of hard-coding them.

Background: where the e-invoice stands in 2026

The ETA started the B2B e-invoice on 15 November 2020 with a first group of large taxpayers, added further groups in 2021 and extended the obligation to VAT-registered companies for B2B transactions over 2022 and 2023, according to a VATupdate briefing (February 2026). B2C sales are covered by a separate system, the e-receipt, which has its own rules and its own rollout lists.

There are two ways to issue e-invoices: typing them on the ETA portal, or integrating your ERP through the API. The portal is fine for very low volumes. Integration is the only practical option once invoices are frequent, have many lines, or must match stock and accounting automatically.

Step 1: Register your system with the ETA

According to the ETA's getting-started guide, onboarding involves:

  1. Registering the taxpayer's digital profile with the ETA.
  2. Receiving an invitation to create the taxpayer administrator account that manages the profile.
  3. Inviting representatives and registering one or more ERP and POS systems that will call the APIs.
  4. Getting the API access credentials to configure in each system.
  5. Getting an eSeal X.509 certificate to configure in the system that signs and submits documents.

In practice, the owner or finance manager handles the profile and certificate, and the developer receives the client credentials for the test and production environments. Keep these credentials in a secure configuration store, never inside spreadsheets or email threads.

Step 2: Prepare and register item codes

Item codes are where most integration projects lose time. Each invoice line must carry an item type of GS1 or EGS, as the ETA invoice specification in the SDK states. GS1 codes are aimed at goods, while EGS codes can cover both goods and services.

GS1 or EGS?

GS1 (GTIN)EGS
What it isGlobal barcode number for a productYour internal code registered on the ETA platform
FormatStandard GTINEG-TaxpayerID-InternalCode
ClassificationLinked to the GS1 product classificationMust reference a level-4 GPC "brick" code as its parent
CostPurchased from GS1 EgyptNo code fee, but internal effort and an ETA review
Typical useBranded products, importersServices, raw materials, custom items

The ETA's EGS code usage API lets a system submit code requests with an English and Arabic name, a parent GPC code and an activation date. ETA staff review and approve them before they can be used in documents. Companies that import goods should also note that since July 2023, importers have needed GS1 codes on supplier e-invoices for customs clearance through the NAFEZA platform, as Deloitte reported in 2023.

Clean your item master first

  • Remove duplicate items and merge variants that are really the same product.
  • Add a field on the item card for the ETA code type and code, separate from your internal SKU.
  • Map each item to the correct GPC brick. Getting this wrong leads to rejected code requests.
  • Decide who owns new items, so that no product is sold before its code is approved.

Step 3: Build the document correctly

An ETA invoice is a structured JSON (or XML) document. Beyond the obvious totals and taxes, the fields that commonly cause rejections are:

  • Document type and version, for example type "i" with version "1.0" for an invoice. Credit and debit notes have their own types.
  • Issuer and receiver type: B for a business in Egypt, P for a natural person, F for a foreigner. Receiver identification is required except for an individual buyer below a set amount.
  • Taxpayer activity code: the activity that generated the sale, from the ETA's code list.
  • Date and time issued in UTC. It cannot be in the future, so server clocks and time zones matter.
  • Branch code as registered with the ETA, for companies with several branches.
  • Tax types and sub-types per line, taken from the ETA code tables.
  • Rounding: line totals, discounts and taxes must add up exactly, or the document is rejected.

Step 4: Sign the document

The ETA's signature creation guide describes the process: the document is serialised into a canonical form that keeps only significant data (field names and values), a SHA-256 hash is calculated, the hash is signed using CAdES-BES with the eSeal certificate, and the Base64 signature is embedded in the document before submission.

Where the certificate lives

  • USB token on one PC. Simple, but that PC becomes a single point of failure and a bottleneck.
  • A signing service on your network. A small service on a server with the token attached signs for the whole ERP. More reliable for multi-user systems.
  • HSM. A hardware security module suits high volumes and larger companies.

Whatever the option, the signing step must be logged, and a failed signature must never leave an invoice looking "sent" in your system.

Step 5: Submit, then track the status

The ETA's submit documents API performs only minimal checks and returns HTTP 202. It gives a submission ID and, for each document, either an ETA UUID and long ID (accepted for processing) or error details (rejected immediately). Full validation happens afterwards, so your ERP must:

  1. Store the submission ID and each document's UUID against the invoice.
  2. Poll for the final status (valid or invalid) and show it on the invoice screen.
  3. Alert the accountant about invalid documents with the ETA's error message in plain language.
  4. Avoid resubmitting the same payload within a short period. The ETA detects duplicate submissions made within ten minutes.

Cancellations and buyer rejections

You can cancel a document and your buyer can reject it, but only within time limits that the ETA configures per document type. The SDK states that these periods are returned by the Get Document Type API. Your ERP should read them from there, block actions outside the window, and show pending cancellation or rejection requests from customers and suppliers so that nobody misses them.

Integration testing checklist

  • Invoice, credit note and debit note accepted in the test environment.
  • Invoice with a discount, several tax types and a foreign-currency line.
  • Individual buyer below and above the identification threshold.
  • Item with a GS1 code and item with an EGS code.
  • Signing service offline: document queued, user alerted, no duplicate on retry.
  • ETA platform slow or unavailable: retries with back-off and a visible queue.
  • Cancellation inside and outside the allowed window.
  • Received documents from suppliers downloaded and matched to purchase invoices.
  • Monthly report reconciling ERP sales with valid ETA documents.

The VATupdate briefing also notes a five-year retention expectation for e-invoice records. Keep ETA UUIDs, statuses and signed payloads with the invoice, not in a separate log that can be lost.

How Nilex helps

Nilex Digital Systems integrates ETA e-invoicing inside the custom ERP systems it builds. We work directly against the ETA's REST APIs, store every submission and status with the invoice, and keep a full audit log of who issued, cancelled or changed what. E-invoicing integration is part of the Enterprise package and can be scoped for other projects.

Frequently asked questions

Can I issue e-invoices on the ETA portal instead of integrating?

Yes, the portal allows manual issuance. It suits very low volumes. For regular invoicing, manual entry duplicates work, causes mismatches with your accounts and makes credit notes and cancellations harder to control.

How long does EGS code approval take?

The ETA does not publish a fixed service time in the SDK. Codes are reviewed by ETA staff before use, so register codes before you need to invoice those items and plan a buffer for rejected requests.

Do I need a USB token to sign e-invoices?

You need an eSeal certificate. It is commonly held on a USB token, but it can also sit on a signing server or an HSM. The choice depends on your invoice volume and how many users issue invoices.

What happens if an invoice is marked invalid?

An invalid document is not a valid tax invoice on the ETA platform. Correct the cause shown in the error, such as a code, a total or a receiver ID, and submit a corrected document. Your ERP should make these cases visible immediately.

Can Excel or an old desktop program be integrated?

Technically, a middleware tool can read data and submit it, but it is fragile. Signing, item codes, status tracking and cancellations are much more reliable when they are handled inside the system where the invoice is created.

If your team is still re-entering invoices on the ETA portal, or your integration keeps failing on codes and signatures, book a free consultation. We will review your current flow and tell you what a clean integration would take. You may also find our guide on ERP total cost of ownership useful when budgeting.

This article is general information, not legal or tax advice. Confirm the details that apply to your company with a specialist.

LET'S BUILD

YOUR VISION.
OUR TECHNOLOGY.

Tell us what your business needs. We'll build the system around it.

START A CONVERSATION →

or email us at info@nilexdigitalsystems.com