bots4.me

Automate Payment Reconciliation in Odoo

Written by

in

BOTS4.me Logo

How to Match Bank Payments to Invoices in Odoo Automatically

Automate payment reconciliation — bank emails and Revolut/Wise payments matched to open Odoo invoices, on the schedule you set

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, payment references, 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 the payment reference (invoice number or variable symbol) from free-form bank text in 12 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 on the schedule you set and turns each incoming payment into a recorded, reconciled entry in Odoo.

🏦

Payment arrives
(bank email or Revolut/Wise API)

→
🤖

Amount + reference extracted
(34 patterns, 12 languages)

→
🔗

Matched to open invoices
(incl. batch payments)

→
✅

Recorded in Odoo
with auto-reconciliation

Extraction is rules-first: 34 built-in patterns recognize payment references, invoice numbers and amounts in notification formats across 12 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 from every payment it matches, so accuracy improves the longer it runs.

Set it up in about 5 minutes

  • Step 1 — Start your free Discovery month: Sign in at bots4.me/bots, click Start free Discovery month on the Pay2ERP card and accept the Terms once — no credit card needed.
  • Step 2 — Connect payment sources: Open Settings (gear) → Pay2ERP → Access Manager → Add Source and add the mailbox that receives your bank’s payment notifications — Secure Quick Connect for Gmail and Outlook / Microsoft 365, IMAP for any other account. A Wise Business account connects with a read-only API token (Revolut Business on request). Prefer not to share a mailbox? Add the BOTS4.me Mailbox instead and forward your bank notifications to pay2erp@bots4.me.
  • 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 & Companies → Users → your user → Account Security (turn on developer mode if the tab is hidden). Odoo Online needs Odoo’s Custom plan for API access. The Odoo user Pay2ERP works as needs Invoicing (Billing) and Accounting (Accountant) rights, otherwise Odoo refuses to record payments. No middleware, no custom development.
  • Step 4 — Teach it your bank: Move one bank notification into the _Pay2ERP/IMPORT folder in your mailbox. From then on Pay2ERP reads every email from that bank — and nothing else from your inbox.
  • Step 5 — 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 6 — Go live safely: with Odoo connected, DEMO already matches payments against your real invoices without writing anything. When the DEMO reports look right, set Mode to LIVE on the Control tab — it unlocks after the first DEMO report email. From then on Pay2ERP records payments.

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

🎁 Try It in Your Free Discovery Month

Your first Pay2ERP month is a free Discovery month: the usage allowance of the Personal plan with Daily Export, Pre-processing and Raster Images unlocked to try, and no credit card needed. This is how to get from zero to your first automatically recorded payment inside that month.

  • Day 1 — Start it: sign in at bots4.me/bots, click Start free Discovery month on the Pay2ERP card and accept the Terms once — no credit card needed. The dashboard confirms that your free Discovery month is active and shows how many days are left.
  • Day 1 — Connect a payment source: open Settings (gear) → Pay2ERP → Access Manager → Add Source and add the mailbox that receives your bank notifications, or a Wise Business account with a read-only API token. No mailbox to share? Add the BOTS4.me Mailbox and forward your bank notifications to pay2erp@bots4.me.
  • Day 1 — Connect Odoo: click Add Destination → ERP → Odoo and follow the connector install guide. The Odoo user Pay2ERP works as needs Invoicing (Billing) and Accounting (Accountant) rights, otherwise Odoo refuses to record payments.
  • Day 1 — Teach it your bank: drag one bank notification into _Pay2ERP/IMPORT. From the next run on, every email from that bank is read, including the last five days; nothing else in your INBOX is opened. A sender that is not a bank goes into _Pay2ERP/DO_NOT_IMPORT.
  • Days 1–3 — Watch it in DEMO: Pay2ERP starts in DEMO. It reads your real payment notifications, matches them against your real open invoices and emails you a run report of what it would record — nothing is written to Odoo and your mailbox stays as it is. Every decision also appears in the Logs tab and in the _Pay2ERP/LOGS folder of your mailbox.
  • Days 2–5 — Switch on what Discovery unlocks: switches with a Discovery tag on the Control tab are included in your free month and start switched off — switch on the ones you want to try. Worth trying: Daily Export (an Excel of this month’s processed payments by email every day, for your accountant), Raster Images (remittance advices sent as .tif, .gif or .webp) and, if you also run AutoSPAM, Pre-processing.
  • When the reports look right — go LIVE: when the DEMO reports look right, set Mode to LIVE on the Control tab — it unlocks after the first DEMO report email. Matched payments are now recorded in Odoo and their emails move to _Pay2ERP/PROCESSED. Payments that need a hand stay where they arrived (or in _Pay2ERP/MANUAL) and come first in the report, with everything you need to book them by hand.
  • First LIVE week — check it worked: open a few invoices Pay2ERP marked as paid and check the payment and its short note in Odoo. Then set Run Schedule and Operating Hours to your bank’s rhythm, and put your accounting address in Send payments that need a hand to.
  • After the month: when the month ends, Pay2ERP continues on the free plan by itself with a small monthly allowance — rules-based pairing of email text, CSV, HTML and text PDFs, with the AI parsers paid from the same allowance; when it is used, new items wait until next month or until you choose a plan, and an item already started always finishes. Scanned PDFs and images, Excel and Word attachments and the Discovery extras need a plan — see the plan table on the Pay2ERP product page.

📊 What Day-to-Day Operation Looks Like

Once live, Pay2ERP runs on the Run Schedule you pick in the Control tab, within the Operating Hours you define. After every run you receive a report email: payments matched and recorded, payments that need a hand, and anything flagged — the subject starts with ✅ when everything went through. In LIVE, emails whose payments were all recorded are filed into the _Pay2ERP/PROCESSED folder; in DEMO your mailbox is left exactly as it is.

  • Unmatched payments never disappear. They stay unread in your INBOX (or in _Pay2ERP/MANUAL when they came through _Pay2ERP/IMPORT) and appear in the run report — you review them exactly where you already work.
  • It learns each bank’s layout. Every payment Pay2ERP records successfully teaches it how that bank writes amounts and references, so the same bank’s notifications are recognized faster 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) up to Ultra depending on your plan, full decision logs in the dashboard’s Logs tab and a copy in the _Pay2ERP/LOGS folder of your mailbox.
  • Secure by design: 2FA, EU-hosted, built for GDPR, with reports, logs and mailbox folders 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 Wise and Revolut API integrations need no bank email at all — amount, reference and sender are read straight from the account on Pay2ERP’s next run, then matched and recorded in Odoo like any other payment. Wise connects in a minute with a read-only API token under Access Manager → Add Source → API; Revolut Business is set up with you on request — contact us.

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. And if your bank statements already reach Odoo, Pay2ERP can read those bank lines too: it pairs the ones Odoo could not match on its own and leaves lines Odoo already reconciled untouched. The same bank transaction arriving by email and as a statement line is recorded only 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 runs on ERPNext (15–16), Zoho, Dolibarr (23 and newer), Business Central online, QuickBooks Online, Xero and SAP Business One; any other ERP with an API is connected on request. 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 34 built-in patterns in 12 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 reads incoming payments straight from the Wise and Revolut Business APIs, without waiting for a bank email, on its next run. Each payment is matched to open Odoo invoices and recorded automatically, exactly like payments captured from bank notification emails. Wise connects in the dashboard with a read-only API token; Revolut Business is set up with you on request.

What happens to payments that can’t be matched to an invoice?

Unmatched payment emails stay unread where they arrived — your INBOX or your bank folder (or in _Pay2ERP/MANUAL when they came through _Pay2ERP/IMPORT) — so nothing slips out of view. The run report lists each one first, with the reason, the open invoices it found and everything you need to book it by hand.

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 34 extraction patterns covering payment notification formats in 12 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: with Odoo connected, the bot matches real payments against your real invoices, reports what it would do and writes nothing. Switch to live 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 & Companies → Users → your user → Account Security.

Can I try Pay2ERP before paying?

Yes — your first Pay2ERP month is a free Discovery month, with no credit card needed. It starts in DEMO, so you can watch it pair payments without a single write to your ERP. When the month ends, Pay2ERP continues on the free plan by itself with a small monthly allowance: when it is used, new items wait until next month or until you choose a plan, and an item already started always finishes.

📚 Related Guides

🔗 Sources and Further Reading

Official documentation and standards referenced in this guide. External links open in a new tab.

Stop Matching Payments by Hand

Connect your bank email or Wise account, connect Odoo, and watch the first run in DEMO. Your first month is a free Discovery month — no credit card needed.