Cash Flow Frog logo
August 28, 2026

How to Forecast Cash Flow in Odoo

Ariel GottfeldAriel Gottfeld

Odoo Accounting reports the cash that has already moved. It does not build a rolling forward forecast of the cash you expect to hold next month. To get one you have three routes: export your Odoo data to a spreadsheet and build it yourself, install a forecasting module from the Apps Store, or connect a forecasting tool over the API. This page covers all three, starting with the manual method.

What Odoo gives you before you build anything

It is worth knowing what is already sitting in your database, because two of the three routes start from these reports.

  • Cash Flow Statement. Under Accounting, Reporting. It shows how cash moved across operating, investing and financing activity for a period you choose, and it compares periods side by side.
  • Aged Receivable and Aged Payable. These are the two reports that matter most for forecasting, because they carry due dates. Everything you are owed and everything you owe, bucketed by age.
  • Budgets. Odoo lets you set budget lines against analytic accounts and track actuals against them.
  • Bank balances. If you have online synchronisation configured, your reconciled bank balance is current rather than a month behind.

What none of these do is answer the question a finance manager actually asks on a Monday morning: what will the bank balance be on the 15th of next month, after payroll, after the VAT payment, and assuming the two biggest customers pay a week late like they usually do. That is a forecast, and you have to build it.

Method 1: build it in a spreadsheet

This is what most Odoo users do first, and for a single company with predictable timing it works. Here is the version that holds up rather than the version that falls apart in week three.

Step 1: start from the real bank balance

Open the reconciled balance on each bank and cash journal, not the ledger balance on the corresponding GL account. The two differ because of payments in transit, unreconciled bank charges and cheques that have not cleared. If your opening balance is wrong, every week after it is wrong by the same amount.

Step 2: export receivables with due dates

Run the Aged Receivable report and export to XLSX. You want invoice number, customer, amount, currency and due date. Due date is the column that does the work. If you export the aged buckets alone, you get a picture of lateness rather than a picture of timing, and you cannot lay it out on a calendar.

Step 3: adjust the due dates to reflect how customers actually pay

This is the step that separates a forecast from a wish. Take the last twelve months of paid customer invoices and calculate, per customer, the average gap between due date and payment date. A customer on 30 day terms who pays in 44 days should sit in your forecast at day 44. In Odoo you can get to this from the paid invoice records, comparing invoice due date against the payment date on the reconciled entry.

Group customers into two or three payment behaviour bands rather than modelling each one. Anyone above roughly 5 percent of revenue gets their own line.

Step 4: export payables and lay them out the same way

Aged Payable, exported the same way. Supplier payment timing is usually more predictable than customer timing because you control it, so due date is normally close enough. Split out anything that is paid on a fixed calendar rather than on invoice terms, such as rent and loan repayments.

Step 5: add what is not in Odoo yet

Payroll for the months ahead. Tax and VAT payments with their filing dates. Loan repayments. Planned capital spend. Recurring subscriptions billed to a card rather than raised as vendor bills. Then the revenue you expect to invoice but have not invoiced, which for most businesses means pulling from the sales pipeline and applying a haircut.

Step 6: lay it out weekly, not monthly

Monthly buckets hide the problem. A company can be comfortably cash positive across a month and still be unable to pay salaries on the 28th because the large receipt lands on the 30th. Thirteen weeks is the standard horizon for an operational forecast. Rows for receipts, rows for payments, a running closing balance at the bottom of each week.

Step 7: rebuild it every month

Re-export, re-lay, re-check. Budget two to four hours per company per month once the model exists.

Where the spreadsheet breaks

It breaks in four predictable places.

It is stale within days. The forecast is accurate on the morning you finish it. By the following week a dozen invoices have been raised, several have been paid early or late, and a supplier bill has arrived that was not in the export. Nobody re-exports weekly, so most spreadsheet forecasts are consulted in a state that is two to three weeks out of date.

Multi-company multiplies the work. Each Odoo company exports separately, then has to be consolidated by hand, then has intercompany transactions netted out so you are not counting the same cash twice.

You cannot ask it a question. When the sales director asks what happens if the biggest customer pays 60 days late instead of 30, you either rebuild a copy of the model or you guess. A scenario in a spreadsheet means a duplicate tab, and duplicate tabs go out of sync.

One person owns it. The model lives in the head of whoever built it. When that person is on holiday or leaves, the forecast either stops or becomes a file nobody trusts enough to present.

Method 2: an Odoo Apps Store module

There are several paid forecasting modules on the Odoo Apps Store, and they are better than their reputation suggests. The stronger ones let you define cash-in and cash-out categories mapped to your chart of accounts, compute forecast values automatically from past entries and open AR and AP, compare forecast against actual for closed periods, and map forecast types to analytic accounts.

If you run Odoo on your own server, you have a developer or a partner available, and you want the forecast to live inside the database, a module is a reasonable answer. The honest constraints are these:

  • You cannot install one on Odoo Online. Third-party modules are not installable on the standard hosted plan. This rules the option out for a large share of Odoo customers before the evaluation starts.
  • They are version-locked. A module built for Odoo 17 needs a migration when you move to 19. Some are maintained across versions and some are not, and you find out at upgrade time.
  • Consolidation across companies is usually limited. Most modules are scoped to one company, which is exactly where the spreadsheet was already failing you.
  • Support depends on one developer. Many carry a support window measured in days from purchase.

Method 3: connect a forecasting tool

The third route leaves Odoo untouched and puts the forecast on top of it. A connected tool reads your invoices, bills, payments and bank balances over the Odoo API, then maintains the forecast for you as the underlying data changes.

Cash Flow Frog works this way. It connects over the API in about a minute, with no module installed in your database and nothing changed in your Odoo configuration, so it works on Odoo Online as well as on Odoo.sh and on-premise. The connection is read-only.

From there you get a rolling forecast up to three years out in daily and weekly views, built from your live Odoo data. On top of that you add what Odoo does not know about: recurring items like payroll and rent, one-off future payments, and rule-based projections that calculate themselves from your own history, such as a rolling three month average or costs held at a percentage of income. Scenarios let you test a late payment or a new hire without duplicating anything, and you can drill from any point in the forecast down to the transactions behind it. If you run several Odoo companies, they consolidate into one view.

Which method fits you

Your situation Start with
One company, stable payment timing, forecast reviewed monthly Spreadsheet
One company, self-hosted, developer available, forecast must live in Odoo Apps Store module
Odoo Online, so modules are not installable Connected tool
Two or more companies needing a consolidated view Connected tool
Forecast is presented to a board, a bank or an investor Connected tool

The honest summary is that the spreadsheet is the right first answer for a single stable company, and the wrong answer the moment you add a second entity or need the forecast to be current on a day nobody rebuilt it.

Cash flow forecasting and your Odoo data

A forecast is only as good as the timing behind it, and timing is where Odoo data is strong. Every invoice and bill already carries a due date, and every payment already carries a settlement date, which means the raw material for an accurate forward view is in your database whichever method you choose. What varies between the three methods is how much of your month goes into maintaining it.

Cash Flow Frog connects to Odoo and keeps that forecast current automatically, with scenarios and transaction-level drill-down, up to three years ahead. You can see how the Odoo integration works, compare it against native Odoo reporting, or check pricing.

If you are still deciding whether the native reports already cover you, read the difference between a cash flow statement and a cash flow forecast in Odoo.

0/5 (0 votes)

Trusted by thousands of business owners

Start Free Trial Now