We build an open-source voice agent platform, and one call comes up in customer conversations more than any other: the one that goes out when a buy-now-pay-later instalment gets missed. It looks like a plain outbound reminder. The wrinkle is that roughly ten words at the start of it decide which body of law governs the rest of the conversation.
Here is the mechanic. The Fair Debt Collection Practices Act defines a debt collector as someone who regularly collects debts "owed or due or asserted to be owed or due another." The operative word is another. A BNPL provider chasing an instalment on a plan it issued itself is not collecting for somebody else, so in most cases it sits outside that definition. That is a question of scope rather than an exemption. No clause in the statute carves creditors out. They simply are not what the definition describes.
Now the part that matters if you are the one writing the call flow. The same section pulls a creditor back in when it "uses any name other than his own which would indicate that a third person is collecting or attempting to collect such debts." Read that with a synthesised voice in mind.
"Hi, this is a call from Acme Pay about your instalment plan." Outside the definition.
"Hi, this is Premier Recovery Solutions calling on behalf of Acme Pay." Inside it.
Same debt, same borrower, same amount. The difference is the name the agent says first. I am writing this as a practitioner rather than a lawyer, and every lender's footing differs, so check yours with counsel before you ship a script.
Why this breaks an LLM-first design
Most voice agent tutorials will tell you to put the introduction in the system prompt and let the model handle it. That works fine until the sentence starts doing legal work.
A language model asked to introduce itself politely will paraphrase. That is the whole point of it. On most calls the paraphrase is harmless and slightly better than what you wrote. On some fraction of calls it reaches for a phrase that sounds more official, because official-sounding language is well represented in whatever it learned from, and a firmer name is exactly the instinct a human scriptwriter has too. You now have an agent that occasionally describes itself as a third party collecting on someone's behalf.
The awkward bit is that you cannot prove it will not. Nobody can prove a negative about a sampled generative system. You can raise the probability, evaluate it, temperature it down, and add a guardrail prompt, and you still cannot hand a regulator a statement stronger than "it is very unlikely."
So we stopped trying to prove the negative. In Dograh the greeting is a fixed utterance node, meaning stored text the agent reads verbatim as it traverses the flow. The identity check works the same way. Everything conversational happens around those anchors, where a model is genuinely useful: handling objections, understanding a half-mumbled card number, catching that someone is asking about a fee waiver. The claim you can then make is a different shape. Instead of asserting what the agent would never say, you produce the path the call took and the exact stored wording it read at each step.
That shifts the requirement from behaviour to evidence, which in turn means you need to own the recording and the transcript rather than requesting them from a vendor dashboard.
The borrower on the other end is not who the script assumes
Recovery scripts tend to be built for someone avoiding payment. The BNPL data does not describe that person.
LendingTree's 2026 tracker, which surveyed 2,060 US consumers in March 2026, found 47 percent of BNPL users had paid late at least once in the past year, up from 41 percent the year before. Of those who paid late, about 72 percent were no more than roughly a week behind. And 89 percent of people who asked for a late fee to be waived got it reduced or dropped.
Read together, that is a timing failure, not a refusal to pay. An expired card, a date that slipped past someone. Pressure is the wrong instrument for it. The agent's job is to state the amount and the date, offer a way to settle it right there, and get out of the way.
It also means your flow will meet the fee waiver question constantly, since nine out of ten people who raise it get somewhere. A script with no graceful path for that request sounds broken within about four seconds, and anything drifting towards a dispute or a hardship claim should reach a human quickly.
Where the recordings live matters more here than usual
A single BNPL instalment record carries the merchant, the item, the amount, and the schedule. Pull someone's full history and you have a purchase-level picture of what they bought and roughly when their finances got tight. Payment stacking sharpens it, since a borrower running plans across several providers gives no single company the full obligation while each one holds a revealing slice of it.
Our position on this has not moved. These systems should be compliant by design, because the data is sensitive from the first call, which is why we recommend self-hosting and running open-source speech and language models so call audio never crosses a boundary you do not control. New York's proposed BNPL framework names consumer data protection directly, so this looks like it is drifting from good practice towards expectation.
We get into the regulatory movement, including the CFPB's two separate steps in May 2025, in the fuller write-up. Read it on Dograh.
Dograh is open source, and the code enforcing a guardrail is code you can read. github.com/dograh-hq/dograh
Top comments (0)