The amount is on your bank statement, the customer says they’ve paid, and yet the invoice in Odoo still shows “open.” That doesn’t mean the money is lost. The bank line may not yet be matched to its payment, the payment may have been recorded with a different amount or reference, there may be a fee, a partial payment, or a timing difference, or the invoice may genuinely still be unpaid.

The practical step is to compare the reference, the amount, how the payment was recorded, and the counterpart booked against it in Odoo. If the system suggests a match, review it before you accept it, because an invoice’s payment status depends on your settings, the size of the payment, and the match together. With that check, the accountant can explain each movement, and the owner can see what really needs follow-up, without chasing a customer who has already paid or closing a gap nobody has explained. At ToDoOps, we set this routine up with your team: who reviews, which document proves the counterpart, and who approves.

Why is the invoice still open when the money is in the bank?

Because three different things live in three different places: the invoice owed by the customer, the payment recorded in Odoo, and the line on the bank statement. Bank reconciliation is the check of a bank movement against its counterpart, meaning invoices and payments, or a documented fee classification 1. It happens in the Bank Matching interface, where a line can be matched to one item or several, and partial or remaining amounts are handled there 1.

One detail teams often miss: uploading an invoice inside Bank Matching does not match it automatically 1. And matching suggestions and models only work when the fields and rules you’ve defined actually apply, so they are a fast assistant, not a final ruling on every line 1.

Does digital collection change the accountant’s job?

On 12 April 2026, the Saudi Central Bank (SAMA) announced that electronic transactions made up 85% of the total number of payment transactions in the retail (individuals) sector in 2025, up from 79% in 2024 2. That share measures the number of retail and individual payment transactions. It shows the scale of digital collection: finance needs to know what each bank deposit relates to as payment channels multiply.

Which common cases explain the difference?

On mobile, swipe the table horizontally if any columns are out of view.

Case What the bank statement shows What we check
One payment, one invoice An amount equal to the invoice Reference, date, and that nothing remains due
One payment, several invoices A combined amount How it splits across invoices, per the customer’s advice
Net after fees An amount below the invoice The fee document from the bank or payment provider
Partial payment A smaller amount, balance remains The balance stays open with a follow-up date
Timing difference A date that differs from the recorded payment Statement date versus recording date
Duplicate import The same line appears twice File source and the imported period

An open invoice can be genuinely unpaid, partly paid, or paid but not yet matched. Each calls for a different action, which is why we don’t treat every open invoice as a fault.

A hypothetical example: a 10,000 SAR invoice and 9,950 received

This is a simplified hypothetical example. An invoice is for SAR 10,000. The net deposit is SAR 9,950, and a documented fee is SAR 50. The numbers close: 9,950 + 50 = 10,000.

We don’t call the 50 a customer discount or a confirmed commission just because it is the gap. We learn the cause from the settlement document, and from the customer’s accountant if needed, and only then approve the entry. If the payment were only SAR 6,000 with SAR 4,000 outstanding, that is a partial payment. We would not close the 4,000 as “fees” to make the invoice look paid. Your accountant approves the accounts and tax treatment using the bank or payment provider’s supporting documents.

Use the calculators with your own operating inputs to put this scope into the wider Odoo implementation budget and discuss the estimate with your team.

How do we measure time before improving anything?

Take one week and count the movements that needed searching. A trial measurement as an illustration: 20 movements × 6 minutes = 120 minutes of follow-up. This is an illustrative baseline method. Record your team’s actual time, then compare a similar sample after the trial. What matters more than minutes is the quality of the explanation and the follow-up decision.

What if we can’t find the reason for a difference?

Leave it visible, with an owner and a note. Don’t close an unknown difference just because two balances happen to agree, don’t book it as an expense without a document, and don’t delete the record to re-enter it. For the owner, this is the useful view: what truly needs follow-up, without chasing a customer who has already paid and without ignoring a gap that is waiting for an explanation.

Is bank synchronization the same as reconciliation?

No, and mixing them up is common. Synchronization relies on an external provider and depends on the bank and the country, and it requires a valid Enterprise subscription for that service 1. Creating a bank journal by hand does not mean a live bank connection 1. Importing or syncing transactions only brings the lines in; reconciliation is the accounting decision on each line.

So we test the file source or connection, the limits of your bank and provider, and that nothing is imported twice. We don’t assume every Saudi bank is supported; we check yours. Reviewing the accounting side of Odoo apps is part of settling the scope.

Testing Odoo bank reconciliation before go-live

We start with one bank and one approved period, and prepare a sample covering:

  • one payment and one payment covering several invoices
  • fees and net deposits
  • a partial payment
  • a timing difference
  • a duplicate import

Then we ask: who approves a difference, and how is the counterpart evidenced in the record? At ToDoOps our role runs from understanding your business and setting the scope, through preparing data and settings, to role-based training, acceptance testing, go-live and follow-up. We don’t promise a timeline before we’ve seen your sample.

Collection sources differ across shops, service companies and distributors. Review the industries we support to place the workflow in your context. You can also try the guided sales and inventory simulation with sample data to see the order-and-delivery flow; your bank reconciliation trial is prepared separately around the agreed cases.

Frequently asked questions

Does every open invoice mean a problem?

No. It may be unpaid, partly paid, paid but not matched yet, or waiting on a timing difference.

Should I delete the bank line and re-enter it?

We don’t recommend that. The line should be matched to its counterpart or classified with a document.

Will bank synchronization work with our bank?

It depends on the provider, the bank, and the country, and it needs a valid Enterprise subscription. We test your bank before you rely on it.

Who approves a difference?

Before go-live, name who records the line, who checks the evidence and who can approve the difference. Test those permissions with the relevant role accounts.

What should you send so we can agree the scope?

Tell us which bank you would start with, how you obtain the statement, the period proposed for the trial, the recurring transaction types and who approves differences. If a sample document is needed, remove account and third-party details that are unnecessary for the review. Through the contact page we’ll read the sample with you and define the trial scope. You can also return to the home page to see how we work, or to the calculators to estimate the implementation budget and operating impact.

References

  • [1] Odoo 19 documentation, Accounting: Bank reconciliation, the Bank Matching interface, and matching suggestions and models. Also covers Bank synchronization and its institution, provider and subscription conditions.
  • [2] Saudi Central Bank (SAMA), announcement of 12 April 2026 on 2025 payment results: the share of electronic transactions in the total number of retail (individuals) payment transactions.