Why tax on coaching offers matters (and why it's easy to get wrong)
If you coach clients across different countries — or even across state and provincial lines — you've almost certainly asked yourself: do I need to charge VAT, GST, or sales tax on my coaching offers? The short answer is: it depends on where you're based, where your clients are, and what your revenue looks like. The longer answer involves a few key concepts, some Stripe configuration, and a small setup step inside Coachful that takes less than five minutes.
This guide walks you through exactly how to add tax to your coaching offers on Coachful — whether you're running one-time payments, subscriptions, payment plans, or multi-tier programs. It also covers the most common mistakes coaches make when setting up tax, and how to avoid them.
TL;DR — Quick answer
- Tax on Coachful offers is handled through Stripe Tax, which you enable once in your Stripe dashboard.
- You then set a tax behavior (inclusive or exclusive) and optionally a tax code on each offer inside Coachful.
- Stripe automatically calculates VAT, GST, or sales tax based on your business location and your client's billing address.
- Tax amounts appear on Stripe-generated receipts and invoices — no manual math required.
Step 1 — Enable Stripe Tax in your Stripe account
Before you can charge tax on any offer, you need to activate Stripe Tax inside your Stripe dashboard. This is a one-time step that covers all future transactions.
- Log in to your Stripe dashboard at dashboard.stripe.com.
- In the left sidebar, navigate to More → Tax.
- Click Get started and follow the prompts. Stripe will ask for your business address — this is the "origin" address Stripe uses to determine which tax rules apply to you.
- Add at least one tax registration. For example, if you're a UK-based coach, you'd register your UK VAT number. If you're in the EU, Canada, Australia, or a US state with taxable digital services, add the relevant registration.
- Save your settings. Stripe Tax is now active on your account.
Stripe Tax supports automatic calculation for over 40 countries and all US states, covering VAT (EU, UK), GST (Australia, Canada, India, New Zealand, Singapore), and US sales tax. See Stripe's tax documentation for a full list of supported jurisdictions.
Pro tip: If you're not yet VAT- or GST-registered (because you're below your country's registration threshold), you still need to complete the Stripe Tax setup — just don't add a tax registration. Stripe will then collect no tax on your behalf, and you can add registrations later when you cross the threshold.
Step 2 — Connect your Stripe account to Coachful
Coachful uses Stripe Connect, which means your Stripe account is linked directly to your Coachful workspace. Payments, invoices, and tax calculations all flow through your own Stripe account — not through Coachful's.
If you haven't connected Stripe yet, go to Coach Dashboard → Settings → Billing → Connect Stripe and follow the OAuth flow. Once connected, any tax configuration you set in Stripe will automatically apply to payments processed through Coachful.
Already connected? You're good to move on to Step 3.
Step 3 — Configure tax settings on your Coachful offers
With Stripe Tax active, you can now tell Coachful how to handle tax on each individual offer. Here's how:
- From your coach dashboard, go to Offers (or navigate through Programs → your program → Pricing for program-specific offers).
- Open an existing offer or click Create new offer.
- Scroll to the Pricing section. You'll see a Tax behavior dropdown with two options:
- Exclusive — tax is added on top of the listed price. A $100 offer with 20% VAT charges the client $120. This is the most common setup for B2B coaches or US-based coaches.
- Inclusive — tax is already baked into the listed price. A $120 offer listed as $120 includes $20 VAT. Common for consumer-facing coaches in the EU and Australia where prices must be displayed tax-inclusive.
- Optionally, set a Tax code. Stripe uses tax codes to categorize your product for jurisdictional rules. For most coaching services,
txcd_20030000(General — Services) ortxcd_10000000(General — Digital Goods) will apply. If you're unsure, leave this blank and Stripe will apply its default category. - Save the offer.
Repeat this for each offer you want to tax. Offers without a tax behavior set will not have tax automatically applied, so double-check each one — especially older offers you created before enabling Stripe Tax.
Running a coaching business with multiple offer types? Coachful supports one-time payments, recurring subscriptions, multi-tier offers, and payment plans — all with individual tax settings per offer. You don't need to pick one model for your whole business.
Step 4 — Test your tax setup before going live
Always verify your tax configuration before sending it live to clients. Stripe makes this straightforward:
- In your Stripe dashboard, switch to Test mode.
- Use Coachful's offer preview or a test checkout link to simulate a purchase with a test card (e.g.,
4242 4242 4242 4242). - Enter a billing address in a taxable jurisdiction — for example, a UK postcode for VAT, or a California ZIP code for US sales tax.
- Confirm the checkout screen shows the correct tax amount, and that the Stripe test invoice reflects the right line items.
- Switch back to Live mode when satisfied.
Testing catches mismatches early — for instance, you may find that your tax registration isn't active for a specific country yet, or that your tax behavior setting is flipped the wrong way.
How tax appears to your clients
Your clients see tax clearly broken out at checkout and on their receipts. Here's what to expect:
- Checkout page — Stripe's checkout dynamically calculates tax based on the billing address your client enters. If tax applies, a line item appears before the final total.
- Email receipts — Stripe sends automatic receipts that include tax amounts, your business name, and (if configured) your VAT/GST registration number.
- Invoices — For recurring subscriptions or payment plans, Stripe generates a PDF invoice for each payment. You can customize your invoice template (logo, footer, memo) in the Stripe dashboard under Settings → Customer emails → Invoices.
Clients who need a VAT invoice for their business records can download it directly from the Stripe-hosted receipt page — no manual work from you required.
Tax for specific coaching offer types
One-time payments
Tax is calculated at the time of purchase based on the client's billing address. For discovery calls, VIP days, or standalone session packages, this is the simplest setup — enable Stripe Tax, set your tax behavior on the offer, and Stripe handles everything.
Recurring subscriptions
Stripe recalculates tax on each billing cycle. If your client moves to a different country or state between payments, Stripe applies the correct rate for their new location automatically. This is especially useful for coaches with internationally mobile clients (athletes, executives, digital nomads).
Payment plans
Coachful supports payment plans on offers (e.g., 3 installments of $500 for a $1,500 program). Tax is calculated and applied to each installment individually. The rate used is the rate at the time each payment processes, so keep this in mind if you're enrolled clients over a long period during which tax rates might change.
Coupons and discounts
When a client applies a coupon, Stripe calculates tax on the discounted amount, not the original price. So a 20% off coupon on a $1,000 offer brings the taxable base to $800. This is the legally correct approach in most jurisdictions.
Pro tips for managing coaching taxes like a pro
Keep your Stripe tax report handy. At tax time, go to Stripe Dashboard → Tax → Reports and download your tax liability summary by jurisdiction. This is exactly what your accountant needs — no spreadsheet gymnastics required.
- Display prices clearly on your website. If you're in the EU or Australia, regulations often require that prices shown to consumers already include tax. Use Coachful's inclusive tax behavior and update your landing page copy accordingly. See how to display prices on your Coachful website for details.
- Separate your B2B and B2C offers. Business clients in the EU with a valid VAT number can often claim a reverse-charge exemption. Stripe Tax handles this automatically — the client enters their VAT ID at checkout and tax is zeroed out. No manual intervention needed.
- Set a default tax code in Stripe. Go to Stripe → Tax → Settings and set a product tax code default. This saves you from having to set a tax code on every individual offer.
- Review your registrations annually. As your coaching business grows, you may cross registration thresholds in new jurisdictions. Stripe Tax will flag this in your dashboard — check in at least once a year, or whenever you run a large launch.
Troubleshooting common tax setup issues
Tax isn't appearing at checkout
The most common cause is that Stripe Tax isn't fully activated. Go to Stripe → Tax → Overview and confirm the status shows "Active". Also verify that the specific offer inside Coachful has a tax behavior set — offers without a tax behavior won't trigger tax calculation, even if Stripe Tax is on.
Tax is being charged in countries where I'm not registered
Stripe Tax only charges tax in jurisdictions where you've added a registration. If you're seeing unexpected tax charges, open Stripe → Tax → Registrations and review your active registrations. Remove any that don't apply to your business situation, and confirm with your accountant before adding new ones.
The tax amount looks wrong
First, check the tax code on the offer. Coaching services may be taxed differently than digital products depending on the jurisdiction — using the wrong tax code can produce incorrect rates. Second, verify the client's billing address is accurate. Stripe's calculation is address-driven; a wrong ZIP code or postcode will produce the wrong rate.
My clients aren't receiving tax invoices
Check that Stripe's automatic receipt emails are enabled: Stripe → Settings → Customer emails — toggle on "Successful payments" and "Invoice finalized". Also ensure your Stripe account has a valid business name and support email configured, which are required fields for invoice delivery.
I use coupons and the discount is calculating tax incorrectly
Confirm in your Stripe coupon settings that the coupon is set to apply to the subtotal before tax. In most jurisdictions, discounts reduce the taxable base — this is the default Stripe behavior and is almost always the correct one.
I'm on a payment plan and tax charged on installment 1 is different from installment 2
This can happen if the client updates their billing address between payments, if your Stripe tax registration status changed, or if a tax rate in a jurisdiction was updated. All three scenarios are expected behavior — Stripe applies the correct rate for the date and location of each charge. Check the individual payment details in your Stripe dashboard to confirm the exact rates applied.
Ready to get your tax setup right?
Getting tax right on your coaching offers protects your business, builds trust with clients, and keeps your accountant happy — all without adding manual work to your plate. With Stripe Tax activated and a few minutes of configuration in your Coachful offers, you'll have automatic, jurisdiction-accurate tax calculations on every checkout, subscription renewal, and payment plan installment.
If you haven't set up your Coachful workspace yet, start your free trial and get your first offer live today. Already a Coachful coach? Sign in to your dashboard and head to Offers to review your tax settings right now. For more billing guides, browse the Coachful help center.