If you sell hosting inside the EU or UK, your billing system has to charge the right VAT to the right customer, validate VAT IDs, and zero-rate B2B sales that qualify for reverse charge. Blesta does most of this out of the box — two tax levels, inclusive or exclusive pricing, and live VAT-ID validation against VIES and HMRC. It does not do OSS/MOSS rate tables or GeoIP location proofs, and that gap is where most operators get the configuration wrong.
This guide is for hosts running Blesta who need correct VAT on invoices — domestic sales, cross-border B2B reverse charge, and validated tax IDs. It covers the tax model, the exact settings, and the compliance edges Blesta leaves to you.
How Blesta models tax
Blesta applies up to two tax levels per invoice line. Level 1 is your normal VAT; Level 2 exists for jurisdictions that stack a second tax (a state tax on top of a national one). For a single-rate EU country you only ever touch Level 1.
Each rule has a type that decides how the percentage interacts with the price you set on a package:
- Inclusive — the price you set is gross. Blesta back-calculates the net and the tax portion. A €10.00 package at 20% shows as €10.00 with €1.67 VAT inside it. Use this when you advertise VAT-inclusive prices to consumers.
- Inclusive (Additive) — tax is added on top of your set price and shown in the order total. A €10.00 package becomes €12.00. This is the usual choice for B2B-facing pricing where you quote net.
- Exclusive — tax is added on top but not folded into the displayed order total the same way; it still itemises on the invoice. Rarely the right pick for EU VAT; most hosts want Inclusive or Inclusive (Additive).
Enable tax and set your company VAT ID
Tax settings live under Settings → Company → Taxes. The page splits into Basic Tax Settings and Tax Rules.
In Basic Tax Settings:
- Set Enable Tax to on.
- Enter your company Tax ID — your own VAT registration number. It prints on invoices, which most EU jurisdictions require.
- Decide Cascade Tax. With it on, Level 2 is calculated on the price plus Level 1 (compound tax). Leave it off for a single EU VAT rate — you don't want compounding.
- Decide Set Tax on Setup Fees. EU VAT applies to setup fees too, so turn this on if you charge them.
Save before adding rules.
Add tax rules
Under Tax Rules, add one rule per jurisdiction you're registered to collect in. Each rule takes:
- Level — 1 for standard VAT.
- Name — what prints on the invoice, e.g.
VAT (DE)orVAT. - Amount — the percentage, e.g.
19.000. - Type — Inclusive / Inclusive (Additive) / Exclusive, as above.
- Country and State — scope the rule. Leave blank to match all locations, or set a country to apply the rule only to clients in that country.
The matching is by the client's address. A client in Germany gets the rule scoped to DE;
a client with no matching country rule gets your blank/catch-all rule (or no tax). This is
the crux of the EU problem: Blesta charges based on the address the client typed, not a
GeoIP-verified location. If you're under EU OSS rules and must charge each consumer their
own country's rate, you need a tax rule per destination country, and you're trusting the
billing address. More on that limitation below.
For a host registered only in their home country and selling cross-border B2B, the common setup is a single home-country VAT rule plus VAT-ID validation to zero-rate qualifying foreign businesses.
VAT-ID validation: VIES and HMRC
Blesta validates customer VAT IDs against the EU VIES service and, since Brexit, UK HMRC. When validation is enabled, a Tax ID field appears at checkout and in the client's profile. Blesta checks the number live against the relevant registry.
The reverse-charge behaviour follows from the result:
- Valid VAT ID + client in a different country than your company → Blesta treats it as a B2B intra-EU supply and applies the reverse charge: a 0% tax line, with the liability shifting to the customer. Your invoice shows the zero-rated line.
- Valid VAT ID + client in your own country → domestic sale, normal VAT applies.
- No VAT ID or invalid → treated as a consumer; the matching country tax rule applies.
Once tax is live, keep your billing automation healthy so invoices generate and send on schedule — see the Blesta cron setup guide, since tax that's configured but never invoiced helps no one. If you're still choosing a platform, the Blesta vs WHMCS comparison covers how the two handle VAT differently.
Test before you bill real customers
Create a test client in each scenario and add a test invoice:
- Domestic consumer — no VAT ID, your country. Expect full VAT.
- Domestic business — valid domestic VAT ID. Expect full VAT (reverse charge does not apply to same-country sales).
- Cross-border EU business — valid foreign EU VAT ID. Expect a 0% reverse-charge line.
- Invalid VAT ID — expect Blesta to reject or fall back to charging VAT, and confirm it didn't silently zero-rate.
Check the generated invoice PDF, not just the admin preview — the tax label, your company Tax ID, and the reverse-charge line all need to render correctly for the invoice to be valid. Pair this with a working payment gateway like the Stripe integration so the taxed total is what actually gets charged.