Skip to content
ArumSoft Learning
KO
    Excel templateBusiness finance

    Accounts Receivable Aging and Collections Priority Template for Excel

    Type your open invoices once and the workbook does the aging: due dates from terms, days overdue from an as-of date, the standard buckets, totals per customer and a priority list that ranks invoices by balance and age so the first call of the day is the right one. Filled in with fictional customers.

    Sheets:
    6
    Works with:
    Excel for Microsoft 365, Excel 2016 or later, Excel for Mac and Excel for the web
    Updated:

    AR Aging and Collections Tracker.xlsx

    Excel workbook (.xlsx) · 48 KB · 6 sheets

    Download template

    Free to download. No sign-up needed.

    What you can do with it

    • See how much is outstanding in each aging bucket, on one dashboard
    • Get a per-customer summary with the oldest overdue invoice and a suggested next step
    • Work a ranked top-10 list of invoices to chase first
    • Estimate days sales outstanding (DSO) from your credit sales
    Start Here dashboard of the AR aging Excel template showing total outstanding, the five aging buckets, share over 60 days, open invoice count, DSO and a bar chart of outstanding by bucket
    The Start Here dashboard with the sample invoices that come in the file.

    What's inside

    The workbook has 6 sheets. You only type on a few of them; the rest calculate.

    SheetWhat it's forYou enterCalculated for you
    Start HereAs-of date, totals by bucket, DSO, largest balance and a chartAs-of date, credit sales for the last 90 daysTotal outstanding, five bucket totals, share over 60 days, open invoice count, DSO, largest customer balance
    InvoicesOne row per invoice (room for 200)Invoice number, customer, invoice date, terms, amount, paid, notesDue date, balance, days overdue, bucket, status, priority score
    SummaryOne row per customer (30)Nothing: customer names come from ListsOpen invoices, amount per bucket, total, share overdue, oldest overdue, next step
    PriorityThe ten invoices to chase firstNothingRank, invoice, customer, balance, days overdue, bucket, score, suggested action
    ListsDropdown choicesCustomer names, payment termsNothing
    ChecksSix data checksNothingOK or Review

    Before you start

    • Export your open invoices from your invoicing system with invoice date, terms, amount and amount paid.
    • Add every customer name to the Lists tab first so the Invoices dropdown and the Summary tab know them.
    • Decide the as-of date. Most teams run aging on the last day of the month or every Monday.

    Step-by-step guide

    1. Set the as-of date

      Start Here B6 is the date everything is measured from. Type a date, or enter =TODAY() to keep the aging current every time the file opens. B7 (credit sales in the last 90 days) is only used for the DSO estimate.

    2. Add customers on the Lists tab

      Column A of Lists is the customer dropdown and the row list on the Summary tab. One name per row, spelled exactly as you want it to appear.

    3. Enter invoices

      On the Invoices tab type the invoice number, pick the customer from the dropdown, enter the invoice date, pick the terms (days), and type the amount. When a payment arrives, type it in Paid; a fully paid invoice drops out of every total on its own.

    4. Read the calculated columns

      Due date is invoice date plus terms. Balance is amount minus paid. Days overdue counts from the due date to the as-of date (never negative). Bucket is Current, 1-30, 31-60, 61-90 or 90+; Status is Open or Paid; the Priority score weights balance by age.

    5. Check the Summary tab

      Each customer gets a row with their open invoice count, the amount in each bucket, the total, the share that is overdue, the oldest overdue invoice in days, and a suggested next step that escalates with age.

    6. Work the Priority tab

      Ten rows, ranked by priority score. Start at rank 1. The suggested action column says whether a reminder email, a call, a payment plan or a final notice fits the age of the invoice.

    7. Review the Checks tab

      The checks catch an invoice paid for more than its amount, missing customers, dates or terms, a customer on an invoice that is not on the Lists tab, and whether the five buckets add up to the total outstanding.

    Formula map

    Every formula in the workbook, grouped by the sheet and column it lives in. A column of copied formulas counts once; the range it covers is shown.

    SheetCellsFunctionsWhat it computesReadsFeeds
    InvoicesE5 copied down to row 204IFDue dateC5, D5Days overdue (column I) counts from this date.
    InvoicesH5 copied down to row 204IFBalanceF5, G5Used by every SUMIF on Start Here and Summary, and by the priority score.
    InvoicesI5 copied down to row 204IF, OR, MAXDays overdueE5, H5The bucket in column J and the priority score in column L both read this.
    InvoicesJ5 copied down to row 204IFAging bucketH5, I5Start Here sums balances per bucket by matching these words exactly, so the Summary and Start Here SUMIFs use the same spellings.
    InvoicesL5 copied down to row 204IF, OR, ROWPriority scoreH5, I5The Priority tab uses LARGE on this column to pick the top ten and MATCH to find each row.
    Start HereB10SUMIFOutstanding per bucket—B15 uses the 61-90 and 90+ cells to compute the share overdue more than 60 days; the Checks tab confirms the five buckets add up to B9.
    Start HereB17IFDays sales outstandingB7, B9Compare with your standard terms: DSO of 45 on net-30 terms means customers pay two weeks late on average.
    Start HereB18INDEX, MATCH, MAXLargest customer balance—A quick pointer to the account that matters most.
    SummaryB5 copied down to row 34IF, COUNTIFSOpen invoices per customer—Shown next to the bucket amounts.
    SummaryC5 copied down to row 34IF, SUMIFSAmount per bucket per customer—H5 totals the five buckets; I5 computes the overdue share.
    SummaryJ5 copied down to row 34IF, MAXIFSOldest overdue invoice (days)—K5 turns this number into a next step.
    SummaryK5 copied down to row 34IFSuggested next step—The Priority tab uses the same ladder per invoice.
    PriorityG5 copied down to row 14IFERROR, LARGENth highest priority score—B5 to F5 look up the invoice that owns this score.
    PriorityB5 copied down to row 14IF, INDEX, MATCHInvoice details for that score—This is the call list.
    ChecksB6IF, SUMPRODUCTNo invoice overpaid—An overpayment usually means a typo in Paid.
    ChecksB10IF, SUMPRODUCT, ISNA, MATCHEvery invoice customer is on the Lists tab—Fix by adding the name to Lists or correcting the spelling on the invoice.

    Every formula, explained

    Each formula below is copied straight from the file, so what you read here is exactly what the cell contains. Click any cell in Excel to see it in the formula bar.

    Due dateInvoices!E5 · copied down to row 204
    =IF(C5="", "", C5+D5)

    Invoice date plus the payment terms in days. Blank until an invoice date is typed.

    Piece by piece

    C5=""
    No invoice date yet: show nothing.
    C5+D5
    Date plus days. Excel dates are day numbers, so adding 30 gives the date 30 days later.

    With the sample data: C5 = Jun 17, 2026, D5 = 30 → E5 result Jul 17, 2026

    How it is used: Days overdue (column I) counts from this date.

    How to change it: For terms like "end of month plus 30", replace C5+D5 with EOMONTH(C5,0)+30.

    Learn this: Text and Date Functions in Excel →
    BalanceInvoices!H5 · copied down to row 204
    =IF(F5="", "", F5-G5)

    Amount minus what has been paid. This is the number every total on the other tabs adds up.

    Piece by piece

    F5=""
    No amount yet: show nothing.
    F5-G5
    Amount minus paid. A blank Paid cell counts as zero.

    With the sample data: F5 = 4,800, G5 = 0 → H5 result 4,800

    How it is used: Used by every SUMIF on Start Here and Summary, and by the priority score.

    How to change it: Nothing to change.

    Learn this: How to Write Basic Formulas in Excel →
    Days overdueInvoices!I5 · copied down to row 204
    =IF(OR(F5="", H5<=0), "", MAX(0, 'Start Here'!$B$6-E5))

    Days between the due date and the as-of date, floored at zero so invoices that are not yet due show 0.

    Piece by piece

    OR(F5="", H5<=0)
    Skip blank rows and paid invoices: show nothing.
    'Start Here'!$B$6-E5
    As-of date minus due date, in days. The as-of reference is absolute so it stays fixed when the formula is copied down.
    MAX(0, …)
    Negative results (not yet due) become 0.

    With the sample data: E5 = Jul 17, 2026, H5 = 4,800 → I5 result 108

    How it is used: The bucket in column J and the priority score in column L both read this.

    How to change it: Nothing to change; edit the as-of date on Start Here.

    Learn this: How to Use MIN and MAX in Excel →
    Aging bucketInvoices!J5 · copied down to row 204
    =IF(F5="", "", IF(H5<=0, "Paid",
        IF(I5=0, "Current", IF(I5<=30, "1-30", IF(I5<=60, "31-60", IF(I5<=90, "61-90", "90+"))))))

    A chain of IF tests from the smallest age up. Order matters: because each test only runs when the previous one failed, "<=60" really means 31 to 60.

    Piece by piece

    F5=""
    Blank row: show nothing.
    H5<=0
    Nothing owed: "Paid".
    I5=0
    Not yet due: "Current".
    I5<=30, I5<=60, I5<=90
    The 1-30, 31-60 and 61-90 buckets, tested in order.
    "90+"
    Everything older.

    With the sample data: H5 = 4,800, I5 = 108 → J5 result 90+

    How it is used: Start Here sums balances per bucket by matching these words exactly, so the Summary and Start Here SUMIFs use the same spellings.

    How to change it: To change the bucket edges (say 45 and 90), change the numbers here and the labels on Start Here and Summary.

    Learn this: Logic Formulas in Excel: IF with AND, OR and IFS →
    Priority scoreInvoices!L5 · copied down to row 204
    =IF(OR(F5="", H5<=0), 0, H5*(1+I5/30)+ROW()/1000000)

    Balance weighted by how late it is: each 30 days overdue adds 100% of the balance again. A tiny row-based tie-breaker makes every score unique so the Priority tab can look rows up without collisions.

    Piece by piece

    OR(F5="", H5<=0)
    Blank or paid rows score 0 so they never rank.
    H5*(1+I5/30)
    Balance × (1 + months overdue).
    ROW()/1000000
    Adds a millionth of the row number: invisible in the ranking, but it guarantees no two scores are exactly equal.

    With the sample data: H5 = 4,800, I5 = 108 → L5 result 22,080

    How it is used: The Priority tab uses LARGE on this column to pick the top ten and MATCH to find each row.

    How to change it: Change the 30 to 15 to weight age twice as heavily.

    Learn this: How to Write Basic Formulas in Excel →
    Outstanding per bucketStart Here!B10
    =SUMIF(Invoices!$J$5:$J$204, "Current", Invoices!$H$5:$H$204)

    Adds the balances of invoices whose bucket word matches. B11 to B14 are the same formula with the other bucket names.

    Piece by piece

    Invoices!$J$5:$J$204
    The bucket column: the range to test.
    "Current"
    The bucket to add up.
    Invoices!$H$5:$H$204
    The balance column: the range to sum.

    With the sample data: B10 result 31,750

    How it is used: B15 uses the 61-90 and 90+ cells to compute the share overdue more than 60 days; the Checks tab confirms the five buckets add up to B9.

    How to change it: Nothing to change unless you rename the buckets.

    Learn this: How to Use SUMIF and SUMIFS in Excel →
    Days sales outstandingStart Here!B17
    =IF(B7=0, 0, B9/(B7/90))

    Outstanding receivables divided by average daily credit sales. The 90 matches the "last 90 days" input.

    Piece by piece

    B7=0
    Guard against dividing by zero when no sales figure is entered.
    B9/(B7/90)
    Total outstanding ÷ (90-day credit sales ÷ 90 days).

    With the sample data: B7 = 412,000, B9 = 72,550 → B17 result 15.85

    How it is used: Compare with your standard terms: DSO of 45 on net-30 terms means customers pay two weeks late on average.

    How to change it: If you enter a full year of credit sales instead, change 90 to 365.

    Learn this: How to Write Basic Formulas in Excel →
    Largest customer balanceStart Here!B18
    =INDEX(Summary!$A$5:$A$34,
           MATCH(MAX(Summary!$H$5:$H$34),
           Summary!$H$5:$H$34, 0))

    Finds the highest total on the Summary tab and returns the customer name in the same row.

    Piece by piece

    MAX(Summary!$H$5:$H$34)
    The biggest total outstanding.
    MATCH(…, Summary!$H$5:$H$34, 0)
    Which row holds it.
    INDEX(Summary!$A$5:$A$34, …)
    The customer name in that row.

    With the sample data: B18 result Harbor Logistics

    How it is used: A quick pointer to the account that matters most.

    How to change it: Nothing to change.

    Learn this: How to Use INDEX and MATCH in Excel →
    Open invoices per customerSummary!B5 · copied down to row 34
    =IF(A5="", "", COUNTIFS(Invoices!$B$5:$B$204,
        A5, Invoices!$K$5:$K$204,
        "Open"))

    Counts invoices that belong to the customer and are still open.

    Piece by piece

    $A5=""
    No customer in this row: show nothing. The column is anchored with $ so the same test works in every column of the row.
    Invoices!$B$5:$B$204, A5
    Customer column equals this row's customer.
    Invoices!$K$5:$K$204, "Open"
    Status column equals Open.

    With the sample data: B5 result 1

    How it is used: Shown next to the bucket amounts.

    How to change it: Nothing to change.

    Learn this: How to Use COUNTIF and COUNTIFS in Excel →
    Amount per bucket per customerSummary!C5 · copied down to row 34
    =IF($A5="", "", SUMIFS(Invoices!$H$5:$H$204,
        Invoices!$B$5:$B$204, $A5,
        Invoices!$J$5:$J$204, "Current"))

    Two conditions: the customer matches and the bucket matches. Columns D to G repeat it with the other bucket names.

    Piece by piece

    Invoices!$H$5:$H$204
    Balances to sum.
    Invoices!$B$5:$B$204, $A5
    Customer condition. $A5 keeps the customer column fixed when copying across.
    Invoices!$J$5:$J$204, "Current"
    Bucket condition.

    With the sample data: C5 result 3,150

    How it is used: H5 totals the five buckets; I5 computes the overdue share.

    How to change it: Nothing to change unless you rename the buckets.

    Learn this: How to Use SUMIF and SUMIFS in Excel →
    Oldest overdue invoice (days)Summary!J5 · copied down to row 34
    =IF(A5="", "", MAXIFS(Invoices!$I$5:$I$204,
        Invoices!$B$5:$B$204, A5,
        Invoices!$K$5:$K$204, "Open"))

    The largest days-overdue value among the customer's open invoices. MAXIFS is available in Excel 2019 and Microsoft 365.

    Piece by piece

    Invoices!$I$5:$I$204
    Days overdue: the values to take the maximum of.
    Invoices!$B$5:$B$204, A5
    Customer condition.
    Invoices!$K$5:$K$204, "Open"
    Only open invoices.

    With the sample data: J5 result 0

    How it is used: K5 turns this number into a next step.

    How to change it: On Excel 2016, replace with =MAX(IF((Invoices!$B$5:$B$204=A5)*(Invoices!$K$5:$K$204="Open"),Invoices!$I$5:$I$204)) entered with Ctrl+Shift+Enter.

    Learn this: How to Use MIN and MAX in Excel →
    Suggested next stepSummary!K5 · copied down to row 34
    =IF(A5="", "", IF(H5=0, "Nothing open",
        IF(J5>90, "Final notice or collections", IF(J5>60, "Call and payment plan", IF(J5>30, "Call", "Reminder email")))))

    Escalates the collection action with the age of the oldest overdue invoice.

    Piece by piece

    H5=0
    Nothing outstanding: "Nothing open".
    J5>90, J5>60, J5>30
    Thresholds for final notice, call and payment plan, call.
    "Reminder email"
    Everything 30 days or less.

    With the sample data: K5 result Reminder email

    How it is used: The Priority tab uses the same ladder per invoice.

    How to change it: Edit the words to match your own collections policy.

    Learn this: Logic Formulas in Excel: IF with AND, OR and IFS →
    Nth highest priority scorePriority!G5 · copied down to row 14
    =IFERROR(LARGE(Invoices!$L$5:$L$204, A5), 0)

    LARGE returns the k-th largest value, where k is the rank in column A. Blank-safe: if there are fewer open invoices than ranks, IFERROR shows 0 and the row stays empty.

    Piece by piece

    Invoices!$L$5:$L$204
    All priority scores.
    A5
    The rank: 1 for the highest, 2 for the next, and so on.
    IFERROR(…, 0)
    When there is no k-th invoice.

    With the sample data: G5 result 35,280

    How it is used: B5 to F5 look up the invoice that owns this score.

    How to change it: To show 20 rows, copy row 14 down and type ranks 11–20.

    Learn this: How to Use MIN and MAX in Excel →
    Invoice details for that scorePriority!B5 · copied down to row 14
    =IF(G5=0, "", INDEX(Invoices!$A$5:$A$204,
        MATCH(G5, Invoices!$L$5:$L$204, 0)))

    Finds the row whose score equals the rank's score and returns the invoice number; columns C to F return customer, balance, days overdue and bucket from the same row.

    Piece by piece

    G5=0
    No invoice at this rank: show nothing.
    MATCH(G5, Invoices!$L$5:$L$204, 0)
    Row position of that score. Scores are unique thanks to the tie-breaker, so the match is always the right invoice.
    INDEX(Invoices!$A$5:$A$204, …)
    The invoice number in that row.

    With the sample data: B5 result INV-1043

    How it is used: This is the call list.

    How to change it: Nothing to change.

    Learn this: How to Use INDEX and MATCH in Excel →
    No invoice overpaidChecks!B6
    =IF(SUMPRODUCT((Invoices!$G$5:$G$204>Invoices!$F$5:$F$204)*1)=0,
        "OK", "Review")

    Counts rows where Paid is greater than Amount by multiplying a TRUE/FALSE array by 1 and adding it up.

    Piece by piece

    Invoices!$G$5:$G$204>Invoices!$F$5:$F$204
    An array of TRUE/FALSE, one per row.
    *1
    Turns TRUE into 1 and FALSE into 0.
    SUMPRODUCT(…)
    Adds them: the number of overpaid rows.

    With the sample data: B6 result OK

    How it is used: An overpayment usually means a typo in Paid.

    How to change it: Nothing to change.

    Learn this: How to Use SUMIF and SUMIFS in Excel →
    Every invoice customer is on the Lists tabChecks!B10
    =IF(SUMPRODUCT((Invoices!$B$5:$B$204<>"")*ISNA(MATCH(Invoices!$B$5:$B$204, Lists!$A$5:$A$34, 0)))=0,
        "OK", "Review")

    Flags customers typed on the Invoices tab that do not exist on Lists, which would make them vanish from the Summary.

    Piece by piece

    Invoices!$B$5:$B$204<>""
    Only rows with a customer.
    ISNA(MATCH(…, Lists!$A$5:$A$34, 0))
    TRUE when the name is not found on Lists.
    SUMPRODUCT(…)
    Counts the problem rows.

    With the sample data: B10 result OK

    How it is used: Fix by adding the name to Lists or correcting the spelling on the invoice.

    How to change it: Nothing to change.

    Learn this: How to Use INDEX and MATCH in Excel →

    Tips and limits

    • Capacity: 200 invoices and 30 customers. To extend, press Ctrl+H, set Within to Workbook and Look in to Formulas, and replace $204 with $1004 (and $34 with a larger row for customers).
    • Enter partial payments in the Paid column as they arrive; the balance and bucket update and the invoice leaves the list only when fully paid.
    • Type =TODAY() in the as-of date to keep the aging live, but type a fixed date before saving a month-end copy so the snapshot does not change later.
    • The DSO here is a simple estimate; accounting systems compute it over a trailing period with the same formula.

    Learn the skills behind this template

    Was this guide helpful? Spot a mistake? Send feedback · admin@arumsoft.com