Daily operations
Once a printer is paired and the app is signed in, every cashier action of the day routes through two screens: the Receipts tab (creating new sale receipts and reviewing history) and the Device detail → Operations tab (one-shot fiscal commands such as duplicates, X/Z reports, cash in/out). This page walks through both, in the order a typical shift uses them.
Issue a receipt
Open the Receipts tab and tap + Create Receipt (the FAB on the bottom right; the same call-to-action shows up on the empty state on a fresh install). The app opens the New Receipt screen with two stacked sections — Add item and, once at least one line has been added, Payment.
Add the line items
For every item the cashier sells, fill in the form at the top of the screen:
- Item name — free text, required.
- Quantity — numeric, defaults to
1. - Price — unit price in RON, must be greater than zero.
- VAT rate — pick one of the chips. The chips reflect the Romanian VAT rates (
ROMANIA_VAT_RATES) configured in@e-bon/types; the default selection is the standard rate. - Department — chips numbered
1–9, default1.
Tap Add Item. The line lands in the Items list below with its VAT {rate}% and Dept {dept} badges, and the running Total at the bottom updates immediately.
Pick the payment method and amount
When at least one item is on the receipt, the Payment section appears underneath. Pick a Method chip — Cash, Card or Voucher — and either enter the amount the customer is paying or leave the field empty to use the running total. The app rejects amounts strictly below the total with an Insufficient Payment alert that names the minimum.
Preview and print
Tap Preview & Print. The app stores the draft in ReceiptStore, navigates to the Receipt Preview screen with the item summary, VAT breakdown and payment details, and arms the Print Receipt button. Pressing Print Receipt sends the order to the first paired device for the active location (per useFilteredDevices) through FiscalPrinterService.printReceipt() — the AMEF prints the fiscal receipt, the receipt is updated with the fiscal ID and fiscal date returned by the printer, and the entry shows up in the Receipts history with a green Fiscal: … line under the total.
Reprint a duplicate
Sometimes the customer needs a second copy of a receipt that has just been printed. Open the device on the Devices tab, switch to Operations, expand the Receipts section, and tap Print Duplicate Receipt. The app calls fiscalDriverBridge.printReceipt() against the connected AMEF, which reprints the last receipt held in the printer's working memory and overlays it with the DUPLICATE banner mandated by the protocol — the original fiscal ID is preserved, no new fiscal counter is consumed.
Void, refund, or storno a sale
Romanian fiscal regulations distinguish two corrections:
- Storno — voiding a line before the receipt is closed. Only meaningful inside an open receipt; once the AMEF has fiscalised the receipt the storno path is no longer available for that document.
- Refund (RETUR) — a separate fiscal document that reverses an already-closed receipt, in part or in full.
In the current app build, the Receipts tab only shows entries of type Sale, Refund and Storno in the receipts history (each tagged with a coloured badge — green for sale, amber for refund, red for storno) and the New Receipt flow only issues sale receipts. The issuance of refund and storno documents lives in the Portal, not in the controller app.
To issue a storno or a refund against a previously printed receipt:
Find the receipt in the portal
Open Portal → Receipts, search by fiscal ID, date range, customer or amount, and open the receipt detail.
Trigger the corresponding correction
The portal exposes the storno and refund flows that ultimately drive the printer through the same fiscalDriverBridge. Once the correction is fiscalised, the resulting RETUR or STORNO entry shows up in the controller app's Receipts tab on the next sync, with the matching coloured badge.
Run an X report — a read-only snapshot
The X report is a non-resetting snapshot of the fiscal totals accumulated since the last Z close. Cashiers typically run it mid-shift to compare the printer's totals against the cash drawer or the card terminal's batch totals.
Open the device, go to Operations → Reports, and tap X Report. The app calls fiscalDriverBridge.xReport(), the printer prints the snapshot, and the operation is logged through logOperation('xReport', true) for the device's local audit trail. The X report does not reset any counters — you can run it as many times as you want during a shift.
Run the Z report to close the fiscal day
The Z report is the end-of-day fiscal close. Running it prints the day's fiscal totals and moves them out of the volatile working buffer into the AMEF's fiscal memory, where they form the next entry of the MF/JE archive. Once Z has run, the day is closed and the running totals reset to zero — there is no undo.
Open Reports and tap Z Report
Operations → Reports section → Z Report.
Confirm the destructive action
The app surfaces a confirmation alert with the wording: “This will close the fiscal day. This action cannot be undone. Are you sure?” (the deviceDetail.ops.zReportWarning copy in i18n/en.json). The Confirm button is styled as destructive to underline that this is a one-way operation. Tap Cancel if you opened the action by mistake.
Let the printer fiscalise the close
On confirm, the app calls fiscalDriverBridge.zReport(), the printer issues the Z document, and the day's totals are committed into fiscal memory. The local audit log records zReport with success: true; the same Z report is what the next Portal → Reports → MF/JE export will pick up.
Deposit and withdraw cash
The Cash Management section on the device's Operations tab lets the cashier book non-sale cash movements directly into the AMEF — the opening float at the start of the shift (cash deposit, cashIn) and any payouts during the shift (cash withdrawal, cashOut). The amount is reflected in the printer's cash counter so that the X and Z reports can reconcile the drawer.
Open the section and pick the direction
Operations → Cash Management → either Cash Deposit or Cash Withdrawal.
Enter the amount
A modal opens asking for the Amount in RON. The field is numeric and rejects empty values, zero and negative amounts; the helper text reads “Enter amount”.
Confirm
Tap Confirm. The app calls fiscalDriverBridge.cashIn(amount) for a deposit, cashOut(amount) for a withdrawal, prints the corresponding non-fiscal slip on the AMEF, and reports Operation completed successfully. Cancel dismisses the modal without booking anything.
Close the day end-to-end
The four operations above combine into a short, repeatable closing routine. Run them in this order:
Make sure every sale of the day is fiscalised
Open the Receipts tab and confirm there are no drafts left in New Receipt — anything still in the draft form is not in the printer's fiscal memory and will not show up on the Z report. Either complete the receipt and Preview & Print it, or Cancel the draft if it should not be issued.
Handle storno and refunds
If any sale of the day needs to be reversed, issue the storno or refund now — before Z. Use the Portal → Receipts flow. Once Z has run, any reversal will land in tomorrow's fiscal day.
Reconcile the cash drawer
Count the cash in the drawer. If you took any cash out for a payout during the day and did not book it through Cash Withdrawal, do that now. Conversely, if you added cash to the drawer mid-shift outside the opening float, book a Cash Deposit. The drawer should match the printer's cash counter when you're done.
Run an X report and verify totals
Operations → Reports → X Report. Compare the X report's printed totals against the cash drawer count, the card terminal's daily batch and any voucher slips. If anything is off, fix it (additional storno, additional cash movement) before moving to Z — the X report is read-only and you can re-run it as many times as needed.
Run the Z report to fiscally close the day
When everything reconciles, Operations → Reports → Z Report, Confirm on the destructive prompt. The printer issues the Z document, the day's totals are written into the AMEF's fiscal memory, and the running counters reset to zero. The day is now officially closed.
After Z, the day's fiscal data is sealed inside the AMEF and is what the next monthly MF/JE export in Portal → Reports will pick up. If anything in the day-end routine misbehaves — Bluetooth dropping the printer mid-print, the Z confirmation accepted by accident, the cash counter not matching the drawer — the Troubleshooting guide lists the recovery paths.
Pairing your fiscal printer
Pair an AMEF to the E-BON Android app over Bluetooth, USB, Serial or TCP, understand how auto-detection probes protocols in order, and fall back to Manual Connect when detection cannot identify the device.
Settings
Manage your account, language, location, and connection status from the Settings tab in the E-BON app.