Installation
What Egypt ETA e-Receipt requires, how to install it, and how to check the install worked.
Requirements
- Odoo 18.0, Community or Enterprise
- Egypt ETA e-Invoice (technovision_eta_einvoice) — this module depends on it and reuses its connection and code mappings
- The B2C tag on your ETA taxpayer profile
- An eSeal certificate on a USB token or HSM, and a local signing service
- Each till's registered device serial number, exactly as ETA holds it
Why it depends on the e-Invoice module
Authentication and HTTP transport are genuinely identical between the two services, so this module reuses eta.connection and the product, unit and tax code mappings rather than duplicating them.
What it does not share is the document builder, because the two documents are different:
| e-Invoice | e-Receipt | |
|---|---|---|
| Endpoint | /api/v1.0/documentsubmissions/ | /api/v1/receiptsubmissions |
| Body wrapper | documents | receipts |
| Submission id | submissionId | submissionUUID |
| Line: unit price | amountEGP | unitPrice |
| Line: gross | salesTotal | totalSale |
| Line: net | netTotal | netSale |
A builder shared between the two would produce a document each endpoint rejects. That is why this is a separate module and not the e-Invoice module with a different label.
Install
- Put technovision_eta_ereceipt in your addons path, alongside technovision_eta_einvoice.
- Update the apps list and install Egypt ETA e-Receipt.
It adds an e-Receipts menu under Egypt ETA, two security groups, a till register, and two scheduled actions — both disabled.
The B2C tag
Confirm your taxpayer profile carries it before anything else.
Without the B2C tag, ETA accepts no receipts at all, however correct they are. It is a property of your ETA registration, not something this module can set or detect, and it is the single most common reason a correctly built integration files nothing.
Register your tills
Egypt ETA → Configuration → Registered Tills. For each device:
| Field | Notes |
|---|---|
| Device serial number | Exactly as registered with ETA |
| Branch code | Your ETA branch |
| Payment method code | From ETA's own table |
Exactly is not a figure of speech. A serial that differs by a character is a device ETA has never heard of.
Code your products and units
In the e-Invoice module's mapping screens — GS1 or EGS item codes on products, ETA unit codes on units of measure.
Local validation refuses an uncoded product with the field named. Finding that here costs a field; finding it at the Authority costs a filing.
The scheduled jobs ship disabled
ETA e-Receipt: submit ready receipts and ETA e-Receipt: check submitted statuses are both off when you install.
That is deliberate. This module talks to a tax authority, and one that began filing on install would submit unchecked documents under the customer's registration.
Build a receipt, read it, submit it by hand, see it come back. Only then enable the jobs.
Check the install worked
- Post a customer invoice with coded products.
- Create a receipt from it.
- Open it and read the Document tab — the v1.2 JSON is there.
- Look at the chain: its UUID, and the UUID of the receipt before it on the same till.
You can get this far with no ETA credentials at all.
Give somebody the groups
| Group | Can |
|---|---|
| e-Receipt User | Build receipts, submit, read status |
| e-Receipt Manager | The above, plus tills and resuming a halted chain |
Resuming a halted till is a Manager power on purpose — see the User guide.
Upgrading
Upgrade normally. Receipts, their UUIDs and the chain are preserved.
Uninstalling
Removes receipts and tills. Receipts already filed with ETA stay filed — uninstalling an Odoo module does not withdraw anything from the Authority. Export the UUIDs first if you need them.