A build-to-order ERPNext application that submits Egyptian Tax Authority (ETA) e-receipts for B2C point-of-sale sales, stamping every receipt with a UUID and QR and reporting to the ETA e-receipt SDK in near real time. ECOSIRE builds, installs, and supports it — it is not an instant download. Built to order by ECOSIRE for ERPNext v15, v16 — indicative price from $499.00 USD; request a quote for a scoped proposal.

A build-to-order ERPNext application that submits Egyptian Tax Authority (ETA) e-receipts for B2C point-of-sale sales, stamping every receipt with a UUID and QR and reporting to the ETA e-receipt SDK in near real time. ECOSIRE builds, installs, and supports it — it is not an instant download.
Sem pagamento agora. Isto envia um pedido de orçamento à nossa equipe — responderemos por e-mail com preços e próximos passos.
Egyptian retailers and restaurants under the ETA e-receipt mandate face a specific gap: ERPNext gives you a solid POS Invoice and Sales Invoice flow, but it has no concept of the Egyptian Tax Authority's e-receipt schema, its device/POS registration model, or the near-real-time submission the mandate expects for high-volume B2C sales. The ETA e-receipt system is deliberately different from the B2B e-invoice track — it works per registered POS device, expects each receipt UUID and cryptographic serialization, and issues the QR code your cashiers must print at the counter. Out of the box, ERPNext cannot produce any of that, so most shops end up re-keying every sale into a portal or a middleware they cannot see inside.
`ETA E-Receipt` DocType mirroring the Egyptian Tax Authority B2C receipt schema (header, seller/branch, optional buyer, lines, tax and payment breakdown)
`hooks.py` `doc_events` handler on `POS Invoice`/`Sales Invoice` submit that serializes, requests the UUID, and submits to the ETA e-receipt SDK
Per-device `ETA POS Device` DocType holding registration, activation code, and token lifecycle for each physical or virtual POS
Near-real-time submission with the receipt UUID and QR written back onto the source document so it prints at the counter
`ETA Item Code Map` resolving each ERPNext Item to its EGS or GS1 code and correct ETA tax type/sub-type
Frappe `scheduler_events` retry queue for receipts that fail immediate submission (offline device, token expiry, network drop), with capped back-off
We build a proper Frappe application (ecosire_eta_ereceipt) installed onto your existing ERPNext v15/v16 bench — not a hosted black box. The app adds an ETA E-Receipt DocType that mirrors the Tax Authority's receipt document (header, seller/branch, buyer where present, line items, tax totals, and payment breakdown), plus an ETA POS Device DocType that holds the registration, activation code, and credentials for each physical or virtual POS your branches run. A hooks.py doc_events handler fires on POS Invoice submit to serialize the sale into the ETA e-receipt JSON, request the receipt UUID, sign/submit through the ETA e-receipt SDK endpoint, and write the returned UUID and status straight back onto the source document. Item and tax mapping is handled with a configurable ETA Item Code Map that resolves each ERPNext Item to its EGS or GS1 code and the correct ETA tax-type/sub-type, so cashiers never touch a tax code.
Submission is designed for the reality of a busy counter. The doc-event path attempts an immediate submit so the QR prints on the receipt; anything that fails to reach the ETA — network blips, token expiry, a device that dropped offline — is queued and retried by a Frappe scheduler_events background job, with each attempt and the ETA response logged against the receipt for audit. Whitelisted API methods expose submit, re-submit, and status-check so your own POS UI (or ERPNext POS) can call them via the Frappe REST API, and a role profile (ETA Receipt Manager / cashier) keeps device credentials and cancellation out of ordinary users' hands. Client scripts render the UUID and QR on the print format and surface a clear success/queued/rejected badge to the cashier.
Because every business codes items, branches, and tax differently, this is a build-to-order engagement, not a marketplace download. We start from a short scoping call, confirm your ETA registration profile (taxpayer/branch/device structure), your item and tax mapping, and your POS flow, then build and hand over a versioned app tailored to it. Typical delivery is 2–4 weeks from confirmed scope. You receive the installable source, a git repository, UAT on a staging bench with a rollback plan, and a defined post-go-live support window so real ETA traffic is watched, not assumed.
A supermarket, pharmacy, or multi-branch shop selling to walk-in consumers that must issue ETA-compliant e-receipts per registered POS device and needs the UUID and QR on every printed receipt without re-keying sales into a portal.
A restaurant, café, or quick-service chain running fast B2C counter sales that needs near-real-time e-receipt submission tied to each POS terminal, with an offline retry queue so a network blip never blocks a sale.
The person accountable to the Egyptian Tax Authority who needs an auditable log of every submission, correct EGS/GS1 item and tax mapping, and clean handling of returns and cancellations to survive an ETA review.
The internal owner of the ERPNext bench who wants a real Frappe app with DocTypes, hooks, and whitelisted APIs they can read and extend — plus the git repo — rather than an opaque hosted middleware.
Compre a licença em ecosire.com e baixe o ZIP do aplicativo Egypt ETA E-Receipt for POS no painel da sua conta.
Extraia o ZIP na pasta de aplicativos do seu banco ou execute `bench get-app` com o caminho para o aplicativo extraído.
Execute `bench --site SITE_NAME install-app APP_NAME` seguido de `bench Migra` para instalar Egypt ETA E-Receipt for POS e aplicar seu esquema.
Abra as configurações de licença ECOSIRE em seu site e ative sua chave de licença. Requer os aplicativos gratuitos ecosire_connect e ecosire_license_client.
| Critério | ECOSIRE | Construção personalizada | Concorrente | Odoo nativo |
|---|---|---|---|---|
| Delivery model | Build-to-order Frappe app installed on your bench, 2–4 weeks from confirmed scope | Your team builds it from scratch — hiring and ramp time | Instant download but generic, not fitted to your ETA profile | |
| ETA e-receipt (B2C) submission | Dedicated `ETA E-Receipt` DocType + doc-event submit to the ETA SDK | Possible but you own the full schema and SDK integration | Often focused on B2B e-invoice, not the B2C receipt track | |
| POS device registration | `ETA POS Device` DocType with per-device registration and token lifecycle | Must design device/credential model yourself | Sometimes single-device or portal-bound | |
| Offline / retry handling | Scheduler-driven retry queue with back-off and per-attempt logging | You must build and test the queue and back-off | Varies; often fails the sale if the ETA is unreachable | |
| Item & tax code mapping | `ETA Item Code Map` for EGS/GS1 codes and ETA tax types | Hand-rolled mapping and maintenance burden | Basic or manual mapping, limited to common cases | |
| APIs & extensibility | Whitelisted REST methods + git repo handover you can extend | Full control, full maintenance cost | Closed or thinly documented; limited hooks | |
| Audit & compliance trail | Full request/response log per receipt for ETA review | You design the audit trail | Partial logging, often not receipt-level | |
| Support & version fit | Pinned to your v15/v16 bench + post-go-live support window | Your team supports it indefinitely | Vendor SLA, may lag ETA schema/SDK changes |
No. It is build-to-order. ECOSIRE builds the `ecosire_eta_ereceipt` Frappe app around your specific ETA registration, branch/device structure, item and tax mapping, and POS flow, then installs it on your bench. There is no instant marketplace download.
Typical delivery is 2–4 weeks from confirmed scope. The clock starts once we've agreed the requirements — your ETA taxpayer/branch/device profile, item and tax code mapping, POS flow, and target Frappe version — on the scoping call. Complex multi-branch or custom-POS integrations sit at the longer end.
We build and test against Frappe/ERPNext v15 and v16. We pin the delivered app to your exact bench version so upgrades are predictable, and we confirm your version on the scoping call before any work begins.
On `POS Invoice` submit, a `hooks.py` doc event serializes the sale and submits to the ETA e-receipt SDK immediately so the UUID and QR print on the receipt. If the ETA is unreachable — offline device, token expiry, network drop — the receipt is queued and retried by a Frappe scheduler job with back-off, and every attempt is logged so nothing is silently lost.
Yes. An `ETA Item Code Map` resolves each ERPNext Item to its EGS or GS1 code and the correct ETA tax type/sub-type, and tax totals are rounded to match ETA validation so submissions aren't rejected on rounding. Returns and cancellations report the corresponding ETA receipt state.
Every engagement includes a defined post-go-live support window during which we monitor live ETA traffic, rejections, and retries and fix issues traced to our code. Because you receive the git repository and installable source, your team can maintain it, and we offer an ongoing support/retainer arrangement for ETA schema or SDK changes if you'd prefer we keep it current.
You own it. This is a real Frappe app installed on your own bench — DocTypes, hooks, scheduler jobs, and whitelisted APIs you can read and extend — and we hand over the git repository. It is not an opaque hosted middleware you rent.
A build-to-order ERPNext application that submits Egyptian Tax Authority (ETA) e-receipts for B2C point-of-sale sales, stamping every receipt with a UUID and QR and reporting to the ETA e-receipt SDK in near real time. ECOSIRE builds, installs, and supports it — it is not an instant download.