AR Aging and Collections
Track overdue customer invoices and run an AI-drafted reminder ladder with per-customer collection cadence, configurable intervals, and a full send history.
AR Aging and Collections is the receivables-side companion to Invoices. It turns a static list of overdue invoices into an active collection workflow: a configurable interval ladder decides who gets a reminder and when, an LLM drafts each reminder at the right tone for the tier, and a per-customer timeline shows you how long each relationship has been overdue and what has already been sent.
If Invoices is the outbox you bill from, AR Aging is the watchtower that keeps those invoices from slipping into uncollectable territory.
How Collections Fit Together
Overdue Invoice → Interval Ladder → Tier-Aware Reminder → Sent Record → Per-Customer Timeline
| Surface | What It Does |
|---|---|
| Configuration | Turn automatic reminders on or off, set the day intervals, and edit the fallback email template |
| Reminder History | A searchable record of every reminder sent — who received it, for which invoice, at what tier, for how much |
| Per-Customer Collections | Groups the history by customer so you can see the full collection timeline for each relationship in one click |
| Process Now | A manual trigger that evaluates all overdue invoices against your interval ladder and sends any reminders due today |
The Reminder Ladder
Reminders escalate by tier as an invoice stays overdue. A tier is simply a position in the configured interval list — if your intervals are 15, 30, 45, 60 (the default), an invoice 15 days past due is at tier 1, 30 days past due is at tier 2, and so on.
| Tier | Tone | When It Fires | What Changes |
|---|---|---|---|
| 1 | Friendly | At the first overdue interval (default: 15 days) | Warm, assumes oversight, thanks the customer for their business |
| 2 | Firm | At the second overdue interval (default: 30 days) | Direct, states overdue status and the expectation to pay |
| 3+ | Urgent | At the third interval or beyond, or whenever the ladder has escalated | Formal, mentions that collection action may follow if the balance stays unpaid |
Once a tier reminder has been sent for an invoice, the same tier will not fire again. The ladder advances — if an invoice ages from 30 to 45 days without payment, it receives a tier 3 urgent reminder, not a duplicate tier 2.
If the invoice reaches the final configured interval, it is marked escalated in the history. Escalation flips the tone to urgent regardless of tier number, and gives your team a clear signal that the automated ladder has done what it can.
Configuration
Navigate to Finance > AR Aging. The Configuration card at the top controls the whole ladder.
Enable Automatic Reminders
Flip the toggle to turn the ladder on. While disabled, no reminders fire — not from Process Now, not from any scheduled run. The badge beside the toggle shows the current state.
This is your master switch. New tenants start with reminders disabled so that no emails go out before you have reviewed the intervals and the template.
Intervals
A comma-separated list of days-overdue thresholds. Defaults to 15, 30, 45, 60.
- Each number is one tier. Four numbers means four tiers.
- Order matters — the list must be ascending. The first number is the earliest a reminder can fire; the last is when escalation triggers.
- You can shorten (
7, 14, 21) to chase overdue accounts aggressively, or lengthen (30, 60, 90) for slower-moving business.
The help text beneath the field explains the format. Changes apply the next time Process Now runs.
Email Template
A plain-text fallback template used when the LLM drafter is unavailable or returns an empty response. The AI drafter is the primary author — this template is the safety net, not the default.
Write it in neutral professional language that still reads well if it goes out unchanged. A good fallback sounds like an assistant typed it, not a system.
Saving Changes
The card becomes dirty as soon as you edit any field. Click Save configuration to persist, or Discard changes to revert. Saving is optimistic — an error toast appears if the server rejects the update.
Process Now
The Process Now button in the page header evaluates every overdue invoice against your ladder and sends any reminders that are due.
For each eligible invoice, the processor:
- Computes days overdue against the invoice’s due date
- Determines the current tier from your interval list
- Skips invoices that have already received a reminder at that tier
- Drafts a tier-appropriate email through the AI reminder drafter (with the fallback template as backup)
- Creates an
InvoiceReminderaudit row - Sends the email to the customer’s on-file contact
The success toast reports how many reminders were sent. Zero is a valid and common outcome — it just means nothing had crossed a new tier since the last run.
Process Now is also what a scheduled worker would call on a cadence once automatic reminders are enabled.
Reminder History
Below Configuration is the full history of every reminder your tenant has ever sent. The table shows:
| Column | What It Shows |
|---|---|
| Sent At | Timestamp of the send |
| Customer | Customer name — links to the person’s detail view when the invoice is linked to a contact |
| Invoice | Invoice number — links to the invoice detail page |
| Reminder Tier | A badge showing which tier of the ladder this reminder occupied |
| Amount | The invoice amount at the time of the reminder |
Empty states show the neutral “No reminders yet” message — important, because a genuinely zero history is the correct picture on a new tenant.
Per-Customer Collections
The same history reshaped for relationship-level review. Every row in the Reminder History is grouped by customer, producing one line per person you’ve reminded, with a count badge showing how many reminders they’ve received.
Click a row to expand it — unlinked rows (legacy reminders with no contact attached) are grouped under a single “Unlinked” bucket so they don’t disappear, but they cannot be expanded.
Use this view when you want to ask “which customers are we chasing the hardest?” rather than “what did we send yesterday?” It mirrors the way a collections lead actually works: one customer at a time, looking at the full cadence.
Each linked customer also shows a View customer link that jumps to the Person detail page, where you can see their full payment history and any open relationships beyond just overdue invoices.
The AI Reminder Drafter
Each reminder email is drafted by an LLM through Muin’s task router, not pulled from a canned template. The drafter receives:
- Invoice context — invoice number, amount due, due date, days overdue
- Customer context — customer name, prior paid invoice count, last payment date on file
- Company context — your tenant’s name for the signature line
- Tone guidance — polite / firm / final, derived from the tier
The drafter returns a subject line and plain-text body in JSON. Sanitization strips untrusted content from the customer’s prior communication before it enters the prompt, so a malicious invoice note cannot reprogram the drafter.
When the LLM is unavailable, the service falls back to a deterministic per-tone template. Fallbacks are invisible to the recipient — every reminder reads like a real person wrote it, regardless of whether the LLM or the template did the writing.
The drafter references relationship history where useful (a long-time customer with many prior paid invoices gets a warmer tone at tier 1; a customer with no payment history gets a shorter, more cautious note) without leaking internal language. Recipients never see “as an AI language model…” phrasing; if the drafter produced anything that reads like a refusal or a system message, the fallback template is used instead.
What Becomes an Overdue Invoice
Not every invoice is a candidate. The ladder only considers invoices that are:
- Owned by your tenant and not soft-deleted
- In a status that signals the customer owes money: Sent, Viewed, Partial Paid, or Overdue
- Have a
due_dateset - Have crossed the first configured interval (the minimum days overdue)
Drafts, paid invoices, voided invoices, and invoices without a due date are skipped automatically.
The first reminder for an invoice also transitions the invoice’s status to Overdue, keeping Invoices and AR Aging consistent on what the customer sees.
Good Practice
- Review the template before enabling. The fallback template is what goes out when the LLM is unavailable — it should still read like your team wrote it.
- Match intervals to your payment terms. Net-30 invoices with a first reminder at 15 days means half of the payment term remains — a warm nudge, not a chase. For shorter terms, tighten the intervals.
- Use Process Now before trusting automation. Run it manually once, review the history table, and confirm the drafted emails look right before you leave automatic reminders on.
- Check Per-Customer Collections weekly. A customer with four reminders across multiple invoices is a relationship worth calling, not just emailing.
- Escalation is a signal, not a final step. An escalated invoice means the ladder is done. Your collections team picks up from there — the reminder history becomes the paper trail.
Common Issues
| Issue | Cause | Solution |
|---|---|---|
| Process Now reports zero sent | No invoices crossed a new tier today | Expected on a quiet day — recheck after the next interval passes |
| Reminder not going out even though overdue | Automatic reminders disabled, or tier already sent for that invoice | Enable the toggle; confirm the invoice is in an eligible status and has a due date |
| Customer shows under “Unlinked” | Invoice was created before contacts were linked to invoices | Open the invoice and set the customer contact; future reminders will link correctly |
| Email template saved but reminders still read like AI | Expected — the LLM drafter is the primary author; the template is the fallback | No action needed — both outputs are safe to send |
| Tier badge says tier 4 but only three intervals are configured | Invoice was escalated past the last interval before the intervals were shortened | Not a bug — old reminders retain their original tier; new reminders will use the current ladder |
| ”Customer” column shows an email but no link | Legacy reminder row with no person_id | Link the invoice to a contact on its detail page to fix future rows |
Related Features
- Invoices — The receivables you bill from; due dates here drive the aging calculation
- Bills — The payables side, with its own approval and payment workflow
- Cash Flow — See how delayed receivables affect your runway
- Grants — Nonprofit receivables tracked separately from customer invoices
Need Help?
If reminders are not firing or the drafter is producing odd output:
- Confirm the Enabled toggle is on and the intervals match what you expect
- Click Process Now and watch for the success toast — a zero count is a valid result
- Check Reminder History for the most recent rows and compare against invoice due dates
- If the drafted content looks wrong, it is safe to send the fallback template in the meantime while you adjust
- Contact support through the in-app help widget if reminders persistently fail to send for invoices you believe should qualify