AI Debt Collection Calls
Automate polite, consistent payment-collection calls with a single API request. This tutorial walks through a complete example from curl to conversation.
The scenario
You run Vello, a billing SaaS. Your customer Bobby purchased 1,000 SMS credits for $154.56. The invoice was due May 25 and Bobby hasn't paid.
Instead of chasing Bobby manually, you fire a single API call. The voice agent calls Bobby, explains the outstanding balance, and handles whatever Bobby says - agreement to pay, a request for more time, a dispute, or a flat refusal.
The call is recorded, the outcome is reported back via webhook, and you never had to pick up the phone.
The API request
Send a single POST to kick off the call:
curl -X POST https://voice.talktomyagent.io/v1/calls \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"to": "+14165550199",
"targetName": "Bobby",
"triggeredBy": "vello-billing-system",
"maxDurationSecs": 180,
"task": {
"goal": "Collect payment of $154.56 from Bobby for 1,000 SMS credits (invoice due May 25).",
"script": "debt-collection",
"facts": {
"customer_name": "Bobby",
"amount": "$154.56",
"product": "1,000 SMS credits",
"due_date": "May 25",
"company": "Vello",
"invoice_id": "INV-2026-0547",
"payment_link": "https://pay.vello.io/INV-2026-0547",
"support_email": "billing@vello.io"
},
"escalation": "If Bobby disputes the charge or becomes hostile, thank them and offer to have a human representative call back within 24 hours."
}
}'Key fields
to- Bobby's phone in E.164 format.targetName- the agent greets Bobby by name.triggeredBy- logged for audit; not spoken aloud.maxDurationSecs- hard cap at 3 minutes; most collection calls finish in under 2.task.script- references thedebt-collectionplaybook profile (see below).task.facts- injected into the conversation so the agent knows the specifics.task.escalation- fallback behavior for edge cases.
What Bobby hears
“Hi Bobby, this is a quick call from Vello about your account. You have an outstanding balance of $154.56 for 1,000 SMS credits - invoice INV-2026-0547, originally due May 25. I can help you sort that out right now. Would you like to take care of it today?”
Outcome branches
- ✓ Agrees to pay - the agent reads out the payment link and confirms Bobby will follow up.
- ⏳ Needs more time - the agent asks when Bobby expects to pay, logs the date, and closes politely.
- ✗ Refuses - the agent acknowledges, mentions that billing@vello.io can help, and ends the call.
- ? Disputes the charge - the agent does not argue; offers a human callback within 24 hours and ends the call.
Playbook script profile
Add this block to your voice playbook. The agent loads it automatically when task.script matches debt-collection.
#### debt-collection
**Opening**: Greet the customer by name. State your company, the outstanding
amount, the product/service, and the invoice ID. Ask if they can take care
of it today.
**If the customer agrees to pay**:
Read out the payment link slowly. Confirm they have it. Thank them and
end the call.
**If the customer needs more time**:
Ask when they expect to be able to pay. Log that date. Let them know
you'll follow up if the balance is still open. Close politely.
**If the customer refuses to pay**:
Do not pressure or threaten. Acknowledge their position. Mention the
support email for further discussion. End the call.
**If the customer disputes the charge**:
Do not argue or attempt to resolve the dispute on the call. Offer to
have a human billing representative call them back within 24 hours.
End the call.
**Hard limits**:
- Never threaten consequences (legal, credit score, service suspension)
- Never offer discounts or modified payment terms
- Never accept payment information over the phone
- Keep the call under 3 minutes
- One attempt per customer per dayCompliance tips
- No credit-score threats. The agent must never imply that non-payment will affect the customer's credit rating or result in legal action.
- No discount promises. Payment terms belong to your billing team, not the voice agent. The agent collects - it does not negotiate.
- Business hours only. Schedule calls between 8 AM and 9 PM in the recipient's local time zone. The API does not enforce this - your integration should.
- One-party consent. Check your jurisdiction's recording-consent laws. The agent can disclose that the call is recorded if required - add a line to the playbook opening.
- One call per day. Do not retry the same customer more than once in a 24-hour window. Use the webhook outcome to decide next steps.
This tutorial covers the API mechanics. Your legal team should review the playbook script and calling schedule before you go live.