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.
现在无需付款。此操作会向我们的团队发送报价请求——我们会通过邮件跟进价格和后续步骤。
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.
在 ecosire.com 上购买许可证并从您的帐户仪表板下载 Egypt ETA E-Receipt for POS 应用程序 ZIP。
将 ZIP 解压到您的 bench 的 apps 文件夹中,或者使用解压缩的应用程序的路径运行“bench get-app”。
运行 `bench --site SITE_NAME install-app APP_NAME`,然后运行 `bench migrate` 以安装 Egypt ETA E-Receipt for POS 并应用其架构。
打开您站点上的 ECOSIRE 许可证设置并激活您的许可证密钥。需要免费的 ecosire_connect 和 ecosire_license_client 应用程序。
| 标准 | 伊科西尔 | 定制建造 | 竞争对手 | 奥杜本机 |
|---|---|---|---|---|
| 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.