Skip to content
SolutionArg

Integrations

How to Connect Stripe to HubSpot for Quotes, Payments and Recurring Billing

Three ways to connect Stripe and HubSpot for quotes, one-time payments and recurring billing, with the plan requirements, fees and trade-offs of each.

By SolutionArg7 min read

TL;DR

  • There are three realistic ways to connect Stripe and HubSpot:
    1. Stripe as HubSpot's payment processor.
    2. A marketplace data sync app.
    3. A custom integration using Stripe Payment Links or Checkout and webhooks.
  • Option 1 is available on all HubSpot plans. It collects one-time and recurring payments for contracts, invoices, payment links, quotes, legacy quotes and subscriptions, and carries a 0.75% HubSpot platform fee plus other fees (HubSpot KB).
  • Creating and editing (non-legacy) quotes requires Revenue Hub and a Revenue Hub seat (HubSpot KB).
  • Go custom when your pricing logic, approval flow or post-payment process doesn't fit HubSpot's built-in tools.

The business problem

Sales closes a deal in HubSpot, finance chases the payment in Stripe, and nobody is sure which invoice belongs to which deal. Recurring customers get charged, but the CRM doesn't know whether the last payment failed. Reps re-type prices into quotes by hand.

Connecting the two systems is about one goal: the deal, the quote and the money should tell the same story. How you get there depends on how standard your selling process is.

Option 1 — Stripe as HubSpot's payment processor

This is HubSpot's native route. Once connected, you collect payments directly from HubSpot's revenue tools.

What you get (HubSpot KB):

  • One-time and recurring payments for contracts, invoices, payment links, quotes, legacy quotes and subscriptions.
  • Payment data such as gross amount and fees synced with your Stripe account.
  • Your existing Stripe integrations outside HubSpot keep working unchanged.

What to know before you switch it on (same source):

  • There is a 0.75% platform fee for using Stripe through HubSpot, on top of other fees.
  • One Stripe account ↔ one HubSpot account. You can't connect several Stripe accounts to one portal, and if you use Brands, all brands share the connected account.
  • HubSpot payments and Stripe can't both be connected.
  • You can't connect Stripe payment processing to sandbox, developer test or partner demo accounts.
  • Invoices and subscriptions created in HubSpot won't be created in Stripe.
  • Stripe payment processing isn't available in some countries. HubSpot lists, among others, Brazil, India, Malaysia and South Africa.

Recurring billing runs through HubSpot subscriptions, which are available on all plans (HubSpot KB — subscriptions).

Best for: companies happy to run quoting, invoicing and recurring billing from HubSpot, with standard products and prices.

Option 2 — A data sync app

Stripe Data Sync is listed in the HubSpot App Marketplace (HubSpot Marketplace — Stripe Data Sync). A sync app is the right tool when Stripe stays your billing system and you mainly want Stripe data visible in the CRM. Check the listing for exactly which objects and directions it syncs before relying on it for reporting.

Best for: teams that bill in Stripe already and want visibility, not a new billing process.

Option 3 — A custom integration

You build the logic yourself. Typically that means Stripe Payment Links or Checkout for collecting money, Stripe webhooks to learn what happened, and the HubSpot API (or a workflow) to update deals, contacts or custom objects.

When I've built this

For golf courses, I built a quote generator inside HubSpot integrated with Stripe:

  • users create personalised quotes and receive secure Stripe payment links;
  • synchronised email sequences handle the follow-up;
  • after 30 days, recurring debits run automatically based on the initial Stripe payment information;
  • all booking and payment information is stored in HubSpot.

The "first payment now, recurring debits later" timing didn't fit an off-the-shelf flow, so custom was the sensible choice.

On another project (an e-commerce brand), I connected Shopify, Make and payments with real-time sync and post-purchase workflows in HubSpot.

The building blocks (verified against Stripe's docs)

  • Payment Links. A Stripe-hosted payment page you can create without code in the Dashboard (Stripe Docs — Payment Links) or through the API with POST /v1/payment_links (Stripe API). Payment links support products or subscriptions.
  • Completion event. When a customer completes a payment through a payment link, Stripe sends a checkout.session.completed webhook. Payment methods such as bank debits or vouchers can take 2–14 days to confirm, so you also need to listen for the follow-up events (Stripe Docs — after the payment).
  • Saving a card for later. Checkout Sessions can let customers save their payment method by setting saved_payment_method_options[payment_method_save]=enabled (Stripe Docs — save during payment).
  • Subscriptions. When you create a subscription, Stripe automatically generates invoices, attempts payment collection and manages status changes (Stripe Docs — How subscriptions work). Subscription webhooks include invoice.paid, invoice.payment_failed and customer.subscription.created / updated / deleted (Stripe Docs — subscription webhooks).

Technical depth: making the sync reliable

Verify every webhook

Stripe signs each event. Your endpoint should verify the request using the raw body, the Stripe-Signature header and your whsec_ signing secret. Stripe warns that any change to the raw body makes verification fail, which matters in frameworks that parse JSON automatically (Stripe Docs — webhooks). Endpoints must be publicly reachable HTTPS URLs, and you can register up to 16 event destinations.

Make writes idempotent on both sides

  • Stripe side. Send an Idempotency-Key header when creating objects so a retried request doesn't create a second customer or charge. Keys can be up to 255 characters, and Stripe suggests V4 UUIDs (Stripe API — idempotent requests).
  • HubSpot side. Store Stripe IDs (customer, subscription, invoice) in HubSpot properties marked as unique identifiers. Then use batch upsert with idProperty, so a repeated webhook updates the record instead of duplicating it (HubSpot custom objects API — upsert).

A minimal event map

Stripe eventWhat to do in HubSpot
checkout.session.completedMark the deal as paid (or move the stage); store the Stripe customer ID
invoice.paidUpdate "last payment date" / "subscription status" on the record
invoice.payment_failedCreate a task for the owner; trigger a dunning email workflow
customer.subscription.deletedUpdate the status to cancelled; notify the account owner

The HubSpot side of this table is a design choice, not something Stripe prescribes. Adapt the properties and stages to your pipeline.

Stay inside HubSpot's rate limits

If you process bursts of events (for example, a monthly billing run), remember that privately distributed apps get 100 requests per 10 seconds on Free/Starter and 190 on Professional/Enterprise. Batch endpoints help (HubSpot usage guidelines).

How to choose

If you…Choose
Want HubSpot to be where quotes, invoices and subscriptions liveOption 1 (processor)
Bill in Stripe and only need visibility in the CRMOption 2 (sync app)
Have custom pricing, delayed or conditional billing, or multi-step approvalsOption 3 (custom)
Need several Stripe accounts in one portalNot option 1 (one Stripe account per HubSpot account)

Sources

FAQ

Can I connect more than one Stripe account to HubSpot? No. Each Stripe account connects to one HubSpot account, and a HubSpot account can't have several Stripe accounts connected (HubSpot KB).

Does HubSpot charge a fee for using Stripe? Yes, a 0.75% platform fee. Other fees may also apply.

Do I need Revenue Hub to send quotes? Creating and editing quotes requires Revenue Hub and a Revenue Hub seat. Without them, legacy quotes apply (HubSpot KB).

Can I test the Stripe payment processor in a sandbox? No. HubSpot doesn't allow it on sandbox, developer test or partner demo accounts. Test custom integrations in Stripe's test mode instead.

Let's find the manual work hiding in your HubSpot.

30 minutes. You show me how things work today; I'll tell you what I'd fix first and roughly what it takes — no pitch deck.

Almost always reply within 24 hours