# Unpaid invoice nudge: find overdue Stripe invoices and draft a follow-up for each deal owner

Source: https://mcpforgtm.com/recipes/unpaid-invoice-nudge (StackMCP, independent directory of official MCP servers)

## Goal

AEs whose customers pay through Stripe and who want to know which sent invoices are still unpaid, matched to the HubSpot deal and owner, with a polite nudge drafted for each. Everything stays read-only. HubSpot can be swapped for Salesforce, Attio or Pipedrive.

## Connected tools

- Stripe: https://mcp.stripe.com (setup: https://mcpforgtm.com/tools/stripe)
- HubSpot: https://mcp.hubspot.com (setup: https://mcpforgtm.com/tools/hubspot)

## Guardrails

- Read only in Stripe. Don't create, finalize or void invoices, change customers or subscriptions, or create payment links unless I approve it.
- Never issue a refund.
- Read only in HubSpot. Don't change any deal, contact or owner.
- Write follow-up emails as text only. Never send email.
- Skip any invoice where the deal notes show payment is already in progress.

## Steps

1. In Stripe, list my open invoices that were sent more than {days} days ago and are still unpaid: customer, customer email, invoice number, amount, status, sent date and days open. Leave out draft invoices. Read only. Don't change anything in Stripe.
2. For each invoice, find the matching company and deal in HubSpot by the customer's email domain. Show the deal name, stage, owner and any note from the last 30 days. List invoices with no match separately. Don't change any records.
3. Skip any invoice where a recent note says payment or a PO is in progress. For the rest, write a short, polite follow-up from the deal owner to the billing contact: invoice number, amount, sent date, and a question about what's blocking it. Show me the text only. Don't send anything.
4. Give me a summary by owner: how many invoices, total amount open, and which drafts are ready. If I ask for a new payment link or any Stripe change, show me exactly what you'll do and do it only after I approve it.

## Expected output

Unpaid invoices matched to deals, with one draft nudge. Example (all names fictional):

```
Stripe invoices sent and still open after 14 days: 4. Nothing has been changed in Stripe or HubSpot.

| Customer | Invoice | Amount | Sent | Days open | HubSpot deal | Owner |
|---|---|---|---|---|---|---|
| Mossgate Labs (fictional) | INV-0412 | $18,000 | Sep 22 | 24 | Mossgate annual plan, Closed won | Jordan |
| Fernhill Software (fictional) | INV-0398 | $6,500 | Sep 15 | 31 | Fernhill seat expansion, Closed won | Alex Rivera |
| Quarry Lane Analytics (fictional) | INV-0405 | $2,400 | Sep 30 | 16 | No match on domain quarrylane.example | ? |
| Larkspur Freightworks (fictional) | INV-0391 | $12,000 | Sep 12 | 34 | Larkspur renewal, Closed won. Note on Oct 9: "PO in procurement" | Jordan |

Skipped: Larkspur (a note says the PO is in procurement, so it's already being handled). Quarry Lane has no matching deal, so check it yourself.

Draft for Jordan to send (text only, not sent):
To: dana.okafor@mossgate.example
Subject: Invoice INV-0412 for your annual plan

Hi Dana,

A quick check on invoice INV-0412 for $18,000, sent on Sep 22. I don't see it as paid yet. Is it waiting on anything from our side, like a PO number or a W-9?

Happy to resend it to whoever handles payables.

Thanks,
Jordan
```

## Watch for

- Nudging a customer who already paid: The customer may have paid another way, or already told the owner the payment is on its way. Before drafting, check the HubSpot deal notes for a recent payment or PO comment, and skip anything with one.
- Draft invoices counted as sent: An invoice that was never finalized hasn't reached the customer. Ask for open invoices only, and list each invoice's status so you can spot drafts.
- Wrong deal or owner: A Stripe customer name may not match the HubSpot company name. Match on email domain, show the domain next to each match, and leave unmatched invoices for you to check instead of guessing.
- An accidental change in Stripe: Stripe's MCP server can void and finalize invoices and create payment links. Tell it up front that the run is read-only, and stop it if it proposes any Stripe write.
