Stripe n8n integrationAutomate Stripe with n8n.
A payment that lands in Stripe can start the rest of the work on its own. The Stripe n8n integration opens 20 operations over 8 resources, from charges and customers to coupons, cards and usage meters. Its trigger listens to 151 events grouped in 39 families.
Verified Trustpilot reviews · AI, automation & growth agency
What does the Stripe n8n integration actually cover?
The Stripe n8n integration is two nodes sharing one credential, the access you register once in n8n. The Stripe node calls the Stripe API and exposes 20 operations over 8 resources: Balance, Charge, Coupon, Customer, Customer Card, Meter Event, Source and Token. The Stripe Trigger node registers a webhook, a URL that Stripe calls on every event, and subscribes to 151 events grouped in 39 families.
Start with a failed payment. The trigger fires on invoice.payment_failed, Get a customer returns the name and the email stored on the record, and the reminder goes out through Gmail with the invoice reference inside it. The same workflow, the chain of steps you assemble in n8n, stops itself on invoice.paid, so a customer who settles the same evening is not chased the next morning.
Then the books. Each charge.succeeded becomes a row in Google Sheets for the weekly read, and a sales receipt in Quickbooks for whoever closes the month. Get many charges with Return All switched on is what makes that close correct, because a partial page of charges quietly breaks the reconciliation.
Third, usage billing. Create a meter event reports what an account consumed, one call per unit, with an Identifier that makes a retried run harmless inside its rolling 24 hour window. The invoice Stripe builds from those events comes back through the same alerting as any other invoice.
The node stops where its 8 resources stop. Subscriptions, refunds, payouts, payment intents and products exist in the trigger as events and have no matching operation in the node. When a workflow has to write to them, the HTTP Request node calls the endpoint directly and reuses the Stripe credential through its predefined authentication, so there is no second key to store anywhere.
Two limits deserve a look before you build. Test mode and live mode hold separate keys and separate objects, so a workflow validated on sk_test_ finds nothing once a live key is in place. And listing operations only page through the API when Return All is on. If the platform choice is still open, the n8n review weighs it against Make on hosting and cost, and the n8n training covers the workflow patterns these payment flows lean on.
How do you connect Stripe to n8n?
- 01
Create a Secret key in Stripe
Open the Stripe developer dashboard and go to API Keys. In the Standard Keys section, select Create secret key, give it a name that says where it runs, something like
n8n integration, then create it and copy the value. Test mode works the other way around: the test Secret key already exists, so select Reveal test key and copy that one. Generating a key needs a Stripe admin or developer account. - 02
Store the key in an n8n credential
In n8n, open the Credentials menu, create a Stripe credential and paste the value into Secret Key. Secret keys begin with
sk_,sk_live_in live mode andsk_test_in test mode. Publishable keys prefixedpk_do not belong here, and restricted keys prefixedrk_have not been tested. Once saved, it shows up in the dropdown of both Stripe nodes. - 03
Add the Signature Secret once the endpoint exists
The Signature Secret exists only after the endpoint does. Publish the workflow built on the Stripe Trigger: n8n creates a webhook endpoint in Stripe. In the Stripe Dashboard, open Workbench then Webhooks (Developers then Webhooks on older dashboards), pick the endpoint labeled Created by n8n for workflow ID, reveal the value under Signing secret and paste that
whsec_string into Signature Secret.
What does the Stripe Trigger listen to?
Stripe Trigger is the node that starts a workflow when something happens in Stripe. It listens to 151 events, listed below by family. Pick one or several, activate the workflow: n8n registers the webhook on your Stripe account.
What you see in n8n
Every event, by family
One row per object, one chip per action. The event to tick in the node is object.action; hover a chip to read exactly when it fires.
customer.*17customer.createddeletedupdated
customer.discount. createddeletedupdated
customer.source. createddeletedexpiringupdated
customer.subscription. createddeletedtrial_will_ end updated
customer.tax_ id. createddeletedupdated
charge.*13charge.capturedexpiredfailedpendingrefundedsucceededupdated
charge.dispute. closedcreatedfunds_reinstated funds_withdrawn updated
charge.refund. updated
invoice.*12invoice.createddeletedfinalizedmarked_uncollectible paidpayment_action_ required payment_failed payment_succeeded sentupcomingupdatedvoided
source.*7source.canceledchargeablefailedmandate_notification refund_attributes_ required
source.transaction. createdupdated
subscription_schedule.*7subscription_schedule. abortedcanceledcompletedcreatedexpiringreleasedupdated
account.*6account.updated
account.application. authorizeddeauthorized
account.external_ account. createddeletedupdated
payment_intent.*6payment_intent. amount_capturable_ updated canceledcreatedpayment_failed succeededrequires_action
payout.*5payout.canceledcreatedfailedpaidupdated
topup.*5topup.canceledcreatedfailedreversedsucceeded
transfer.*5transfer.createdfailedpaidreversedupdated
order.*4order.createdpayment_failed payment_succeeded updated
payment_method.*4payment_method. attachedcard_automatically_ updated detachedupdated
setup_intent.*4setup_intent. canceledcreatedsetup_failed succeeded
application_fee.*3application_fee. createdrefunded
application_fee. refund. updated
coupon.*3coupon.createddeletedupdated
credit_note.*3credit_note. createdupdatedvoided
invoiceitem.*3invoiceitem.createddeletedupdated
issuing_authorization.*3issuing_authorization. createdrequestupdated
person.*3person.createddeletedupdated
plan.*3plan.createddeletedupdated
product.*3product.createddeletedupdated
recipient.*3recipient.createddeletedupdated
reporting.*3reporting.report_ run. failedsucceeded
reporting.report_ type. updated
sku.*3sku.createddeletedupdated
issuing_card.*2issuing_card. createdupdated
issuing_cardholder.*2issuing_cardholder. createdupdated
issuing_dispute.*2issuing_dispute. createdupdated
issuing_settlement.*2issuing_settlement. createdupdated
issuing_transaction.*2issuing_transaction. createdupdated
radar.*2radar.early_ fraud_ warning. createdupdated
review.*2review.closedopened
tax_rate.*2tax_rate. createdupdated
balance.*1balance.available
capability.*1capability.updated
checkout.*1checkout.session. completed
file.*1file.created
invoice_payment.*1invoice_payment. paid
order_return.*1order_return. created
sigma.*1sigma.scheduled_ query_ run. created
The trigger also accepts * (any event). Handy for logging, dangerous in production.
Configuration notes
01Configure the Stripe Trigger
This node owns the webhook side of the integration. Publish the workflow and n8n registers an endpoint in the Stripe account, so each event reaches the workflow within seconds and nothing is checked on a schedule.
Key parameters
- Events: the events the endpoint subscribes to, 151 of them spread across 39 families. The wildcard
*subscribes to every one, which helps while you inspect a first payload and floods the workflow in production. - API Version: optional, and it pins the format and structure of the payloads Stripe sends. Left empty, Stripe applies the default API version set on the account at that moment, and a later change to that default can move the payload under a workflow that used to run fine.
02invoice.*
Twelve events follow an invoice from invoice.created to invoice.voided. This is the family to watch when money is billed rather than charged on the spot.
invoice.payment_failed fires when a payment attempt on an invoice fails, either because the payment was declined or because no payment method is stored. invoice.paid fires when an attempt succeeds, and also when an invoice is marked as paid out of band. invoice.upcoming lands a number of days before a subscription bills, a delay your subscription settings decide, and its payload carries no invoice ID, which changes how the workflow identifies it.invoice.paid, and warns the account owner while the next invoice is still upcoming.03charge.*
Thirteen events track a single payment: charge.succeeded, charge.failed, charge.pending, charge.captured, charge.expired, charge.refunded and charge.updated, plus five dispute events and charge.refund.updated. Between charge.pending and charge.captured, the family also describes payments that are not settled yet.
charge.dispute.created arrives when a customer disputes a charge with their bank, charge.dispute.funds_withdrawn when the money leaves the account, charge.dispute.funds_reinstated when it comes back, and charge.dispute.closed carries the outcome, lost, won or warning_closed. Note that charge.refunded also covers partial refunds, so the amount matters more than the event name.charge.succeeded, and a separate alert on charge.dispute.created, because that one needs a human the same day and the first one does not.04customer.*
Seventeen events, the largest family of the trigger, and several objects behind it: the customer itself with created, deleted and updated, then its discounts, its sources, its subscriptions and its tax IDs.
customer.subscription.created marks a signup, customer.subscription.updated covers a plan change or a move from trial to active, customer.subscription.deleted the end of it, and customer.subscription.trial_will_end arrives three days before a trial is scheduled to end. customer.source.expiring warns that a card or a source expires at the end of the month.What can the Stripe node do?
The Stripe node exposes 20 operations across 8 resources. For each one: the node as you configure it in n8n, the required fields, and our field notes.
| Resource | Create | Get | Get Many | Update | Delete | Add | Remove |
|---|---|---|---|---|---|---|---|
| Balance | ✓ | ||||||
| Charge | ✓ | ✓ | ✓ | ✓ | |||
| Coupon | ✓ | ✓ | |||||
| Customer | ✓ | ✓ | ✓ | ✓ | ✓ | ||
| Customer Card | ✓ | ✓ | ✓ | ||||
| Meter Event | ✓ | ||||||
| Source | ✓ | ✓ | ✓ | ||||
| Token | ✓ |
Operations index
Balance
1 operationGet a balance
balance.getWhat you see in n8n
Notes & use cases
Reading the account balance is all this operation does. It returns what Stripe currently holds, split between the funds already available and the funds still pending, and there is no field to fill: the node simply queries the account behind the credential you picked.
Charge
4 operationsCreate a charge
charge.createWhat you see in n8n
Notes & use cases
Charging a payment source already attached to a customer happens here. The operation creates the charge in Stripe and returns the charge object with its status.
Key parameters
- Customer ID: the customer the charge belongs to, often
{{ $json.id }}coming from an earlier node. - Amount: the amount in cents, so
100stands for one dollar. - Currency Name or ID: a three letter ISO code such as
USDorEUR, chosen from the list or written as an expression. - Source ID: the payment source of that customer to debit.
Get a charge
charge.getWhat you see in n8n
Notes & use cases
One charge, by identifier. The node returns the whole object, so the workflow can branch on the status, the amount or the metadata without a second call.
Key parameters
- Charge ID: the identifier of the charge to retrieve, typically
{{ $json.id }}when a charge event started the run.
Get many charges
charge.getAllWhat you see in n8n
Notes & use cases
Pulls a list of charges rather than a single one, with one item per charge in the output.
Key parameters
- Return All: switched on, n8n walks the pages of the Stripe API until every charge of the account comes back.
- Limit: only read when Return All stays off, it caps how many charges a run returns.
Update a charge
charge.updateWhat you see in n8n
Notes & use cases
Editing a charge after the fact stays narrow on purpose. Four fields sit under Update Fields, Description, Metadata, Receipt Email and Shipping, and nothing else about the payment can move.
Key parameters
- Charge ID: the charge to update.
- Metadata: key and value pairs attached to the charge, added one at a time with Add Metadata Item.
Coupon
2 operationsCreate a coupon
coupon.createWhat you see in n8n
Notes & use cases
A discount defined in Stripe instead of in your own code. The operation creates the coupon and returns it, ready to be attached to a customer.
Key parameters
- Apply: how long the discount stays in effect, Forever or Once.
- Discount Type: Percent, or Fixed Amount (in Cents).
- Amount Off: the amount in cents to subtract from an invoice total.
- Percent Off: the percentage the coupon takes off.
- Currency Name or ID: the three letter ISO code the amount is expressed in.
Get many coupons
coupon.getAllWhat you see in n8n
Notes & use cases
Lists the coupons that exist in the account, which is the fastest way to see what is still live before adding another one.
Key parameters
- Return All: on, the node keeps asking for pages until the whole coupon list is out.
- Limit: with Return All off, this caps how many coupons come back.
Customer
5 operationsCreate a customer
customer.createWhat you see in n8n
Notes & use cases
The customer record anchors almost everything else in Stripe: cards, sources, charges and invoices hang off it. This operation creates it and returns the new identifier.
Key parameters
- Name: the only required field, either the full name or the business name.
- Email: optional in the node, rarely optional in practice, since receipts and invoice emails go there. It sits under Additional Fields, next to Address, Phone, Description, Metadata and Shipping.
Delete a customer
customer.deleteWhat you see in n8n
Notes & use cases
Deletes a customer from the Stripe account. One identifier, no options, which makes this operation as easy to wire as it is to fire by accident.
Key parameters
- Customer ID: the customer to delete. Worth guarding with a filter or a manual approval step upstream, because n8n runs the node as soon as an item reaches it.
Get a customer
customer.getWhat you see in n8n
Notes & use cases
Fetches one customer and returns the stored record: the name, the email if it was ever set, the address, the metadata.
Key parameters
- Customer ID: the identifier of the customer to retrieve, commonly read from the incoming item with
{{ $json.id }}.
Get many customers
customer.getAllWhat you see in n8n
Notes & use cases
Walks the customer list instead of one record, and can narrow it before anything comes back.
Key parameters
- Email: sits under Filters and asks Stripe for the customers matching that address, the closest thing the node offers to a lookup by email.
- Return All: enabled, the node pages through the whole customer list; disabled, Limit decides how many arrive.
Update a customer
customer.updateWhat you see in n8n
Notes & use cases
Changes what Stripe stores about a customer. Seven fields sit under Update Fields, Address, Description, Email, Metadata, Name, Phone and Shipping, and only the ones you add are touched.
Key parameters
- Customer ID: the customer to update.
- Email: the address Stripe uses for receipts and invoice emails, worth pushing the day it changes in your own database.
Customer Card
3 operationsAdd a customer card
customerCard.addWhat you see in n8n
Notes & use cases
Attaches a card to an existing customer. The card details never travel here in the clear: the operation expects a token that already stands for them.
Key parameters
- Customer ID: the customer the card is attached to.
- Card Token: the token representing the sensitive card information, a
tok_string produced by the Create a token operation or by your own checkout.
Get a customer card
customerCard.getWhat you see in n8n
Notes & use cases
Reads back one card of one customer. Two identifiers are needed, because a customer can hold several.
Key parameters
- Customer ID: the customer whose card is read.
- Source ID: the source to retrieve, which is the card identifier on that customer.
customer.source.expiring, before anything is charged on it.Remove a customer card
customerCard.removeWhat you see in n8n
Notes & use cases
Detaches a card from a customer. Watch the field name here: this operation asks for a Card ID where the read asks for a Source ID.
Key parameters
- Customer ID: the customer the card belongs to.
- Card ID: the card to remove.
Meter Event
1 operationCreate a meter event
meterEvent.createWhat you see in n8n
Notes & use cases
Usage based pricing needs a counter, and this operation feeds it. Each call reports one unit of usage, for one customer, on one meter.
Key parameters
- Event Name: matches the event_name field of the meter configured in Stripe.
- Customer ID: the Stripe customer the usage belongs to.
- Value: an integer, positive or negative.
- Identifier: optional, and worth setting, since uniqueness is enforced inside a rolling 24 hour window, which is what stops a retried run from counting twice.
- Timestamp: the time of the event, within the past 35 calendar days or up to 5 minutes ahead.
Source
3 operationsCreate a source
source.createWhat you see in n8n
Notes & use cases
Builds a payment source and attaches it to a customer. In the node, Type offers a single value, WeChat, so this is the operation for that payment method rather than a general purpose one.
Key parameters
- Customer ID: the customer the source is attached to.
- Type: WeChat, the only entry in the list.
- Amount and Currency Name or ID: not required by the node, they hold the amount in cents and the ISO code when the source carries one.
source.chargeable before charging anything.Delete a source
source.deleteWhat you see in n8n
Notes & use cases
Removes a source from a customer, with the same pair of identifiers the read uses. Nothing else is configurable, so the guard has to live upstream in the workflow.
Key parameters
- Customer ID: the customer whose source goes away.
- Source ID: the source to delete.
source.canceled or source.failed, so the customer record stops offering a payment method that no longer works.Get a source
source.getWhat you see in n8n
Notes & use cases
Returns one source on its own, without naming a customer. Only the source identifier is required, which makes it the quickest way to inspect the object behind a source event.
Key parameters
- Source ID: the identifier of the source to retrieve.
source.chargeable reads the source to confirm its state, then decides whether the charge can go ahead.Token
1 operationCreate a token
token.createWhat you see in n8n
Notes & use cases
Turns card data into a token, so the card itself is never stored on your side. That token is what Add a customer card expects afterwards.
Key parameters
- Type: the list holds one entry, Card Token.
- Card Number, CVC, Expiration Month and Expiration Year: the card fields, none of them required by the node, filled from whatever collected them. The placeholders show the expected shape,
4242424242424242for the number and314for the security code printed on the back.
Need help automating Stripe with n8n?
A person reads every message.


