Skip to content

European Union

Automatic VAT handling for EU cross-border transactions.

Enable Tax Rules

Configure EU tax rules in entity settings:

Enable tax rulestypescript
// title: Enable tax rules
await sdk.entities.update(entity.id, {
  settings: {
    tax_rules_enabled: true,
  },
});

// Now VIES validation and reverse charge are automatic
SettingDefaultDescription
vies_validate_vattrueValidate VAT numbers against VIES
auto_reverse_chargefalseApply 0% tax for intra-EU B2B
auto_remove_tax_exportfalseRemove taxes for non-EU exports

VIES Validation

Customer VAT numbers are validated against the EU VIES database:

Vies validationtypescript
// 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); // true

Validation 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 invoice

Export 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:

TypeDescription
domesticSame country, standard VAT
intra_eu_b2bEU cross-border B2B, reverse charge eligible
intra_eu_b2cEU cross-border B2C, standard VAT
exportOutside EU, no VAT

Country-Specific

Some EU countries have additional requirements: