MCP guides

Contacting customers about their payments

For assistants

An assistant connected to the Qualy MCP server reads this guide as the resource qualy://guides/contacting-customers. Generated from the Qualy MCP server’s guide registry.

Qualy already reminds people on your account's reminder schedule and chases what is overdue. Anything you send on top of that reaches the same person, so do it in this order: check, act through one channel, record.

1. Check before you contact anyone

Call contact_outreach_check with the contact (id or email) and the payments or partner invoices you have in mind. For each one it says whether Qualy itself would contact them now and, if not, why, in the dashboard's words: paid or in flight, on direct debit, part of an early payoff, the contact opted out, your account turned reminder channels off, chasing paused, on hold or promised to pay.

It also gives what Qualy sent them last and whether it was delivered or read, the next message Qualy has queued, the last outreach someone recorded doing outside Qualy, a bounced or spam-reported email, and each payment's pay link.

Skip what it says no to. If it shows a message went out yesterday or one is queued for tomorrow, say so instead of sending another.

2. Pick one channel

You want toUseNotes
Remind them about one paymentpayment_intent_remindQualy's standard payment reminder, on your account's reminder channels. Goes out a few minutes later, or at sendAt (at most 30 days ahead). template adds one of your payment reminder templates. No tone setting.
Chase several overdue payments or partner invoices in one noticecollections_chaseOne consolidated notice. style is the tone (gentle, neutral, firm); payBy is the Pay by date in the email. Give exactly one of paymentIntents, paymentSplits or bulkOperation.
Message them yourself (your email, SMS, WhatsApp or a call)your own channelPut the pay link from contact_outreach_check in the message, then record it (step 3).

Both Qualy channels preview first: the first call returns a preview to show the person, and it only sends when called again with their approval. A preview is not a success.

payment_intent_remind is refused, with the reason, whenever Qualy would not send it: the payment isn't draft, due, overdue or partially paid; it's part of an early payoff; it's collected by direct debit; or its supplier is set to suppress payment reminders. The collections_chase preview runs Qualy's eligibility check and is refused when everything would be skipped; it reports every invoice it skipped and why.

3. Record and follow up

  • After contacting someone yourself, call contact_outreach_record with the channel, when (contactedAt, not in the future) and the payments it was about. It sends nothing; it makes contact_outreach_check, payment_timeline and the dashboard's activity show it. The same call within 10 minutes is a retry and returns the first record.
  • When someone replies to a chase, record it with collections_outcome_record: answered, promised-to-pay (with promisedAt), disputed or no-response. Promised to pay pauses chasing until that date; disputed puts it on hold.
  • payment_timeline shows one payment's whole story: messages sent, what is queued, chase attempts and replies, fees, direct debits and recorded outreach.

What the queue can and can't tell you

notification_queue_list only holds what Qualy has queued so far, about a month ahead, so a short queue does not mean nothing more will be sent. The schedule behind it is your account's payment reminders: read it with reminder_settings_get. Qualy checks each reminder again just before sending and skips one that is no longer relevant; qualy://guides/how-qualy-reminds lists the rules.

Worked examples

Check one contact before doing anything

{
  "tool": "contact_outreach_check",
  "arguments": {
    "contact": "jane.doe@example.com",
    "paymentIntents": [
      "1234"
    ]
  }
}

Per item, read allowed and reasons; then lastContacted (what Qualy sent), next (what it has queued), lastOutsideQualy and payLink before you choose a channel.

Remind them about one payment

{
  "tool": "payment_intent_remind",
  "arguments": {
    "paymentIntentId": "1234",
    "comment": "Just a reminder that this is due on Friday."
  }
}

One payment per reminder. For several overdue payments in one message, use collections_chase.

Previews first: the call returns a preview to show the person. Call it again with the same arguments plus confirmationId and userConfirmed: true only after they approve.

Chase two overdue payments in one notice

{
  "tool": "collections_chase",
  "arguments": {
    "paymentIntents": [
      "1234",
      "1235"
    ],
    "style": "neutral",
    "payBy": "2026-11-15T00:00:00Z"
  }
}

The preview lists who gets what and what would be skipped and why.

Previews first: the call returns a preview to show the person. Call it again with the same arguments plus confirmationId and userConfirmed: true only after they approve.

Record a WhatsApp message you sent yourself

{
  "tool": "contact_outreach_record",
  "arguments": {
    "contact": "jane.doe@example.com",
    "paymentIntents": [
      "1234"
    ],
    "channel": "whatsapp",
    "contactedAt": "2026-10-05T14:30:00+10:00",
    "note": "Sent the pay link; she said she will pay on Friday."
  }
}
Previous
AI agents & coding tools