Dashboard

What goes in an AR aging and collections dashboard?

An AR aging and collections dashboard shows what customers owe as of a specific date, how late balances are, and which invoices need action. Historical aging requires snapshots or payment-allocation history, not today's invoice balance alone.

For:Finance operations, controllers, account owners, and leadership. Refresh:daily.Source: modeled finance tables in a Metabase-connected database.

Which cards belong on this dashboard?

  • Open AR and overdue AR
  • Aging buckets: current, 1-30, 31-60, 61-90, and 90+
  • Top overdue customers and invoices
  • Invoice collection rate by cohort
  • Days sales outstanding
  • Median days to pay
  • Promise-to-pay and collector queue
  • Credits and unapplied cash

What data does this dashboard need?

  • Invoices with issue date, due date, customer, currency, and total
  • Payment and credit allocations at invoice grain
  • Daily open-balance snapshots or enough history to reconstruct them
  • Customer owner, segment, payment terms, and legal entity
  • Collection workflow state where available

How do you build it?

  1. Sync the source systems into a database and retain raw IDs, timestamps, status, and currency.
  2. Build reconciled models at the business grain this dashboard requires.
  3. Create one saved question per card and certify the shared models and definitions.
  4. Add dashboard filters for Legal entity, customer, owner, currency, aging bucket, as-of date.
  5. Show refresh time and the latest complete or reconciled period.

Example card SQL

Open AR by aging bucketPostgreSQL
SELECT
  CASE
    WHEN as_of_date <= due_date THEN 'Current'
    WHEN as_of_date - due_date <= 30 THEN '1-30 days'
    WHEN as_of_date - due_date <= 60 THEN '31-60 days'
    WHEN as_of_date - due_date <= 90 THEN '61-90 days'
    ELSE '90+ days'
  END AS aging_bucket,
  SUM(open_amount_reporting_currency) AS open_ar
FROM modeled_open_ar
WHERE as_of_date = {{as_of_date}}
GROUP BY 1
ORDER BY MIN(GREATEST(as_of_date - due_date, 0));

Dashboards

Integrations

Metrics

Analytics

FAQ

Why does historical aging differ from today's invoice table?
Today's table reflects later payments and credits. Use as-of snapshots or event history to reproduce a prior date.
Should disputed invoices stay in AR?
Keep them in total AR if they remain booked, but separate disputed exposure and owner it operationally.