Shahid Malla

WHMCS Tax & GST Configuration Guide

Tax misconfiguration is invisible until you have a problem. The practical setup — inclusive vs exclusive, per-region rates, EU VAT MOSS, Indian GST with CGST/SGST/IGST.

S Shahid Malla
· Dec 24, 2025 · 5 min read · 65 views
shahidmalla.com/blog/whmcs-tax-gst-configuration-guide
WHMCS Tax & GST Configuration Guide
On this page (11 sections)

Tax misconfiguration in WHMCS is one of those issues that's invisible until you have a problem — usually an angry email from your accountant or a tax filing that doesn't match reality. The configuration takes 30 minutes; the reasoning behind it is what most guides skip.

This is the practical tax / VAT / GST setup for WHMCS.

The three tax models you need to model

  1. Inclusive vs Exclusive. Is the listed price including tax or before tax? Inclusive is common in EU consumer contexts; Exclusive is common B2B.
  2. Per-region rates. Different countries (and within US, different states) have different rates. WHMCS supports rates per country/state.
  3. VAT exempt for B2B cross-border. EU VAT reverse-charge mechanism — your EU business customer doesn't pay VAT to you if they provide a valid VAT number.

Step 1 — Configure base tax settings

WHMCS Admin → Setup → Payments → Tax Configuration:

  • Tax Enabled: yes.
  • Tax Type: Inclusive or Exclusive (see above).
  • Compound Tax: usually No. Yes only for jurisdictions where second tax applies on first (rare).
  • Apply Tax to Late Fees: depends on jurisdiction; usually Yes.

Step 2 — Add tax rules per region

For each country/region where you owe tax:

  1. Setup → Payments → Tax Configuration → Tax Rules → Add.
  2. Set:
    • Tax Rule Name: e.g., "DE VAT 19%".
    • Country: Germany.
    • State: leave blank if country-wide.
    • Tax Rate: 19.
  3. Save.

Common EU rates:

  • Germany: 19% (standard) / 7% (reduced)
  • France: 20%
  • Italy: 22%
  • Netherlands: 21%
  • UK: 20%
  • Spain: 21%

Setup each country individually.

Step 3 — EU VAT MOSS compliance

If you sell digital services to EU consumers, you must collect VAT at the customer's country rate (not yours). WHMCS supports this via EU VAT MOSS:

  • Setup → Payments → Tax Configuration → EU VAT Settings.
  • Enable VAT Validation (uses VIES to validate VAT numbers).
  • Configure VAT Number Field Required for EU business customers.
  • When a B2B customer provides a valid EU VAT number ≠ your country, WHMCS applies 0% (reverse charge).

For each EU country your customers come from, add a tax rule (see step 2). WHMCS picks the right one based on the customer's country.

Step 4 — Indian GST configuration

GST has its own model:

  • CGST + SGST for intra-state customers (your state = customer's state).
  • IGST for inter-state (different state).
  • 0% for international customers (export of services).
  • Customer's GSTIN must be captured for B2B invoicing.

WHMCS doesn't ship GST out of the box. Options:

  1. Two tax levels: Tax 1 = CGST, Tax 2 = SGST. Configure rates per state. Use Compound Tax = No.
  2. Custom hook: detect customer state, apply CGST+SGST or IGST programmatically before invoice generation.
  3. Indian-specific module: ModulesGarden and a few others ship dedicated GST modules.

For most Indian hosting brands, option 2 (custom hook) gives the most control. The logic:

add_hook('InvoiceCreationPreEmail', 1, function ($vars) {
    $invoiceId = $vars['invoiceid'];
    $userId    = $vars['userid'];

    $client = Capsule::table('tblclients')->where('id', $userId)->first();
    if ($client->country !== 'IN') return;   // export — 0% GST

    $companyState = 'JK';   // your state code
    $customerState = inferStateFromAddress($client);  // your logic

    if ($companyState === $customerState) {
        // CGST 9% + SGST 9%
        $vars['cgst_rate'] = 9;
        $vars['sgst_rate'] = 9;
    } else {
        // IGST 18%
        $vars['igst_rate'] = 18;
    }
});

Make sure the invoice PDF template renders all three components separately (required by GST regulations).

Step 5 — Tax-aware invoice display

Invoice templates must show:

  • Pre-tax subtotal.
  • Tax breakdown (each rule applied, named, with amount).
  • Total including tax.
  • Your tax ID / VAT number / GSTIN.
  • Customer's VAT number / GSTIN if applicable.

Edit /templates/{your-theme}/invoicepdf.tpl — see my invoice customization guide.

Step 6 — Validate VAT / GST numbers

Always validate the format before storing. Examples:

  • EU VAT: country code (2 letters) + 8-12 digits/chars. WHMCS validates via VIES API automatically if enabled.
  • GSTIN: 15 chars, format NNAAAAANNNNNAZN (state code + PAN-based pattern). Validate with regex.

Invalid numbers should be rejected at customer signup, not at invoice generation.

How to verify tax setup

  1. Create test clients in 3-4 different countries.
  2. Place orders. Confirm correct tax applied for each.
  3. For EU customers: test with valid VAT number → 0% (reverse charge). Without → standard rate.
  4. For Indian customers: test intra-state, inter-state, international. Verify CGST+SGST vs IGST vs 0%.
  5. Invoice PDF shows tax breakdown correctly.
  6. Reports → Tax Report shows correct totals.

Common pitfalls

"Tax rate applied to wrong customer." WHMCS matches customer's address country/state to tax rules. If customer's address is wrong or empty, no rule matches and no tax is applied. Make country mandatory at signup.

"VAT MOSS validation fails for valid numbers." VIES API is slow / sometimes down. WHMCS times out. Add a manual override option for admin.

"Tax shown on invoice but not on cart preview." WHMCS calculates tax server-side at order placement. The cart shows pre-tax until you proceed. UX issue, not a bug.

"Refunds don't refund tax correctly." Some gateways refund the full amount including tax; some require explicit tax-refund handling. Check your gateway's docs.

My take — get your accountant involved

Tax misconfiguration leads to under-collecting (financial penalty) or over-collecting (customer goodwill destroyed). Both bad. Before launch:

  1. Show your tax accountant the WHMCS tax setup.
  2. Walk through 3-4 example invoices.
  3. Have them confirm the breakdown matches what their filings expect.
  4. Document the configuration so future-you remembers.

Going further


I configure tax / VAT / GST for WHMCS deployments — multi-country, EU MOSS, India GST, validation. Tell me where you sell and I'll send a quote in 24 hours.

Share this article

S

Written by

Shahid Malla

WHMCS expert, full-stack developer, technical lead at Fada.cloud. 10+ years building hosting platforms, custom modules, and automation that ships.

Trusted platforms

Prefer to hire through a platform?

Not sure about working directly? Hire me through Fiverr or Upwork instead - same me, same work, with the platform's buyer protection and escrow.

Got a project like this?

Tell me what you need - I'll send a real quote within 24 hours.