Connecting GoHighLevel to Stripe for Recurring Billing
Integrating Stripe with GoHighLevel allows you to automate subscription billing, collect payments on funnels and order forms, and manage recurring revenue directly inside the platform. This guide walks through the full setup process, highlights common pitfalls, and clarifies when this integration may not meet your needs.
Prerequisites Before You Start
Before touching any settings inside GoHighLevel, make sure the following are in place:
- You have an active Stripe account that has completed identity verification. Stripe requires business or personal verification before live payments can be processed.
- Your Stripe account is set to Live mode (not Test mode) if you intend to collect real payments. Test mode credentials work for staging but will not charge real cards.
- You have Admin access to the GoHighLevel sub-account (or Agency account, depending on where you plan to connect Stripe). Agency-level and sub-account-level connections behave differently — payments collected at the sub-account level are deposited directly into that sub-account's connected Stripe account.
- The products or subscription plans you want to sell are already created or ready to be created inside GoHighLevel's Payments section.
If you are operating a SaaS or marketplace model where you need to split payments between multiple parties, note that GoHighLevel's native Stripe integration does not support Stripe Connect's platform features. You would need a custom implementation for that scenario.
How to Connect Your Stripe Account
The connection process lives inside the sub-account settings. Here are the steps:
- Log in to your GoHighLevel sub-account.
- In the left sidebar, click Settings.
- Scroll down and select Integrations.
- Locate the Stripe card and click Connect.
- You will be redirected to Stripe's OAuth flow. Log in to your Stripe account when prompted.
- Review the permissions GoHighLevel is requesting — these typically include reading and writing charges, customers, and subscriptions — then click Allow Access.
- After authorization, you will be redirected back to GoHighLevel. The Stripe card should now show a green connected indicator along with your Stripe account name.
At this point, GoHighLevel can create Stripe customers, charge cards, and manage subscriptions on your behalf. No API keys need to be manually copied unless you are using a third-party bridge tool.
Setting Up Recurring Billing Products
Once Stripe is connected, you can create subscription products inside GoHighLevel and attach them to funnels, order forms, or invoices.
Creating a Subscription Product
- Navigate to Payments in the left sidebar, then click Products.
- Click + New Product (or Add Product, depending on your interface version).
- Enter a product name and description.
- Under Pricing, select Recurring as the payment type.
- Set the billing interval — options typically include weekly, monthly, or annual cycles. The exact intervals available may vary depending on your GoHighLevel plan tier.
- Enter the price amount. Be aware that Stripe charges transaction fees on every payment; GoHighLevel does not absorb these fees.
- Optionally, configure a trial period (in days) if you want to offer a free or discounted trial before the full charge begins.
- Click Save.
Attaching the Product to an Order Form or Funnel
- Open the funnel or website where you want to collect the subscription sign-up.
- Add or edit an Order Form element.
- In the order form settings, go to the Products tab and add the recurring product you just created.
- Make sure Stripe is selected as the payment gateway in the order form's payment settings.
- Save and publish the funnel step.
When a contact completes the order form, GoHighLevel will create a Stripe customer, attach their card, and initiate the subscription. Subsequent charges are handled automatically by Stripe according to the billing interval.
Managing Active Subscriptions
After subscriptions are live, you can monitor and manage them from two places:
- GoHighLevel → Payments → Transactions / Subscriptions: Gives you a high-level view of active subscriptions, payment history, and subscription status per contact.
- Your Stripe Dashboard: Provides the authoritative record of every charge, refund, dispute, and subscription lifecycle event. Always treat the Stripe Dashboard as the source of truth for financial data.
Cancellations initiated inside GoHighLevel send a cancellation request to Stripe. However, if a subscription is cancelled or modified directly in Stripe, GoHighLevel may not immediately reflect that change. It is good practice to manage subscriptions from one place consistently to avoid data discrepancies.
Troubleshooting Common Errors
Below are the most frequently reported issues when setting up or running Stripe recurring billing in GoHighLevel.
Stripe shows as connected but payments fail at checkout
- Verify you connected the correct Stripe account (live vs. test). A test-mode connection will decline real cards.
- Check that the Stripe account has completed all verification steps and is not restricted.
Subscription is created in Stripe but not reflected in GoHighLevel
- This can happen if the webhook from Stripe to GoHighLevel fails. Go to your Stripe Dashboard → Developers → Webhooks and confirm that GoHighLevel's webhook endpoint is listed and receiving events without errors. Re-connecting the integration from GoHighLevel's Integrations page often regenerates the webhook automatically.
Trial period is not being applied
- Confirm the trial days are set on the product inside GoHighLevel, not just in Stripe. If the product was created directly in Stripe and imported, trial settings may not sync correctly.
Customer is charged immediately despite a configured trial
- Check whether the order form has a separate setup fee or bump product that does not carry the trial period. Any one-time charge on the same order form will be collected immediately.
Card is declined with a generic error
- The decline originates from Stripe or the card issuer, not GoHighLevel. Check the Stripe Dashboard under Payments → Declined for the specific decline code (e.g., insufficient funds, do_not_honor). Share the Stripe charge ID with your customer if they need to contact their bank.
Refunds issued in Stripe do not update contact records in GoHighLevel
- Refunds are processed on the Stripe side. GoHighLevel's contact timeline may not log refund events in real time. Always confirm refund status directly in Stripe.
When This Integration May Not Be the Right Fit
GoHighLevel's native Stripe integration covers straightforward subscription billing well, but there are scenarios where it falls short:
- Metered or usage-based billing: GoHighLevel does not support Stripe's metered billing feature natively. If your model charges based on consumption, you will need a custom integration.
- Multi-currency subscriptions: While Stripe supports multiple currencies, GoHighLevel's order forms may have limitations depending on your account configuration. Test thoroughly before going live in a non-USD market.
- Complex dunning logic: GoHighLevel relies on Stripe's default retry logic for failed payments. If you need sophisticated dunning sequences or custom retry schedules, managing that directly in Stripe or through a dedicated billing tool is more reliable.
- High-volume invoice reconciliation: For businesses with complex accounting needs, GoHighLevel's reporting is not a substitute for dedicated accounting software. Always export financial data from Stripe directly for bookkeeping.
Understanding these boundaries upfront will save significant troubleshooting time later.
Still stuck?
If this walkthrough did not solve your case, describe your exact scenario. Every question we receive becomes a new tutorial here.
Send my question