Docs

ETA e-invoicing

The eInvoice Service signs your invoices with the company seal and, if you want, submits them to the Egyptian Tax Authority (ETA).

Pick the right call

You want to…UseETA credentials needed
Sign an invoice and submit it yourselfPOST /invoice/signNo
Sign and submit to ETA in one callPOST /invoice/submitYes
Check a signature on a document you holdPOST /invoice/validateNo

Installed without ETA credentials, the service runs in sign-only mode: sign and validate work, and submit returns an error until credentials are configured. /invoice/submit accepts up to 100 documents per call.

Authentication

Send the service token in the Authorization header, with no Bearer prefix.

The one thing that breaks integrations

JSON.stringify(JSON.parse('{"amountEGP":10.50}'))   // {"amountEGP":10.5}  <- signature now invalid

Treat the response of /invoice/sign as opaque text: store it as text, forward the raw body, and if you must read a field, parse a copy.

All operations

POST /invoice/signSign invoices with the company seal. You submit them to ETA yourself.
POST /invoice/submitSign and submit up to 100 documents to ETA in one call.
POST /invoice/validateCheck the signature on a document you hold.
GET /invoice/:uuidFetch a submitted document from ETA.
GET /invoice/:uuid/detailsFetch document details and validation results from ETA.
GET /invoice/recentList recent documents.
PUT /invoice/:uuid/cancelCancel an issued document.
PUT /invoice/:uuid/rejectReject a received document.