Plain-language questions
Ask for overdue receivables per month, customer or product in the SQL Explorer with AI. The AI writes the SQL, you see the query and run it yourself; the AI only receives metadata.
KPI · Finance
Overdue receivables are outstanding invoices whose due date has passed without full payment from the customer. You express them in euros and as a percentage of total outstanding receivables, often split into ageing buckets such as 1–30, 31–60 and more than 60 days past due. They are a direct measure of payment behaviour and credit risk.
Outstanding amount on invoices past their due date ÷ total outstanding receivables × 100%
At the end of 2025 Acme Groothandel had €1,500,000 of outstanding receivables. Of this, €330,000 was past due: €210,000 up to 30 days, €75,000 between 31 and 60 days and €45,000 more than 60 days. The overdue share is €330,000 ÷ €1,500,000 × 100% = 22%.
Fictitious figures for Acme Groothandel, a sample wholesaler.
A rising overdue share means customers are paying late more often and the risk of bad debts is growing. Pay most attention to the oldest buckets: the longer an invoice is outstanding, the lower the chance of payment. Compare by customer and by month, and read it alongside DSO to see whether a rise comes from many small items or a few large ones.
SQL & DAX
Two examples on a fictitious data warehouse for Acme Groothandel: a PostgreSQL query and a measure for a Power BI model. Adjust table and column names to your own model.
SELECT SUM(open_amount) AS open_receivables,
SUM(open_amount) FILTER (WHERE due_date < current_date) AS overdue,
ROUND(100.0 * SUM(open_amount) FILTER (WHERE due_date < current_date)
/ NULLIF(SUM(open_amount), 0), 1) AS overdue_pct,
SUM(open_amount) FILTER (WHERE due_date >= current_date - 30 AND due_date < current_date) AS overdue_1_30,
SUM(open_amount) FILTER (WHERE due_date >= current_date - 60 AND due_date < current_date - 30) AS overdue_31_60,
SUM(open_amount) FILTER (WHERE due_date < current_date - 60) AS overdue_60_plus
FROM invoices
WHERE open_amount > 0;Overdue Receivables = CALCULATE(SUM(Invoices[OpenAmount]), Invoices[OpenAmount] > 0, Invoices[DueDate] < TODAY())
Overdue % = DIVIDE([Overdue Receivables], CALCULATE(SUM(Invoices[OpenAmount]), Invoices[OpenAmount] > 0))In ENABLE
Ask for overdue receivables per month, customer or product in the SQL Explorer with AI. The AI writes the SQL, you see the query and run it yourself; the AI only receives metadata.
Define the KPI as a measure in your Power BI model and show it in the portal, with "Last refreshed" next to it. Access profiles and optional row-level security decide who sees which figures.
Add the KPI as a tile to a custom dashboard, compared with last year. The Dashboard Builder is a pilot and can be switched on per client.
With the built-in Targets app you set a target for the KPI per month, so you see actuals and target side by side.
FAQ
Add up the outstanding amount on all invoices past their due date, divide by total outstanding receivables and multiply by 100%. With €330,000 overdue out of €1,500,000 outstanding, that is 22%.
An aged debtors report splits outstanding receivables into buckets by days past due, for example not yet due, 1–30, 31–60, 61–90 and more than 90 days. It shows at a glance which amounts carry the most risk and which customers to chase first.
Overdue receivables show how much money is late, DSO shows how long customers take to pay on average. DSO can stay stable while the overdue share grows, for example when revenue rises and a few customers pay later and later.
In an online demo we show how ENABLE makes your data securely available and how you build on it: describing an app in the AI Builder, plain-language questions, dashboards and APIs. And how we set it up and manage it for you.