At the till, every second and every receipt counts. A customer waiting while the operator retypes the items on the fiscal register, a receipt that does not match the sale in the system, a Z report that will not reconcile at the end of the day — all of these are symptoms of the same thing: the point of sale and the fiscal register work apart, as two worlds that do not talk to each other.
In Romania, as a rule, supplies to individuals paid in cash or by card call for a fiscal receipt issued by an approved electronic fiscal register. Receipts are kept in the device’s electronic journal, and reporting to ANAF is done from the file the device generates. When the point of sale and the fiscal printer are not connected, you get double entry, human error, till differences and dead time in the queue. In hospitality, where transactions are short and frequent, and in retail, where the volume is large, that friction adds up to lost hours and to real tax exposure.
The Fiscool integration connects Odoo’s point of sale to the fiscal printers Fiscool supports (Datecs, Daisy, Tremol, Custom, Beko), so that closing a sale in Odoo prints a compliant fiscal receipt automatically, with no extra manual step. One action by the operator — taking the payment — produces both the legal fiscal receipt and the complete record in Odoo (stock, till, accounting).
Why it matters
What is at stake is not convenience, but money, time, compliance and controlled risk:
- Compliance without compromise — the receipt comes out of an approved printer, with the right fiscal memory and series. No improvised „receipts” to explain away during an ANAF inspection.
- Real speed at the till — the operator no longer retypes the items on the fiscal register. One flow, one press, a queue that moves.
- No till differences — because the sale in Odoo and the fiscal receipt come from the same transaction, the Z report and the takings in the system agree. End-of-shift reconciliation becomes a formality.
- A single truth — stock is relieved, the till is recorded and the accounting is updated from the same sale. No parallel records.
- Fits retail and hospitality alike — from shops with a large catalogue to restaurants and bars where the speed of the bill is what matters.
For a business with several tills the effect multiplies: every point of sale stays consistent with the back office, and the manager sees one picture in real time instead of a mosaic of reports stitched together by hand.
The flow, step by step
The integration was built to stay out of the operator’s way. In practice it goes like this:
- The sale in Odoo’s point of sale. The operator scans or picks the items, applies any discounts, chooses the payment method (cash, card, vouchers). Every line, VAT rate and total is already prepared in Odoo.
- Closing the sale and sending it to Fiscool. On the payment button, Odoo sends the basket to the printer, through Fiscool: each item with its name, quantity, price and VAT rate, plus the method of payment.
- Printing the fiscal receipt. The printer issues the legal fiscal receipt, with the sequence number, the fiscal series and the fingerprint from the fiscal memory. The operator hands it to the customer — automatically, with nothing typed twice.
- Closing the sale in Odoo. The sale stays fully recorded: stock leaves the shop’s location, the payment enters the till session, and the accounting entries are generated as configured.
- Closing the session and the Z report. At the end of the shift, the Odoo session is closed and matched against the printer’s Z report, so that the totals by payment method and by VAT rate can be checked.
The details that decide an implementation: mapping Odoo’s VAT rates onto the printer’s tax groups, handling payment methods (mixed cash and card on the same receipt included), and treating discounts on the line or on the total correctly, so that the fiscal receipt says exactly what was sold.
A concrete scenario
A bistro with two tills at the lunch peak. One customer’s order: two set menus at 35 lei, a coffee at 10 lei and a water at 6 lei, with a 10% loyalty discount on the coffee.
- The operator picks the items in Odoo’s point of sale; the system works out the total of 85 lei (after the 1 leu discount on the coffee) and spreads the VAT rates over the lines.
- The customer pays 50 lei in cash and 35 lei by card — a mixed payment on one receipt.
- On the payment button, Fiscool sends the basket to the printer: the four lines, with prices, VAT rates and the discount, plus the two payment methods.
- The printer issues the fiscal receipt for 85 lei, with the VAT breakdown and the cash/card split. The receipt carries the sequence number and the fiscal fingerprint.
- In Odoo, stock for the four products drops, the payment enters the till session (50 lei cash, 35 lei card), and the accounting entries are generated.
At the end of the shift, the printer’s Z report shows exactly the same totals as the Odoo session. No manual reconciliation, no „missing cash” to investigate.
The card as well, not only the receipt
The same connection also drives the bank terminal. There are two set-ups, and the order of operations differs:
- A register with a built-in terminal — Odoo asks for the receipt, and FisCool drives the card leg itself: it asks the terminal for the amount, waits for the customer, then prints.
- A register and a separate terminal, the more common set-up — the amount is requested first at the terminal, and the receipt is printed only once the bank has approved. A receipt that claims a card payment should never come out before the payment exists.
For a card taken on a separate terminal, Odoo keeps on the order the RRN and the authorization code — the two references a transaction is voided with, and the ones to quote in a dispute with the bank.
Taking invoice payments on the terminal, with no fiscal register
A back office has no fiscal register and most of the time needs none, but it does have a terminal. On a posted customer invoice, the usual payment window gains the option to request the amount straight from the terminal: the customer pays, and the payment is recorded in Odoo once the bank has approved — with the terminal, the RRN and the authorization code saved on it. Voiding is done from the same record, for as long as the terminal still accepts it: normally the same day, before settlement.
The terminal is set per user, not per company, because a card is charged on the box in front of whoever takes the payment — not on the one at someone else’s desk.
Common pitfalls (and how to avoid them)
- VAT rates mapped wrong. If the printer’s tax groups do not match Odoo’s rates, the receipt comes out with the wrong VAT. The fix: we settle the Odoo rate → tax group mapping during implementation and test it with trial receipts before go-live.
- Product names too long, or with characters the printer refuses. Fiscal printers limit the length and the character set of an item name. The fix: we normalise the names printed on the receipt (controlled truncation, no problem diacritics), keeping the full name in Odoo.
- Mixed payments and unfiscalised receipts. Vouchers, meal tickets or partial payments set up badly can block the receipt. The fix: we configure every POS payment method so the printer recognises it and treats it as the law requires.
- Losing the printer during a shift. A disconnection can leave a sale without a receipt. The fix: the flow reports communication errors plainly and blocks completion until the receipt is out, so no sale „slips through” unfiscalised. On the set-up with a separate terminal, where the card is taken before the receipt, the cashier is shown the amount, the RRN and the authorization code: the money has already moved, so the payment must not be taken a second time — fix the printer and print, or void the transaction at the terminal.
- Returns do not come out as fiscal receipts. A fiscal printer only knows how to record a sale, so a return is printed as a non-fiscal document and the money is given back outside the fiscal day’s receipts. The fix: we agree the return procedure up front, so nobody hunts mid-shift for a button that does not exist.
- A day-end that does not agree. If the Z report is run separately from closing the Odoo session, differences appear. The fix: we align the closing procedure — Odoo session and Z report in the same step of the shift — and check that the totals match.
What you get
- An automatic, compliant fiscal receipt, printed on an approved device, on every sale.
- A faster queue, because the double typing on the fiscal register disappears.
- Painless till reconciliation, with the POS and the Z report in agreement.
- Stock, till and accounting updated from one transaction, with no parallel records.
- The card at the till and at the desk — the same driver runs the bank terminal, whether the payment arrives on a receipt or on an invoice.
- Scale across tills and locations, with consistent behaviour and central visibility.
NextERP connects Odoo’s point of sale to fiscal printers, through Fiscool — an automatic, compliant receipt that reconciles at the end of the day. Ask for a free 30-minute consultation.