How to Automate Payment Reminders and Dunning
Overdue invoices rarely go unpaid because a customer refuses to pay. They go unpaid because nobody chased them on the right day, in the right tone, with the right invoice attached. When you automate payment reminders, you are not replacing collections judgment. You are removing the part of the job that is pure clerical timing: knowing that invoice 4417 crossed seven days past due this morning, pulling the PDF, finding the billing contact, and writing the fourth polite note of the week.
This guide walks through building a dunning sequence in Skopx, an AI workspace connected to nearly 1,000 business tools where workflows are built by describing them in plain English in chat. There is no drag-and-drop canvas. You type what you want to happen, Skopx assembles the steps, and you inspect and adjust them.
One thing to settle up front: Skopx has no human-approval step. That shapes the design in a good way. Routine reminders go out on their own. Anything sensitive, retrying a card, waiving a fee, suspending an account, offering a payment plan, gets prepared by the workflow and handed to a person who makes the call. More on that below.
What it costs teams to not automate payment reminders
Skip the industry averages. The only numbers that matter are yours, and you can pull them in an afternoon.
Open your AR aging report and count the invoices sitting between 1 and 30 days past due. Most of those are not disputes. They are invoices that landed in a shared inbox, got forwarded to someone on leave, or were simply forgotten. Then look at the same bucket 60 days later. The ones that aged out are usually the ones nobody touched in week one.
The manual version of this work has three specific costs:
Timing drift. A reminder sent on day 3 and a reminder sent on day 12 have very different collection outcomes, and manual chasing always drifts toward day 12 because it competes with month-end close.
Inconsistent tone. Five different people writing dunning emails produce five different escalation ladders. Some are apologetic on day 45. Some are aggressive on day 5, which costs you goodwill with a customer whose accounting team is simply on a monthly payment run.
Invisible state. When chasing lives in individual inboxes, nobody can answer "how many times have we contacted this account and what did they say" without a Slack archaeology dig.
An automated sequence fixes all three, because the schedule never drifts, the template never changes mood, and every run is recorded with its real output.
The dunning sequence you are actually building
Before touching Skopx, write the ladder down. A workflow can only be as clear as the policy behind it.
| Days past due | Contact | Tone | Sensitive action allowed |
|---|---|---|---|
| Due date minus 3 | Billing contact | Courtesy heads-up, invoice attached | None, fully automatic |
| 3 | Billing contact | Friendly reminder, payment link | None, fully automatic |
| 10 | Billing contact plus AP alias | Direct, restates terms | None, fully automatic |
| 21 | Billing contact, account owner copied | Firm, references contract terms | Account owner reviews before send for named accounts |
| 30 | Human only | Call or personal email | Prepared draft, human sends |
| 45 plus | Human only | Escalation, hold, collections | Prepared summary, human decides |
Notice where the automation stops. Everything through day 21 is a message that any reasonable finance team would send verbatim. Past day 30 you are making decisions about a relationship, and decisions about relationships belong to people.
Here is the basic version of the workflow.
Daily overdue reminder run
Weekdays 09:00
Fetch overdue invoices
Match reminder stage
Draft reminder email
Send to billing contact
Log touch to sheet
Six steps. That is a complete, useful dunning workflow, and it will do more for your aging report than any amount of good intentions.
What to automate versus what stays human
This is the part teams get wrong, usually by automating too much and then quietly switching the whole thing off after one embarrassing email to a strategic account.
Safe to automate outright: reading the AR data, deciding which stage an invoice is in, drafting the message body, sending stage 1 through stage 3 reminders, attaching the invoice or payment link, recording that the contact happened, and posting a daily digest to the finance channel.
Prepare and route to a human: retrying a failed card, applying or waiving a late fee, pausing or suspending an account, offering a payment plan or discount, sending anything to an account flagged as strategic or in an active dispute, and any handoff to collections.
Skopx has no approval gate, so "route to a human" means something concrete: the workflow builds the artifact and delivers it where the person already works. It posts a Slack message to the AR owner with the account name, balance, days overdue, contact history, and a drafted email they can copy, edit, and send themselves. The workflow does the twenty minutes of assembly. The human does the ten seconds of judgment.
That split is not a workaround. Payment conversations carry legal and relationship weight, and a system that can suspend a customer's account without a person looking at it is a system that will eventually suspend the wrong customer's account at the worst possible moment. The same principle applies when you automate expense review and approval routing: the machine assembles the case, the person signs.
Building it in Skopx step by step
1. Connect the sources
You need three connections at minimum. Your billing or accounting system, so the workflow can read invoices and payment status. Your email sender, so reminders come from a real, monitored address. Your chat tool, so escalations land in front of a human. A spreadsheet or database for the contact log is optional but strongly recommended, since it gives you an audit trail independent of the run history.
Connect these from your Skopx workspace before you describe the workflow. The builder can only reference tools it can actually see.
2. Describe it in chat
Open Skopx workflows and type the sentence. Be specific about the trigger, the filter, the branching, and the destination. Vague input produces a vague workflow.
Every weekday at 9:00 AM Europe/London, get all unpaid invoices from my accounting tool. For each one, work out how many days past due it is. If it is 3, 10, or 21 days past due and the account is not tagged strategic or disputed, use AI to draft a reminder email in our house tone that matches that stage, includes the invoice number, amount, due date, and payment link, then send it from billing@ to the invoice billing contact and append a row to the "Dunning log" sheet with the invoice number, date, stage, and recipient. If it is 30 or more days past due, or the account is tagged strategic or disputed, do not email the customer. Instead post a Slack message to #finance-ar with the customer name, invoice number, amount, days overdue, previous touches, and a drafted email the account owner can send manually.
Skopx will turn that into a workflow with a schedule trigger, integration actions against your accounting tool, an AI step for the draft, an if/else condition on the overdue stage, field transforms for the date math and currency formatting, and the two send actions.
3. Wire the data between steps
Every step exposes its output to later steps through expressions. The date the invoice was due becomes {{ steps.fetch_invoices.output.due_date }}. The drafted body becomes {{ steps.draft_email.output.text }}. If you trigger the workflow from your billing system's webhook instead of a schedule, incoming payload fields are available as {{ trigger.invoice_id }} and similar.
Open the workflow after it is built and read the expressions. This is the highest-value five minutes of the whole exercise. Most workflows that misbehave in production do so because a field name was guessed rather than confirmed, and reading the mapping catches that before a customer does.
4. Run it manually first
Use the manual trigger and run it against real data with the send steps pointed at your own inbox. You will see each step's actual output, how long it took, and any exact error. Read the drafted emails. AI steps run on your own provider key, so the tone is whatever your prompt and examples make it. Feed the step two or three of your best existing reminder emails as tone reference and the drafts improve immediately.
5. Turn the schedule on
Once the drafts read the way you would write them, point the sends at real recipients and enable the schedule. Schedules run in the IANA timezone you choose, with a 15 minute minimum interval. Daily at 9:00 local is right for dunning. Nobody responds better to an invoice chase at 2 AM.
The advanced version with escalation
Once the basic loop is trustworthy, add the branch that separates routine chasing from accounts that need a person.
Dunning with escalation routing
Weekdays 09:00
Fetch unpaid invoices
Check age and balance
Draft staged reminder
Email billing contact
Build account summary
Notify AR owner
Log every touch
The escalate branch never contacts the customer. It produces a briefing and a draft, then stops. A person opens Slack, reads the balance and history in one message, and decides whether to call, to offer terms, or to hold shipments. That is exactly the boundary described earlier, expressed in structure rather than in a policy document nobody reads.
Conditions in Skopx compare with operators like equals, contains, greater_than, and is_empty. Age in days and invoice amount are both straightforward numeric comparisons once a field transform has computed the day count.
How to tell it is working
Judge it on four signals, checked weekly for the first month.
Run history is clean. Every run should show green steps with sensible durations. A step that intermittently errors on a specific customer usually means a missing billing contact, not a broken workflow.
The 1 to 30 day bucket shrinks. This is the bucket automation actually influences. Compare it to the same point in the previous two months rather than to a single prior week, since billing cycles are lumpy.
Replies come back to a human. Reminders should send from a monitored address. If customers reply and nobody sees it, you have built a megaphone rather than a collections process.
Escalations get acted on. Count how many Slack escalations were touched within a day. If they pile up unread, the problem is ownership, not tooling. Assign a named person per escalation, not a channel at large.
Pair this with a scheduled AR summary so the numbers arrive without anyone building a report. The same pattern is covered in detail in how to automate revenue reporting finance can trust.
Common mistakes when you automate payment reminders
Chasing invoices that are already paid. The single most damaging failure. It happens when the workflow reads a stale invoice list or when payments post to a separate system. Always re-check payment status inside the run, immediately before the send step, not just at fetch time.
No exclusion list. Strategic accounts, active disputes, customers on agreed payment plans, and anyone in a live negotiation must be excluded by a tag or field the workflow reads. Build this on day one, not after the first complaint.
Escalating on age alone. A 40 day old invoice for a small amount and a 40 day old invoice for a large one deserve different treatment. Condition on both age and balance.
One tone for every stage. If every reminder reads identically, customers learn that nothing changes when they ignore you. The ladder should visibly firm up.
Trying to build a retry loop. Workflows in Skopx are acyclic with a maximum of 20 steps. Recurrence comes from the schedule running again tomorrow and re-evaluating state, not from a loop inside a single run. This is a better model for dunning anyway, since it re-reads reality every morning.
Automating the payment retry itself. Card retries, fee application, and account suspension carry real consequences. Prepare the case, notify the owner, let them execute in the billing system.
Forgetting the grace window. If a scheduled run is missed by more than two hours, Skopx records it as failed rather than firing it late. Check for failed runs during your weekly review so a quiet outage does not become a silent week of no chasing.
If invoices arrive as inbound documents before any of this begins, the upstream half of the problem is covered in how to automate invoice processing without losing control.
Frequently asked questions
How long does it take to automate payment reminders in Skopx?
The first working version usually takes an afternoon, and most of that is connecting your accounting tool and reading the field mappings, not building. Describing the workflow is one sentence. Tuning tone with your own examples takes a second pass.
Can the workflow retry a failed card payment automatically?
It should not, and Skopx will not do it silently on your behalf. Failed payments are a moment where a customer relationship and a legal agreement intersect. Build the workflow to detect the failure, assemble the account context, and notify the person who owns that account. They retry, adjust terms, or call.
What triggers are available for a dunning workflow?
Three. Manual, useful for testing and one-off catch-up runs. Schedule, with a 15 minute minimum and hourly, daily, or weekly cadence in the timezone you pick. Webhook, which gives the workflow a unique URL with a per-workflow secret so your billing system can trigger a run the moment an invoice goes overdue or a payment fails.
Do the AI drafting steps cost extra?
AI steps run on your own provider key with zero markup, so the model usage bills directly to you at whatever your provider charges. You need a key connected for AI steps to run. Skopx itself is Solo at $5 per month, Team at $16 per seat per month, or Enterprise at $5,000 per month, and every plan bills from day one.
What happens if the customer replies to an automated reminder?
The reply goes wherever you sent from, so send from a real, monitored billing address. You can add a second workflow that watches that inbox, classifies replies with an AI step into categories like paid, dispute, or payment plan request, and posts the dispute and plan requests to your finance channel for a human. Classification is safe to automate. The response is not.
Ready to build it? Start at skopx.com/workflows and describe the sequence in your own words.
Skopx Team
The Skopx engineering and product team