- Home
- Apps
- SaaS Tools
- POS Multi-Currency Payments
Illustrative previewTake payment in several currencies per Odoo POS order with live rates and correct base-currency change-back.
What is POS Multi-Currency Payments?
Take payment in several currencies per Odoo POS order with live rates and correct base-currency change-back. Built to order by ECOSIRE for Odoo 17, 18, 19 — indicative price from $999.00 USD; request a quote for a scoped proposal.
Key Features
Built to order, done for you
No DIY setup — a working app, built, installed and supported by ECOSIRE.
- 1
You order
Start with a one-time build price. We scope it with you at kickoff.
- 2
We build & install
ECOSIRE builds, configures and installs it on your Odoo.
- 3
Go live + support
You go live in about one working week, with two weeks of go-live support. Defects in the code we deliver are fixed free of charge.
Technical Specifications
- Odoo Compatibility
- Odoo 17, Odoo 18, Odoo 19
- Editions
- Enterprise & Community
- License
- Licence confirmation required
- Python Requirement
- Python 3.10+
- Database
- PostgreSQL 12+
About this Product
Tourist-strip, border, and duty-free counters see a wallet of currencies land on the register every day — USD, EUR, local notes, sometimes three in one transaction. Native Odoo POS settles every order in a single company currency, so cashiers reach for a calculator, guess a rate, and hope the drawer balances at close. It rarely does, and the shortfalls are invisible until reconciliation.
POS Multi-Currency Payments is a build-to-order Odoo module ECOSIRE designs, develops, installs, and supports specifically for your registers. It extends the POS payment screen so a cashier can tender part of an order in EUR cash and the balance in local currency, with each tender converted at a rate you control and the change always computed and handed back in your base currency. Every foreign amount is stored on the order alongside the applied rate, so accounting sees exactly what was collected rather than a blurred single-currency figure.
Technically, the module adds a POS-specific rate model (extending Odoo's res.currency / res.currency.rate concepts) with per-payment-method currency assignment, overrides the OWL payment-screen components so conversion happens live as the cashier types, and writes multi-currency detail onto pos.order and pos.payment records. Compute fields use @api.depends so converted totals, change due, and drawer expectations recalculate instantly and never drift out of sync. Access is locked down with ir.model.access.csv plus record rules so only authorised roles edit rates, and QWeb receipt and reconciliation reports show both the tendered currency and its base-currency equivalent.
Because we build it to your exact register workflow, we can wire in cash-denomination handling per currency (so the closing count screen asks for the right notes and coins in each currency), reconcile every POS session across all currencies, and expose the data through Odoo's XML-RPC / JSON-RPC API if your headquarters pulls takings centrally. It targets Odoo 17, 18, and 19, works on Community or Enterprise, and is delivered fully tested with documentation, cashier training, and a support window — never a raw download you have to figure out yourself.
What you get
- The complete, installable Odoo module (source in a versioned repository) packaged for Odoo 17, 18, and 19 with a clean __manifest__.py and declared dependencies
- Configuration of your currencies, payment methods, counter rates, rounding, and denomination sets on your Odoo instance
- Installation and deployment onto your environment (Community or Enterprise; self-hosted, Odoo.sh, or ECOSIRE-managed hosting)
- Customised QWeb receipt and session-reconciliation report layouts showing multi-currency detail
- Cashier and manager training session covering mixed-currency tendering, change-back, and end-of-day counting
- Technical + end-user documentation: rate management, session close procedure, and troubleshooting
- Post-go-live support window with bug fixes and adjustments to rates, rounding, or workflow
- Optional XML-RPC / JSON-RPC integration notes and sample calls if you pull takings into another system
Who this is for
Tourist-area retail owner
Runs shops on a tourist strip where visitors pay in their home currency one minute and local cash the next. Needs cashiers to accept the mix confidently and give correct change without hand calculators or drawer shortfalls.
Border / duty-free store manager
Operates counters where two or three currencies circulate side by side every shift. Wants each currency counted, reconciled, and reported separately so end-of-day variances are traceable to a real cause, not a guessed rate.
Multi-branch finance controller
Consolidates takings from several POS locations into one Odoo accounting backbone. Needs foreign tenders posted with the correct currency and rate — and pullable via API — so the P&L reflects true FX exposure across branches.
How POS Multi-Currency Payments Compares
| Criterion | ECOSIRE | Custom Build | Competitor | Odoo Native |
|---|---|---|---|---|
| Pay one order across multiple currencies | Built in — each tender is its own payment line | Possible but you design and test the payment-screen override yourself | Varies; many only switch the whole order to one alternate currency | Not included |
| Change-back computed in base currency | Automatic, with applied rate shown on screen and receipt | You must implement the conversion and rounding logic | Partial support | Not included |
| Per-currency cash denomination counting at close | Closing count prompts for the right notes/coins in each currency | Requires custom session-close screen work | Not included | Not included |
| Multi-currency session reconciliation | Per-currency close rolled into one base-currency variance | Build the reconciliation report and logic yourself | Partial support | Not included |
| Fits your exact register workflow | Built to your currencies, rates, rounding, and roles | Included | Not included | Not included |
| Rate control separate from bank feed | Fixed counter rates, role-restricted, optional auto-refresh | You decide and build the rate model | Partial support | Not included |
| Correct FX posting to accounting | Tender currency + rate stored and posted to journals | Included | Partial support | Partial support |
| Delivery, training, and ongoing support | Install, cashier training, docs, and a support window included | Your team's time and risk | Docs only; support varies by publisher | Not included |
Frequently Asked Questions about POS Multi-Currency Payments
How long until it's live on my registers?
This is a build-to-order module, not an instant apps.odoo.com download. Typical lead time is one working week from confirmed requirements: we scope your currencies, rates, denominations, and reconciliation rules, build against your Odoo 17/18/19 version, test on a staging copy of your database, then install and train your team. Simple single-branch setups land at the shorter end; multi-branch or heavy accounting integration at the longer end. You get a firm timeline in writing before we start.
What support and updates do I get after go-live?
Every build includes a post-launch support window for bug fixes and reasonable workflow adjustments (rates, rounding, denominations, report tweaks). Because you own the source in a versioned repository, there is no per-seat licence lock-in. When you later upgrade your Odoo version, or want new capabilities, we quote the migration or enhancement as a scoped piece of work — the module is written to Odoo's standard ORM, security, and OWL patterns specifically so it stays maintainable across 17, 18, and 19.
Does it work on Odoo Community or only Enterprise?
Both. The module builds on standard POS, res.currency, and accounting concepts present in Community, and we test the same code against Enterprise. Tell us your edition and exact version (17, 18, or 19) and we build and validate against it. If you use ECOSIRE-managed hosting or Odoo.sh, we handle deployment there too.
Where do the exchange rates come from — are they live bank rates?
You control them. Counter rates are managed separately from Odoo's daily bank-feed currency rates, because retail counters usually apply a fixed posted rate through the day rather than a fluctuating market rate. Authorised staff set and update rates in the back office, protected by record rules. If you prefer, we can add a scheduled automated action to refresh rates from a source you nominate, with manual override always available.
How does the change-back actually work when a customer pays in a foreign currency?
Each tender is converted to your base currency at its applied rate, the order total is settled from those converted amounts, and any change due is calculated and handed back in your base currency — shown clearly on screen and on the QWeb receipt. The customer sees what they paid in their currency and what they received as change in yours, with the rate printed, so there is no ambiguity at the counter.
Will my accounting and session reconciliation stay accurate?
Yes — that's a core reason to build this properly rather than let cashiers improvise. Each foreign tender is stored on the pos.payment / pos.order with its currency and rate, session closing counts are captured per currency against expected denomination totals, and journal entries post with the correct currency so your P&L reflects real FX. The reconciliation report rolls every currency into a single base-currency variance so you can see at a glance whether a drawer balanced.
Related Modules

POS Kitchen Direct Printing
A build-to-order Odoo Point of Sale extension that auto-detects and manages POS receipt and kitchen printers, routes order lines to the right station, and adds a one-click test print with Self Order support. ECOSIRE scopes, builds, installs, and supports it for Odoo 17.0/18.0/19.0.

POS Kitchen Display System (KDS)
Real-time digital kitchen order screens for Odoo POS — route, time, and bump tickets across grill, fryer, bar and cold stations.

POS Offline Mode Pro
A build-to-order Odoo POS extension that keeps checkout running through internet outages with resilient local caching, a durable local order queue, and conflict-safe reconciliation on reconnect. ECOSIRE builds, installs, and supports it for Odoo 17.0, 18.0, and 19.0.

POS Order Return & Exchange Manager
Process full and partial POS returns and exchanges with stock restoration, price-difference handling, and refund-method control.
POS Multi-Currency Payments
Take payment in several currencies per Odoo POS order with live rates and correct base-currency change-back.
- Tender a single POS order across several currencies (e.g. part EUR cash, balance in local notes) with each payment line stored separately
- Per-currency configurable exchange rates managed by authorised staff, decoupled from Odoo's daily bank-feed rates so counter rates stay stable through the day
- Live conversion on the OWL payment screen — converted amounts and running balance recompute as the cashier types, using @api.depends compute fields
- Change always calculated and displayed in your company base currency, with the applied rate shown so nothing is guessed on a calculator