Resources · n8n integration

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

Why automate

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.

Connect

How do you connect Stripe to n8n?

  1. 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.

  2. 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 and sk_test_ in test mode. Publishable keys prefixed pk_ do not belong here, and restricted keys prefixed rk_ have not been tested. Once saved, it shows up in the dropdown of both Stripe nodes.

  3. 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.

Triggers

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.*17
  • customer.
    • created
    • deleted
    • updated
  • customer.discount.
    • created
    • deleted
    • updated
  • customer.source.
    • created
    • deleted
    • expiring
    • updated
  • customer.subscription.
    • created
    • deleted
    • trial_will_end
    • updated
  • customer.tax_id.
    • created
    • deleted
    • updated
charge.*13
  • charge.
    • captured
    • expired
    • failed
    • pending
    • refunded
    • succeeded
    • updated
  • charge.dispute.
    • closed
    • created
    • funds_reinstated
    • funds_withdrawn
    • updated
  • charge.refund.
    • updated
invoice.*12
  • invoice.
    • created
    • deleted
    • finalized
    • marked_uncollectible
    • paid
    • payment_action_required
    • payment_failed
    • payment_succeeded
    • sent
    • upcoming
    • updated
    • voided
source.*7
  • source.
    • canceled
    • chargeable
    • failed
    • mandate_notification
    • refund_attributes_required
  • source.transaction.
    • created
    • updated
subscription_schedule.*7
  • subscription_schedule.
    • aborted
    • canceled
    • completed
    • created
    • expiring
    • released
    • updated
account.*6
  • account.
    • updated
  • account.application.
    • authorized
    • deauthorized
  • account.external_account.
    • created
    • deleted
    • updated
payment_intent.*6
  • payment_intent.
    • amount_capturable_updated
    • canceled
    • created
    • payment_failed
    • succeeded
    • requires_action
payout.*5
  • payout.
    • canceled
    • created
    • failed
    • paid
    • updated
topup.*5
  • topup.
    • canceled
    • created
    • failed
    • reversed
    • succeeded
transfer.*5
  • transfer.
    • created
    • failed
    • paid
    • reversed
    • updated
order.*4
  • order.
    • created
    • payment_failed
    • payment_succeeded
    • updated
payment_method.*4
  • payment_method.
    • attached
    • card_automatically_updated
    • detached
    • updated
setup_intent.*4
  • setup_intent.
    • canceled
    • created
    • setup_failed
    • succeeded
application_fee.*3
  • application_fee.
    • created
    • refunded
  • application_fee.refund.
    • updated
coupon.*3
  • coupon.
    • created
    • deleted
    • updated
credit_note.*3
  • credit_note.
    • created
    • updated
    • voided
invoiceitem.*3
  • invoiceitem.
    • created
    • deleted
    • updated
issuing_authorization.*3
  • issuing_authorization.
    • created
    • request
    • updated
person.*3
  • person.
    • created
    • deleted
    • updated
plan.*3
  • plan.
    • created
    • deleted
    • updated
product.*3
  • product.
    • created
    • deleted
    • updated
recipient.*3
  • recipient.
    • created
    • deleted
    • updated
reporting.*3
  • reporting.report_run.
    • failed
    • succeeded
  • reporting.report_type.
    • updated
sku.*3
  • sku.
    • created
    • deleted
    • updated
issuing_card.*2
  • issuing_card.
    • created
    • updated
issuing_cardholder.*2
  • issuing_cardholder.
    • created
    • updated
issuing_dispute.*2
  • issuing_dispute.
    • created
    • updated
issuing_settlement.*2
  • issuing_settlement.
    • created
    • updated
issuing_transaction.*2
  • issuing_transaction.
    • created
    • updated
radar.*2
  • radar.early_fraud_warning.
    • created
    • updated
review.*2
  • review.
    • closed
    • opened
tax_rate.*2
  • tax_rate.
    • created
    • updated
balance.*1
  • balance.
    • available
capability.*1
  • capability.
    • updated
checkout.*1
  • checkout.session.
    • completed
file.*1
  • file.
    • created
invoice_payment.*1
  • invoice_payment.
    • paid
order_return.*1
  • order_return.
    • created
sigma.*1
  • sigma.scheduled_query_run.
    • created

The trigger also accepts * (any event). Handy for logging, dangerous in production.

Configuration notes

01Configure the Stripe TriggerThis 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.

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.
When to use it
subscribe to the events the workflow can really act on, run it once, and read the payload before wiring the rest.
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.

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.

When to use it
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.
Use cases
a dunning sequence that opens on the failed payment, closes itself on 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.

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.

When to use it
disputes deserve their own branch. 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.
Use cases
a payment log fed by 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.

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.

When to use it
subscriptions live here rather than in a family of their own. 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.
Use cases
a churn alert on the deleted subscription, and a card renewal reminder built on the expiring source, which leaves a full month to react instead of a failed charge.
Actions

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.

Resources × operations matrix
ResourceCreateGetGet ManyUpdateDeleteAddRemove
Balance✓
Charge✓✓✓✓
Coupon✓✓
Customer✓✓✓✓✓
Customer Card✓✓✓
Meter Event✓
Source✓✓✓
Token✓

Balance

1 operation
01

Get a balance

balance.get

What 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.

Use cases
a scheduled workflow checks the balance every morning and posts the available amount where the finance team already tracks cash, so nobody opens a dashboard for one number.

Charge

4 operations
02

Create a charge

charge.create

What 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 100 stands for one dollar.
  • Currency Name or ID: a three letter ISO code such as USD or EUR, chosen from the list or written as an expression.
  • Source ID: the payment source of that customer to debit.
Use cases
billing a returning buyer on a card already on file, with Description and Receipt Email set under Additional Fields so the receipt reads clearly.
03

Get a charge

charge.get

What 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.
Use cases
a support workflow receives a ticket carrying a payment reference, pulls the charge, and shows the agent whether it succeeded, failed or came back as a refund.
04

Get many charges

charge.getAll

What 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.
Use cases
an end of month export that gathers the charges of the period and hands them to accounting. Return All matters here, since a half list makes the reconciliation wrong without ever failing.
05

Update a charge

charge.update

What 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.
Use cases
stamping an internal order reference onto the charge right after it succeeds, so the payment can be traced from the accounting side months later.

Coupon

2 operations
06

Create a coupon

coupon.create

What 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.
Use cases
a workflow mints a coupon the moment support acknowledges a billing problem, and the agent only has to attach it.
07

Get many coupons

coupon.getAll

What 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.
Use cases
a weekly audit that lists the coupons and flags the ones set to Forever, so an old promotion stops quietly discounting new invoices.

Customer

5 operations
08

Create a customer

customer.create

What 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.
Use cases
a signup form creates the Stripe customer immediately, so the first charge weeks later already has an identifier to point at.
09

Delete a customer

customer.delete

What 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.
Use cases
an account closure request coming from a data deletion process, executed once the last invoice has settled.
10

Get a customer

customer.get

What 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 }}.
Use cases
after a payment event, the workflow needs a name and an address to write anything readable, and only the customer record holds them.
11

Get many customers

customer.getAll

What 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.
Use cases
a deduplication run that compares the Stripe customer list with the CRM and reports the addresses living on one side only.
12

Update a customer

customer.update

What 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.
Use cases
a billing address edited in the CRM travels to Stripe the same minute, so the next invoice carries the right one.

Customer Card

3 operations
13

Add a customer card

customerCard.add

What 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.
Use cases
an onboarding flow collects a payment method, tokenizes it, then attaches it so later charges can name a source instead of asking the buyer again.
14

Get a customer card

customerCard.get

What 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.
Use cases
a renewal check that reads the card once the trigger has announced its end of life with customer.source.expiring, before anything is charged on it.
15

Remove a customer card

customerCard.remove

What 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.
Use cases
a cleanup step at the end of a dunning sequence that drops the card which kept declining, so the next attempt does not hit the same wall.

Meter Event

1 operation
16

Create a meter event

meterEvent.create

What 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.
Use cases
an API gateway workflow reporting the calls each account consumed at the close of the day.

Source

3 operations
17

Create a source

source.create

What 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.
Use cases
a shop selling to buyers who pay with WeChat prepares the source, then waits for source.chargeable before charging anything.
18

Delete a source

source.delete

What 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.
Use cases
housekeeping after source.canceled or source.failed, so the customer record stops offering a payment method that no longer works.
19

Get a source

source.get

What 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.
Use cases
a workflow woken by source.chargeable reads the source to confirm its state, then decides whether the charge can go ahead.

Token

1 operation
20

Create a token

token.create

What 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, 4242424242424242 for the number and 314 for the security code printed on the back.
Use cases
a custom checkout posts the card fields to n8n, the workflow tokenizes them and attaches the result to the right customer.
Need help

Need help automating Stripe with n8n?

A person reads every message.

FAQ

Stripe and n8n: frequent questions

01Is the Stripe n8n integration free?
Yes. The Stripe node and the Stripe Trigger node ship with n8n, so there is nothing to install and nothing extra to pay on the n8n side, whether the workflow runs on n8n Cloud or on a self hosted instance under the Community Edition and its Sustainable Use license. A workflow behaves the same way in both places. What Stripe charges for processing payments is a separate matter and sits in your own Stripe agreement. On the n8n side the only setup cost is the credential, and you build it once in the Credentials menu, then pick it in every workflow that touches the account.
02What credentials does the Stripe node need?
A Stripe Secret key, created from the developer dashboard under API Keys, in the Standard Keys section. Name the key, copy it, then paste it into the Secret Key field of the n8n credential. Secret keys always begin with sk_, and more precisely sk_live_ in live mode and sk_test_ in test mode. Generating one needs a Stripe admin or developer account. Publishable keys, prefixed pk_, do not work here, and n8n has not tested restricted keys prefixed rk_. The same credential also holds the Signature Secret used by the trigger, the value starting with whsec_ that Stripe shows on the webhook endpoint.
03What are the limits of the Stripe node in n8n?
The node covers 8 resources and 20 operations, which is narrower than the API itself. Subscriptions, refunds, payouts, payment intents and products have events in the trigger but no matching operation in the node, so acting on them goes through the HTTP Request node, with the Stripe credential selected as predefined authentication. On the read side, the listing operations return one page unless Return All is switched on, and Limit caps the result while it is off. Test mode and live mode are separate worlds too: an object created in one is not visible from the other, so a test customer is never found by a live key.
04Does the Stripe Trigger react in real time?
Yes. The trigger runs on a webhook rather than on polling. When the workflow is published, n8n creates the endpoint in the Stripe account and Stripe calls that URL, so an event reaches the workflow within seconds. Nothing is checked on a schedule, and nothing is lost between two checks. Set a Signature Secret on the credential to keep it safe: the node then reads the Stripe-Signature header and answers 401 Unauthorized to any request that is unsigned, forged or more than five minutes old, without running the workflow. Request verification is available from n8n 2.25.7 and n8n 2.26.2.
05n8n or Make for Stripe?
It depends on where the workflow should live. Make is hosted by Make, has no self hosting option and is billed per operation, which stays predictable at small volume and less so for a Stripe account that emits events all day. n8n runs on n8n Cloud or on your own server, so payment payloads stay where you decide, and the bill does not follow the number of charges. Both draw the same kind of visual flow, so the split is honest: Make for a quick assembly with no infrastructure to run, n8n when data location, the cost model or a fallback to HTTP Request is what decides.