European Union
Automatic VAT handling for EU cross-border transactions.
Enable Tax Rules
Configure EU tax rules in entity settings:
// title: Enable tax rules
await sdk.entities.update(entity.id, {
settings: {
tax_rules_enabled: true,
},
});
// Now VIES validation and reverse charge are automatic| Setting | Default | Description |
|---|---|---|
vies_validate_vat | true | Validate VAT numbers against VIES |
auto_reverse_charge | false | Apply 0% tax for intra-EU B2B |
auto_remove_tax_export | false | Remove taxes for non-EU exports |
VIES Validation
Customer VAT numbers are validated against the EU VIES database:
// title: VIES validation
const result = await sdk.vies.check({
issuer: { country: "DE", tax_number: "DE123456789" },
customer: { country: "FR", tax_number: "FR87654321" },
});
console.log(result.customer_valid); // true
console.log(result.transaction_type); // __PROTECTED_4__
console.log(result.reverse_charge); // trueValidation happens automatically when creating invoices with EU customers that have a tax_number.
Reverse Charge
When auto_reverse_charge is enabled, for B2B transactions across EU borders:
- Your entity is in EU country A
- Customer has valid VAT number in EU country B
- Result: 0% VAT + reverse charge notice on invoice
Slovenia (Seller) → Germany (Buyer with VAT) ↓ Reverse Charge Applied 0% VAT on invoiceExport Tax Removal
When auto_remove_tax_export is enabled:
- Customer is outside the EU
- All taxes are automatically removed from the invoice
Transaction Types
The API determines transaction type automatically:
| Type | Description |
|---|---|
domestic | Same country, standard VAT |
intra_eu_b2b | EU cross-border B2B, reverse charge eligible |
intra_eu_b2c | EU cross-border B2C, standard VAT |
export | Outside EU, no VAT |
Country-Specific
Some EU countries have additional requirements:
- Slovenia (FURS) — Real-time fiscalization