Flick.
ETA CompliantCountry guide

Egypt - eInvoicing Mandates

Complete guide to implementing ETA-compliant e-invoicing in Egypt. Our platform handles digital signatures, document construction, and ETA submission, enabling seamless compliance with Egyptian tax authority requirements.

ETACompliant
CTCModel
B2BSupported
Real-timeValidation

Reporting Mandates

  • ETA eInvoicing
  • CTC Real-time Submission

Exchange Networks

  • ETA Portal

Supported Documents

  • Commercial Invoices
  • Export Invoices
  • Credit Notes
  • Debit Notes

Introduction to Egypt E-Invoicing

Egypt is the largest economy in North Africa and a major trade hub connecting Africa, the Middle East, and Europe. As part of its comprehensive Egypt Vision 2030 strategy, the government has prioritized digital transformation across all sectors, including tax administration. The Egyptian Tax Authority (ETA) launched a mandatory electronic invoicing system in 2020, making Egypt one of the first countries in the MENA region to implement a Continuous Transaction Controls (CTC) model for real-time invoice validation.

Key Authorities

AuthorityRoleResponsibilities
Egyptian Tax Authority (ETA)Primary regulatory body for e-invoicing• Developing and publishing e-invoicing technical standards and specifications
• Setting compliance requirements and enforcement timelines
• Managing the phased rollout across taxpayer segments
• Operating the ETA eInvoicing Portal for document submission and validation
• Issuing taxpayer credentials and managing digital signatures

Website: eta.gov.eg
Ministry of Finance (MoF)Fiscal policy and oversight• Setting overall tax policy direction
• Coordinating with ETA on VAT and e-invoicing regulations
• Overseeing revenue collection and fiscal compliance

Website: mof.gov.eg

Egypt Vision 2030 and Digital Transformation

The e-invoicing mandate is a central component of Egypt's broader digital transformation goals:

ObjectiveDescription
DigitizationModernize tax administration and business processes through digital platforms
Revenue ProtectionStrengthen VAT compliance and reduce the informal economy
Tax ComplianceCombat tax evasion through real-time transaction monitoring and validation
Ease of BusinessStreamline invoicing processes and reduce reliance on paper-based documentation
TransparencyEnable data-driven government decision-making with real-time economic data

E-Invoicing Overview

Egypt's e-invoicing system was introduced by the ETA in a phased approach, beginning with the largest enterprises and progressively expanding to cover all registered taxpayers:

  • Pilot Phase (November 2020): A group of large enterprises were selected to pilot the e-invoicing system, testing integration with the ETA platform and validating the technical infrastructure.

  • Phase 1 (February 15, 2021): The first wave of mandatory adoption covering 134 large companies selected by the ETA. These companies were required to issue all B2B invoices electronically through the ETA portal.

  • Subsequent Phases (2021–2023): The mandate was progressively extended in multiple waves, covering an increasing number of taxpayers based on company size and revenue thresholds. By 2023, all registered taxpayers across Egypt were required to comply.

  • Full Coverage (2023+): All VAT-registered taxpayers in Egypt must now issue electronic invoices for B2B transactions. The ETA continues to expand the scope, including plans for B2C electronic receipts.


For official updates and detailed information, please refer to the ETA eInvoicing Portal.

Egypt E-Invoicing and Fiscalization Mandates

Egypt has implemented one of the most comprehensive e-invoicing mandates in the MENA region through the Egyptian Tax Authority's (ETA) electronic invoicing system. This section outlines the mandate requirements affecting businesses operating in Egypt.

ETA eInvoicing

The Egyptian Tax Authority introduced mandatory electronic invoicing in 2020, establishing a Continuous Transaction Controls (CTC) system where all invoices must be submitted to and validated by the ETA platform before being considered legally valid.

What is the ETA eInvoicing System?

The ETA eInvoicing system requires businesses to generate, digitally sign, and submit electronic invoices to the ETA portal in real time. Each invoice receives a unique identifier (UUID) and a QR code from the ETA upon successful validation. The system uses a custom JSON document format with CADES-BES digital signatures for document integrity and authenticity.

Regulatory Framework

ComponentDetails
Issuing AuthorityEgyptian Tax Authority (ETA)
Program NameETA eInvoicing
Document FormatETA JSON Schema
Signature StandardCADES-BES (CMS Advanced Electronic Signatures)
ModelContinuous Transaction Controls (CTC)
Pilot PhaseNovember 2020
Full MandatePhased rollout from February 2021, all taxpayers by 2023

Who Must Comply?

CategoryScope
Business TypeAll registered taxpayers in Egypt
Resident EntitiesAll resident taxable persons and entities subject to VAT
Transaction TypesB2B (Business-to-Business)
Foreign EntitiesForeign companies with a tax registration in Egypt
RolloutPhased by company size — from largest enterprises (Phase 1) to all registered taxpayers

How It Works

All invoices are submitted to the ETA platform for validation in real time:

TransactionProcessFlow
B2BCTC SubmissionInvoice is generated → digitally signed → submitted to ETA → validated → UUID and QR code returned

Every invoice must be digitally signed using a CADES-BES signature before submission to the ETA portal. The ETA validates the invoice structure, tax calculations, and signature, then returns a UUID and long ID that serve as proof of registration.

Document Types

The mandate covers six types of electronic documents — three for domestic transactions and three for exports:

Domestic Documents

Document TypeCodeDescription
InvoiceiStandard invoice for domestic taxable supplies
Credit NotecAdjusts or corrects a previously issued domestic invoice (reduces amount)
Debit NotedAdjusts a previously issued domestic invoice (increases amount)

Export Documents

Document TypeCodeDescription
Export InvoiceeiInvoice issued by an Egyptian taxpayer to a foreign company
Export Credit NoteecAdjusts or corrects a previously issued export invoice (reduces amount)
Export Debit NoteedAdjusts a previously issued export invoice (increases amount)

Issuer and Receiver Types

The ETA classifies parties involved in transactions:

Type CodeDescription
BBusiness registered in Egypt
PNatural person (individual)
FForeigner (foreign entity)

Tax Types

Egypt supports multiple tax types that can be applied to invoice line items:

CodeTax TypeDescription
T1Value Added TaxStandard VAT at 14%
T2Table Tax (percentage)Percentage-based table tax on specific goods
T3Table Tax (fixed amount)Fixed amount table tax on specific goods
T4Withholding Tax (WHT)Tax withheld at source
T5Stamping Tax (percentage)Percentage-based stamp duty
T6Stamping Tax (fixed amount)Fixed amount stamp duty
T7Entertainment TaxTax on entertainment services
T8Resource Development FeeFee for resource development
T9Service ChargeService charge applicable to certain services
T10Municipality FeeLocal municipality fee
T11Medical Insurance FeeFee for medical insurance
T12Other FeesOther applicable fees

Item Coding

The ETA requires each item on an invoice to be coded using one of two systems:

Code SystemDescriptionExample
GS1Global Standards 1 — international barcode standard for goods6221218058490
EGSEgyptian General Standard — local coding for goods and servicesEG-113317713-1234

Key Requirements

To comply with the ETA eInvoicing mandate, businesses must:

#RequirementDescription
1Tax RegistrationBe registered with the ETA and have a valid tax registration number
2Digital SignatureObtain a CADES-BES signing certificate from an authorized Certificate Authority
3ETA JSON FormatAll invoices must conform to the ETA's prescribed JSON document structure
4Real-time SubmissionInvoices must be submitted to the ETA portal via API
5Item CodingAll items must be coded using GS1 or EGS coding schemas
6Activity CodesIssuer must provide a valid ETA activity type code per invoice

Implementation

Businesses should take the following steps to comply with the ETA mandate:

StepActionPurpose
1. RegisterRegister with the ETA and obtain tax credentialsEstablish taxpayer identity
2. Obtain CertificateGet a CADES-BES digital signing certificateEnable invoice signing
3. Code ItemsRegister items with GS1 or EGS codingComply with item classification requirements
4. IntegrateConnect to the ETA portal via API or through a provider like FlickEnable real-time invoice submission
5. Go LiveBegin submitting invoices electronicallyAchieve full compliance
6. MonitorTrack submission status and handle rejectionsMaintain ongoing compliance

For official compliance timelines and updates, refer to the ETA eInvoicing Portal.

ETA eInvoicing with Flick

The Egyptian Tax Authority (ETA) requires all registered taxpayers to submit invoices electronically through the ETA portal, including digital signatures, item coding, and real-time validation. Flick simplifies this entire process through a single API.

How Flick Simplifies ETA Compliance

Flick handles the complexity of ETA integration so you don't have to:

ComplexityWithout FlickWith Flick
Digital SignaturesManage CADES-BES certificates, sign each document yourselfFlick handles all signing automatically
Document StructureBuild the full ETA JSON schema with nested elements, tax calculations, and hashesSend a simplified payload — Flick constructs the ETA-compliant document
SubmissionIntegrate directly with the ETA portal API, handle authentication and retriesSingle API call to Flick — we submit to ETA on your behalf
QR CodesGenerate and embed QR codes per ETA specificationsReturned automatically in the response
Tax CalculationsCompute totals, tax amounts, and validate against ETA rulesFlick validates and computes all amounts

No EGS Onboarding Required

Unlike Saudi Arabia (ZATCA), the Egypt ETA integration does not require device-level onboarding or compliance checks. The issuer information comes from the participant you have already onboarded with Flick. This means you can start generating invoices immediately after setting up your participant.

API Overview

The Flick Egypt ETA API provides three endpoints covering the complete invoice lifecycle:

StageEndpointMethodPurpose
1. Generate Invoice/v1/einvoice/generatePOSTCreate an invoice, sign it, and submit to ETA
2. Get Invoice/v1/einvoice/{uuid}GETRetrieve invoice details, status, and the full ETA document
3. Cancel Invoice/v1/einvoice/{uuid}PUTCancel a previously generated invoice

Authentication

Every request to the Flick Egypt ETA API requires two headers:

HeaderDescription
x-flick-auth-keyYour Flick API key
participant_idThe ID of the participant (issuer) submitting the invoice

Environments

EnvironmentBase URL
Sandboxhttps://sb-eg-api.einvoiceflick.com
Productionhttps://api-eg.flick.network

Use the sandbox environment for development and testing. Switch to production when you are ready to submit live invoices to the ETA.

Document Types

The API supports six document types — three for domestic transactions and three for exports:

Domestic

CodeTypeDescription
iInvoiceStandard invoice for domestic taxable supplies
cCredit NoteReduces the amount of a previously issued domestic invoice
dDebit NoteIncreases the amount of a previously issued domestic invoice

Export

CodeTypeDescription
eiExport InvoiceInvoice issued to a foreign company
ecExport Credit NoteReduces the amount of a previously issued export invoice
edExport Debit NoteIncreases the amount of a previously issued export invoice

Invoice Statuses

Invoices returned by the API can have the following statuses:

StatusDescription
draftInvoice has been created but not yet submitted to ETA
submittedInvoice has been submitted to ETA and is pending validation
validInvoice has been validated and accepted by ETA
invalidInvoice was rejected by ETA due to validation errors
cancelledInvoice has been cancelled

For detailed field definitions, refer to Invoice Datapoints. For the complete integration flow with request and response examples, see eInvoicing Lifecycle.

ETA Invoice Datapoints

These are the datapoints used in the ETA e-invoicing API for generating invoices in Egypt.

Top-Level Invoice Fields

document_identifier

Requirement: Mandatory
Type: String

Unique internal document identifier used to link back to the ERP document number. This maps to the ETA's internalId field.

Regional API

JSON
{
  "document_identifier": "INV-001"
}

Rules:

  • Must be unique within your system
  • Can include alphanumeric characters and hyphens
  • Maximum 50 characters

document_type

Requirement: Mandatory
Type: String

Specifies the type of document being issued.

Regional API

JSON
{
  "document_type": "i"
}

Allowed Values:

Domestic

CodeDescription
iInvoice — standard invoice for domestic taxable supplies
cCredit Note — reduces amount of a previously issued domestic invoice
dDebit Note — increases amount of a previously issued domestic invoice

Export

CodeDescription
eiExport Invoice — invoice issued to a foreign company
ecExport Credit Note — reduces amount of a previously issued export invoice
edExport Debit Note — increases amount of a previously issued export invoice

issue_date

Requirement: Mandatory
Type: Date (YYYY-MM-DD)

The date on which the invoice was issued.

Regional API

JSON
{
  "issue_date": "2025-02-09"
}

Rules:

  • Must be in ISO 8601 format: YYYY-MM-DD
  • Cannot be a future date

issue_time

Requirement: Mandatory
Type: Time (HH:MM:SSZ)

The time at which the invoice was issued, in UTC timezone.

Regional API

JSON
{
  "issue_time": "10:30:00Z"
}

Rules:

  • Must be in 24-hour UTC format: HH:MM:SSZ
  • Cannot be a future time (when combined with issue_date)

tax_activity_code

Requirement: Mandatory
Type: String

Tax activity code of the business issuing the document, representing the activity that caused it to be issued. Must be a valid ETA activity type code.

Regional API

JSON
{
  "tax_activity_code": "4520"
}

Rules:

  • Must be a valid activity type code as defined by the ETA
  • Represents the business activity category (e.g., 4520 for vehicle maintenance and repair)

document_currency

Requirement: Mandatory
Type: String
Default: EGP

The currency in which the invoice is issued, using ISO 4217 currency codes.

Regional API

JSON
{
  "document_currency": "EGP"
}

Rules:

  • Must be a valid ISO 4217 currency code
  • Default value is EGP (Egyptian Pound)
  • If currency is not EGP, currency_exchange_rate is required

currency_exchange_rate

Requirement: Conditional — required when document_currency is not EGP
Type: Decimal

Exchange rate used to convert the foreign currency to EGP, based on the Egyptian bank rate on the day of invoicing. The system uses this to automatically compute amountEGP and amountSold for each invoice line in the ETA document.

Regional API

JSON
{
  "document_currency": "USD",
  "currency_exchange_rate": 50.25
}

Rules:

  • Required when document_currency is not EGP
  • Must be a valid decimal with up to 5 decimal digits
  • Must not be provided when document_currency is EGP

extra_discount_amount

Requirement: Optional
Type: Decimal
Default: 0

Additional discount amount applied at the document level, not to individual invoice lines. Maps to the ETA's extraDiscountAmount field.

Regional API

JSON
{
  "extra_discount_amount": 50
}

purchase_order_reference

Requirement: Optional
Type: String

Reference to a purchase order related to this document. Maps to the ETA's purchaseOrderReference field.

Regional API

JSON
{
  "purchase_order_reference": "PO-2025-001"
}

purchase_order_description

Requirement: Optional
Type: String

Additional information about the purchase order provided to the recipient.

Regional API

JSON
{
  "purchase_order_description": "Monthly office supplies"
}

sales_order_reference

Requirement: Optional
Type: String

Reference to a prior sales order for informational purposes. Maps to the ETA's salesOrderReference field.

Regional API

JSON
{
  "sales_order_reference": "SO-2025-100"
}

sales_order_description

Requirement: Optional
Type: String

Additional information about the sales order provided to the recipient.

Regional API

JSON
{
  "sales_order_description": "Bulk order"
}

proforma_invoice_number

Requirement: Optional
Type: String (max 50 characters)

Reference to a prior proforma invoice. Maps to the ETA's proformaInvoiceNumber field.

Regional API

JSON
{
  "proforma_invoice_number": "PI-2025-050"
}

service_delivery_date

Requirement: Conditional — required for export document types (ei, ec, ed)
Type: Date (YYYY-MM-DD)

The date when the service was delivered or is planned to be delivered. Maps to the ETA's serviceDeliveryDate field.

Regional API

JSON
{
  "service_delivery_date": "2025-02-08"
}

Rules:

  • Required for export document types: ei, ec, ed
  • Must be in ISO 8601 format: YYYY-MM-DD

references

Requirement: Conditional — used for credit and debit notes (c, d, ec, ed)
Type: Array of Strings

Array of UUIDs referencing prior documents. For credit notes, these are the invoices being reduced. For debit notes, these are the invoices being increased. Maps to the ETA's references field.

Regional API

JSON
{
  "references": ["a1b2c3d4-e5f6-7890-abcd-ef1234567890"]
}

Rules:

  • Referenced documents must be issued by the same taxpayer
  • Referenced documents must be issued to the same recipient
  • Referenced documents must be issued before the issuance date of the credit/debit note
  • For credit notes: total amount must not exceed the total of referenced documents

payment

Requirement: Optional
Type: Object

Bank and payment details for the document. Maps to the ETA's payment structure.

FieldTypeRequiredDescription
bank_nameStringNoName of the issuer's bank
bank_addressStringNoAddress of the issuer's bank
bank_account_noStringNoLocal bank account number
bank_account_ibanStringNoInternational bank account number (IBAN)
swift_codeStringNoSWIFT/BIC code of the bank
termsStringNoPayment terms description

Regional API

JSON
{
  "payment": {
    "bank_name": "National Bank of Egypt",
    "bank_address": "1187 Corniche El Nil, Cairo",
    "bank_account_no": "1234567890",
    "bank_account_iban": "EG380019000500000000263180002",
    "swift_code": "NBEGEGCX",
    "terms": "Net 30 days"
  }
}

delivery

Requirement: Optional
Type: Object

Shipping and delivery information for the document. Maps to the ETA's delivery structure.

FieldTypeRequiredDescription
approachStringNoDelivery approach or means of transportation
packagingStringNoTypes of packages used for delivery
date_validityStringNoValidity date for exported products (ISO 8601 datetime)
export_portStringNoPort from which goods are exported
country_of_originStringNoCountry of origin (ISO 3166-1 alpha-2 code)
gross_weightDecimalNoTotal gross weight in kilograms
net_weightDecimalNoNet weight in kilograms
termsStringNoDelivery or shipping terms (e.g., Incoterms)

Regional API

JSON
{
  "delivery": {
    "approach": "Sea freight",
    "packaging": "Wooden pallets",
    "date_validity": "2025-03-09T00:00:00Z",
    "export_port": "Alexandria",
    "country_of_origin": "EG",
    "gross_weight": 5000,
    "net_weight": 4800,
    "terms": "CIF Dublin"
  }
}

Receiving Party — receiving_party

Contains information about the customer (buyer) to whom the invoice is being issued.

type

Requirement: Mandatory
Type: String

The type of the receiving party.

Regional API

JSON
{
  "receiving_party": {
    "type": "B"
  }
}

Allowed Values:

CodeDescription
BBusiness registered in Egypt
PNatural person (individual)
FForeigner (foreign entity)

registration_number

Requirement: Mandatory
Type: String

Registration number of the receiving party. The expected value depends on the party type:

TypeExpected Value
B (Business)Tax registration number
P (Person)National ID
F (Foreigner)VAT ID of the foreign company

Regional API

JSON
{
  "receiving_party": {
    "registration_number": "987654321"
  }
}

Rules:

  • Must be a valid registration number for the given party type
  • Receiver and issuer cannot be the same entity

name

Requirement: Mandatory
Type: String

The registered name of the company or the full name of the individual.

Regional API

JSON
{
  "receiving_party": {
    "name": "XYZ Retail Store"
  }
}

address

Requirement: Mandatory
Type: Object

The address of the receiving party.

FieldTypeRequiredDescriptionETA Field
countryStringYesCountry code (ISO 3166-1 alpha-2). Must be EG for Egyptian businesses.country
address_line1StringYesPrimary address line (street name). Combined with address_line2 to form the ETA street field.street
address_line2StringNoSecondary address line. Combined with address_line1 to form the ETA street field.street
cityStringYesCity or region nameregionCity
governateStringYesGovernorate namegovernate
building_numberStringYesBuilding number or namebuildingNumber
postal_codeStringNoPostal code. Omitted from ETA document when empty.postalCode
floorStringNoFloor number. Omitted from ETA document when empty.floor
roomStringNoRoom or flat number. Omitted from ETA document when empty.room
landmarkStringNoNearest landmark. Omitted from ETA document when empty.landmark
additional_informationStringNoExtra address info. Omitted from ETA document when empty.additionalInformation

Regional API

JSON
{
  "receiving_party": {
    "address": {
      "country": "EG",
      "address_line1": "El Tahrir Street",
      "city": "Giza",
      "governate": "Giza Governorate",
      "building_number": "12",
      "postal_code": "12311",
      "floor": "2",
      "room": "205",
      "landmark": "Near Cairo University",
      "additional_information": "Back entrance"
    }
  }
}

Full Receiving Party Example

Regional API

JSON
{
  "receiving_party": {
    "type": "B",
    "registration_number": "987654321",
    "name": "XYZ Retail Store",
    "address": {
      "country": "EG",
      "address_line1": "El Tahrir Street",
      "city": "Giza",
      "governate": "Giza Governorate",
      "building_number": "12",
      "postal_code": "12311",
      "floor": "2",
      "room": "205"
    }
  }
}

Invoice Lines — invoice_lines[]

An array of items included in the invoice. At least one item is mandatory.

description

Requirement: Mandatory
Type: String

Description of the item being sold.

Regional API

JSON
{
  "invoice_lines": [
    {
      "description": "Premium Coffee Beans - Arabica 1kg"
    }
  ]
}

item_type

Requirement: Mandatory
Type: String

The coding schema used to encode the item type.

Regional API

JSON
{
  "invoice_lines": [
    {
      "item_type": "GS1"
    }
  ]
}

Allowed Values:

CodeDescription
GS1Global Standards 1 — international barcode standard, primarily for goods
EGSEgyptian General Standard — local coding for goods and services

item_code

Requirement: Mandatory
Type: String

The code of the goods or services item being sold, using the coding schema specified in item_type.

Regional API

JSON
{
  "invoice_lines": [
    {
      "item_type": "GS1",
      "item_code": "6221218058490"
    }
  ]
}

Rules:

  • For GS1: must be a valid GS1 barcode (e.g., 6221218058490)
  • For EGS: must follow the format EG-{taxreg}-{itemid} (e.g., EG-113317713-1234)

unit_type

Requirement: Mandatory
Type: String

Unit of measure code from the UN/ECE Recommendation 20 code list.

Regional API

JSON
{
  "invoice_lines": [
    {
      "unit_type": "KGM"
    }
  ]
}

Common Values:

CodeDescription
EAEach (individual unit)
KGMKilogram
MTRMetre
LTRLitre
PCEPiece
SETSet
HRHour
DAYDay

quantity

Requirement: Mandatory
Type: Decimal

Number of units of the defined unit type being sold. Must be greater than 0. Supports up to 5 decimal places.

Regional API

JSON
{
  "invoice_lines": [
    {
      "quantity": 100
    }
  ]
}

price

Requirement: Mandatory
Type: Decimal

The price of a single unit, exclusive of tax. Supports up to 5 decimal places.

Regional API

JSON
{
  "invoice_lines": [
    {
      "price": 100
    }
  ]
}

tax_type

Requirement: Mandatory
Type: String

The type of tax applied to this line item.

Regional API

JSON
{
  "invoice_lines": [
    {
      "tax_type": "T1"
    }
  ]
}

Allowed Values:

CodeTax TypeDescription
T1Value Added TaxStandard VAT at 14%
T2Table Tax (percentage)Percentage-based table tax on specific goods
T3Table Tax (fixed amount)Fixed amount table tax on specific goods
T4Withholding Tax (WHT)Tax withheld at source
T5Stamping Tax (percentage)Percentage-based stamp duty
T6Stamping Tax (fixed amount)Fixed amount stamp duty
T7Entertainment TaxTax on entertainment services
T8Resource Development FeeFee for resource development
T9Service ChargeService charge applicable to certain services
T10Municipality FeeLocal municipality fee
T11Medical Insurance FeeFee for medical insurance
T12Other FeesOther applicable fees

tax_subtype

Requirement: Optional
Type: String

Tax subtype code for the applied tax type. Used to specify a particular rate or exemption within a tax type. Maps to the ETA's taxable item subType field.

Regional API

JSON
{
  "invoice_lines": [
    {
      "tax_type": "T1",
      "tax_subtype": "V009"
    }
  ]
}

Rules:

  • Must be a valid ETA tax subtype code for the given tax_type
  • For T1 (VAT), common subtypes include V009 (standard rate) and V001 (export exemption)

internal_code

Requirement: Optional
Type: String

Internal product code used for referencing back to your ERP or inventory system. Maps to the ETA's internalCode field.

Regional API

JSON
{
  "invoice_lines": [
    {
      "internal_code": "COFFEE-ARB-1KG"
    }
  ]
}

discount

Requirement: Optional
Type: Object

Discount applied to the invoice line item. Maps to the ETA's discount structure.

FieldTypeRequiredDescription
rateDecimalNoDiscount percentage rate (0 to 100)
amountDecimalNoDiscount amount. Must be less than or equal to the line sales total. Up to 5 decimal digits.

Regional API

JSON
{
  "invoice_lines": [
    {
      "discount": {
        "rate": 5,
        "amount": 500
      }
    }
  ]
}

Rules:

  • rate must be between 0 and 100
  • amount must not exceed the line's sales total
  • If rate is specified, amount should be the calculated discount based on the rate

items_discount

Requirement: Optional
Type: Decimal

Non-taxable items discount amount for this line. This discount is not included in tax calculations. Maps to the ETA's itemsDiscount field.

Regional API

JSON
{
  "invoice_lines": [
    {
      "items_discount": 50
    }
  ]
}

weight_unit_type

Requirement: Optional (used for export document lines)
Type: String

Weight unit code used for export documents. Uses the same unit codes as unit_type. Maps to the ETA's weightUnitType field.

Regional API

JSON
{
  "invoice_lines": [
    {
      "weight_unit_type": "KGM"
    }
  ]
}

weight_quantity

Requirement: Optional (used for export document lines)
Type: Decimal

Weight quantity for export documents. Must be greater than 0. Maps to the ETA's weightQuantity field.

Regional API

JSON
{
  "invoice_lines": [
    {
      "weight_quantity": 500
    }
  ]
}

Full Invoice Line Example

Regional API

JSON
{
  "invoice_lines": [
    {
      "description": "Premium Coffee Beans - Arabica 1kg",
      "item_type": "GS1",
      "item_code": "6221218058490",
      "unit_type": "KGM",
      "quantity": 100,
      "price": 100,
      "tax_type": "T1",
      "tax_subtype": "V009",
      "internal_code": "COFFEE-ARB-1KG",
      "discount": {
        "rate": 5,
        "amount": 500
      },
      "items_discount": 50
    }
  ]
}

ETA eInvoicing Lifecycle

This guide covers the complete lifecycle of e-invoicing in Egypt, from generating invoices through to retrieval and cancellation via the Flick API.


Overview

The ETA e-invoicing lifecycle follows three stages:

StageEndpointMethodPurpose
1. Generate Invoice/v1/einvoice/generatePOSTCreate an invoice, sign it, and submit to ETA
2. Get Invoice/v1/einvoice/{uuid}GETRetrieve invoice details, status, and the full ETA document
3. Cancel Invoice/v1/einvoice/{uuid}PUTCancel a previously generated invoice

1. Generate Invoice

Create an e-invoice and submit it to the ETA for validation. Flick handles the digital signature, document construction, and ETA submission automatically.

Prerequisites

  • A Flick API account with the Egypt ETA mandate enabled
  • A participant onboarded with valid Egyptian tax registration details
  • Items coded using GS1 or EGS coding schemas

Request

Endpoint: POST /v1/einvoice/generate

Headers:

  • x-flick-auth-key: Your Flick API key
  • participant_id: Your participant ID
  • Content-Type: application/json

Regional API

JSON
{
  "document_identifier": "INV-001",
  "document_type": "i",
  "issue_date": "2025-02-09",
  "issue_time": "10:30:00Z",
  "tax_activity_code": "4520",
  "document_currency": "EGP",
  "receiving_party": {
    "type": "B",
    "registration_number": "987654321",
    "name": "XYZ Retail Store",
    "address": {
      "country": "EG",
      "address_line1": "El Tahrir Street",
      "city": "Giza",
      "governate": "Giza Governorate",
      "building_number": "12",
      "postal_code": "12311"
    }
  },
  "invoice_lines": [
    {
      "description": "Premium Coffee Beans - Arabica 1kg",
      "item_type": "GS1",
      "item_code": "6221218058490",
      "unit_type": "KGM",
      "quantity": 100,
      "price": 100,
      "tax_type": "T1"
    }
  ]
}

Request Fields Summary

FieldTypeRequiredDescription
document_identifierStringYesUnique internal document reference
document_typeStringYesi, c, d (domestic) or ei, ec, ed (export)
issue_dateDateYesInvoice date (YYYY-MM-DD)
issue_timeTimeYesInvoice time in UTC (HH:MM:SSZ)
tax_activity_codeStringYesETA activity type code
document_currencyStringYesCurrency code (default: EGP)
receiving_partyObjectYesBuyer details (see Datapoints)
invoice_linesArrayYesAt least one line item required

Success Response (201 Created / 200 OK)

A 201 is returned when the invoice is newly created. A 200 is returned if an invoice with the same document_identifier has already been processed.

JSON
{
  "status": "success",
  "message": "Invoice created successfully",
  "data": {
    "uuid": "165e692d-7d40-4e26-8eee-77b443c5c2f4",
    "document_identifier": "INV-001",
    "status": "draft",
    "eta_uuid": "",
    "eta_long_id": "",
    "qr_code": ""
  }
}

Response Fields

FieldDescription
uuidUnique identifier assigned to this invoice by Flick
document_identifierYour internal document reference (echoed back)
statusCurrent status of the invoice (draft, submitted, valid, invalid, cancelled)
eta_uuidUUID assigned by the ETA (populated after ETA validation)
eta_long_idLong ID assigned by the ETA for document lookup
qr_codeQR code data (populated after ETA validation)

Validation Error Response (400)

JSON
{
  "status": "validation_error",
  "message": "There are validation errors in the submitted data",
  "errors": [
    {
      "error": "Issue time is required",
      "path": ["issue_time"]
    },
    {
      "error": "Tax activity code is required",
      "path": ["tax_activity_code"]
    }
  ],
  "errors_text": "(1) Issue time is required  (2) Tax activity code is required"
}
FieldDescription
status"validation_error"
messageHuman-readable summary
errorsArray of individual errors, each with error (message) and path (field location)
errors_textConcatenated error summary string

2. Get Invoice

Retrieve the full details of a previously generated invoice, including its current status and the complete ETA document with signature.

Request

Endpoint: GET /v1/einvoice/{uuid}

Headers:

  • x-flick-auth-key: Your Flick API key
  • participant_id: Your participant ID

Path Parameters:

ParameterTypeDescription
uuidStringUUID of the invoice (returned from the Generate step)

Sample Request

Text
GET /v1/einvoice/165e692d-7d40-4e26-8eee-77b443c5c2f4

Success Response (200)

JSON
{
  "status": "success",
  "message": "Success",
  "data": {
    "uuid": "165e692d-7d40-4e26-8eee-77b443c5c2f4",
    "document_identifier": "INV-001",
    "document_type": "i",
    "document_currency": "EGP",
    "issue_date": "2025-02-09T00:00:00.000Z",
    "issue_time": "10:30:00Z",
    "status": "draft",
    "cancel_reason": null,
    "invoice_total": 11400,
    "tax_total": 1400,
    "eta_uuid": "",
    "eta_long_id": "",
    "qr_code": "",
    "eta_document": {}
  }
}

Response Fields

FieldDescription
uuidFlick-assigned unique identifier
document_identifierYour internal document reference
document_typei, c, d, ei, ec, or ed
document_currencyCurrency code
issue_dateInvoice issue date
issue_timeInvoice issue time (UTC)
statusCurrent invoice status
cancel_reasonReason for cancellation (if cancelled, otherwise null)
invoice_totalTotal invoice amount including taxes
tax_totalTotal tax amount
eta_uuidETA-assigned UUID
eta_long_idETA-assigned long identifier
qr_codeQR code data
eta_documentFull ETA document JSON including signature

Not Found Response (404)

JSON
{
  "status": "not_found",
  "message": "Invoice not found"
}

3. Cancel Invoice

Cancel a previously generated invoice. Only invoices that have not already been cancelled can be cancelled.

Request

Endpoint: PUT /v1/einvoice/{uuid}

Headers:

  • x-flick-auth-key: Your Flick API key
  • participant_id: Your participant ID
  • Content-Type: application/json

Path Parameters:

ParameterTypeDescription
uuidStringUUID of the invoice to cancel

Regional API

JSON
{
  "status": "cancelled",
  "reason": "Customer requested cancellation"
}

Request Fields

FieldTypeRequiredDescription
statusStringYesMust be "cancelled"
reasonStringYesReason for cancelling the invoice

Success Response (200)

JSON
{
  "status": "success",
  "message": "Invoice cancelled successfully",
  "data": {
    "uuid": "165e692d-7d40-4e26-8eee-77b443c5c2f4",
    "status": "cancelled",
    "cancel_reason": "Customer requested cancellation"
  }
}

Response Fields

FieldDescription
uuidThe invoice UUID
statusUpdated status ("cancelled")
cancel_reasonThe cancellation reason you provided

Not Found Response (404)

JSON
{
  "status": "not_found",
  "message": "Invoice not found"
}

Error Response (400)

JSON
{
  "status": "failed",
  "message": "Invoice is already cancelled"
}

Possible error messages include:

  • "Invoice is already cancelled" — the invoice was previously cancelled
  • "not allowed to cancel" — the invoice is in a state that does not permit cancellation

Complete Integration Flow

Here is the recommended sequence for a full integration:

Initial Setup (One-time)

  1. Get API credentials from the Flick dashboard
  2. Onboard your participant with your Egyptian tax registration details
  3. Register your items with GS1 or EGS coding schemas

Ongoing Operations

  1. Generate invoices via POST /v1/einvoice/generate with your invoice data
  2. Track invoice status via GET /v1/einvoice/{uuid} to monitor ETA validation
  3. Cancel if needed via PUT /v1/einvoice/{uuid} with a cancellation reason
  4. Handle errors — check response status and resolve validation issues

Integration Checklist

Before going live, verify:

  • API authentication is configured with valid x-flick-auth-key and participant_id
  • Participant is onboarded with correct Egyptian tax registration details
  • All items are coded using valid GS1 or EGS codes
  • Tax activity codes are valid ETA activity type codes
  • Issue date and time are in the correct format (YYYY-MM-DD and HH:MM:SSZ)
  • Receiving party details include valid type, registration number, name, and address
  • Document identifiers are unique within your system
  • Error handling and retry logic are implemented
  • Sandbox testing is complete with all document types (domestic and export invoices, credit notes, debit notes)

For complete request body examples covering all document types, refer to the Examples section.

Egypt E-Invoicing Examples

Complete collection of ETA-compliant invoice examples covering domestic invoices, export invoices, credit notes, debit notes, multiple line items, and special scenarios.


Domestic Invoices

Standard Invoice with GS1 Item Codes

A typical domestic B2B invoice with a single line item using GS1 coding and standard VAT (T1).

Key Features:

  • Document Type: i (Domestic Invoice)
  • Item Coding: GS1 (international barcode)
  • Tax Type: T1 (Value Added Tax at 14%)

Regional API

JSON
{
  "document_identifier": "INV-001",
  "document_type": "i",
  "issue_date": "2025-02-09",
  "issue_time": "10:30:00Z",
  "tax_activity_code": "4520",
  "document_currency": "EGP",
  "receiving_party": {
    "type": "B",
    "registration_number": "987654321",
    "name": "XYZ Retail Store",
    "address": {
      "country": "EG",
      "address_line1": "El Tahrir Street",
      "city": "Giza",
      "governate": "Giza Governorate",
      "building_number": "12",
      "postal_code": "12311",
      "floor": "2",
      "room": "205"
    }
  },
  "invoice_lines": [
    {
      "description": "Premium Coffee Beans - Arabica 1kg",
      "item_type": "GS1",
      "item_code": "6221218058490",
      "unit_type": "KGM",
      "quantity": 100,
      "price": 100,
      "tax_type": "T1"
    }
  ]
}

Standard Invoice with EGS Item Codes

A domestic invoice using Egypt General Standard (EGS) item codes instead of GS1.

Key Features:

  • Document Type: i (Domestic Invoice)
  • Item Coding: EGS (Egyptian coding — format: EG-{taxreg}-{itemid})
  • Tax Type: T1 (Value Added Tax)

Regional API

JSON
{
  "document_identifier": "INV-002",
  "document_type": "i",
  "issue_date": "2025-03-15",
  "issue_time": "14:00:00Z",
  "tax_activity_code": "4711",
  "document_currency": "EGP",
  "receiving_party": {
    "type": "B",
    "registration_number": "123456789",
    "name": "ABC Trading Company",
    "address": {
      "country": "EG",
      "address_line1": "26th of July Street",
      "city": "Cairo",
      "governate": "Cairo Governorate",
      "building_number": "Tower 5",
      "postal_code": "11511"
    }
  },
  "invoice_lines": [
    {
      "description": "Office Desk - Executive Model",
      "item_type": "EGS",
      "item_code": "EG-113317713-0001",
      "unit_type": "EA",
      "quantity": 5,
      "price": 2500,
      "tax_type": "T1"
    }
  ]
}

Multiple Line Items

Invoice with Multiple Items and Tax Types

An invoice with multiple line items, each with different tax types.

Key Features:

  • Multiple line items with different unit types
  • Mixed tax types (T1 and T5)

Regional API

JSON
{
  "document_identifier": "INV-003",
  "document_type": "i",
  "issue_date": "2025-03-20",
  "issue_time": "09:15:00Z",
  "tax_activity_code": "4520",
  "document_currency": "EGP",
  "receiving_party": {
    "type": "B",
    "registration_number": "555444333",
    "name": "Delta Services LLC",
    "address": {
      "country": "EG",
      "address_line1": "Corniche El Nile",
      "city": "Cairo",
      "governate": "Cairo Governorate",
      "building_number": "88",
      "postal_code": "11221",
      "floor": "10"
    }
  },
  "invoice_lines": [
    {
      "description": "Engine Oil - Synthetic 5W-30 (4L)",
      "item_type": "GS1",
      "item_code": "6221218058491",
      "unit_type": "LTR",
      "quantity": 20,
      "price": 350,
      "tax_type": "T1"
    },
    {
      "description": "Oil Filter - Premium",
      "item_type": "GS1",
      "item_code": "6221218058492",
      "unit_type": "EA",
      "quantity": 20,
      "price": 150,
      "tax_type": "T1"
    },
    {
      "description": "Vehicle Inspection Service",
      "item_type": "EGS",
      "item_code": "EG-113317713-0010",
      "unit_type": "EA",
      "quantity": 10,
      "price": 500,
      "tax_type": "T1"
    }
  ]
}

Credit Note

A credit note that adjusts a previously issued invoice. Used for returns, corrections, or partial refunds.

Key Features:

  • Document Type: c (Credit Note)
  • Uses references array to link to the original invoice UUID(s)
  • Receiver and issuer must match the referenced invoice

Regional API

JSON
{
  "document_identifier": "CN-001",
  "document_type": "c",
  "issue_date": "2025-03-25",
  "issue_time": "11:00:00Z",
  "tax_activity_code": "4520",
  "document_currency": "EGP",
  "references": ["a1b2c3d4-e5f6-7890-abcd-ef1234567890"],
  "receiving_party": {
    "type": "B",
    "registration_number": "987654321",
    "name": "XYZ Retail Store",
    "address": {
      "country": "EG",
      "address_line1": "El Tahrir Street",
      "city": "Giza",
      "governate": "Giza Governorate",
      "building_number": "12",
      "postal_code": "12311"
    }
  },
  "invoice_lines": [
    {
      "description": "Premium Coffee Beans - Arabica 1kg (Returned)",
      "item_type": "GS1",
      "item_code": "6221218058490",
      "unit_type": "KGM",
      "quantity": 10,
      "price": 100,
      "tax_type": "T1"
    }
  ]
}

Debit Note

A debit note that increases the amount of a previously issued invoice. Used for additional charges or corrections.

Key Features:

  • Document Type: d (Debit Note)
  • Uses references array to link to the original invoice UUID(s)
  • Receiver and issuer must match the referenced invoice

Regional API

JSON
{
  "document_identifier": "DN-001",
  "document_type": "d",
  "issue_date": "2025-03-25",
  "issue_time": "13:30:00Z",
  "tax_activity_code": "4520",
  "document_currency": "EGP",
  "references": ["a1b2c3d4-e5f6-7890-abcd-ef1234567890"],
  "receiving_party": {
    "type": "B",
    "registration_number": "987654321",
    "name": "XYZ Retail Store",
    "address": {
      "country": "EG",
      "address_line1": "El Tahrir Street",
      "city": "Giza",
      "governate": "Giza Governorate",
      "building_number": "12",
      "postal_code": "12311"
    }
  },
  "invoice_lines": [
    {
      "description": "Shipping Surcharge - Expedited Delivery",
      "item_type": "EGS",
      "item_code": "EG-113317713-0020",
      "unit_type": "EA",
      "quantity": 1,
      "price": 500,
      "tax_type": "T1"
    }
  ]
}

Export Invoices

Export Invoice

An export invoice issued by an Egyptian taxpayer to a foreign company. Export invoices use document type ei and require the receiver type to be F (Foreigner) with a non-EG country code.

Key Features:

  • Document Type: ei (Export Invoice)
  • Receiver type must be F (Foreigner)
  • Receiver country must not be EG
  • currency_exchange_rate required when currency is not EGP
  • service_delivery_date required for export types
  • delivery and weight_unit_type/weight_quantity used for goods exports

Regional API

JSON
{
  "document_identifier": "EXP-001",
  "document_type": "ei",
  "issue_date": "2025-04-01",
  "issue_time": "08:00:00Z",
  "tax_activity_code": "4520",
  "document_currency": "USD",
  "currency_exchange_rate": 50.25,
  "service_delivery_date": "2025-03-31",
  "delivery": {
    "approach": "Sea freight",
    "packaging": "Wooden pallets",
    "export_port": "Alexandria",
    "country_of_origin": "EG",
    "gross_weight": 5000,
    "net_weight": 4800,
    "terms": "CIF Dublin"
  },
  "receiving_party": {
    "type": "F",
    "registration_number": "IE8256796U",
    "name": "MICROSOFT IRELAND OPERATIONS LIMITED",
    "address": {
      "country": "IE",
      "address_line1": "Carmanhall and Leopardstown",
      "city": "Dublin",
      "governate": "Leinster",
      "building_number": "One Microsoft Place",
      "postal_code": "D18 P521"
    }
  },
  "invoice_lines": [
    {
      "description": "Egyptian cotton textiles - premium grade",
      "item_type": "EGS",
      "item_code": "EG-113317713-TEX01",
      "unit_type": "KGM",
      "quantity": 500,
      "price": 20,
      "tax_type": "T1",
      "weight_unit_type": "KGM",
      "weight_quantity": 500
    }
  ]
}

Export Credit Note

An export credit note that reduces the amount of a previously issued export invoice. Must reference the original export invoice.

Key Features:

  • Document Type: ec (Export Credit Note)
  • Uses references array to link to the original export invoice UUID(s)
  • Requires service_delivery_date and currency_exchange_rate (when non-EGP)
  • Amounts must not exceed the original export invoice totals

Regional API

JSON
{
  "document_identifier": "ECN-001",
  "document_type": "ec",
  "issue_date": "2025-04-15",
  "issue_time": "10:00:00Z",
  "tax_activity_code": "4520",
  "document_currency": "USD",
  "currency_exchange_rate": 50.25,
  "service_delivery_date": "2025-03-31",
  "references": ["b2c3d4e5-f6a7-8901-bcde-f12345678901"],
  "receiving_party": {
    "type": "F",
    "registration_number": "IE8256796U",
    "name": "MICROSOFT IRELAND OPERATIONS LIMITED",
    "address": {
      "country": "IE",
      "address_line1": "Carmanhall and Leopardstown",
      "city": "Dublin",
      "governate": "Leinster",
      "building_number": "One Microsoft Place",
      "postal_code": "D18 P521"
    }
  },
  "invoice_lines": [
    {
      "description": "Egyptian cotton textiles - premium grade (returned)",
      "item_type": "EGS",
      "item_code": "EG-113317713-TEX01",
      "unit_type": "KGM",
      "quantity": 50,
      "price": 20,
      "tax_type": "T1",
      "weight_unit_type": "KGM",
      "weight_quantity": 50
    }
  ]
}

Export Debit Note

An export debit note that increases the amount of a previously issued export invoice.

Key Features:

  • Document Type: ed (Export Debit Note)
  • Uses references array to link to the original export invoice UUID(s)
  • Requires service_delivery_date and currency_exchange_rate (when non-EGP)

Regional API

JSON
{
  "document_identifier": "EDN-001",
  "document_type": "ed",
  "issue_date": "2025-04-15",
  "issue_time": "11:30:00Z",
  "tax_activity_code": "4520",
  "document_currency": "USD",
  "currency_exchange_rate": 50.25,
  "service_delivery_date": "2025-03-31",
  "references": ["b2c3d4e5-f6a7-8901-bcde-f12345678901"],
  "receiving_party": {
    "type": "F",
    "registration_number": "IE8256796U",
    "name": "MICROSOFT IRELAND OPERATIONS LIMITED",
    "address": {
      "country": "IE",
      "address_line1": "Carmanhall and Leopardstown",
      "city": "Dublin",
      "governate": "Leinster",
      "building_number": "One Microsoft Place",
      "postal_code": "D18 P521"
    }
  },
  "invoice_lines": [
    {
      "description": "Egyptian cotton textiles - premium grade (price adjustment)",
      "item_type": "EGS",
      "item_code": "EG-113317713-TEX01",
      "unit_type": "KGM",
      "quantity": 500,
      "price": 5,
      "tax_type": "T1",
      "weight_unit_type": "KGM",
      "weight_quantity": 500
    }
  ]
}

Invoice to a Natural Person

An invoice issued to an individual (natural person).

Key Features:

  • Receiving party type: P (Person)
  • Registration number is the national ID

Regional API

JSON
{
  "document_identifier": "INV-005",
  "document_type": "i",
  "issue_date": "2025-04-10",
  "issue_time": "16:45:00Z",
  "tax_activity_code": "4711",
  "document_currency": "EGP",
  "receiving_party": {
    "type": "P",
    "registration_number": "29001011234567",
    "name": "Ahmed Mohamed Hassan",
    "address": {
      "country": "EG",
      "address_line1": "El Gomhoreya Street",
      "city": "Alexandria",
      "governate": "Alexandria Governorate",
      "building_number": "15",
      "postal_code": "21500"
    }
  },
  "invoice_lines": [
    {
      "description": "Home Appliance - Washing Machine",
      "item_type": "GS1",
      "item_code": "6221218058495",
      "unit_type": "EA",
      "quantity": 1,
      "price": 12000,
      "tax_type": "T1"
    }
  ]
}

Invoice with All Optional Fields

A comprehensive invoice demonstrating all available optional fields: payment details, delivery information, document-level discount, purchase/sales order references, expanded address fields, and line-level discounts.

Key Features:

  • All optional document-level fields populated
  • Payment and delivery objects included
  • Line-level discount, items_discount, tax_subtype, and internal_code
  • Expanded address with governate, floor, room, landmark, additional_information

Regional API

JSON
{
  "document_identifier": "INV-006",
  "document_type": "i",
  "issue_date": "2025-02-09",
  "issue_time": "10:30:00Z",
  "tax_activity_code": "4520",
  "document_currency": "EGP",
  "extra_discount_amount": 50,
  "purchase_order_reference": "PO-2025-001",
  "purchase_order_description": "Monthly office supplies",
  "sales_order_reference": "SO-2025-100",
  "sales_order_description": "Bulk order",
  "proforma_invoice_number": "PI-2025-050",
  "service_delivery_date": "2025-02-08",
  "payment": {
    "bank_name": "National Bank of Egypt",
    "bank_address": "1187 Corniche El Nil, Cairo",
    "bank_account_no": "1234567890",
    "bank_account_iban": "EG380019000500000000263180002",
    "swift_code": "NBEGEGCX",
    "terms": "Net 30 days"
  },
  "delivery": {
    "approach": "Road transport",
    "packaging": "Cardboard boxes",
    "date_validity": "2025-03-09T00:00:00Z",
    "export_port": "Alexandria",
    "country_of_origin": "EG",
    "gross_weight": 150.5,
    "net_weight": 120,
    "terms": "FOB Alexandria"
  },
  "receiving_party": {
    "type": "B",
    "registration_number": "987654321",
    "name": "XYZ Retail Store",
    "address": {
      "country": "EG",
      "address_line1": "El Tahrir Street",
      "city": "Giza",
      "governate": "Giza Governorate",
      "building_number": "12",
      "postal_code": "12311",
      "floor": "2",
      "room": "205",
      "landmark": "Near Cairo University",
      "additional_information": "Back entrance"
    }
  },
  "invoice_lines": [
    {
      "description": "Premium Coffee Beans - Arabica 1kg",
      "item_type": "GS1",
      "item_code": "6221218058490",
      "unit_type": "KGM",
      "quantity": 100,
      "price": 100,
      "tax_type": "T1",
      "tax_subtype": "V009",
      "internal_code": "COFFEE-ARB-1KG",
      "discount": {
        "rate": 5,
        "amount": 500
      },
      "items_discount": 50
    },
    {
      "description": "Green Tea Box 500g",
      "item_type": "EGS",
      "item_code": "EG-113317713-TEA500",
      "unit_type": "EA",
      "quantity": 200,
      "price": 25,
      "tax_type": "T1",
      "discount": {
        "rate": 10,
        "amount": 500
      }
    }
  ]
}

Invoice with Foreign Currency

A domestic invoice issued in a foreign currency. When document_currency is not EGP, you must provide currency_exchange_rate. The system automatically computes amountEGP and amountSold for each line in the ETA document.

Key Features:

  • Currency: USD with exchange rate to EGP
  • currency_exchange_rate is required for non-EGP currencies

Regional API

JSON
{
  "document_identifier": "INV-007",
  "document_type": "i",
  "issue_date": "2025-05-01",
  "issue_time": "09:00:00Z",
  "tax_activity_code": "4520",
  "document_currency": "USD",
  "currency_exchange_rate": 50.25,
  "receiving_party": {
    "type": "B",
    "registration_number": "987654321",
    "name": "XYZ Retail Store",
    "address": {
      "country": "EG",
      "address_line1": "El Tahrir Street",
      "city": "Giza",
      "governate": "Giza Governorate",
      "building_number": "12",
      "postal_code": "12311"
    }
  },
  "invoice_lines": [
    {
      "description": "Imported Machine Parts - Set A",
      "item_type": "GS1",
      "item_code": "6221218058496",
      "unit_type": "SET",
      "quantity": 5,
      "price": 200,
      "tax_type": "T1"
    }
  ]
}

Invoice with Discounts

An invoice demonstrating both document-level and line-level discounts.

Key Features:

  • extra_discount_amount for document-level discount
  • Line-level discount object with rate and amount
  • items_discount for non-taxable line discount

Regional API

JSON
{
  "document_identifier": "INV-008",
  "document_type": "i",
  "issue_date": "2025-05-05",
  "issue_time": "11:00:00Z",
  "tax_activity_code": "4711",
  "document_currency": "EGP",
  "extra_discount_amount": 100,
  "receiving_party": {
    "type": "B",
    "registration_number": "123456789",
    "name": "ABC Trading Company",
    "address": {
      "country": "EG",
      "address_line1": "26th of July Street",
      "city": "Cairo",
      "governate": "Cairo Governorate",
      "building_number": "Tower 5",
      "postal_code": "11511"
    }
  },
  "invoice_lines": [
    {
      "description": "Office Chair - Ergonomic Model",
      "item_type": "EGS",
      "item_code": "EG-113317713-0002",
      "unit_type": "EA",
      "quantity": 10,
      "price": 3000,
      "tax_type": "T1",
      "discount": {
        "rate": 10,
        "amount": 3000
      },
      "items_discount": 200
    },
    {
      "description": "Desk Lamp - LED",
      "item_type": "EGS",
      "item_code": "EG-113317713-0003",
      "unit_type": "EA",
      "quantity": 10,
      "price": 500,
      "tax_type": "T1",
      "discount": {
        "rate": 5,
        "amount": 250
      }
    }
  ]
}

Invoice with Payment and Delivery

An invoice that includes bank payment details and shipping/delivery information.

Key Features:

  • payment object with full bank details
  • delivery object with shipping terms and weight information

Regional API

JSON
{
  "document_identifier": "INV-009",
  "document_type": "i",
  "issue_date": "2025-05-10",
  "issue_time": "14:00:00Z",
  "tax_activity_code": "4520",
  "document_currency": "EGP",
  "payment": {
    "bank_name": "National Bank of Egypt",
    "bank_address": "1187 Corniche El Nil, Cairo",
    "bank_account_no": "1234567890",
    "bank_account_iban": "EG380019000500000000263180002",
    "swift_code": "NBEGEGCX",
    "terms": "Net 30 days"
  },
  "delivery": {
    "approach": "Road transport",
    "packaging": "Cardboard boxes",
    "country_of_origin": "EG",
    "gross_weight": 250,
    "net_weight": 230,
    "terms": "DAP Cairo"
  },
  "receiving_party": {
    "type": "B",
    "registration_number": "555444333",
    "name": "Delta Services LLC",
    "address": {
      "country": "EG",
      "address_line1": "Corniche El Nile",
      "city": "Cairo",
      "governate": "Cairo Governorate",
      "building_number": "88",
      "postal_code": "11221"
    }
  },
  "invoice_lines": [
    {
      "description": "Industrial Pump - Model X200",
      "item_type": "GS1",
      "item_code": "6221218058497",
      "unit_type": "EA",
      "quantity": 2,
      "price": 15000,
      "tax_type": "T1"
    }
  ]
}

Document Type Reference

Domestic

CodeTypeDescription
iInvoiceStandard invoice for domestic taxable supplies
cCredit NoteReduces the amount of a previously issued domestic invoice
dDebit NoteIncreases the amount of a previously issued domestic invoice

Export

CodeTypeDescription
eiExport InvoiceInvoice issued to a foreign company
ecExport Credit NoteReduces the amount of a previously issued export invoice
edExport Debit NoteIncreases the amount of a previously issued export invoice

Tax Type Reference

CodeTax TypeDescription
T1Value Added TaxStandard VAT at 14%
T2Table Tax (percentage)Percentage-based table tax on specific goods
T3Table Tax (fixed amount)Fixed amount table tax on specific goods
T4Withholding Tax (WHT)Tax withheld at source
T5Stamping Tax (percentage)Percentage-based stamp duty
T6Stamping Tax (fixed amount)Fixed amount stamp duty
T7Entertainment TaxTax on entertainment services
T8Resource Development FeeFee for resource development
T9Service ChargeService charge applicable to certain services
T10Municipality FeeLocal municipality fee
T11Medical Insurance FeeFee for medical insurance
T12Other FeesOther applicable fees

Issuer and Receiver Type Reference

CodeDescription
BBusiness registered in Egypt
PNatural person (individual)
FForeigner (foreign entity)

Common Unit Type Codes

CodeDescription
EAEach (individual unit)
KGMKilogram
MTRMetre
LTRLitre
PCEPiece
SETSet
HRHour
DAYDay
MONMonth
BOXBox

Best Practices

  1. Always test in sandbox first — Use the sandbox environment before processing live invoices
  2. Use consistent document identifiers — Document identifiers must be unique within your system
  3. Validate item codes — Ensure all items are registered with valid GS1 or EGS codes before invoicing
  4. Use correct activity codes — The tax_activity_code must match a valid ETA activity type
  5. Include complete receiver details — Type, registration number, name, and full address are all mandatory
  6. Handle validation errors — Parse the errors array and path field to identify and fix specific issues
  7. Monitor invoice status — Use the Get endpoint to track ETA validation progress

For detailed field definitions, refer to Invoice Datapoints. For the complete integration flow, see eInvoicing Lifecycle.