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. The agent reads the AR system, reconciles against payments, 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.
- AR ledger. Xero, QuickBooks, FreshBooks, Zoho Books, or your CRM if it is the system of record.
- Payment receipts. Stripe, Razorpay, bank reconciliation feed. Read every run, before drafting.
- Customer relationship. Last touch date, last support ticket, last meeting note. Tone signal.
- Inbound email. Recent emails from the customer that reference the invoice or services. Dispute signal.
What the agent does not read: marketing list signals, social media, news. Stay in the AR domain.
Cadence and tone
A defensible default cadence:
- Day +3 past due. Friendly reminder. "Hi, just a heads-up that invoice #X is now 3 days past due. Could you confirm receipt or let us know if there's an issue?"
- Day +14 past due. Firmer. "Invoice #X is now 14 days past due. We need to receive payment within 7 days to avoid X." Reference late-payment terms only if they are in the original invoice.
- Day +30 past due. Escalation. Cc the customer's account owner. Reference next steps explicitly.
- Day +45. Agent stops. Human takes over with a phone call.
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.
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:
- A dispute flag in the AR record.
- Open support tickets referencing the invoice number or the line items.
- Inbound emails from the customer in the past 14 days that reference the invoice.
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.
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
- One reminder per invoice per cadence step. No double-sends.
- Maximum 3 reminders per invoice. Then human.
- Pause if customer replies. Reply triggers a halt for human review.
- Pause on dispute, ticket, or inbound email. Hard rule.
- Cc human approver on day +30. Even after auto-send graduation.
- Send window. Business hours in the customer's timezone, not yours.
For broader operational guardrails, see AI agent safety and guardrails.
Common mistakes
- No reconciliation step. Chasing a paid invoice is a customer-relationship event.
- Generic templates. Tone-deaf reminders read as automated. They are.
- Cadence too aggressive. Daily reminders past day +14 alienate good customers.
- Auto-send day +30. The cost of a wrong message is too high too soon.
- No dispute check. Chases a customer mid-complaint and turns the situation into something worse.
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.
Three takeaways before you close this tab
- Reconcile, then draft. Paid invoices are silent.
- Dispute halts the agent. No exceptions.
- Calibrate tone per relationship. Generic equals automated equals churn.
Sources
- Xero Developer, "Accounting API: Invoices and Payments", retrieved 2026-05-10, developer.xero.com/api/invoices
- QuickBooks Online API, "Invoice and Payment objects", retrieved 2026-05-10, developer.intuit.com/qbo/invoice
- UK Government, "Late commercial payments: charging interest and debt recovery", retrieved 2026-05-10, gov.uk/late-commercial-payments
- Aryan Agarwal, "Gravity AR-agent guardrails", internal v1, May 2026, About