European Union
Space Invoices provides EU transaction-classification and VIES helpers. Your integration remains responsible for selecting and supplying the correct taxes unless a documented country module or the optional EU OSS destination VAT rule explicitly applies additional behavior.
EU OSS
Use the EU OSS destination VAT guide to review cross-border B2C goods sales by country, monitor the EU-wide €10,000 threshold, and optionally switch eligible standard-rated product lines to destination VAT. The report and automatic tax rule are independent, so your integration decides when to enable the switch.
VIES Validation
Check a customer’s VAT number and classify the seller/buyer relationship before creating the document:
// title: VIES validation
const _result = await sdk.vies.checkVies({
issuer: { country_code: "DE", is_tax_subject: true },
customer: { country: "FR", tax_number: "FR87654321" },
});Store or re-check the result according to your own workflow. Invoice creation does not guarantee that every supplied VAT number has been checked automatically.
Reverse Charge
For an eligible B2B transaction across EU borders:
- Your entity is in EU country A
- Customer has valid VAT number in EU country B
- Your integration supplies the appropriate tax treatment and reverse-charge wording
Slovenia (Seller) → Germany (Buyer with VAT) ↓ Check VIES and transaction type Apply the appropriate tax treatmentE-Invoicing Unit Codes
Line item unit remains your display value. For e-invoicing XML exports, including XRechnung, ZUGFeRD, e-SLOG, UJP packages, and Peppol-compatible UBL, the XML output needs a valid UN/ECE unit code.
Space Invoices maps common display units automatically. When you use a product-specific label that is not a real unit, set items[].e_invoicing.unit_code on the document line or saved item. The override changes only XML output; the display unit stays unchanged.
{ "items": [ { "name": "Medical vial", "quantity": 1, "unit": "VIALA", "e_invoicing": { "unit_code": "C62" }, "price": 100 } ]}Common codes include:
| Code | Meaning |
|---|---|
C62 | unit or piece |
HUR | hour |
DAY | day |
KGM | kilogram |
GRM | gram |
MGM | milligram |
LTR | litre |
MLT | millilitre |
MTR | metre |
MTK | square metre |
SET | set |
For the full valid list, use the Peppol BIS Billing 3.0 UNECERec20 code list. The upstream source is UNECE Recommendation 20, but Peppol-compatible integrations should validate against the Peppol list.
Transaction Types
The transaction-type helper can classify:
| Type | Description |
|---|---|
domestic | Seller and customer are in the same country |
intra_eu_b2b | EU cross-border B2B; may be reverse-charge eligible |
intra_eu_b2c | EU cross-border B2C |
export | Customer is outside the EU |
Use the classification as an input to your tax logic; it does not itself prove the final VAT treatment.
Northern Ireland
Northern Ireland follows EU VAT rules for goods and UK rules for services. A customer is treated as being in Northern Ireland when its country_code is XI, or GB with an XI-prefixed VAT number.
| Sale from an EU seller | Classification |
|---|---|
| Goods | intra_eu_b2b when VIES confirms the XI number or VIES is unavailable; intra_eu_b2c when VIES rejects it or the customer has no number |
| Services | 3w_b2b or 3w_b2c, the same as Great Britain |
| Not known | 3w_b2b or 3w_b2c, with a warning |
On documents the supply type comes from the lines: set classification to product on every line for goods, or service on every line for services. A document that mixes both, or has lines without a classification, is classified as a third-country sale and its vies.warning says so. On the transaction-type check, send supply_type (goods or services).
Great Britain and Northern Ireland are one country for domestic sales.
For a seller in the United Kingdom, documents are classified the same way: domestic for UK customers, and for a Northern Ireland seller (a VAT number with the XI prefix) goods sold to an EU customer are intra_eu_b2b or intra_eu_b2c. Taxes on a UK seller’s documents are never changed automatically.
UK VAT numbers
UK VAT numbers are not in VIES. For a UK customer on a third-country sale, a tax number with a GB or XI prefix gets a format check (9 or 12 digits with valid check digits). A number that fails it is reported as a warning; the document is still created and its classification does not change. A number without the prefix that is not a VAT number, such as a company number, is not reported.
UK sellers get the same check for their UK customers. Turn it off per entity with settings.tax_rules.uk.validate_vat_number: false.
Country-Specific
Some EU countries have additional requirements:
- Slovenia FURS fiscalization — Real-time fiscalization
- Italy (FatturaPA and SdI) — Mandatory e-invoicing through the Sistema di Interscambio
- Germany (XRechnung and ZUGFeRD) — B2B e-invoicing exports
- Poland (KSeF) — Online PLN B2B invoices and linked credit notes
- Czechia (Czech tax documents) — Czech tax documents (daňový doklad) with DIČ and IČO checks, Czech wording and VAT stated in CZK; no EET integration