Skip to main content
Spain’s tax system is administered by the Agencia Tributaria (AEAT). As an EU member state, Spain follows the EU VAT Directive with locally adapted rates. IVA (Impuesto sobre el Valor Añadido) applies at general, reduced, and super-reduced rates. The Canary Islands use IGIC (Impuesto General Indirecto Canario) instead of IVA, while Ceuta and Melilla use IPSI (Impuesto sobre la Producción, los Servicios y la Importación). Businesses are identified by their NIF (Número de Identificación Fiscal) or CIF for companies. IRPF (Impuesto sobre la Renta de las Personas Físicas) retention taxes apply to freelancer invoices at varying rates. According to Real Decreto 1619/2012, only rectified (rectificativa) invoices are recognized in Spanish law. GOBL maps corrective invoices to “rectificación modelo íntegro” (complete replacement) and credit notes to “rectificación por diferencias” (correction by differences, with quantities inverted during conversion). The FacturaE format is used for B2G e-invoicing, with TicketBAI required in the Basque Country, VeriFactu being rolled out nationally, and the SII (Suministro Inmediato de Información) system providing near-real-time reporting of invoicing data to the AEAT.

Base Details

Tax Categories

VAT Rates

Known in Spanish as “Impuesto sobre el Valor Añadido” (IVA), is a consumption tax applied to the purchase of goods and services. It’s a tax on the value added at each stage of production or distribution. Spain, as a member of the European Union, follows the EU’s VAT Directive, but with specific rates and exemptions tailored to its local needs.

IGIC Rates

IRPF Rates

Correction Definitions

Auto-generation of corrective invoices or credit and debit notes is supported.

Invoice Types

The types of invoices that can be created with a preceding definition:
  • credit-note
  • corrective
  • debit-note

Scenarios

Scenarios attach notes and extensions to a document when its filters match. Read more about scenarios.

Validation Rules

Validation rules check each struct against a set of assertions and report any failures with a unique code and message. Read more about validation.