In practice this starts with the invoicing or accounting system, not a mailing list. The system reads real invoice data (client name, amount, due date, payment status) and sends reminders on a schedule: a friendly note a few days before the due date, another on the day itself, then a firmer one after. Because each message pulls from the actual record instead of a fixed template, it reads like someone checked the account, not like a form letter.
What keeps it from turning into a collections voice is what happens when a client responds. The moment someone replies, pays, disputes the amount, or asks for more time, the automated sequence stops and a person reads the thread before anything else goes out. Early messages stay plain and courteous. Later ones, if the business wants a firmer stage, state facts (amount owed, days overdue) without hinting at consequences that were never agreed to. The tone shift is gradual and honest about where things stand, not a script that escalates on a timer regardless of what the client actually said.
This is not worth building for a handful of invoices a month, answering those by hand is faster than setting up a system for them. And if most late payers are long-term clients or personal relationships, the safer split is to automate only the early, low-stakes nudges and keep anything past that stage, the actual conversation about why a payment is late, with a person. Automation also cannot fix a payment process that is unclear to begin with. If invoices do not state a due date clearly or the terms are ambiguous, reminders just add noise on top of a confusing bill, so that gets fixed first.