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 an ordered run you can trace back to the Stripe event.

Mostly Stripe to Salesforce
Direction
Real-time on event
Latency
invoice.paid, invoice.payment_failed
Common trigger
Template, 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 an ordered run log, so a wrong MRR number can be traced to the exact 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

Triggered on the Stripe event, idempotent on the invoice ID plus attempt count.

  1. 1Trigger: Stripe Event received for invoice.payment_failed, carrying customer, subscription, amount_due, attempt_count, and next_payment_attempt.
  2. 2Resolve: 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. 3Idempotency: 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. 4Case: Salesforce Create 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. 5Account update: set Payment_Status__c to "Past due" and Dunning_Stage__c to the attempt count.
  6. 6Recovery: 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.

  • Ordered run log. Every update is an event log with the Stripe event, the record it resolved to, and the fields it changed. Replay a run without re-sending downstream side effects.
  • Approval steps. Creating a Stripe customer or subscription from Salesforce pauses for a named approver, 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 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 real-time or batched?

Real-time. 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 run fails and retries with backoff. The Stripe event is stored, so nothing is lost, and the run log shows exactly which events are pending.

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 always runs behind an approval step.

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 log, 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 on this page

Stripe

Payments

Operations
589
Typed outputs
99.7%
Change triggers
10 (webhook)
Authentication
Bearer

Salesforce

CRM

Operations
1,296
Typed outputs
57.9%
Change triggers
95 (poll)
Authentication
OAuth2
See it on your data

Bring one real integration

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