Integration

Connect Stripe to Salesforce

Put the billing signal where the account team can see it. Subscriptions, payments, and failed charges from Stripe land on the Salesforce account and opportunity, MRR stays current on the account, and a failed payment opens a case for CS before the customer churns. Every update is a run you can trace back to the Stripe event.
Mostly Stripe to Salesforce
Direction
As each Stripe event arrives
Latency
invoice.paid, invoice.payment_failed
Common trigger
Build the flow, then map the custom fields
Setup

Why teams connect Stripe and Salesforce

Sales and CS work in Salesforce. Billing lives in Stripe. Without a link, an AE does not know a renewal already paid, CS finds out about a failed card from an angry email, and the "MRR" field on the account is whatever someone last typed in.

  • The account carries a live subscription status, plan, and MRR from Stripe, so the AE opens a renewal already knowing where it stands
  • A failed payment opens a case routed to the CS queue with the dunning stage and the invoice link, days before a cancellation
  • A closed-won opportunity can create the Stripe customer and subscription, so there is no rekeying and the IDs match from day one
  • Every update is a run you can inspect, so a wrong MRR number can be traced to the Stripe event that set it

Worked example

The retention flow most teams turn on first.

A failed Stripe invoice opens a Salesforce case and updates the account

Started by the Stripe event, safe to repeat on the invoice ID plus attempt count.

  1. Trigger: a Webhook trigger with Auto Register With Stripe for invoice.payment_failed, carrying customer, subscription, amount_due, attempt_count, and next_payment_attempt.
  2. Resolve: find the Salesforce Account by Stripe_Customer_Id__c equal to the Stripe customer. If none, match on billing email and set the ID.
  3. Idempotency: look for an open Case with Stripe_Invoice_Id__c equal to this invoice. If one exists, add a comment with the new attempt count instead of a second case.
  4. Case: create a Salesforce Case, record type "Billing", subject "Payment failed for {plan}", priority by amount_due, linked to the Account and the Contact who is the billing owner.
  5. Account update: set Payment_Status__c to "Past due" and Dunning_Stage__c to the attempt count.
  6. Recovery: a later invoice.paid for the same invoice closes the Case as "Resolved" and sets Payment_Status__c back to "Current".

Field mapping

The starting map for the Stripe subscription to Salesforce Account step.

StripeSalesforceNotes
customer.idAccount.Stripe_Customer_Id__cMatch key. External ID, unique. Set on first sync if only the email matched.
subscription.idAccount.Stripe_Subscription_Id__cThe primary subscription. A multi-subscription account uses a child object instead.
subscription.statusAccount.Subscription_Status__cPicklist. Map trialing, active, past_due, canceled, unpaid explicitly; an unknown value goes to review.
sum(items.price.unit_amount * quantity) / 100Account.MRR__cCurrency gotcha: Stripe is integer minor units. Divide by 100, and normalize annual plans to a monthly figure.
subscription.current_period_endAccount.Renewal_Date__cUnix timestamp to Salesforce Date. Drives renewal reporting.
subscription.items[].price.nicknameAccount.Plan__cOverride: if price nicknames are not maintained in Stripe, map by price.id through a lookup table instead.
customer.currencyAccount.Currency__cUsed to label MRR. Does not convert; reporting rolls up in the Salesforce corporate currency.
invoice.hosted_invoice_urlCase.Stripe_Invoice_Link__cOn billing cases only, so CS can send the customer a pay link.

What syncs, each direction

  • Subscription and MRR. Status, plan, quantity, renewal date, and MRR on the account, updated on every subscription change. (Stripe to Salesforce)
  • Payments and dunning. Paid invoices update payment status. Failed invoices open or update a CS case with the dunning stage. (Stripe to Salesforce)
  • New customer from closed-won. A closed-won opportunity creates the Stripe customer and subscription from the quote lines, with an approval step first. (Salesforce to Stripe)
  • Contact and billing details. Billing email, company name, and address stay aligned, with Salesforce as source of truth for the company record. (Either direction)

Governance and audit

The same controls apply to this sync as to every other Neblex workload.

  • Run history. Every update is a run with the Stripe event, the record it resolved to, and the fields it changed. A failed run can be replayed from the step that failed; steps that already succeeded are not repeated.
  • Approval steps. Creating a Stripe customer or subscription from Salesforce waits for a named approver in a Wait for form step, so a mis-scoped deal never bills a customer.
  • Scoped access. Stripe uses a restricted key with read on customers, subscriptions, and invoices, and write only on webhook endpoints and where the create-from-CRM flow needs it. Salesforce uses a connected app limited to the objects in the map.
  • Environments. Build against Stripe test mode and a Salesforce sandbox, then promote the same flow to production.

Frequently asked questions

Is this immediate or batched?

Immediate. It runs on the Stripe event webhook, so an account's status changes within seconds of the payment or subscription change.

How does it avoid duplicate accounts?

It resolves on the Stripe customer ID stored as an external ID on the account. The first time, when only the email matches, it writes the ID back so every later event matches directly.

What happens if Salesforce is down when an event arrives?

The Salesforce step fails. With Retry on failure turned on, it tries again with backoff. If it still fails, the run is marked failed with the error, and it can be replayed from that step while its data is kept, which is a number of hours.

Does it write anything back to Stripe by default?

No. Write-back to Stripe is off unless you turn on the create-customer-from-closed-won flow, which you set up with an approval step in front of it.

How is this different from the Stripe Connector for Salesforce or a CPQ billing package?

Stripe's own connector and packages like those from Breadwinner or Chargent are good, focused products. Neblex fits when billing is one of many systems you are keeping in step and you want one run history, one set of governance controls, and the ability to branch the flow, for example routing dunning by segment or gating write-back.

Can it keep a full invoice history in Salesforce?

Yes, as a child object on the account, one record per Stripe invoice with amount, status, and the hosted link. It is off by default because many teams only want the summary on the account.

Connectors used

Stripe

Finance, Billing & Payments

Operations
589
Operations with typed output
99.7%
Change triggers
10 (webhook)
Signs in with
API token
Connector reference

Salesforce

CRM & Sales

Operations
1,296
Operations with typed output
57.9%
Change triggers
31 (poll)
Signs in with
OAuth 2.0 sign-in
Connector reference
See it on your data

Bring one real integration

We will build it with you against your own systems, with the run log open.