Skip to main content
POS Multi-Currency Payments — Take payment in several currencies per Odoo POS order with live rates and correct base-currency — 1/1Illustrative preview

Take 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

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
Foreign-currency detail written onto pos.order and pos.payment records, preserving the tendered amount and rate applied for every transaction
QWeb receipts print each tender in its own currency plus the base-currency equivalent and total, so customers see a transparent breakdown
Payment methods mapped to specific currencies (e.g. a 'EUR Cash' method, a 'USD Cash' method) so cashiers pick, never retype, the currency
Rate-change audit trail and record rules (ir.model.access.csv) restricting who can create or edit counter rates
Rounding rules applied per currency to match the smallest denomination you actually stock, avoiding un-tenderable change amounts
Accounting entries posted with correct currency and rate so journal items and P&L reflect real foreign-exchange positions, not a flattened single figure
Optional automated action / scheduled job to refresh counter rates from a source you nominate, with manual override always available
Exposed over XML-RPC / JSON-RPC so head office or a BI tool can pull per-currency takings across branches
Works offline-first in line with Odoo POS behaviour — currencies and rates are cached to the session so registers keep selling if the connection drops

Built to order, done for you

No DIY setup — a working app, built, installed and supported by ECOSIRE.

  1. 1

    You order

    Start with a one-time build price. We scope it with you at kickoff.

  2. 2

    We build & install

    ECOSIRE builds, configures and installs it on your Odoo.

  3. 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

CriterionECOSIRECustom BuildCompetitorOdoo Native
Pay one order across multiple currenciesBuilt in — each tender is its own payment linePossible but you design and test the payment-screen override yourselfVaries; many only switch the whole order to one alternate currencyNot included
Change-back computed in base currencyAutomatic, with applied rate shown on screen and receiptYou must implement the conversion and rounding logicPartial supportNot included
Per-currency cash denomination counting at closeClosing count prompts for the right notes/coins in each currencyRequires custom session-close screen workNot includedNot included
Multi-currency session reconciliationPer-currency close rolled into one base-currency varianceBuild the reconciliation report and logic yourselfPartial supportNot included
Fits your exact register workflowBuilt to your currencies, rates, rounding, and rolesIncludedNot includedNot included
Rate control separate from bank feedFixed counter rates, role-restricted, optional auto-refreshYou decide and build the rate modelPartial supportNot included
Correct FX posting to accountingTender currency + rate stored and posted to journalsIncludedPartial supportPartial support
Delivery, training, and ongoing supportInstall, cashier training, docs, and a support window includedYour team's time and riskDocs only; support varies by publisherNot 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.

Request a quote

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

Request a Quotation

Tell us about your POS Multi-Currency Payments requirements and we'll send pricing, licensing options and a tailored proposal — usually within one business day.

No payment now. This sends a quote request to our team — we'll follow up by email with pricing and next steps.