Late invoices are the cash-flow tax that small businesses pay every month. The work of chasing them is unloved, slightly awkward, and almost always overdue. An AI agent can carry the load, but only if it does the boring reconciliation work first. The most expensive failure mode of an invoice-chasing agent is not "fails to chase". It is "chases an invoice that was paid yesterday".

This walkthrough covers a setup that is reliable enough to recommend to a non-technical operator, whether you are chasing one stubborn invoice or running follow-up across your whole accounts receivable ledger. The agent reads the AR system, reconciles against payments, ages and ranks what is overdue, drafts reminders matched to the customer, and sends only after the cadence has been calibrated.

What this agent does

Once a day, the agent pulls the AR ledger from your accounting system, computes which invoices are overdue, reconciles against payment receipts (this matters), checks for dispute flags or recent inbound emails about the invoice, and for each remaining candidate either drafts a reminder for review or sends if it is on a calibrated path.

It does not invoice customers. It does not change AR records. It does not take payment. The job is reminder, not collection.

For the broader read-then-write pattern, see what an AI agent can actually do. For the email-action guardrails specifically, see how to give agent access to email safely.

Sources of truth

One AR system is the source of truth. The agent reads from it; it does not maintain its own ledger.

What the agent does not read: marketing list signals, social media, news. Stay in the AR domain.

Accounts receivable follow-up: age and rank the ledger

Chasing one invoice is simple. Keeping a whole accounts receivable ledger moving needs a plan for each day, and that plan starts with aging. Once reconciliation has removed anything already paid, the agent sorts every overdue invoice into buckets, typically 1 to 30, 31 to 60, and over 60 days late, then ranks them so the largest and latest balances rise to the top.

read_open_invoices(ledger)    -> unpaid invoices + due dates
reconcile(payments, 7 days)   -> drop anything already paid
age_buckets(invoices)         -> 1-30, 31-60, 60+ days late
rank(amount, lateness)        -> biggest, latest first
add_context(payment_history)  -> habitual-late vs gone-quiet

The last line matters more than it looks. A customer who always pays a week late is not the same as one who paid on time for a year and has now gone quiet for two months. The first gets the standard friendly nudge. The second may deserve a phone call before any email, because silence after a good history often means something changed on their side. The output of this stage is a ranked worklist, not yet any drafts, so your limited attention goes to the balances that matter most.

The buckets line up with the cadence below. The day +3 and day +14 reminders fall in the first bucket and the day +30 escalation at the edge of the second. By day +45 a human has taken over, so the 60-plus bucket is a call list for you, not a queue for the agent.

Cadence and tone

A defensible default cadence:

Tone is calibrated per customer relationship. A long-standing relationship gets a softer day +3 message; a transactional one gets the standard. The agent reads the last touch date and last support ticket to pick the tone bucket.

What a good reminder reads like

A good reminder is specific, courteous, and proportionate to how late the balance is. "Hi Sam, invoice 1043 for $2,400 was due on May 30 and is now two weeks past due. Could you let me know when we can expect payment, or flag anything that is holding it up?" is firm without being hostile. It names the invoice, the amount, and the due date, and it leaves room for a reason the customer has not told you yet. A generic blast annoys good customers and gets ignored by late ones. The agent drafts to the tone you set for each step; you adjust any message before it goes.

Dispute and reconciliation checks

Two checks block every send.

Reconciliation. The agent must verify the invoice is genuinely unpaid by reading the payment receipt feed for the past 7 days. A payment that landed yesterday but has not yet been matched in the AR ledger should still halt the chase. Use a pessimistic match.

Dispute. The agent must check for:

Any of those, the agent halts and routes to a human. The agent never sends a reminder while a customer is mid-dispute. For more on hard-stop rules, see how to stop an agent mid-task.

Read-only access: what to connect

To prepare a run, the agent needs to read your receivables: open invoices, due dates, amounts, payment history, and customer contacts. It also needs to create drafts for review. It does not need to mark invoices paid, issue refunds or adjustments, write off balances, or change anything in the ledger. Grant read access plus draft-only email, and keep every ledger change with people.

That boundary is what makes it safe to hand the agent the whole ledger: it can see everything and still cannot act on a customer or move a balance. Send permission comes later, and only for the reminder steps you have graduated (see the next section). Confirm what the agent can see before you connect it, and treat receivables data with the care you give any sensitive system, as the AI agent security best practices guide explains. Recovering failed card payments is a related but separate job, covered in AI agent for Stripe failed payment recovery.

Draft vs auto-send

The first 30 days, every reminder lands as a draft. You review in batch each morning, edit, send. Editing the day +3 friendlies usually goes to zero edits within two weeks. Day +14 and day +30 take longer to calibrate because the wrong word matters more.

Graduate by step. Day +3 to auto-send first. Day +14 second. Day +30 stays as draft until you have several months of clean history; the cost of a wrong day +30 message is a lost customer.

For the broader graduation pattern, see how to limit agent actions.

Guardrails

For broader operational guardrails, see AI agent safety and guardrails.

Common mistakes

Frequently asked questions

Can an AI agent chase late invoices for me?

Yes, and this is one of the highest-ROI agent setups for small businesses. The agent reads your accounts-receivable ledger, identifies overdue invoices, drafts a polite reminder that matches the customer relationship, and either sends after your approval or queues for manual review. The first version drafts only; auto-send turns on after the templates have been calibrated against real customer responses.

How does the agent know if an invoice is actually overdue?

It reads your AR system as the source of truth (Xero, QuickBooks, FreshBooks, Zoho Books) and treats an invoice as overdue only if the AR record shows it as unpaid past due. The agent must check payment receipts daily; sending a reminder for an invoice that was paid yesterday is the most embarrassing failure mode of this category. Reconciliation precedes drafting, always.

What cadence works for AR reminders?

A defensible default: a friendly reminder at day +3 past due, a firmer one at day +14, an escalation at day +30 that includes the late-payment terms from your invoice. Beyond day +45, a human takes over, often with a phone call rather than another email. The agent does not invent the cadence; it follows what you configured.

Will my customers know the message is from an AI agent?

If you let the agent send templated, generic copy, yes. The fix is calibration: the first month, you edit each draft to match the customer relationship. Tone matters because dunning messages affect future revenue. Treat the agent as a junior associate whose drafts you edit; do not treat it as a press-send-from-template machine.

What happens if an invoice has a dispute attached?

The agent must check for any dispute flag, support ticket, or recent inbound email from the customer about the invoice before drafting. If any of those exist, the agent skips the reminder and routes the invoice to a human. Sending a reminder while a customer is mid-dispute damages the relationship and the position.

Can AI send collection emails automatically?

Yes, technically: an agent with send permission can email overdue customers on a schedule with nobody in the loop. Draft-for-approval is the safer starting point. Run every reminder as a draft for the first 30 days, then let the friendly day +3 reminders send on their own once they need no edits, and keep the day +30 escalation and anything touching a key account on human approval.

How much time does AR automation save?

It depends on your volume, but the admin load is real. In a QuickBooks survey of 2,000 US businesses with 25 to 200 employees, run by Wakefield Research in November 2021, 65% said they spent an average of 14 hours a week on administrative tasks related to collecting payments. An agent takes over the repetitive part of that: reading the aging report, drafting each reminder, and logging replies. Approving sends and handling disputes still take human time.

Will automated invoice reminders annoy my customers?

Not if the cadence and tone match the balance. One polite nudge a few days after the due date reads as normal bookkeeping; three identical emails in a week read as spam. Escalate gradually, reference the specific invoice, amount, and due date, pause the sequence the moment a customer replies or pays, and keep sensitive accounts on manual review.

Three takeaways before you close this tab

Sources