Skip to main content
REVENUE AUTOMATION

Every billing event handled before it becomes a problem.

Failed payments recovered before your inbox catches them. Subscriptions created the moment a deal closes. Month-end reconciled overnight while no one is in the office. Connect Stripe once — and your revenue operations never wait on a human again.

Live event stream

Watch a billing event become an automated action.

A Stripe webhook fires. An Actionist trigger wakes the agent. The agent acts — before anyone reads a notification. Pick a trigger below and trace the full path.

trigger · invoice.payment_succeeded
agent · finance-bot · invoice paid · 14:07
webhook · invoice.payment_succeeded · inv_3QxN8…
14:07Invoice inv_3QxN8K2eZvKYlo paid — $1,200 — customer cus_Northwind.
14:07Posting payment summary to #revenue Slack channel.
tool · slack_post_message · #revenue
14:07Slack posted. Updating CRM record for Northwind — last payment date and amount.
tool · crm_update_record · northwind
14:08Done. CRM updated. Invoice marked as processed in tracker.
Invoice Paid fires on every successful payment. Route it to a Finance Agent that posts a summary to Slack, updates the CRM, and appends a row to the reconciliation tracker — zero manual touchpoints.
trigger · invoice.payment_failed
agent · dunning-bot · payment failed · 09:22
webhook · invoice.payment_failed · inv_4R2Zp9…
09:22Payment failed for cus_Acme — card ending 4242 declined. Invoice $840.
09:22Creating new Checkout Session for card update link.
tool · stripe_create_checkout_session · cus_Acme
09:22Session created. Sending recovery email with update link.
tool · email_send · [email protected]
09:23Recovery email sent. Attempt logged to memory.
Failed Payment is the highest-ROI trigger. The agent detects the failure, creates a fresh Checkout Session link, sends a card-update email, and logs the attempt — all before a human reads the notification.
trigger · customer.subscription.deleted
agent · churn-bot · subscription canceled · 11:15
webhook · customer.subscription.deleted · sub_7Tx…
11:15Subscription Pro Monthly canceled — customer cus_Homebase. Plan value: $299/mo.
11:15Issuing personalised win-back coupon — 30% off for 3 months.
tool · stripe_create_coupon · homebase-winback-30
11:15Coupon issued. Posting to #churn-alerts and booking CSM save call.
tool · calendar_book · CSM · save-call · homebase
11:16Save call booked. All actions complete in under 60 seconds.
Canceled Subscription fires on cancellation. The agent issues a coupon, posts to Slack, and books a renewal call on the CSM’s calendar — all before the rep finishes reading the notification.
trigger · charge.dispute.created
agent · dispute-bot · new dispute · 08:03
webhook · charge.dispute.created · dp_1P9m…
08:03Dispute opened — $340 chargeback on ch_3Qx…. Evidence deadline: 7 days.
08:03Retrieving original charge, order history, and delivery confirmation.
tool · stripe_retrieve_charge · ch_3Qx…
08:04Evidence package assembled. Alerting #disputes with summary and deadline.
tool · slack_post_message · #disputes
08:04Alert sent. Evidence ready to submit. 7 days on the clock.
New Dispute is time-sensitive — evidence windows are short. Route it to an agent that has the original charge context, assembles evidence, and alerts the right team immediately.
What changes

Every billing event handled before it becomes a problem.

Zero-touch dunning

A failed-payment webhook fires in real time. The agent detects the failure, sends a card-update email with a new Checkout Session link, and logs the attempt — before a human checks their inbox.

Billing in 30 seconds

A closed-deal message lands in Slack. The agent reads it, looks up the customer record, creates the subscription in Stripe, and logs the Stripe ID back to the CRM tracker.

Month-end in minutes

A scheduled agent pulls all balance transactions, categorises them by type, matches against the GL, flags anything unmatched, and appends the reconciliation row to the finance tracker — overnight, every month.

Churn response under 60 seconds

A cancelled-subscription event fires. The agent issues a personalised win-back coupon, posts to Slack, and books a renewal call on the CSM’s calendar — all before the rep finishes reading the notification.
Setup

Connect Stripe.

Actionist offers two connection methods. MCP is recommended — it uses Stripe’s own OAuth flow, scoped to exactly what your agent needs. API Token is the alternative if you prefer key-based access.

Use a restricted key, not your full secret key. In the Stripe Dashboard under Developers → API keys → Restricted keys, create a key scoped to only the Stripe objects your workflows actually touch (for example, Customers + Subscriptions + Invoices). The agent does not need access to objects it never calls — a narrower key limits blast radius if it is ever exposed.Test and live connections are fully isolated. A sk_test_… connection will never fire live-mode triggers, and vice versa. Build and verify automations in test mode before switching to sk_live_….
Connect Stripe
MCPRecommended
API Token

Uses Stripe’s OAuth flow. Scoped to exactly what your agent needs.

1Actionist opens the Stripe OAuth consent screen in your browser
2Sign in and grant the requested scopes
3Actionist verifies the handshake with a read-only call
4Click Install — badge updates to Connected
Triggers

React to billing events in real time.

Stripe exposes 10 webhook-backed triggers. When a billing event fires in Stripe, the connected agent wakes up immediately — no polling, no delay.

S
Stripe event (webhook)invoice.payment_succeeded, charge.failed, customer.subscription.deleted…
T
Actionist triggerAgent wakes immediately — no polling, no delay
A
Agent actsEmail · Slack post · coupon · calendar booking · CRM update
webhookFires when a charge or invoice payment fails. The most valuable trigger for dunning automation.
webhookFires when a customer subscribes to a new plan. Use it to trigger onboarding sequences or CRM updates.
webhookFires on cancellation. Route to a win-back agent that issues coupons and books a save call.
webhookFires when a chargeback is opened. Time-sensitive — evidence deadlines are short.
webhookFires when a Payment Link or Checkout Session is completed. Use for post-purchase onboarding.
webhookFires on successful payment. Use for receipts, CRM updates, and renewal tracking.
Triggers are webhook-backed and fire only on events that occur after the trigger is activated. Stripe does not replay historical events. For reconciliation over past data, use a scheduled agent that calls the balance transactions actions with a date range — not a trigger.
Subscribe to Failed Payment and Canceled Subscription first. These two triggers unlock the highest-ROI automations: dunning recovery and churn win-back. Route New Dispute to an agent with the right context — original charge details, order history — not to a sales agent. Dispute evidence windows are short.
Actions

40 actions across the complete billing lifecycle.

The Stripe app gives agents 12 read actions and 28 write actions, spanning every major Stripe object. One connection; no custom API wrappers.

40total actions
12read actions
28write actions
10webhook triggers

Customers and subscriptions

Read, create, update, and cancel customers and subscriptions. Search customers by email before creating — the idempotent lookup-then-create pattern prevents duplicate records that break dunning, subscription history, and CRM sync. Always chain Find Customer before Create Customer.
Create and retrieve charges, create and finalise invoices, add invoice items, create Payment Links and Prices, and work with PaymentIntents. Covers the full payment-collection lifecycle from quoting to collection.
Issue refunds, create and apply coupons for win-back campaigns, and retrieve dispute details so an agent can assemble evidence packages. Refunds and subscription cancellations are non-reversible — set the agent’s approval mode to require sign-off before these write actions execute.
Read balance transactions with date-range filters for scheduled reconciliation runs. Use a Finance Agent on a weekly or monthly schedule — not a trigger — for GL matching and MRR snapshots. Trigger-based reconciliation misses historical events; scheduled balance reads are always complete.
In practice

Three recipes finance teams run every week.

Real workflows, concrete outputs — each one live in under 10 minutes.

Felix · Finance and Ops
invoice.payment_succeeded fires. Agent reads the invoice via stripe_retrieve_invoice, appends a reconciliation row to the finance tracker, then sends a personalised thank-you email to the customer — all before Felix checks his inbox. Typically covers 12 to 18 invoices per day with zero manual entry.
saves ~3 hrs/wk
Felix · Finance and Ops
invoice.payment_failed fires. Agent checks the attempt count via stripe_retrieve_invoice — on attempt 2 or later it escalates: creates a new Checkout Session link and sends a personalised recovery email with the updated link. Attempt and outcome are logged to memory so follow-up emails do not repeat the same message.
live in 10 min
Felix · Finance and Ops
Every Monday at 08:00, a scheduled agent reads balance_transactions:list for the previous 7 days, groups by transaction type, calculates net movement, and posts a plain-text weekly revenue digest to #finance in Slack — typically covering 30 to 60 transactions. Felix arrives to a ready-made summary instead of a spreadsheet.
saves ~2 hrs/wk
Best practices

Tips before you go live.

Use a restricted key, not your full secret key

A full Stripe secret key grants access to every object in your account. Create a restricted key in the Stripe Dashboard under Developers → API keys → Restricted keys, scoped to only the resources your workflows touch. If the key is ever exposed, the blast radius is limited to the objects you explicitly granted.
Search by email first. If a Stripe Customer record already exists for that email, reuse the ID — do not create a new record. Duplicate customers break dunning sequences, subscription history, and CRM sync. The lookup-then-create pattern is idempotent and safe even if a trigger fires twice.
Connect a second Stripe integration in Actionist using your test-mode secret key (sk_test_…). Build and verify your automations end to end. Test and live connections are fully isolated — test webhooks will never fire live-mode triggers. Only switch to sk_live_… once you have confirmed the flows are correct.
Stripe triggers fire on future events only — they do not replay historical data. For month-end or weekly reconciliation, use a scheduled agent that calls the balance transactions actions with a specific date range. This guarantees a complete, ordered dataset regardless of when the agent was activated.
Keep billing operations separate from customer-facing automations. Wire balance reads, invoice ageing, GL reconciliation, and MRR snapshots to a dedicated Finance Agent running on a fixed schedule. This prevents a customer-support agent’s tool scope from accidentally overlapping with financial write actions.
One connection

Your revenue ops, running on autopilot.

Connect Stripe once. Wire your triggers. Let Actionist handle failed payments, churned customers, and month-end reconciliation — while you focus on growth.

Webhook-backed triggers fire the instant an event lands in Stripe — no polling.
Restricted keys · Test mode isolated from live · Non-reversible writes require approval.

Keep going

Reactions

How to wire Stripe webhook triggers to agents — filter rules, agent routing, and activation.

Schedules

Set up recurring Finance Agent runs for balance reads, GL reconciliation, and MRR snapshots.

Credentials

Store and rotate Stripe API keys in the encrypted Credentials Vault without re-editing agents.

MCP

Explore the official Stripe MCP server and other MCP integrations available in the catalog.