Take payment in several currencies per Odoo POS order with live rates and correct base-currency change-back. One-time license from $199.00 USD for Odoo 17, 18, 19 — includes 12 months of updates and support.

Take payment in several currencies per Odoo POS order with live rates and correct base-currency change-back.
No payment now. This sends a quote request to our team — we'll follow up by email with pricing and next steps.
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.
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
Per-currency cash denomination handling: the closing count screen prompts for the exact notes and coins expected in each currency
Multi-currency POS session reconciliation — closing balances checked per currency and rolled into a single base-currency variance figure
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.
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.
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.
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.
Buy the license on ecosire.com and download the POS Multi-Currency Payments module ZIP from your account dashboard.
Extract the ZIP into your Odoo custom addons folder on the server (or upload via Apps > Install from file on Odoo.sh / runbot).
Activate Developer Mode, open Apps, click Update Apps List, search for POS Multi-Currency Payments, and press Install.
Open the new menu, paste your ECOSIRE license key, connect any external credentials (Shopify, Amazon, Stripe, etc.), and save.
Run the built-in connection test, sync your first 10 records, and schedule the recurring cron. Contact support if anything fails.
| 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 | |
| Change-back computed in base currency | Automatic, with applied rate shown on screen and receipt | You must implement the conversion and rounding logic | ||
| Per-currency cash denomination counting at close | Closing count prompts for the right notes/coins in each currency | Requires custom session-close screen work | ||
| Multi-currency session reconciliation | Per-currency close rolled into one base-currency variance | Build the reconciliation report and logic yourself | ||
| Fits your exact register workflow | Built to your currencies, rates, rounding, and roles | |||
| Rate control separate from bank feed | Fixed counter rates, role-restricted, optional auto-refresh | You decide and build the rate model | ||
| Correct FX posting to accounting | Tender currency + rate stored and posted to journals | |||
| 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 |
This is a build-to-order module, not an instant apps.odoo.com download. Typical lead time is 2 to 4 weeks 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.
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.
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.
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.
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.
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.
Take payment in several currencies per Odoo POS order with live rates and correct base-currency change-back.