VAT Classification

Every e-invoice line carries an EN 16931 tax-category code. The extension derives that code from tax rate, store configuration, buyer country/VAT ID and voucher detection. Review the result with your accounting rules; automatic classification cannot decide whether a transaction is legally exempt or reverse charge.

Supported Categories

Code Name When it applies
S Standard rate Any line with tax greater than 0
Z Zero rated Configured fallback for 0% lines in the same country
E Exempt Seller operates as Kleinunternehmer (§19 UStG)
AE Reverse charge Available as the configured fallback category for otherwise unclassified 0% lines
K Intra-community supply EU B2B with 0% tax and a valid buyer VAT ID (§4 Nr. 1b UStG)
G Free export Destination outside the EU (§4 Nr. 1a UStG)
O Out of scope Multi-purpose voucher (§3 Abs. 15 UStG)

Classification Logic

For each invoice line the extension evaluates, in order:

  1. Kleinunternehmer flag is on → E
  2. Line is a multi-purpose voucherO (see Gift Cards)
  3. Line has tax greater than 0 → S
  4. Buyer country differs from seller country:
    • Buyer is in the EU list and has a VAT IDK
    • Buyer is outside the EU → G
  5. Otherwise → configured default (default Z)

The EU list is read from Magento's built-in general/country/eu_countries setting, so edits under Stores > Configuration > General > Countries Options apply everywhere automatically.

Configuration

Stores > Configuration > MageB2B > E-Invoice > VAT Classification

Setting Default Notes
Kleinunternehmer (§19 UStG) No When enabled, every line is classified as E regardless of tax
Default Category for 0% Lines Z Used when a 0% line does not match K or G rules
Treat Magento Giftcards as Multi-Purpose Voucher Yes Adobe Commerce giftcard products → O
Voucher Override Product Attribute (empty) Product attribute code whose value multi_purpose / single_purpose overrides detection
Exemption Reason: Intra-Community (K) Innergemeinschaftliche Lieferung (§4 Nr. 1b UStG) BT-120 text for K
Exemption Reason: Export (G) Ausfuhrlieferung (§4 Nr. 1a UStG) BT-120 text for G
Exemption Reason: Exempt (E) Kleinunternehmer (§19 UStG) BT-120 text for E
Exemption Reason: Reverse Charge (AE) Steuerschuldnerschaft des Leistungsempfängers (§13b UStG) BT-120 text for AE
Exemption Reason: Out of Scope (O) Mehrzweck-Gutschein (§3 Abs. 15 UStG) BT-120 text for O

Set exemption reasons to wording approved for your invoices. The extension does not determine the legal reason for a zero-rate transaction.

Exemption Reason (BT-120)

When the category is not S or Z, the invoice carries a human-readable exemption reason at both line and document level. Empty reasons fall back to the defaults above. Receivers use this text to understand why tax was not charged.

Tax Totals

The document-level tax section groups lines by (category, rate). A single invoice can legitimately contain multiple categories, for example a standard-rated product plus a multi-purpose voucher:

Category Rate Base Tax
S 19.00 100.00 19.00
O 0.00 50.00 0.00

Out-of-scope lines contribute to the base total but never to the tax amount, per §3 Abs. 15 UStG.

Verification

Use php bin/magento einvoice:verify-amounts --file=<actual-cii-xml-path> to check the CII totals. The entity-ID options do not follow the configurable filename manager; see CLI Commands.

Upgrading from earlier module versions

The formatter classifies each line from the order tax treatment. Plain single-country 19% scenarios use S; cross-border, exempt and voucher lines can carry a different category and exemption reason.