Overdue payments are one of the most pressing financial challenges organizations face. When invoices sit unpaid beyond their due date, cash flow suffers, and without visibility into how long payments have been outstanding, finance teams are left guessing. Power BI offers a powerful way to build an aging dashboard that not only tracks overdue payments but also highlights the severity and risk associated with each one.
In this tutorial, we will walk you through the process of creating an accounts receivable aging report in Power BI from preparing your data, to building the model, to designing a dashboard that gives your team instant clarity.
What Is Payment Aging?
Payment aging refers to the process of categorizing outstanding invoices based on how long they have remained unpaid. Invoices are grouped into aging buckets typically 0–30 days, 31–60 days, 61–90 days, and 90+ days to give finance teams a clear picture of where their receivables stand.
The older an invoice becomes, the higher the risk of non-payment. An effective aging report helps organizations:
- Identify which customers are consistently late or non-responsive.
- Prioritize collection efforts based on the age and value of overdue invoices.
- Make informed decisions about credit limits and payment terms.
Step 1: Prepare Your Data
Before building anything in Power BI, your data needs to be structured correctly. You will need a dataset that includes the following fields at a minimum(Download available dataset)
| Field | Description |
| Invoice Number | A unique identifier for each invoice. |
| Customer Name | The name or ID of the customer who owes the payment. |
| Invoice Date | The date the invoice was issued. |
| Due Date | The date by which payment was expected. |
| Amount | Invoiced Amount |
| Payment Status | Whether the invoice is paid or not. |
Step 2: Load Your Data into Power BI
Open Power BI Desktop and load your data using the Get Data function
Step 3: Create the Aging Column
This is the most important step. You need to calculate how many days each invoice has been overdue, and then assign it to an aging bucket. This is done using a calculated column with DAX (Data Analysis Expressions) or in power query using add column .
Days Overdue
First, calculate the number of days each invoice is overdue:
Aging Bucket
Next, use a nested IF statement to assign each invoice to an aging bucket based on the number of days overdue:
Step 4: Build Your Dashboard Visuals
Now that your data is modelled correctly, it is time to build the visuals. A strong aging dashboard typically includes the following components:
Step 5: Add Conditional Formatting
Conditional formatting brings your aging report to life by color coding invoices based on risk level. This makes it immediately obvious which payments need urgent attention.
Step 6: Add Filters and Slicers
Filters and slicers make your dashboard interactive and useful for day-to-day operations. Add slicers for the following:
- Customer Name: filter by a specific customer to review their outstanding balance.
- Aging Bucket: isolate payments within a specific overdue range.
- Date Range: view aging data for a specific reporting period.
Conclusion
Check out our portfolio https://siba.si/portfolio