Muin is in private beta.Watch the public release announcement —talk to us.
Falaah Falaah AI

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
SurfaceWhat It Does
ConfigurationTurn automatic reminders on or off, set the day intervals, and edit the fallback email template
Reminder HistoryA searchable record of every reminder sent — who received it, for which invoice, at what tier, for how much
Per-Customer CollectionsGroups the history by customer so you can see the full collection timeline for each relationship in one click
Process NowA 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.

TierToneWhen It FiresWhat Changes
1FriendlyAt the first overdue interval (default: 15 days)Warm, assumes oversight, thanks the customer for their business
2FirmAt the second overdue interval (default: 30 days)Direct, states overdue status and the expectation to pay
3+UrgentAt the third interval or beyond, or whenever the ladder has escalatedFormal, 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:

  1. Computes days overdue against the invoice’s due date
  2. Determines the current tier from your interval list
  3. Skips invoices that have already received a reminder at that tier
  4. Drafts a tier-appropriate email through the AI reminder drafter (with the fallback template as backup)
  5. Creates an InvoiceReminder audit row
  6. 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:

ColumnWhat It Shows
Sent AtTimestamp of the send
CustomerCustomer name — links to the person’s detail view when the invoice is linked to a contact
InvoiceInvoice number — links to the invoice detail page
Reminder TierA badge showing which tier of the ladder this reminder occupied
AmountThe 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_date set
  • 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

  1. 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.
  2. 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.
  3. 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.
  4. Check Per-Customer Collections weekly. A customer with four reminders across multiple invoices is a relationship worth calling, not just emailing.
  5. 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

IssueCauseSolution
Process Now reports zero sentNo invoices crossed a new tier todayExpected on a quiet day — recheck after the next interval passes
Reminder not going out even though overdueAutomatic reminders disabled, or tier already sent for that invoiceEnable 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 invoicesOpen the invoice and set the customer contact; future reminders will link correctly
Email template saved but reminders still read like AIExpected — the LLM drafter is the primary author; the template is the fallbackNo action needed — both outputs are safe to send
Tier badge says tier 4 but only three intervals are configuredInvoice was escalated past the last interval before the intervals were shortenedNot a bug — old reminders retain their original tier; new reminders will use the current ladder
”Customer” column shows an email but no linkLegacy reminder row with no person_idLink the invoice to a contact on its detail page to fix future rows

  • 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:

  1. Confirm the Enabled toggle is on and the intervals match what you expect
  2. Click Process Now and watch for the success toast — a zero count is a valid result
  3. Check Reminder History for the most recent rows and compare against invoice due dates
  4. If the drafted content looks wrong, it is safe to send the fallback template in the meantime while you adjust
  5. Contact support through the in-app help widget if reminders persistently fail to send for invoices you believe should qualify