Proposals & Invoices · Article 5.2
Line items, the VAT engine, and what determines your rate
Each line is `{description, quantity, rate, type}`. Clozo computes the net subtotal, then applies one of seven VAT rules based on your tax regime, the client's country, and whether the client is B2B or B2C.
The line-items grid is where you type the work and the maths happens automatically. Each row contributes to a single net subtotal at the bottom of the table. Above that subtotal, the VAT engine renders one of seven rules — domestic standard rate, reverse charge, OSS, Kleinunternehmer (DE), KOR (NL), franquicia (ES), forfettario (IT), or "not VAT-registered" — and adds a single VAT amount. Gross total appears underneath. That gross is what the client owes; that gross is what flows to the deposit and final invoices.
Step by step
Add a row.
Click
+ Add line itemin the wizard step 3. Type a description, set quantity (default 1), rate, and pickhourlyorfixedfrom the type dropdown.Repeat as needed.
Drag rows by the handle on the left to reorder. Total recomputes live below.
Confirm the VAT block.
Below the subtotal, you'll see the rate and the rule (e.g.,
21% (domestic)or0% (reverse charge — EU B2B)). If the rule looks wrong, the issue is upstream: your regime (/settings/profile) or the client's record (/clients/{id}).Preview the gross.
The "Total (incl. VAT)" line at the bottom is what your client owes. Sanity-check before clicking through to step 4 of the wizard.
Why this works this way
Why VAT applies at proposal level, not per line. EU VAT Directive Art. 226 requires every invoice to disclose the rate used and the VAT amount per rate. In freelancer practice, all line items on a single invoice typically share one rate (you don't sell mixed-rate goods like a supermarket). Clozo enforces this: one proposal, one VAT rule, one rate. If you genuinely need mixed rates (e.g., consulting at 19% plus reduced-rate ebook royalties at 7% in Germany), split into two proposals.
The seven VAT rules and when each fires (from apps/vat/engine.py:calculate_vat):
| Rule | Triggered when | Effect on PDF |
|---|---|---|
domestic | Same country as you, B2B or B2C | Standard national rate (e.g., 19% DE, 21% FR/NL/ES, 22% IT, 23% PL) |
reverse_charge | Client in another EU country, B2B with valid VIES VAT number | 0% VAT, legal note added: "Reverse charge — VAT to be accounted for by the recipient" (translated per locale) |
oss | Client in another EU country, B2C, you've opted into OSS | Client's national rate (e.g., your DE business invoicing a French B2C consumer = 20% FR rate) |
non_eu | Client outside the EU | 0% VAT — export of services |
not_registered | You don't have a VAT number on file | 0%, no VAT note (you're below the threshold or haven't registered yet) |
kleinunternehmer (DE) | Your tax regime = kleinunternehmer | 0%, legal note: "Gemäß § 19 UStG wird keine Umsatzsteuer berechnet (Kleinunternehmerregelung)" |
kor (NL) / franquicia (ES) / forfettario (IT) | Your tax regime field set to one of these | 0%, regime-specific legal note in the local language |
Critical: the §14c UStG double-VAT trap. If you're a German Kleinunternehmer and you accidentally print a VAT line on an invoice (manual override, copy-paste from a template), German tax law treats that as a binding charge — you owe the listed VAT to the Finanzamt even though you don't owe it under the regime. Clozo's engine refuses to add a VAT line when the regime is kleinunternehmer, so this trap is closed by default. The same logic applies to NL KOR and ES franquicia.
Manual override (vat_rate_override): there's an escape hatch on the create-proposal form — vat_rate_override accepts an integer 0–27 to force a rate. Use only when the engine genuinely cannot infer correctly (e.g., a margin-scheme reseller). When set, the proposal's vat_breakdown records the override flag for audit; the PDF still passes EU compliance because the legal note is generated from the override, not paraphrased.
Troubleshooting
Keep reading
Proposals & Invoices
Anatomy of a proposal
A Clozo proposal is a single legal document with seven moving parts: title, line items, deposit split, payment terms, language, dates, and the metadata that drives VAT and signatures.
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.
Working with Clients
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.
Proposals & Invoices
Deposit splits: 0%, 25%, 50%, 100% — and when to pick each
The deposit percentage decides how the gross total breaks into two payments: an upfront deposit invoice (Anzahlungsrechnung) and a final invoice (Schlussrechnung) that closes the project.