Failed payment save play: alert CS with account context before a missed payment turns into churn

Stripe + HubSpot + Slack

IntermediateCustomer success

Who it's for

CS teams at companies that bill through Stripe, who want to know when a subscription falls behind on payment, with the account's owner, renewal and recent history, before the customer quietly churns. Everything in Stripe stays read-only. HubSpot can be swapped for Salesforce, Attio or Pipedrive, and Slack for a Gmail draft.

What you get

Past-due subscriptions with account context, and one Slack alert drafted. Sample output: every company and person in it is fictional.

Stripe subscriptions behind on payment: 3. Open invoices past their due date: 4. Nothing has been changed in Stripe or HubSpot.

| Customer | Subscription | Unpaid invoice | Amount | Due | Days late | HubSpot owner | Renews | Open tickets |
|---|---|---|---|---|---|---|---|---|
| Fernhill Software (fictional) | Business, monthly | INV-1187 | $2,400 | Oct 1 | 15 | Priya Raman | Jan 30 | 2 (billing, login) |
| Mossgate Labs (fictional) | Team, annual | INV-1162 | $9,600 | Sep 24 | 22 | Sam Whitlock | Sep 24 (this invoice) | 0 |
| Larkspur Freightworks (fictional) | Business, monthly | INV-1191 | $3,100 | Oct 5 | 11 | Jordan | Mar 12 | 0. Note Oct 8: "new card coming from AP" |
| Quarry Lane Analytics (fictional) | n/a | INV-1170 | $750 | Sep 30 | 16 | No match on domain quarrylane.example | ? | ? |

Skipped: Larkspur (a note says a new card is on the way). Quarry Lane has no HubSpot match, so check it yourself.

Draft Slack alert to #cs-saves (not posted):
:warning: Payment behind: Fernhill Software (fictional)
Owner: @priya. Business plan, monthly. INV-1187 for $2,400 is 15 days past due.
Context: 2 open tickets, one about billing (Oct 9). Renews Jan 30. Champion: Dana Okafor, [email protected].
Suggested move: Priya checks in with Dana today about the billing ticket before finance sends a second notice.

Reply 'post 1' or 'post all' to approve.

Time and cost

Estimate About 10–15 minutes a week, most of it reading the alerts.

Assumptions: One weekly run over about 5 past-due subscriptions or invoices, with 3 alerts approved.

Exact credit costs depend on your plan with each vendor. Check the tool pages before a large run.

MCP servers

Every server is confirmed in: Claude

Set up in a chat app

Every server in this recipe is confirmed for Claude. Connect each one, then paste the prompts below into one conversation.

Developer setup

Auth setup and mcp.json for Claude Code and Cursor
  • Stripe: Sign in with OAuth, or pass an API key as a Bearer token for headless use.
  • HubSpot: Sign in with OAuth in your client (run /mcp in Claude Code). Do it once interactively, and the client stores and refreshes the token.
  • Slack: Sign in with OAuth in your client (run /mcp in Claude Code). Do it once interactively, and the client stores and refreshes the token.

Put this in .mcp.json (Claude Code, project root) or ~/.cursor/mcp.json (Cursor). Swap the example keys for your own, and don't commit real ones. Remove the // comment lines if your client requires strict JSON.

{
  "mcpServers": {
    "stripe": {
      "url": "https://mcp.stripe.com"
      // headless alternative: "headers": { "Authorization": "Bearer YOUR_STRIPE_API_KEY" }
    },
    "hubspot": {
      "url": "https://mcp.hubspot.com"
    },
    "slack": {
      "url": "https://mcp.slack.com/mcp"
    }
  }
}

Step-by-step prompts

  1. In Stripe, list subscriptions that are past due or unpaid, and open invoices more than {days} days past their due date: customer, customer email, plan, invoice number, amount, status, due date and days late. Leave out draft and voided invoices. Read only. Don't change anything in Stripe.
  2. For each customer, find the matching company in HubSpot by email domain. Show the owner, the renewal date from {renewal_field}, open tickets and any note from the last 14 days. List customers with no match separately. Don't change any records.
  3. Skip any account where a recent note says payment is on its way. For the rest, look up each owner in Slack by email, and draft one short alert per account for {channel}: who owns it, what's late, the account context, and one suggested save move. List owners you can't match. Show me the drafts.
  4. Post each alert only after I approve it. Then give me a one-line summary: how many accounts are behind and the total amount late.

Run it on a schedule (optional)

Where this goes wrong

Gotchas

Download

Get the prompts, guardrails and expected output as one Markdown file. Paste it into a Claude Project or ChatGPT project's instructions, or save it as CLAUDE.md for Claude Code.

Download failed-payment-save.md

Vendor sites: HubSpot · Slack. If we join an affiliate program, these links will be labeled as affiliate links.