Send Stripe events to Discord without Zapier
Drop a Discord step into any Stripe Workflow. Templated messages, channel routing, retries that won't double-post. One flat monthly fee.
Free trial · From $19/mo · No credit card required
The problem
Every Stripe team eventually wants a channel where each paid invoice pings. The usual setup is a Zapier zap from a Stripe webhook into a Discord webhook, billed per task. It works fine until something retries: you get duplicate pings, the formatter step you forgot you wrote starts dropping fields, and the Zapier bill keeps scaling with revenue instead of headcount.
The Discord action puts this inside the Stripe Dashboard. Add it as a step in a Stripe Workflow, paste a channel webhook URL, write a JSONata message body, and you're done. Outbound dedupes on Stripe's invocation id, so a 5xx retry only posts once. Pricing is a flat monthly fee — same number whether you do ten paid invoices a month or ten thousand.
How the Discord action works
- 1
Install Outbound from the Marketplace
One click from the Stripe App Marketplace. The Discord action shows up as a step type in the Workflow builder the next time you open it. There is no separate account to set up and no API keys to shuffle around. - 2
Add a Discord webhook URL
Create a webhook in your Discord server settings, paste the URL into the action config. Outbound stores it encrypted at rest. You can configure one webhook per workflow or share across many. - 3
Template the message with JSONata
Reference any field on the triggering Stripe event: {{customer.email}}, {{invoice.amount_paid}}, {{charge.dispute.reason}}. JSONata gives you conditionals, arithmetic, and currency formatting without leaving the field. - 4
Publish the workflow
Stripe Workflows handles the trigger side. Outbound takes care of delivery, retry on 5xx, and dedup on the Stripe invocation id. The execution log records every Discord post with its status code and the matching Stripe event.
trigger:
event: invoice.paid
steps:
- action: outbound.discord
config:
webhook_url: ${DISCORD_WEBHOOK}
content: |
ka-ching — {{customer.email}} just paid
amount: ${{invoice.amount_paid / 100}}
plan: {{invoice.lines.data[0].description}}
link: https://dashboard.stripe.com/invoices/{{invoice.id}}
username: stripe-botExample workflow configuration
Screenshot of the Stripe Workflow builder showing a Discord action step. The right-hand config panel shows fields for webhook URL, message content with JSONata template placeholders like customer.email and invoice.amount_paid, and a username override. A small Outbound logo sits in the step header.
Outbound vs Zapier
| Outbound | Zapier | |
|---|---|---|
| Lives inside the Stripe Dashboard | — | |
| Pricing model | From $19/mo flat | Per-task billing |
| Idempotent on Stripe invocation id | — | |
| Setup time | ≈2 minutes | 10–20 minutes |
| Templating language | JSONata | Zapier formatter steps |
| Execution log scoped to one Stripe account | — | |
| Separate vendor account required | — |
Frequently asked questions
Does this support Discord threads or just channels?+
What happens if Discord rate-limits us?+
Can I send rich embeds, not just plain content?+
How do I avoid duplicate pings on retry?+
Can I route different events to different channels?+
Related integrations
Send Stripe events to Telegram
Same pattern, different chat app. Solo founder pings and weekend escalation routes.
Append Stripe events to Notion
Use Discord for alerts, Notion for the durable log of every paid invoice.
Trigger Stripe workflows from Discord
Coming with Inbound: let a Discord command kick off a refund or credit workflow.