HubSpot Payments and the Stripe integration have come a long way. They handle one-time payment links and basic subscriptions well. Where teams trip is treating Payments as the source of truth for revenue. Here’s the architecture that scales.
HubSpot Payments is a CRM-aware checkout, not a billing engine
HubSpot Payments captures the transaction, links it to the contact and deal, and writes a payment object. It’s not a subscription billing engine, not a tax engine, not a dunning system. For anything beyond simple one-shot payments, you’ll outgrow it within a quarter.
Stripe stays the system of record for revenue
Even when you use HubSpot Payments, the underlying Stripe account holds the truth: the charge, the refund, the dispute, the subscription state. Treat HubSpot’s payment object as a CRM convenience, not a source of truth.
Sync direction matters
Stripe -> HubSpot is the safe direction. The payment, customer, and subscription state flow into the CRM as events and properties. HubSpot -> Stripe should be limited to “create checkout link” and nothing else. Reps should not be editing subscription terms from the deal record.
Tag every charge with deal context
Configure the Stripe metadata on each charge:
metadata.hubspot_deal_id: 12345
metadata.hubspot_contact_id: 67890
metadata.product_sku: "starter_monthly"
This is the bridge that makes downstream BI sane. Without it, your finance team can’t tie revenue to deal source.
Refunds need a workflow
A refund in Stripe should trigger:
1. Update HubSpot deal -> Closed Lost (Refund)
2. Update contact lifecycle -> [your churn stage]
3. Notify CSM in Slack
4. Create CS ticket for save attempt if amount > $X
Without the workflow, refunds happen silently and your revenue numbers diverge from reality across systems.
Failed payment dunning belongs to Stripe
HubSpot will not retry a failed card on its own. Configure Stripe Smart Retries (or your billing tool of choice) and let the events flow back into HubSpot. Don’t try to build dunning in workflows; you’ll miss edge cases.
Tax handling
HubSpot Payments uses Stripe Tax for calculation. Confirm your tax registrations in every state and country before you send a payment link to a new region. The customer-facing error if tax registration is missing is brutal.
Invoicing for B2B
HubSpot’s native invoicing handles simple cases. For multi-line, multi-currency, NET30 with reminders, lean on Stripe Invoicing or a dedicated tool. The HubSpot invoice tool will hit walls fast in B2B.
What to do this week
Audit your Stripe metadata fields. Add hubspot_deal_id and hubspot_contact_id to every charge created from HubSpot. Build the refund workflow before you need it.