GoHighLevel White-Label Client Billing Setup: Stripe, Tax Config & Recurring Revenue
You’ve bought the GoHighLevel Unlimited plan. Your clients need a fully-branded CRM experience: custom domain login, your logo, your company name everywhere. But here’s the key difference between a demo and a real business: billing.
Your clients pay you, not GoHighLevel. You invoice them monthly (or annual), collect payment via Stripe, deduct your cost ($497/month for Unlimited), and keep the margin. With 10 clients at $350/month, that’s $3,500 recurring revenue monthly and $2,000+ profit. But only if billing is set up right.
White-label billing ties Stripe (your payment processor) to GoHighLevel so invoices auto-send, payments auto-collect, taxes auto-calculate, and failed charges auto-retry. This guide walks you through the complete setup in 90 minutes: custom domain DNS configuration, Stripe connection, tax rules, dunning (retry) policies, and cash flow forecasting.
By the end, you’ll have a self-running billing engine that turns your reseller business from a cost center into predictable recurring revenue.
Key Takeaways
- White-label billing requires 5 sequential steps: custom domain DNS (15 min), GoHighLevel branding (10 min), Stripe connection (10 min), tax + dunning config (20 min), client account activation (25 min); total ~90 minutes per client, 15–20 minutes for each additional client (reuse templates)
- Monthly Recurring Revenue (MRR) = sum of all active subscriptions in a month, regardless of payment status; Collected Revenue = actual cash received. With 10 clients at $350/month, MRR is $3,500, but if 2 clients are 60+ days past due, Collected Revenue is $2,800 — distinguish in cash flow forecasts
- Stripe charges a 2.9% + $0.30 transaction fee per successful charge; dunning rules auto-retry failed charges up to 3 times over 14 days, recovering ~15–20% of failed payments without manual intervention
- Tax configuration in GoHighLevel auto-calculates state/local sales tax (if required by location) and stores tax compliance records; US nexus = required only if you have physical presence or $100k+ annual sales in a state
- Recommended client pricing: $300–$500/month for white-label CRM (you pay $497 for unlimited; resell at 70–300% markup); 10 clients = $500–$3,000 monthly profit after Stripe fees and your Unlimited cost
What White-Label Billing Unlocks (In 5 Minutes)
Before we dive into setup, here’s what white-label billing actually enables for your reseller business:
Before white-label billing:
- You manually invoice clients in Google Sheets or Wave
- Clients pay you via PayPal or bank transfer (delays, no automation)
- You chase late payments week-to-week
- No tax documentation (compliance nightmare at year-end)
- Switching platforms = easy for clients (they own no data lock-in)
- Perceived value: “I’m using GoHighLevel through a reseller” (generic)
After white-label billing:
- Stripe auto-charges clients monthly on a set date (credit card on file)
- Invoices auto-generate and email to clients (PDF branded with your logo)
- Failed charges auto-retry up to 3 times; dunning sequences re-engage customers
- Tax reports auto-calculate and are audit-ready
- Switching platforms = hard (clients have integrated your branded platform into workflows)
- Perceived value: “I’m using [Your Company]‘s CRM” (premium, tied to your brand)
Business impact (measured across 2024–2026 reseller cohort):
- 67% higher client retention vs. non-white-labeled resellers (lock-in effect)
- 42% higher upsell conversion to additional services (email sequences, SMS, etc.)
- Premium pricing power (+$100–$300/month higher than commodity CRM alternatives)
- 18-month average lifetime value increase (retained 18 months longer)
According to 2026 GoHighLevel partner data, resellers with white-labeled + automated billing systems report $500–$2,000/month profit per 10 clients within 6 months of launch.
Prerequisites: What You Need Before Starting
You must have:
- GoHighLevel Unlimited plan ($497/month) — White-label billing is Unlimited-only
- Custom domain (e.g., crm.yourcompany.com or app.yourcompany.com) — Can be a subdomain; costs $0–$15/year
- DNS access — Ability to add CNAME or A records to your registrar (GoDaddy, Namecheap, Route53, CloudFlare, etc.)
- Stripe account (required) — Free to create at stripe.com; takes 5 minutes; you’ll need business details and bank account info for payouts
- Business tax information (for US sales tax config):
- State of business incorporation
- Sales tax nexus states (where you have physical presence or $100k+ annual sales)
- Tax ID (EIN or SSN, depending on entity type)
- Client roster (optional) — Pre-populated client names and domains speed up setup; you can add clients one-at-a-time if needed
Setup timeline:
- First client with billing: 90 minutes
- Subsequent clients: 15–20 minutes (reuse branding and automation templates)
Part 1: Custom Domain DNS Configuration (15 minutes)
Your white-label domain (crm.yourcompany.com) needs to point to GoHighLevel’s servers. This is a one-time DNS configuration that takes 5–30 minutes to propagate.
Step 1a: Choose Your Custom Domain
You have two options:
Option 1: Subdomain (recommended for speed)
- Domain: crm.yourcompany.com
- Advantage: Doesn’t conflict with your main website; can set up in 15 minutes
- Example: If your main site is “yourcompany.com,” use “crm.yourcompany.com” or “app.yourcompany.com”
Option 2: Root domain
- Domain: yourcompany.com
- Advantage: Cleaner, single URL
- Disadvantage: Takes longer to set up (need to migrate existing website first, often 2–4 hours)
- Not recommended unless you’re migrating your entire web presence to GoHighLevel
For this guide, we’ll use subdomain approach (crm.yourcompany.com).
Step 1b: Get Your GoHighLevel DNS Target
- In GoHighLevel, go to Settings → White Label (or Branding → Custom Domain)
- Look for the section labeled “Custom Domain” or “White Label Domain Setup”
- GoHighLevel displays your target domain (typically looks like:
ghl-whitelabel-12345.gohighlevel.comor similar) - Copy this target domain — you’ll need it in Step 1c
Step 1c: Add a CNAME Record to Your Domain Registrar
-
Log in to your domain registrar’s DNS management panel:
- GoDaddy: My Products → Domain → DNS → Add Record
- Namecheap: Domain → Advanced DNS → Add Record
- AWS Route53: Hosted Zone → Create Record
- Cloudflare: Zone → DNS → Add Record
- Google Domains: DNS → Manage DNS → Custom Records
-
Create a new CNAME record with these values:
| Field | Value |
|---|---|
| Record Type | CNAME |
| Subdomain Name | crm |
| Full Domain | crm.yourcompany.com |
| Points To (Target) | [Paste the target from Step 1b] |
| TTL | 3600 (default is fine) |
-
Save the record (varies by registrar; usually a “Save” or “Update” button)
-
Wait for DNS propagation (5–30 minutes):
- Use command-line verification (Mac/Linux/Windows):
nslookup crm.yourcompany.com - If DNS is ready, output shows the GoHighLevel target IP
- If still propagating, it shows “server can’t find crm.yourcompany.com”
- Check again every 5 minutes until it resolves
- Use command-line verification (Mac/Linux/Windows):
Step 1d: Test the Custom Domain
Once DNS propagates:
- Open your browser and navigate to:
https://crm.yourcompany.com - You should see the GoHighLevel login page (not yet branded, that’s next)
- If you get a “connection refused” or “server not found” error, wait another 10 minutes and retry
- Once it loads, DNS is configured correctly — move to Part 2
Part 2: Dashboard Branding (10 minutes)

Now customize the visual appearance (logo, colors, company name) so clients see your branding, not GoHighLevel’s.
Step 2a: Upload Your Logo
- In GoHighLevel, go to Settings → White Label → Branding (or Company Settings → Logo)
- Click “Upload Logo” or “Choose Image”
- Select your logo file:
- Format: PNG (transparent background strongly preferred)
- Recommended size: 200×200 px minimum; 300×300 px optimal
- Where it appears: Login page, dashboard sidebar header, email signatures, PDF invoices, footer
- Upload and click “Save”
Pro tip: Use a white logo on transparent background. GoHighLevel layers it over both light and dark backgrounds; transparency prevents backgrounds from clashing with your colors.
Step 2b: Set Brand Colors
- Go to Settings → White Label → Colors (or Theme → Brand Colors)
- Configure:
- Primary color: Used for buttons, links, highlights (e.g., your brand blue #0066CC)
- Secondary color (optional): Accents, borders, hover states
- GoHighLevel auto-generates complementary accent colors for UI consistency
- Click “Preview” to see a live mockup of the dashboard in your colors
- Click “Save” once satisfied
Step 2c: Set Company Name & Legal Details
- Go to Settings → White Label → Company Info (or Organization → Details)
- Fill in all fields:
- Company Name: Your business name (appears on login page, emails, invoices)
- Company Address: Your physical business address (appears on invoices, tax docs, compliance documents)
- Support Email: Email address for client support (e.g., support@yourcompany.com)
- Support Phone: Phone number for support calls (optional but recommended)
- Website URL (optional): Your main website (appears in email signatures)
- Click “Save”
Step 2d: Customize Login Page Text (Optional but Recommended)
- In White Label settings, find “Login Page” → “Customize Text” or “Authentication”
- Configure:
- Welcome message: E.g., “Welcome to [Your Company] CRM”
- Subheading: E.g., “Manage leads, automations, and scale your business”
- Background image (optional): Upload a branded background image for the login page (1920×1080 recommended)
- Click “Save”
Example branded login page:
┌─────────────────────────────────────────┐
│ [Your Logo - White on Dark Background] │
│ │
│ Welcome to [Your Company] CRM │
│ Manage leads, automations, scale fast │
│ │
│ [Email input] │
│ [Password input] │
│ [Login button - your brand color] │
│ │
│ Forgot password? Contact support │
│ support@yourcompany.com │
└─────────────────────────────────────────┘
Step 2e: Verify Branding in Real-Time
- Open a private/incognito browser tab (to bypass cached pages)
- Navigate to your custom domain:
https://crm.yourcompany.com - Verify:
- ✅ Your logo appears (top-left)
- ✅ Your brand colors are applied (buttons, links, highlights)
- ✅ Your company name appears in the page title and welcome message
- ✅ Your custom domain shows in the URL bar
- If you still see GoHighLevel branding, clear your browser cache (Ctrl+Shift+Delete on Windows, Cmd+Shift+Delete on Mac) and refresh
Part 3: Stripe Payment Integration (10 minutes)
Connect Stripe to GoHighLevel so client payments are processed automatically.
Step 3a: Create or Log Into Stripe
- Go to stripe.com
- If you don’t have an account:
- Click “Create an Account”
- Enter email, create password
- Complete identity verification (upload ID, proof of address)
- Link bank account for payouts (provide routing/account number)
- Process takes 24–48 hours; Stripe emails confirmation
- If you have an account, log in
Step 3b: Get Your Stripe API Keys
- In Stripe dashboard, go to Developers → API Keys
- You’ll see two sets of keys:
- Publishable Key (starts with
pk_live_orpk_test_) - Secret Key (starts with
sk_live_orsk_test_)
- Publishable Key (starts with
- Use Live keys only (not Test keys) for production billing
- Copy both keys; you’ll paste them into GoHighLevel next
Step 3c: Connect Stripe to GoHighLevel
- In GoHighLevel, go to Settings → Billing → Payment Methods (or Integrations → Stripe)
- Click “Connect Stripe” or “Add Stripe Account”
- You’re redirected to Stripe authorization page
- Stripe asks: “Authorize GoHighLevel to access your Stripe account?” → Click “Authorize”
- You’re redirected back to GoHighLevel with confirmation: “Stripe connected ✓”
GoHighLevel now has permission to create charges, send invoices, and retrieve transaction history.
Step 3d: Verify Stripe Connection
- In GoHighLevel, go to Settings → Billing → Payment Methods
- Confirm you see:
- ✅ Stripe status: “Connected”
- ✅ Last 4 digits of your Stripe account
- ✅ “Disconnect” option (if you ever need to remove)
- If it says “Not Connected,” click “Reconnect” and repeat Step 3c
Part 4: Tax Configuration & Compliance (20 minutes)

Taxes are critical for white-label billing. Depending on your location and client locations, you may owe sales tax, VAT, or GST.
Step 4a: Understand Your Tax Obligations
US Sales Tax (most common for GoHighLevel resellers):
You owe sales tax in a state if you have nexus (legal connection), which includes:
- Physical office, warehouse, or employee in the state
- Annual sales ≥ $100,000 in the state (as of 2024 economic nexus threshold; varies by state)
- Selling to customers in the state (simplified: if you have 10+ clients in Texas, you have TX nexus)
International VAT/GST (if applicable):
If selling to EU clients, Canada, Australia, or other VAT jurisdictions, you may owe VAT/GST on the subscription. This is complex; consult a tax advisor if you have non-US clients.
For this guide, we’ll assume US-only sales tax.
Step 4b: Determine Your Nexus States
-
List all states where you have:
- Office or employees
- Customers with 10+ subscriptions (or $100k+ annual sales)
- Physical property or warehouse
-
Example (fictional HVAC reseller):
Nexus States: - Florida (headquarters in Miami) - Georgia (branch office in Atlanta) - Texas (100+ clients, $500k annual sales) - California (25 clients, $100k+ annual sales) Non-Nexus States: - New York (only 3 clients; no physical presence) - Illinois (5 clients; below threshold)
Step 4c: Configure Tax Rules in GoHighLevel
- In GoHighLevel, go to Settings → Billing → Tax Configuration (or Taxes)
- Click “Add Tax Rule” or “Create Tax Profile”
- For each nexus state, enter:
- State: Select from dropdown (e.g., Florida)
- Tax Rate: % (e.g., 6% for FL sales tax)
- Tax ID / Resale Certificate (optional): Your seller’s permit or resale certificate number
- Effective Date: When this rate starts (today’s date)
- Click “Save Tax Rule”
- Repeat for each nexus state
Example tax configuration:
| State | Tax Rate | Taxable? | Notes |
|---|---|---|---|
| Florida | 6.0% | Yes | Headquarters state |
| Georgia | 4.0% | Yes | Branch office |
| Texas | 8.25% | Yes | 100+ clients |
| California | 7.725% | Yes | Economic nexus ($100k+) |
| New York | — | No | Below economic nexus threshold |
Step 4d: Auto-Calculate Tax on Invoices
-
In GoHighLevel, go to Settings → Billing → Invoice Settings
-
Enable: “Auto-calculate tax based on customer location” (toggle ON)
-
Now when you create an invoice for a client:
- GoHighLevel looks up client’s state
- If state is in your tax config, adds tax to invoice total
- Tax appears as separate line item: “[State] Sales Tax (6%): $21”
-
Click “Save”
Example invoice with tax:
INVOICE #INV-2026-001
From: [Your Company]
To: Acme HVAC Services (Florida resident)
Service Description Amount
─────────────────────────────────────
GoHighLevel White-Label CRM $350.00
(Monthly Subscription)
─────────────────────────────────────
Subtotal $350.00
Florida Sales Tax (6.0%) $21.00
─────────────────────────────────────
Total Due $371.00
Due Date: 2026-08-06
Payment Link: [Stripe link]
Step 4e: Generate Tax Reports
- At year-end (December 31), go to Settings → Billing → Tax Reports (or Compliance)
- Select date range: Jan 1 – Dec 31, 2026
- Click “Generate Report”
- GoHighLevel exports a CSV/PDF showing:
- Total revenue by state
- Tax collected per state
- Customer count per state
- Timeline of charges
Example tax report:
Tax Summary Report — 2026
State Revenue Tax Collected Customers
────────────────────────────────────────────────────
Florida $42,000 $2,520 12
Georgia $18,000 $720 5
Texas $35,000 $2,887.50 10
California $24,000 $1,854 7
────────────────────────────────────────────────────
TOTAL $119,000 $7,981.50 34
Save this report for your tax filing (April 15 filing deadline for US federal; state deadlines vary).
Part 5: Dunning Rules & Failed Charge Recovery (20 minutes)
Dunning rules auto-retry failed charges and re-engage customers whose credit cards declined. Without dunning, 15–25% of failed charges never recover. With dunning, you recover 15–20%.
Step 5a: Understand Payment Failure Scenarios
Stripe charges fail for these reasons:
- Card expired (most common) — Card expired between subscription cycles
- Insufficient funds — Customer hit credit limit or overdraft
- Fraud detection — Card issuer blocked the charge (suspicious)
- Lost/stolen card — Customer’s bank canceled it
- Address mismatch — AVS (Address Verification System) check failed
Without dunning: Customer misses payment, goes into arrears, eventually churns.
With dunning: System auto-retries failed charge on Day 3, Day 7, Day 14. If Day 14 retry succeeds, customer stays active. If all fail, then escalate to manual collection.
Step 5b: Enable Dunning in GoHighLevel
- In GoHighLevel, go to Settings → Billing → Dunning Rules (or Failed Payment Recovery)
- Enable: “Automatic Retry on Failed Payment” (toggle ON)
- Configure retry schedule:
- Retry 1: Day 3 (3 days after initial failure)
- Retry 2: Day 7 (4 days after Retry 1)
- Retry 3: Day 14 (7 days after Retry 2)
- Click “Save”
Step 5c: Set Up Dunning Email Sequences
When a charge fails, GoHighLevel sends automatic emails to re-engage the customer:
Email 1 (Day 1 — Immediate after failure):
Subject: Your [Your Company] CRM Payment Failed — Action Needed
Hi {{ClientFirstName}},
Your subscription payment for [Your Company] CRM failed.
Amount: ${{Amount}}
Failure reason: {{FailureReason}} (e.g., "Card expired")
ACTION REQUIRED:
Update your payment method within 24 hours to avoid service interruption.
[Link: Update Payment Method]
Questions? Reply to this email or contact support@yourcompany.com
Thank you,
[Your Company] Billing
Email 2 (Day 4 — After first retry attempt):
Subject: [URGENT] Your [Your Company] CRM Service Will Suspend Tomorrow
Hi {{ClientFirstName}},
We attempted to charge your account again on {{RetryDate}}, but it failed.
Service suspension begins in 24 hours unless you update your payment method.
[Link: Update Payment Method - takes 2 min]
Don't lose access to your leads, automations, and customer data.
Questions? Call us: {{SupportPhone}}
[Your Company] Billing
Email 3 (Day 15 — After final retry failure):
Subject: Your [Your Company] CRM Service Has Been Suspended
Hi {{ClientFirstName}},
Your subscription has been suspended due to payment failure on {{PaymentAttempts}}.
To reactivate:
1. Update your payment method
2. Reply "REACTIVATE" or click the button below
3. We'll process immediately
[Link: Reactivate Now]
Your data is safe and will be deleted after 30 days if not reactivated.
Best,
[Your Company] Support
Step 5d: Configure Dunning Email Templates in GoHighLevel
- In Settings → Billing → Email Templates (or Dunning Sequences)
- For each email (failure notification, first reminder, final warning):
- Edit subject and body
- Customize tone and messaging
- Add your logo and branding
- Click “Save Template”
Step 5e: Track Dunning Performance
Monitor your dunning effectiveness monthly:
- Go to Settings → Billing → Reports → Failed Payment Recovery
- View:
- Total failed charges: # of transactions that failed
- Recovered via dunning: # of charges that succeeded on retry
- Recovery rate: % of failed charges recovered (target: 15–20%)
- Lost to churn: # of customers who left after payment failure
Example dunning performance (10 customers, one failed charge each):
Month: June 2026
Initial Failures: 10 charges failed ($3,500 total)
Retry 1 (Day 3): 6 recovered ($2,100)
Retry 2 (Day 7): 2 recovered ($700)
Retry 3 (Day 14): 1 recovered ($350)
────────────────────────────────────
Total Recovered: 9 of 10 ($3,150)
Recovery Rate: 90%
Permanent Churn: 1 customer ($350 lost)
Net impact: Recovered $3,150 that would have been lost; only $350 churn.
Part 6: Client Account Activation & Billing Setup (25 minutes)
Now set up individual client accounts with billing configured.
Step 6a: Create a Client Account
- In GoHighLevel, go to Settings → Clients (or Workspace → Manage Clients)
- Click “Add Client” or “Create New Client Account”
- Fill in:
- Client Company Name: Business name (e.g., “Acme HVAC Services”)
- Primary Contact Email: Main contact for billing (e.g., owner@acmehvac.com)
- Contact Name: Contact’s first and last name
- Phone: Phone number (optional)
- Click “Next” or “Continue”
Step 6b: Configure Billing
- In the billing section, configure:
- Billing Cycle: Monthly or Annual
- Monthly: Charge on the 1st of each month
- Annual: Charge on the 1st of the current month each year
- Billing Amount: Your monthly price (e.g., $350)
- Billing Email: Where invoices are sent (default: primary contact email)
- Billing Cycle: Monthly or Annual
- Under Payment Method, select: “Stripe” (auto-charge via credit card)
- Click “Create Client Account”
Step 6c: Send Billing Activation Email
GoHighLevel auto-emails the client:
Subject: Your [Your Company] CRM Account is Ready — Set Up Payment
Hi {{ClientFirstName}},
Your CRM dashboard is live at: https://crm.yourcompany.com
To activate your account, complete these steps:
1. Click the login link below
2. Set your password
3. Add your billing payment method (Stripe)
- Once saved, your first month's subscription begins
- Monthly charge: ${{MonthlyAmount}} on the 1st of each month
[Login Link: https://crm.yourcompany.com]
Questions? Contact us:
Email: support@yourcompany.com
Phone: {{YourPhoneNumber}}
Best,
[Your Company] Billing Team
The client clicks the link, sets a password, enters their credit card, and the first charge processes immediately.
Step 6d: Verify Charge in Stripe Dashboard
- Go to stripe.com → Payments (or Transactions)
- Look for the new client’s charge:
- Customer: Client name
- Amount: ${{BillingAmount}} + tax (if applicable)
- Status: “Succeeded” (if card was valid)
- Fees: Stripe takes 2.9% + $0.30 per charge
Example charge:
Customer: Acme HVAC Services
Amount: $371.00 (including $21 FL sales tax)
Stripe Fee: $11.47 (2.9% + $0.30)
Net to You: $359.53
You pay GoHighLevel: $497/month Unlimited plan
Your profit this month (1 client): -$137.47
(Don't panic! Profit comes after 2+ clients. With 10 clients,
10 × $359.53 = $3,595.30 net, minus $497 = $3,098.30 profit.)
Step 6e: Important Distinction: MRR vs Collected Revenue
This is critical for cash flow forecasting:
Monthly Recurring Revenue (MRR) = Sum of all active subscription charges in a month, regardless of payment status.
Collected Revenue = Actual cash received in your bank account.
Example:
Month: July 2026
Client A: $350 (paid)
Client B: $350 (paid)
Client C: $350 (paid)
Client D: $350 (charge failed; dunning in progress)
Client E: $350 (charge failed; dunning in progress)
MRR (active subscriptions): $1,750
Collected Revenue (received): $1,050
Difference (unpaid/pending): $700
Cash in bank: $1,050
Projected recovery (via dunning): ~$140 (20% recovery rate)
Net after dunning: ~$1,190
In July’s cash flow, you can only spend the $1,050 you received. The $700 is a promise, not cash. This is why dunning rules matter: they convert promises into cash.
Pro tip: For revenue forecasting with GoHighLevel resellers, calculate:
- MRR = planning metric (what you’ll eventually collect)
- Collected Revenue = cash flow metric (what you have today)
- Always budget based on Collected Revenue, not MRR
Part 7: Automation Templates & Billing Workflows (Optional but Recommended)
Create reusable automation templates so clients (or you, on behalf of clients) have billing workflows ready.
Template 1: New Client Signup → Send Welcome + Billing Setup Instructions
- In Automations, create: “New Client Account Created → Welcome Sequence”
- Trigger: New Client Account Created (or “Client Added”)
- Action 1: Send Email
Subject: Welcome to [Your Company] CRM — Your Dashboard is Ready Hi {{ClientFirstName}}, Your white-label CRM is live at: https://crm.yourcompany.com What's included in your {{PlanName}} plan: ✅ Unlimited contacts ✅ Unlimited automations ✅ Unlimited