Data and research
Stripe
A Stripe integration connects a customer's Stripe account to Mobius through Stripe Apps OAuth so loops can read and update customers, inspect payments and billing objects, create invoices and refunds, and react to Stripe account events.
Use Stripe when a run needs current billing context, when support or success flows should update Stripe records, or when a payment or subscription event should start a durable run. This connector is separate from Mobius's own Stripe billing configuration.
Capability map
| Capability | Value |
|---|---|
| Provider ID | stripe |
| Auth kind | oauth2_user |
| Connect flow | Stripe Apps OAuth |
| Actions | Yes |
| Events | Yes |
| Webhook delivery | Yes |
| Event samples | No |
| Live status | Yes |
Connect Stripe
| Surface | Support |
|---|---|
| App | Open Govern > Integrations, choose Stripe, then continue through Stripe OAuth and choose the account to authorize. |
| CLI | The mobius CLI does not connect Stripe integrations yet. Use the app or API. |
| API | Call POST /v1/projects/{project}/integrations/providers/stripe/connect with an empty JSON body, then redirect the user to the returned Stripe OAuth URL. |
curl -X POST \
"$MOBIUS_API_URL/v1/projects/platform/integrations/providers/stripe/connect" \
-H "Authorization: Bearer $MOBIUS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"default"}'The connect call returns a redirect_url. Send the browser there to install the
Mobius Stripe app. Stripe redirects back to Mobius, then Mobius stores the
account ID plus OAuth access and refresh tokens for the project.
Set the Stripe app redirect URI to:
{STRIPE_INTEGRATION_APP_BASE_URL}/v1/provider/stripe/callbackSTRIPE_INTEGRATION_APP_BASE_URL defaults to API_BASE_URL, then
APP_BASE_URL. In production this should be the API origin, for example
https://api.mobiusops.ai.
Deployment configuration
Use the STRIPE_INTEGRATION_* variables for customer Stripe accounts. Do not
reuse the STRIPE_* billing variables.
STRIPE_INTEGRATION_CLIENT_ID=
STRIPE_INTEGRATION_SECRET_KEY=
STRIPE_INTEGRATION_APP_BASE_URL=
STRIPE_INTEGRATION_SIGNING_SECRET=
STRIPE_INTEGRATION_WEBHOOK_SECRET=STRIPE_INTEGRATION_CLIENT_ID and STRIPE_INTEGRATION_SECRET_KEY enable the
OAuth connect button. STRIPE_INTEGRATION_SIGNING_SECRET signs Mobius OAuth
state. If it is empty, Mobius uses the Stripe integration secret key. Set
STRIPE_INTEGRATION_WEBHOOK_SECRET to the signing secret from the Stripe event
destination so Mobius can verify Stripe-Signature headers.
The Stripe app manifest needs permissions for the objects Mobius actions read or write. Start with these object permissions, then add event permissions for each event type you subscribe to:
connected_account_read
customer_read
customer_write
payment_intent_read
invoice_read
invoice_write
subscription_read
charge_read
charge_write
event_readStripe may reject an action if the installed app lacks the matching permission. Review the exact manifest permissions in Stripe before shipping a new action set.
Actions
stripe.customer.list
stripe.customer.get
stripe.customer.create
stripe.customer.update
stripe.payment_intent.list
stripe.payment_intent.get
stripe.invoice.list
stripe.invoice.get
stripe.invoice.create
stripe.subscription.list
stripe.subscription.get
stripe.refund.createUse stripe.customer.list to search customers before writing. Use stable IDs
from read actions when creating invoices or refunds.
Create a customer:
{
"email": "ada@example.com",
"name": "Ada Lovelace",
"metadata": {
"source": "mobius"
},
"idempotency_key": "customer-ada-example"
}List payment intents for a customer:
{
"customer_id": "cus_123",
"limit": 25
}Create a draft invoice:
{
"customer_id": "cus_123",
"description": "Usage review follow-up",
"collection_method": "send_invoice",
"days_until_due": 14,
"idempotency_key": "invoice-cus-123-2026-06"
}Create a refund:
{
"payment_intent_id": "pi_123",
"amount": 5000,
"reason": "requested_by_customer",
"idempotency_key": "refund-pi-123-support-case-456"
}stripe.customer.create, stripe.invoice.create, and stripe.refund.create
mutate upstream state. Provide a stable idempotency_key when a retry could
repeat the write, and add an interaction before
high-impact refunds or invoice changes.
Events
Stripe event callbacks become provider events with the stripe. prefix.
Mobius verifies the signature, matches the event's account ID to the connected
integration, persists the canonical integration event, and fans it out as a
source event for triggers and waiting runs.
stripe.account.application.deauthorized
stripe.charge.failed
stripe.charge.refunded
stripe.charge.succeeded
stripe.charge.dispute.created
stripe.checkout.session.completed
stripe.checkout.session.expired
stripe.customer.created
stripe.customer.deleted
stripe.customer.updated
stripe.customer.subscription.created
stripe.customer.subscription.deleted
stripe.customer.subscription.paused
stripe.customer.subscription.resumed
stripe.customer.subscription.trial_will_end
stripe.customer.subscription.updated
stripe.invoice.created
stripe.invoice.deleted
stripe.invoice.finalized
stripe.invoice.marked_uncollectible
stripe.invoice.paid
stripe.invoice.payment_failed
stripe.invoice.payment_succeeded
stripe.invoice.sent
stripe.invoice.upcoming
stripe.invoice.updated
stripe.invoice.voided
stripe.payment_intent.amount_capturable_updated
stripe.payment_intent.canceled
stripe.payment_intent.created
stripe.payment_intent.payment_failed
stripe.payment_intent.requires_action
stripe.payment_intent.succeeded
stripe.refund.created
stripe.refund.failed
stripe.refund.updatedEach event payload includes the Stripe event ID, upstream event type, connected
account ID, created timestamp, live mode flag, changed object ID and type, the
object under data, any previous_attributes, and the original Stripe event
under raw.
Set up webhook delivery
Create a Stripe event destination or webhook endpoint that sends selected account events to:
{STRIPE_INTEGRATION_APP_BASE_URL}/v1/provider/stripe/webhook/eventsCopy the endpoint's signing secret into
STRIPE_INTEGRATION_WEBHOOK_SECRET. Mobius accepts callbacks only when the
Stripe-Signature timestamp is within five minutes and the HMAC matches the
raw request body.
Connect each Stripe account in Mobius before expecting events from that account.
If Stripe delivers an event for an account that is not connected to a project,
Mobius returns 404 and does not emit a source event.
Next
- Match Stripe events in triggers.
- Call Stripe actions from action steps.
- Inspect exact payload schemas from the event catalog.
- Add approval pauses before refunds with interactions.