Odoo and Wise integration
Odoo runs your accounting and operations. Wise runs your cross-border payments and multi-currency accounts. Connecting the two means every international transfer and currency movement in Wise flows into Odoo's general ledger without manual posting. Payment reconciliation happens automatically, and FX gains and losses are recorded in the correct accounts. ml-connector bridges the two platforms and keeps your books current.
What moves between them
Wise transfers and balance updates flow into Odoo. After each transfer completes in Wise, ml-connector polls the transfer history and balance statements, then creates matching payment records (account.payment) and account movement lines (account.move.line) in Odoo allocated to the bank account and currency accounts specified in the mapping. Balance movements between Wise currency accounts are recorded as inter-account transfers. Currency gains and losses from Wise conversions are posted to the FX revaluation account in Odoo. The sync runs on a schedule you set; high-frequency polling captures rapid-fire transfers, while less frequent schedules work for daily or weekly reconciliation cycles.
How ml-connector handles it
ml-connector stores both Odoo API keys and Wise OAuth credentials encrypted and refreshes the Wise token before expiry. It polls Wise for transfer state changes and balance updates, fetches the full transfer and quote history to calculate FX impact, and creates Odoo payment records only if they do not already exist (deduplication via Wise transfer ID). Multi-currency transfers require two line items in Odoo: one in the source currency, one in the destination currency, with a third line capturing any FX gain or loss. Because Wise enforces a 4-step sequence for transfers (quote, recipient, transfer order, fund payment) and recipients are immutable, ml-connector respects those constraints and does not attempt bidirectional write-back. Rate limiting on the Wise side (100 req/sec, 1000 req/min) is handled via exponential backoff and jitter. Every payment record carries a full audit trail and can be replayed if a downstream Odoo GL post fails.
A real-world example
A mid-sized services company operates in four countries and runs Odoo Online for accounting and operations. The team moves money between currency accounts at Wise multiple times a week to fund payroll in each region and collect invoices in local currencies. Before the integration, the finance team manually entered each transfer and currency conversion into Odoo after the fact, leading to reconciliation delays and FX rounding errors. With Odoo and Wise connected, each transfer creates a payment record and GL posting in real time, allocated to the correct entity and currency account. The finance team now closes month-end with all Wise activity already in the ledger and no manual re-entry.
What you can do
- Record completed Wise transfers into Odoo as payment records and journal lines allocated to the correct bank and currency accounts.
- Automatically post currency gains and losses from Wise conversions to Odoo's FX revaluation account.
- Match Wise balance statements to Odoo bank reconciliation so every transfer is accounted for.
- Authenticate Odoo with API keys and Wise with OAuth 2.0 or personal tokens, refreshing credentials before expiry.
- Poll on a schedule you control with deduplication, retries, and a full audit trail on every record.
Questions
- Does ml-connector push payment data back into Wise or only into Odoo?
- Only into Odoo. Wise is the source of truth for transfers, quotes, and recipients. ml-connector reads transfer history and balance statements from Wise and creates matching payment and GL records in Odoo so your accounting system stays in sync. No data flows back to Wise.
- How does the integration handle multi-currency transfers and FX gains or losses?
- Each multi-currency transfer creates two line items in Odoo: one in the source currency at the debit amount, one in the destination currency at the credit amount. A third line posts any FX gain or loss to Odoo's designated FX revaluation account. This approach preserves the exact values Wise reports and makes reconciliation between the two systems seamless.
- What happens if a transfer fails in Wise or is cancelled after ml-connector has already created the Odoo record?
- ml-connector monitors transfer state changes via webhooks or polling and updates the Odoo payment record to reflect the new state (cancelled, failed, rejected). Cancelled transfers can be voided or deleted in Odoo if the mapping specifies that behavior, so your ledger stays accurate.
Related integrations
More Odoo integrations
Other systems that connect to Wise
Connect Odoo and Wise
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started