Revenue Operations 13 min read

How to Connect HubSpot to Stripe: Integration Methods, Data Sync, and RevOps Pitfalls

A technical guide to connecting HubSpot and Stripe — native payment processor, Data Sync app, Zapier, Fivetran, and Coupler.io — with a comparison table and common pitfalls.

Siddharth Gangal

HubSpot and Stripe are two of the most widely deployed tools in SaaS revenue stacks. HubSpot owns the CRM and pipeline layer; Stripe owns billing, subscriptions, and payment processing. The problem is that without an explicit integration, they share nothing — your sales team closes deals in HubSpot with no visibility into subscription status or payment history, and your finance team in Stripe has no connection to the CRM records that created those customers in the first place.

This guide covers every major method to connect HubSpot to Stripe, what data actually moves between them, which approach fits which use case, and the specific pitfalls that cause RevOps teams to rebuild these integrations six months after launch.

Understanding the Two Fundamentally Different Integration Models

Before choosing a tool, you need to understand that "HubSpot-Stripe integration" describes two structurally different configurations. Which one you need depends on where your source of truth for billing lives.

Model 1: Stripe as a Payment Processor for HubSpot Commerce

In this model, HubSpot's Commerce Hub becomes the operating layer for subscriptions, invoices, quotes, and payment links. Stripe functions purely as the payment gateway — it processes the transaction but HubSpot owns the subscription lifecycle, the data model, and the reporting. HubSpot pushes payment requests to Stripe; Stripe returns payment confirmations and syncs transaction metadata back.

This is the right model if you want HubSpot to be the single source of truth for revenue operations — deals, subscriptions, invoices, and payments all visible in the CRM without switching contexts. It requires migrating your billing operations into HubSpot Commerce Hub, which is a non-trivial change if you already have a mature Stripe billing setup.

Model 2: Stripe as the Billing System of Record, HubSpot as the CRM

In this model, Stripe owns billing. HubSpot needs visibility into what's happening in Stripe — subscription status, MRR, payment events, invoice history — without you rearchitecting your billing layer. The integration pushes Stripe data into HubSpot objects so sales and CS teams have revenue context inside the CRM.

This is the right model for most SaaS companies that built their billing in Stripe first and now want CRM-level visibility into subscription health without a full platform migration.

The methods below cover both models. The native HubSpot payment processor integration addresses Model 1. The Stripe Data Sync app, Zapier, Fivetran, and Coupler.io all address Model 2.

Method 1: Native HubSpot Stripe Payment Processor

HubSpot's native connection uses Stripe as a payment gateway while HubSpot manages the commerce layer. This is available on HubSpot Starter, Professional, and Enterprise plans.

Requirements

  • Super Admin permissions in HubSpot
  • An active Stripe account with business details registered
  • One-to-one mapping: a single Stripe account can connect to only one HubSpot account, and vice versa
  • US-based business (HubSpot Payments and Stripe payment processing have geographic restrictions)

Setup Steps

  1. In HubSpot, navigate to Commerce > Payments and click Set up payments.
  2. Select Integrate with a Stripe payment processing account and click Next.
  3. You will be redirected to Stripe's OAuth flow. Log in with the email associated with your Stripe account and complete two-factor authentication.
  4. If your Stripe account has multiple businesses registered, select the correct entity and click Connect.
  5. Return to HubSpot and confirm the connection under Commerce > Payments settings.
  6. Configure payout schedules, accepted payment methods (card, ACH bank debit, offline), and invoice numbering under the Payment settings panel.

What Data Syncs

  • Payment transaction data (gross amount, Stripe processing fees, net payout) appears in HubSpot after each transaction
  • HubSpot subscriptions, invoices, payment links, and quotes can all use Stripe as the payment processor
  • Subscription status and renewal dates are managed in HubSpot and reflected in Stripe as charges

What Does Not Sync

  • Existing Stripe transaction history does not backfill into HubSpot — only new transactions after connection are visible
  • Stripe subscriptions created directly in Stripe (not through HubSpot) are not automatically mirrored as HubSpot subscriptions
  • Usage-based billing, metered subscriptions, and complex discount stacks from Stripe Billing cannot be migrated

Method 2: HubSpot Stripe Data Sync App

The Stripe Data Sync app (available in the HubSpot App Marketplace) is the preferred method when Stripe remains your billing system and you want Stripe data surfaced inside HubSpot CRM records. This is a pull-based sync — it reads from Stripe and writes to HubSpot native objects.

What It Syncs

  • Stripe Customers map to HubSpot Contacts
  • Stripe Charges and Invoices appear as HubSpot Payment records
  • Subscription status and renewal dates populate on associated Contact and Company records
  • Basic invoice line items are available for reporting

Setup Steps

  1. Go to the HubSpot App Marketplace and search for Stripe Data Sync. Install the app.
  2. In the app settings, connect your Stripe account using the OAuth authorization flow.
  3. Configure sync rules: map Stripe customer email to HubSpot contact email for record matching. This is the most critical configuration step — mismatches here cause orphaned records.
  4. Set your sync frequency (near real-time event-based sync is the default for payment events).
  5. Choose whether to sync historical data or start from the connection date. Historical sync is available but can take several hours for large Stripe accounts.
  6. Review deduplication settings. HubSpot will attempt to match Stripe customers to existing contacts by email before creating new records.

Important Limitations

  • The Data Sync app cannot connect to a Stripe test/sandbox account — it requires a production Stripe instance, even when installing in a HubSpot sandbox
  • Advanced subscription analytics (MRR change type, upgrade vs. downgrade vs. churn classification) are not surfaced natively — they require custom properties or downstream processing
  • Prorations, mid-cycle plan changes, and complex discounts often create unreliable MRR figures without additional configuration

Method 3: Zapier

Zapier is the lowest-friction option for teams that need targeted, event-driven automation between HubSpot and Stripe without committing to a data pipeline. It works on a trigger-action model: a specific event in one platform fires an action in the other.

Most Useful Zap Templates

  • New Stripe customer → Create or update HubSpot contact: Keeps CRM records current when customers sign up directly through Stripe checkout
  • Stripe payment succeeded → Update HubSpot deal stage: Moves deals to Closed Won when payment is collected, useful for self-serve flows where no sales rep is involved
  • Stripe subscription canceled → Create HubSpot task for CS: Triggers an action item for customer success immediately on churn
  • HubSpot deal closed won → Create Stripe customer and subscription: Automates provisioning after a sales-assisted close
  • Stripe invoice payment failed → Create HubSpot task and update contact property: Routes dunning workflows into the CRM

Setup Steps

  1. Create a Zapier account if you don't have one. Connect both HubSpot and Stripe as apps under My Apps.
  2. Click Create Zap. Select your trigger app (e.g., Stripe) and the trigger event (e.g., Payment Intent Succeeded).
  3. Authenticate with Stripe and test the trigger to pull a sample event payload.
  4. Add the action step — select HubSpot and choose the action (e.g., Create or Update Contact).
  5. Map Stripe fields to HubSpot properties. For deal-to-payment flows, map the Stripe customer ID to a custom HubSpot contact property so you can cross-reference records later.
  6. Use the Zapier metadata field in Stripe to pass the HubSpot deal ID back to Stripe for bidirectional reference without writing custom code.
  7. Test the Zap with a real or test event, review the output record in HubSpot, and turn it on.

Zapier Limitations

  • Task-based pricing means high-volume Stripe accounts generate significant Zapier costs
  • No bulk historical sync — Zapier only processes events from the moment a Zap is active
  • Complex multi-step logic (e.g., "if MRR increased and deal stage is Renewal, update forecast") requires paid Zapier plans and multi-step Zaps that become hard to maintain
  • Error handling is limited — failed Zaps require manual review and replay

Method 4: Fivetran

Fivetran is a managed ELT pipeline tool. It extracts Stripe and HubSpot data into a central data warehouse (Snowflake, BigQuery, Redshift, etc.) rather than syncing directly between the two platforms. This is the right approach for analytics use cases — building MRR dashboards, cohort retention analysis, or LTV models that require joining Stripe billing data with HubSpot pipeline data.

Fivetran does not write data back to HubSpot or Stripe. It is read-only on both sides. Use it when your goal is analytical reporting in a BI tool, not operational sync between the two platforms.

Setup Steps (High Level)

  1. Connect a Stripe source connector in Fivetran. Fivetran extracts customers, subscriptions, charges, invoices, refunds, and events into normalized warehouse tables.
  2. Connect a HubSpot source connector. Fivetran extracts contacts, companies, deals, engagements, and properties.
  3. In your data warehouse, join the two datasets on shared keys — typically email address or a custom ID you maintain in both systems.
  4. Build views or dbt models that calculate MRR, churn, and pipeline attribution from the combined dataset.
  5. Connect your BI tool (Looker, Metabase, Tableau) to those models for reporting.

When to Use Fivetran

Fivetran is appropriate when your revenue analytics need to go beyond what HubSpot's native reporting can support — particularly for subscription cohort analysis, MRR waterfall charts, and pipeline-to-revenue attribution that requires joining Stripe financial data with CRM deal history at a row level.

Method 5: Coupler.io

Coupler.io sits between Zapier and Fivetran in terms of complexity. It offers scheduled data exports from both HubSpot and Stripe into Google Sheets, Looker Studio, or data warehouses, with a no-code interface. It is primarily useful for recurring reporting workflows where you want fresh Stripe and HubSpot data in a spreadsheet or dashboard without building a full warehouse pipeline.

Like Fivetran, Coupler.io is read-only and analytics-oriented — it does not write back to either platform. Its advantage is lower cost and simpler setup for teams that live in Google Sheets. Its limitation is that sync frequency (often hourly or daily) makes it unsuitable for operational use cases where real-time event response matters.

Comparison Table

Method Best For Bidirectional Real-Time Historical Sync Complexity Approx. Cost
Native Payment Processor HubSpot as commerce source of truth Yes (payment confirmations) Yes No (new transactions only) Low Included with HubSpot plan
Stripe Data Sync App Stripe as billing source, HubSpot needs visibility No (Stripe → HubSpot only) Yes (event-based) Yes Low-Medium Free (marketplace app)
Zapier Targeted event-driven automation Yes (configurable) Yes No Low-Medium $20–$100+/mo depending on task volume
Fivetran Analytics, BI, data warehouse reporting No (read-only to warehouse) Near real-time to warehouse Yes (full history) High $500+/mo depending on MAR
Coupler.io Scheduled reporting, Google Sheets dashboards No (read-only) No (scheduled, min hourly) Yes Low $49–$249/mo
Hotglue Embedded integrations built into SaaS products Yes (configurable) Yes Yes High (developer required) Custom / usage-based

Key Use Cases

Deal-to-Payment Automation

The most common RevOps use case: a rep closes a deal in HubSpot, which should automatically trigger subscription creation in Stripe and move the deal to Closed Won once payment is confirmed. The clean version of this flow uses either the native payment processor (where HubSpot sends the invoice directly through Stripe) or a Zapier multi-step Zap that fires on deal stage change, creates a Stripe customer, and attaches a subscription.

The data you need to pass from HubSpot to Stripe: contact email, company name, plan/product ID (map HubSpot product line items to Stripe price IDs), billing cycle, and any applicable discount codes. Storing the Stripe customer ID back in a HubSpot custom contact property is essential for any downstream cross-referencing.

MRR and Subscription Data Visible in HubSpot

Sales and CS teams frequently need current subscription status, MRR, and renewal date visible on the HubSpot contact or company record without switching to Stripe. The Stripe Data Sync app handles this for most cases by syncing subscription and invoice objects into HubSpot.

For MRR specifically, note that the Data Sync app does not calculate MRR — it syncs invoice amounts and subscription interval data. To display "Current MRR" as a calculated field on a HubSpot record, you need a custom HubSpot calculated property or a workflow that populates a numeric property based on subscription amount and billing interval.

Subscription Data in Open Deals for Renewal Forecasting

For accounts that renew annually, RevOps teams often want to auto-create a renewal deal in HubSpot 90 days before the Stripe subscription renews. This requires the Stripe subscription renewal date to be visible in HubSpot and a HubSpot workflow that creates the deal when the renewal date is within the trigger threshold. The Stripe Data Sync app provides the renewal date field; the workflow does the rest.

Churn Detection and CS Escalation

Stripe fires a customer.subscription.deleted event when a subscription cancels. Using Zapier or a custom webhook, this event can create a HubSpot task, update a contact lifecycle stage, or notify a Slack channel — triggering a save attempt before the customer is fully lost.

Common Pitfalls

Email Mismatches Create Orphaned Records

This is the most common failure mode in any Stripe-HubSpot sync. When a Stripe customer's email does not match any existing HubSpot contact email, the sync creates a new contact instead of enriching the existing record. You end up with duplicate contacts — one with deal history, one with payment history — and no link between them.

Prevention: Before activating any sync, audit your Stripe customers against HubSpot contacts by email. Identify mismatches (e.g., a personal email in Stripe, a work email in HubSpot for the same person). Configure deduplication rules and resolve conflicts manually before enabling historical sync.

MRR Figures Are Unreliable Without Custom Configuration

Prorations, mid-cycle upgrades, refunds, and multi-currency billing all produce invoice amounts in Stripe that do not cleanly equal recurring MRR. If you pull invoice totals into HubSpot and label them "MRR," you will report incorrect numbers. Proration invoices in particular generate one-time charges that inflate the apparent MRR for a given month.

Prevention: Never use raw invoice amounts as MRR. Calculate MRR from subscription interval and plan amount fields, not from invoice totals. If you need accurate MRR in HubSpot, either compute it in a data warehouse and push it back via the HubSpot API, or use a purpose-built subscription analytics tool.

HubSpot Deals Are Not Built for Subscription Lifecycles

A HubSpot deal is designed to represent a single pipeline event with a close date. Recurring subscriptions — with upgrades, downgrades, pauses, and renewals — don't map cleanly to a single deal. Teams that try to track subscription MRR changes through deal amount updates end up with deal histories that are difficult to interpret and pipeline reports that double-count revenue.

Prevention: Use deals for sales motion events (initial close, renewal close, upsell close) and use HubSpot's native subscription object or custom objects for the ongoing subscription record. Keep deal amount static at the ACV of the initial close, not the rolling MRR.

One-to-One Account Constraint

Each Stripe account can connect to exactly one HubSpot portal, and each HubSpot portal can connect to one Stripe account. If your company has multiple Stripe accounts (e.g., one per product line or entity), you cannot connect them all to a single HubSpot portal natively. This is a hard architectural constraint that often surprises teams running multi-entity or multi-product revenue stacks.

No Sandbox Testing for Data Sync

The HubSpot Stripe Data Sync app requires a production Stripe account — it does not work with Stripe test mode. This means you cannot fully QA the integration in a safe environment before it touches live customer data. Build your testing plan accordingly: use a small cohort of real customers for initial validation, or use Zapier (which does support Stripe test mode) for pre-production testing of your event logic.

Commerce Hub Does Not Import Transaction History

If you switch from Stripe-as-billing-system to HubSpot-Commerce-Hub-with-Stripe-as-processor, HubSpot does not import your historical Stripe payment records. Your revenue history in HubSpot starts at the connection date. For companies with multiple years of Stripe history, this is a significant reporting gap that requires a separate data migration or warehouse-based historical reporting layer.

Which Method Should You Use?

For most SaaS RevOps teams, the decision tree looks like this:

  • You want HubSpot to own billing going forward and are willing to migrate subscriptions: use the native payment processor integration with HubSpot Commerce Hub.
  • Stripe is and will remain your billing system, and you need sales/CS to see subscription data in HubSpot: start with the Stripe Data Sync app. It is free and handles the most common operational sync needs.
  • You need specific event-driven automations (deal-to-subscription, churn-to-task, payment-failed-to-dunning workflow) that the Data Sync app doesn't handle: layer Zapier on top of the Data Sync app for the automations you need.
  • You need accurate MRR analytics, cohort analysis, or LTV models that join HubSpot and Stripe data: invest in Fivetran (or an equivalent ELT pipeline) and a data warehouse. Neither HubSpot nor Zapier will give you analytically reliable subscription metrics at scale.
  • You are building a SaaS product that needs to offer HubSpot-Stripe sync to your own customers: evaluate Hotglue for embedded integration capabilities rather than building on top of the public APIs yourself.

FAQ

Does HubSpot have a native Stripe integration?

Yes — HubSpot offers two native integration paths. The first uses Stripe as a payment processor for HubSpot's Commerce Hub, where HubSpot manages the subscription and billing lifecycle while Stripe handles payment processing. The second is the Stripe Data Sync app, available in the HubSpot App Marketplace, which pulls Stripe customer, subscription, and invoice data into native HubSpot objects. Both are built and supported by HubSpot without requiring third-party middleware.

Does the HubSpot-Stripe integration sync bidirectionally?

Partially. The native payment processor integration is bidirectional for transactions — HubSpot sends payment requests to Stripe, and Stripe sends payment confirmations back. The Stripe Data Sync app is unidirectional: it pulls Stripe data into HubSpot but does not write HubSpot data back to Stripe. Zapier can be configured bidirectionally but requires separate Zaps for each direction and is event-driven rather than a continuous sync.

How do I see Stripe subscription data on HubSpot contact records?

Install the Stripe Data Sync app from the HubSpot Marketplace and configure it to match Stripe customers to HubSpot contacts by email. Once active, subscription status, renewal date, and payment records from Stripe will appear on associated contact and company records. For properties not synced natively (such as calculated MRR), you will need to create custom HubSpot contact properties and populate them via workflows or the HubSpot API.

Can I use Stripe test mode to test the HubSpot integration?

Not with the native Stripe Data Sync app — it requires a production Stripe account. Zapier's Stripe connector does support test mode, which makes it useful for QA testing event-based automations before activating them against live customer data. If you need to test the Data Sync app, use a small subset of real Stripe customers with a HubSpot sandbox that has been pre-approved for production Stripe connections.

Will historical Stripe data appear in HubSpot after I connect?

It depends on the method. The Stripe Data Sync app offers historical sync — it can import your existing Stripe customers, subscriptions, and invoices into HubSpot when you first connect. The native HubSpot payment processor integration does not backfill historical Stripe transactions; it only captures new transactions processed through HubSpot from the connection date forward. Zapier only processes events from the moment a Zap is turned on — no historical backfill.

What causes duplicate contacts when syncing Stripe to HubSpot?

Duplicates occur when a Stripe customer's email address does not match any existing HubSpot contact record. The sync creates a new contact rather than enriching an existing one. Common causes include customers using a personal email in Stripe and a work email in HubSpot, email address changes over time, and domain-level mismatches (e.g., firstname@company.com vs. firstname.lastname@company.com). The fix is to audit and resolve email mismatches before enabling sync, and to configure HubSpot's deduplication workflow to merge records on a regular schedule afterward.

How do I calculate MRR in HubSpot from Stripe data?

Do not use raw invoice amounts to calculate MRR — proration charges, refunds, and one-time fees will corrupt the figure. The reliable approach is to use subscription plan amount and billing interval from Stripe to derive monthly-equivalent MRR: for annual plans, divide the annual amount by 12; for monthly plans, use the plan amount directly. Create a custom HubSpot numeric property for "Current MRR" and populate it via a HubSpot workflow triggered by subscription sync events, or push the calculated value from a data warehouse via the HubSpot Contacts API. For revenue analytics at scale, MRR calculations belong in a data warehouse where you can apply consistent business logic across all edge cases.