Configuration
Every setting in Egypt ETA e-Invoice, and what each one changes.
The connection
Egypt ETA → Configuration → Connections. One per company.
Environment
Pre-production and Production, and the choice is guarded: the connection refuses to be set to Production while its URLs still point at a pre-production address.
That guard exists because both directions of the mistake are expensive. Testing against production files real documents you cannot withdraw. "Filing" against pre-production files nothing at all, and you find out at the end of the tax period.
Credentials
| Field | Notes |
|---|---|
| Client ID | From the ETA taxpayer portal |
| Client Secret | Likewise. Masked after saving |
| On Behalf Of | Only for intermediaries filing for another taxpayer |
The secret is on a field restricted to an ETA Administrator. Access tokens are fetched as needed and refreshed before they expire rather than after a call fails.
Taxpayer
| Field | Notes |
|---|---|
| Registration Number | Your tax registration number |
| Registered Name | As ETA holds it |
| Activity Code | From your ETA taxpayer profile |
| Branch ID | 0 for head office unless ETA assigned you one |
These go into every document. A mismatch with what ETA holds is a rejection, and the rejection text is not always obvious about which field it meant.
Signing service
The URL of your local eSeal signing service. There is no fallback and no software-only mode, because ETA requires a CAdES-BES signature from a certificate on a token or HSM.
Test Connection checks the credentials and the signing service separately, so you find out which half is wrong.
Code mappings
ETA rejects a line without them.
| Map | Where |
|---|---|
| ETA item code | Product form |
| Unit code | Unit of measure |
| Tax type | Tax |
On the records your accountant already maintains, deliberately — a separate mapping table is a second place to update and therefore a place that goes stale.
Amounts and decimals
ETA works to five decimal places and recalculates from the document.
This module re-derives amounts at five places rather than copying Odoo's two-decimal rounding, and rounds the unit price before multiplying, because that is the order the Authority uses. Get the order wrong and the document disagrees with itself by fractions, which ETA notices.
There is a limit this module cannot cross: Odoo's own decimal precision. If you need genuine five-decimal unit prices, raise the Product Price precision in Odoo. No module can recover precision Odoo has already discarded.
The polling job
ETA: refresh pending document status asks the Authority about submitted documents until it returns a final answer.
Leave it enabled. Without it, documents sit at Submitted indefinitely — and Submitted is not Valid.
Groups
| Group | Can |
|---|---|
| ETA User | Build, submit, read status |
| ETA Administrator | Connections, credentials, raw document payload |
The raw payload is restricted because it contains the full document including customer tax registration numbers and every line.