Working with Clients · Article 4.2
Client country and VAT logic: how Clozo decides what VAT (if any) to charge
The combination of your country, the client's country, and whether the client has a validated EU VAT number determines which of five VAT rules applies — Clozo computes it automatically.
EU VAT is famously complex but Clozo's engine collapses it to five rules. You don't need to memorise them — fill in your tax regime (article 3.5), the client's country, and the client's VAT number if they have one, and Clozo picks the right rule on every line item. This article exists to demystify what's happening behind the scenes, in case the result ever surprises you.
Why this works this way
The five rules are implemented in backend/apps/vat/engine.py::calculate_vat(), evaluated in this order:
1. You're not VAT registered (small-business regime active): rate=0%, notice="VAT not applicable — supplier under the SME exemption scheme" plus your regime's statutory wording (article 3.5). Skips all other rules.
2. Client is non-EU: rate=0%, notice="VAT not applicable — services provided to a non-EU country" (Art. 44/59 of the VAT Directive).
3. Same country (domestic): rate=your country's standard rate, e.g., DE 19%, FR 20%, NL 21%, ES 21%, IT 22%, AT 20%, PL 23%. Notice references the country.
4. EU B2B with validated VAT number: rate=0%, notice="Reverse charge — VAT to be accounted for by the recipient in accordance with Article 196 of Council Directive 2006/112/EC". Note: Art. 196 is the cross-border reverse-charge article (vs. Art. 194 which is the optional domestic reverse charge); this is the legally correct citation for general-rule services across EU borders [D-088c].
5. EU B2C (no validated VAT) — general services: rate=your country's standard rate (Art. 45 — place of supply is the supplier's country). This is the correct default for design, copywriting, consulting, custom development, coaching, photography, translation, and similar services. Most freelancer work falls here.
6. EU B2C — TBE services and OSS-registered: rate=client's country rate (Art. 58 + 59c — destination country, requires One Stop Shop registration). Only applies if you've ticked oss_registered in your profile and you actually supply telecommunications, broadcasting, or electronically supplied services (SaaS, online courses, e-books, digital downloads).
A few subtleties worth noting:
- "Validated" VAT number means VIES-confirmed (or manually marked confirmed after a VIES soft-fail). Just typing a number isn't enough — the engine requires client_vat_validated=True before it'll switch to reverse charge. This is a SEC-001 fix: we don't trust unvalidated input for tax-law decisions.
- Netherlands VAT numbers must include the Bxx suffix (T-007). A NL VAT number without Bxx is downgraded to B2C and Rule 5 applies.
- Greece's ISO code is GR but VIES expects EL. Clozo normalises internally.
- Country-specific VAT rates are kept current — recent updates: SK 23% (was 20%, from 2025-01-01), RO 21% (was 19%, from 2025-08-01), EE 24% (was 22%, permanent from 2025-07-01), FI 25.5% (was 24%, from 2024-09-01).
Troubleshooting
Keep reading
Working with Clients
Adding a client: the four fields that matter
Name, email, country, and the B2B/B2C flag — those four fields turn an empty client record into one Clozo can build legally correct invoices from.
Working with Clients
B2B vs B2C: what the toggle actually changes
Whether your client is a business or a consumer changes three things: the VAT treatment, the cooling-off rights, and whether structured e-invoicing is even an option.
Working with Clients
EU VAT cheatsheet: a one-page reference
A flat lookup table for the five VAT rules, the three small-business regimes, and the standard rates of every EU member state — bookmark and forget about VAT.
Configuration
Tax regime selection: small-business schemes across the EU
Pick the regime that matches your tax registration — Clozo formats every invoice with the correct legal disclaimer and switches off the VAT line where the law says it stays off.