How to Match Bank Payments to Invoices in Odoo Automatically
Automate payment reconciliation — bank emails and Revolut/Wise payments matched to open Odoo invoices, 24/7
Every incoming payment has to be matched to an open invoice before your books are right and your customer stops getting reminders. If your team still does this by reading bank notifications and searching Odoo by hand, this guide shows how to automate payment reconciliation end-to-end: capture payments from bank notification emails and the Revolut and Wise APIs, extract the amount and invoice reference automatically, and record the payment in Odoo — with auto-reconciliation and a full audit trail.
💸 Why Manual Payment Reconciliation Hurts
Manual reconciliation looks harmless — open the bank notification, find the invoice number, register the payment in Odoo, reconcile. Two minutes. But multiply that by every payment, every business day, and it becomes one of the most expensive routines in your finance workflow:
- It never ends. Payments arrive daily. Skip a day and the backlog compounds — and month-end close turns into an archaeology project.
- References are messy. Customers pay with truncated invoice numbers, variable symbols, their own PO references, or no reference at all. Humans decode this slowly; on bad days, wrongly.
- One payment, many invoices. B2B customers love collection payments — a single transfer covering five, ten, or twenty invoices. Finding the right combination by hand is genuinely hard.
- Paid customers keep getting dunned. Until the payment is recorded in Odoo, your reminder process still sees an overdue invoice. Nothing damages goodwill faster than chasing a customer who already paid.
- Multi-language notifications. If you sell across borders, payment notifications arrive in German, Czech, English and a dozen other formats. Every new bank means a new format to learn.
🔧 The Usual Fixes — and Where They Fall Short
Manual bank statement import
Odoo can import bank statements (CAMT, CSV, or via a bank-feed service), and its reconciliation screen is decent when the reference matches perfectly. But statements are batch-oriented — you reconcile when someone sits down to do it, not when the money arrives. Imperfect references, partial payments, and collection transfers still land in a manual queue.
Custom scripts
A developer can write a parser for your bank’s notification emails. It works until the bank changes its template, a customer pays from a different bank, or the developer leaves. You now maintain regex code as unpaid infrastructure — and it still can’t solve combinatorial multi-invoice matching.
Zapier-style connectors
Generic automation platforms can move a payment notification into a spreadsheet or fire a webhook. What they can’t do is the hard part: extract a variable symbol from free-form bank text in 15+ languages, match it against your open invoices including batch combinations, and post a correctly reconciled payment into Odoo.
🚀 The Automated Way: Pay2ERP + Odoo
Pay2ERP is a payment reconciliation bot from the BOTS4.me suite. It watches your payment sources around the clock and turns each incoming payment into a recorded, reconciled entry in Odoo.
Payment arrives
(bank email or Revolut/Wise API)
Amount + reference extracted
(50+ patterns, 15+ languages)
Matched to open invoices
(incl. batch payments)
Recorded in Odoo
with auto-reconciliation
Extraction is rules-first: 50+ built-in patterns recognize variable symbols, invoice references, and amounts in notification formats across 15+ languages. When the rules can’t find a reference, an AI fallback analyzes the payment text as a last resort — so most payments are matched deterministically, and edge cases still get handled. The bot also learns statistically from every successful match and from your manual corrections, so accuracy improves the longer it runs.
Set it up in about 5 minutes
- Step 1 — Register: Create your account at bots4.me/bots and add Pay2ERP. The first month is free, and a permanent freemium tier exists if you want to stay small.
- Step 2 — Connect payment sources: Link the mailbox that receives your bank’s payment notifications via secure Quick Connect (OAuth for Gmail/Office 365, or any IMAP account). If you use Revolut or Wise business accounts, connect their APIs for real-time capture with no email delay.
- Step 3 — Connect Odoo: Install the free “BOTS4.me Connect” module from apps.odoo.com (Odoo.sh and on-premise, versions 13–19), or on Odoo Online use the zero-code helper with an API key from Settings → Users → Account Security. No middleware, no custom development.
- Step 4 — Start in Demo Mode: Pay2ERP shows exactly which payments it would match to which invoices — and writes nothing. Review the report after each run.
- Step 5 — Graduate safely: Move to ERP read-only (real matching against real invoices, still no writes), then switch on full automation when the match reports look right.
🤝 Best pair: Pay2ERP + AutoCASH
Pay2ERP records incoming payments; AutoCASH sends escalating payment reminders for overdue Odoo invoices. Together they close the loop: the moment Pay2ERP records a payment, AutoCASH stops reminding that customer. No more dunning people who already paid.
📊 What Day-to-Day Operation Looks Like
Once live, Pay2ERP runs on your schedule — from every 15 minutes to weekly, within operating hours you define. After every run you receive a report email: payments matched and recorded, payments that need attention, and anything flagged. Matched payment emails are filed into the _Pay2ERP/PROCESSED folder.
- Unmatched payments never disappear. They stay in your INBOX, marked unread, and appear in the daily report — you review them exactly where you already work.
- Corrections teach the bot. When you match a payment manually, Pay2ERP learns the pattern and applies it next time.
- Collection payments are handled. A combinatorial matching algorithm finds which set of open invoices a single batch transfer covers.
- Everything is toggleable and logged. Per-feature switches, Bot Power on/off, AI Mode from Off (pure rules) to Ultra, and full decision logs in the dashboard’s Control/Logs/Settings tabs.
- Secure by design: 2FA, EU-hosted, GDPR-native, interface in 31 languages.
IMP Kontakt spol. s r.o., a European B2B distributor, runs Pay2ERP daily on hundreds of payments alongside other BOTS4.me apps — with reconciliation fully automated and the accounting team reviewing only the exceptions.
🏦 Revolut and Wise Odoo Integration, Built In
Traditional bank feeds update in batches; email notifications depend on your bank sending them. The Revolut and Wise API integrations capture payments in real time — amount, reference, and sender extracted the moment the money lands, then matched and recorded in Odoo like any other payment. If your business banks on Revolut or Wise, this is the shortest path from “payment received” to “invoice paid” in Odoo.
Alongside the APIs, Pay2ERP reads payment notification emails from any bank via IMAP, Gmail, Outlook/Office 365 — so one bot covers your traditional bank accounts and your fintech accounts at once.
🌍 Works Beyond Odoo
This guide focuses on Odoo (versions 13–19, all hosting types — see which Odoo hosting types can be automated), where Pay2ERP records payments with auto-reconciliation. The same bot also connects to SAP Business One, Oracle NetSuite, QuickBooks, Xero, Microsoft Dynamics 365, and Offeris. One dashboard, the same matching engine, a different ERP adapter.
❓ Frequently Asked Questions
How do I match bank payments to invoices in Odoo automatically?
Connect a payment source (bank notification email or the Revolut/Wise API) and your Odoo database to Pay2ERP at bots4.me/bots. The bot extracts the amount and invoice reference from each payment using 50+ patterns in 15+ languages, matches it to open invoices in Odoo, and records the payment with auto-reconciliation. Setup takes about 5 minutes and the first month is free.
Does Pay2ERP integrate Revolut and Wise with Odoo?
Yes. Pay2ERP connects directly to the Revolut and Wise APIs and captures incoming payments in real time — no email delay. Each payment is matched to open Odoo invoices and recorded automatically, exactly like payments captured from bank notification emails.
What happens to payments that can’t be matched to an invoice?
Unmatched payment emails stay in your INBOX, marked unread, so nothing slips out of view — and they are listed in your daily report. When you match one manually, Pay2ERP learns from the correction and improves future matching for that payer.
Can it match one bank transfer that pays several invoices at once?
Yes. Collection (batch) payments are matched with a combinatorial algorithm that searches your customer’s open invoices for the combination that adds up to the transferred amount, then records the payment against all of them in Odoo.
Do I need to write regex rules or templates for my bank’s emails?
No. Pay2ERP ships with 50+ extraction patterns covering payment notification formats in 15+ languages, learns new patterns statistically from successful matches, and falls back to AI analysis when rules can’t extract a reference. There is nothing to code or maintain.
Can I test automated payment matching without letting it write to Odoo?
Yes. Start in Demo Mode (the bot reports what it would do and writes nothing), then move to ERP read-only (real matching against real invoices, still no writes), and enable full automation only when the reports look right. Every feature can be toggled individually.
Which Odoo versions and hosting types are supported?
Odoo versions 13 through 19, on all three hosting types. Odoo.sh and on-premise use the free one-click “BOTS4.me Connect” Python module; Odoo Online (which forbids custom Python modules) uses a zero-code XML helper plus an API key from Settings → Users → Account Security.
Is there a free tier for Pay2ERP?
Yes — every subscription starts with a free first month you can cancel anytime, and Pay2ERP also has a permanent freemium tier with daily limits, so small businesses can keep basic rules-based payment pairing running at no cost.
📚 Related Guides
Stop Matching Payments by Hand
Connect your bank email or Revolut/Wise account, connect Odoo, and watch the first run in Demo Mode. First month free — cancel anytime.