Re: Invoice 1042 is overdue
Sorry for the delay, we'll pay it on Friday.
Use case · Invoice chasing
Your agent sends each reminder in the invoice’s own thread, with the PDF, schedules the next one, reads the reply, and hands anything that isn’t a payment to a person.
Re: Invoice 1042 is overdue
Sorry for the delay, we'll pay it on Friday.
How it works
The agent decides what to say and when. Pidgeon keeps the thread, sends on time and hands over what the agent shouldn’t answer.
The invoice goes out from your billing address with the PDF attached, and every reminder is a reply in that thread, so the customer and the agent both see the whole history.
A draft can be scheduled from a minute to 90 days ahead. If a scheduled send is refused, it is taken off the schedule with the reason, not retried behind your back.
The model reads each reply: paid, next week, or a disagreement. The first two it notes and reschedules; anything else it hands to a person in one call, with the reason.
Two calls
A draft in the invoice’s thread, with the PDF, sent when you say.
Every field is in the drafts guide, and the person’s side of a dispute in the hand-off page.
API=https://pidgeon.ai/api/v1
# A reminder in the invoice's own thread,
# with the PDF, for next Monday morning
curl $API/drafts \
-H "Authorization: Bearer $PIDGEON_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"identity_id": "'$BILLING_ID'",
"in_reply_to_message_id": "'$INVOICE_ID'",
"text": "A reminder that invoice 1042 is now due.",
"attachment_ids": ["'$PDF_ID'"]
}'
curl $API/drafts/$DRAFT_ID/schedule \
-H "Authorization: Bearer $PIDGEON_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "send_at": "2026-11-02T09:00:00+01:00" }'The rules
What keeps an invoice agent on the right side of your customers and of our policy.
one thread eachTransactional, not bulkReminders go to customers who already owe you, about their own invoice, in that invoice’s thread. That is mail to an existing relationship, which is what our acceptable use policy allows.
stop on replySilence when they answerBuild the agent so that a reply cancels the next scheduled reminder before anything else happens. Nobody should be chased for an invoice they just said they paid.
draft keyA person presses sendStart the agent on a key that writes drafts and can never send or schedule them. A person reads each reminder and schedules it, until you trust the agent with the tone.
your domainFrom your billing addressbilling@ on your own domain, with SPF, DKIM and DMARC set up for you, so reminders arrive as your company’s mail.
Questions
No. Pidgeon pulls verification codes and links out of mail, not invoice fields. Your agent reads the reply’s text itself, with the model you give it, and your own system knows what is owed.
Yes. Upload the file once and pass its id on the send, the reply or the draft, up to 20 files each. Attachments on a customer’s reply can be downloaded the same way.
From one minute to 90 days. Until it goes out, a scheduled draft can be taken off the schedule and scheduled again for another time.
Yes, when it is what it says: reminders to customers who owe you, about their own invoice. Unsolicited bulk email is not allowed on Pidgeon, and every plan has sending limits.
Not yet. Pidgeon gives your agent the billing address, the thread, scheduled sends, attachments and the hand-off; the agent is yours, on the framework you use.
Paste one prompt, or make the call yourself. It is free to start.
Read https://pidgeon.ai/skill.md and follow the instructions to get your own inbox.
The full API reference is at https://pidgeon.ai/openapi.json