Architecture overview
This page gives you a high-level picture of how e-bon works. Read it once before you wire your point-of-sale system to the API, configure a webhook, or troubleshoot why an event arrived later than you expected.
If you are looking for hands-on setup steps instead, start with Getting started.
Understand the four pieces
Every e-bon installation is made of the same four pieces, talking to one another:
Your POS or browser
e-bon cloud
api.e-bon.ro and the Portal at app.e-bon.ro. It receives your requests, stores receipts and reports, and routes commands to the right device.e-bon mobile app
Fiscal printer (AMEF)
A simplified view of how they connect:
Your POS ─── HTTPS ──▶ e-bon cloud
or browser │
│ real-time channel
▼
e-bon mobile app
│
│ Bluetooth / USB / Serial / TCP
▼
Fiscal printer (AMEF)
│
│ end-of-day Z report
▼
ANAF
Follow a receipt from sale to ANAF
When a cashier or your POS issues a receipt, this is the path it takes:
Your POS sends the request
Your point-of-sale system sends a signed HTTPS request to the e-bon API with the items, prices, payment method, and the device that should print.
The cloud accepts and persists the command
e-bon validates the request, stores it as a pending command, and immediately responds to your POS with 201 Created so your checkout flow does not stall.
The cloud routes the command to the right device
The command is sent to the e-bon mobile app on the phone or tablet next to the fiscal printer you targeted.
The mobile app drives the printer
The app picks the correct driver for your printer model, encodes the request, and sends it over Bluetooth, USB, Serial, or TCP. The printer prints the receipt and updates its fiscal memory.
The result flows back to the cloud
The app sends the printer's confirmation back to e-bon. The receipt is now permanent in your account, visible in the Portal, and available through the API.
Webhooks notify your other systems
If you have webhooks configured, e-bon delivers a receipt.created event to every subscriber that asked for it.
End-of-day Z report goes to ANAF
At the end of each working day, the mobile app triggers the Z report on the printer and the totals are reported to ANAF on the schedule required by law.
How real-time updates reach your devices
The cloud talks to the mobile app over a persistent WebSocket connection. As long as the app is online, commands and confirmations flow instantly in both directions, and the Portal updates without polling.
When the WebSocket is not connected — for example, the Android device is asleep, on a flaky network, or briefly backgrounded — e-bon falls back to a push notification (FCM) that wakes the app. The app reconnects, drains any queued commands, and reports back.
How webhooks reach your other systems
Webhooks are how you push e-bon events into your own systems — your accounting software, your billing platform, your custom dashboard, your alerting tool — without polling our API.
You subscribe to event types
In the Portal, you register a URL of your own and pick which event types you care about (for example, receipt.created, report.z.created, device.alert).
e-bon signs and posts every event
When something happens, e-bon builds an event envelope, signs it with your secret using HMAC SHA-256, and posts it to your URL with a 10-second timeout.
Failed deliveries are retried with backoff
If your endpoint returns a non-2xx response, times out, or is unreachable, e-bon retries with exponential backoff:
Endpoints that keep failing get auto-disabled
If the same webhook fails 20 times in a row, e-bon automatically disables it and notifies you. You can re-enable it from the Portal once you have fixed the receiving end.
Where to next
client.webhooks
Reference for the WebhooksResource — manage webhook subscriptions, rotate signing secrets, fire test deliveries and inspect delivery history, mirroring /api/v1/org/webhooks.
Device alerts
Understand the five device alerts e-bon raises for your fiscal devices — paper low, cover open, fiscal memory almost full, Z report overdue, and disconnected — where they appear in the Portal, and how to consume them from the API.