e-bon
e-bon.ro
Architecture

Architecture overview

How e-bon connects your point of sale to your fiscal printer, the cloud, and ANAF — at a glance.

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

Your point-of-sale software, online checkout, or the e-bon Portal in a browser. This is where a sale happens or where you manage your business.

e-bon cloud

The hosted service at 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

An Android app installed on a phone or tablet next to each fiscal printer. It is the only piece that talks directly to the printer hardware.

Fiscal printer (AMEF)

Your legally certified fiscal device — Datecs, Daisy, Eltrade, Incotex, Tremol, Custom, or Shtrih. It owns the fiscal memory and reports the end-of-day totals to ANAF.

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.

The whole round trip from POS request to printed receipt typically completes in a few seconds. If the device cannot be reached in time, the receipt is not printed and your POS receives a clear error — never a silent loss.

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.

This means you can keep working even on shaky connectivity. Commands are not lost — they wait in a queue and run as soon as the device reconnects.

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:

Attempt 1
Immediate
Attempt 2
After 1 minute
Attempt 3
After 5 minutes
Attempt 4
After 30 minutes
Attempt 5
After 2 hours
Final attempt
After 12 hours

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.

Always verify the HMAC signature on incoming webhook requests. See Webhook events for header names and a verification example.

Where to next

Getting started

Create an account, register a device, and print your first receipt.

API overview

The public REST surface for issuing receipts, fetching reports, and managing devices.

Webhook events

Every event type, payload shape, and signature verification example.

Errors

Error codes for API responses and command failures.