Overview
The Canary Islands have a special tax regime that uses IGIC (Impuesto General Indirecto Canario) instead of the peninsular VAT (IVA). This guide shows you how to create invoices with:
IGIC tax instead of VAT
REIGIC surcharge (Recargo IGIC)
Canary Islands-specific tax configuration
Proper legal literals for REF (Régimen Económico y Fiscal Canario)
Complete IGIC Invoice Example
Here’s a full working example for a Canary Islands-based business:
use PhpFacturae\ Invoice ;
use PhpFacturae\ Party ;
use PhpFacturae\Enums\ Schema ;
$invoice = Invoice :: create ( 'FAC-2024-0001' )
-> series ( 'A' )
-> date ( '2024-12-15' )
-> schema ( Schema :: V3_2_2 )
-> seller (
Party :: company ( 'B76123456' , 'Atlantic Systems S.L.' )
-> tradeName ( 'Atsys' )
-> address (
'C/ Triana, 52' ,
'35002' ,
'Las Palmas de Gran Canaria' ,
'Las Palmas' ,
'ESP'
)
-> email ( '[email protected] ' )
-> phone ( '928000000' )
-> website ( 'https://atsys.es' )
)
-> buyer (
Party :: company ( 'A28000001' , 'Cliente Demo S.L.' )
-> address (
'C/ Gran Via, 1' ,
'28013' ,
'Madrid' ,
'Madrid' ,
'ESP'
)
-> email ( '[email protected] ' )
)
-> line ( 'Desarrollo web - Landing page corporativa' , price : 1200.00 , igic : 7 )
-> line ( 'Mantenimiento WordPress mensual (3 meses)' , price : 150.00 , quantity : 3 , igic : 7 )
-> line ( 'Certificado SSL y configuracion' , price : 45.50 , igic : 7 )
-> line ( 'Consultoria SEO inicial' , price : 300.00 , igic : 7 )
-> transferPayment (
iban : 'ES91 2100 0418 4502 0005 1332' ,
dueDate : '2025-01-15'
)
-> legalLiteral (
'Factura exenta de IVA por aplicacion del REF Canario. IGIC aplicado al tipo general.'
)
-> export ( 'factura-canaria.xsig' );
IGIC vs VAT : Use the igic parameter in the line() method instead of vat. Never mix IGIC and VAT in the same invoice.
IGIC Tax Rates
General Rate - 7%
The standard IGIC rate for most goods and services: -> line ( 'Servicio profesional' , price : 500.00 , igic : 7 )
Reduced Rate - 3%
Applied to basic necessities: -> line ( 'Alimentos basicos' , price : 100.00 , igic : 3 )
Super Reduced Rate - 0%
For exempt goods: -> line ( 'Pan y cereales' , price : 50.00 , igic : 0 )
Increased Rate - 15%
For luxury goods and tobacco: -> line ( 'Producto de lujo' , price : 1000.00 , igic : 15 )
IGIC with REIGIC Surcharge
For businesses subject to REIGIC (similar to recargo de equivalencia), you can add the surcharge:
use PhpFacturae\Entities\ TaxBreakdown ;
use PhpFacturae\Enums\ Tax ;
$invoice = Invoice :: create ( 'FAC-REIGIC-001' )
-> date ( '2024-12-20' )
-> seller (
Party :: company ( 'B76123456' , 'Comercio Canario S.L.' )
-> address ( 'C/ Mesa y Lopez, 5' , '35006' , 'Las Palmas' , 'Las Palmas' )
)
-> buyer (
Party :: person ( '43000000A' , 'Maria' , 'Rodriguez' )
-> address ( 'C/ Leon y Castillo, 10' , '35003' , 'Las Palmas' , 'Las Palmas' )
)
-> customLine (
description : 'Joyeria de oro' ,
price : 500.00 ,
taxes : [
new TaxBreakdown ( Tax :: IGIC , 7 ),
new TaxBreakdown ( Tax :: REIGIC , 0.5 ) // 0.5% surcharge
]
)
-> cashPayment ( dueDate : '2024-12-20' )
-> legalLiteral ( 'Sujeto a IGIC 7% + REIGIC 0.5%. REF Canario aplicable.' )
-> export ( 'factura-reigic.xsig' );
REIGIC rates correspond to IGIC rates:
IGIC 7% → REIGIC 0.5%
IGIC 3% → REIGIC 0.25%
IGIC 15% → REIGIC 3.5%
Multiple Tax Rates
Mix different IGIC rates in the same invoice:
Invoice :: create ( 'FAC-MULTI-001' )
-> date ( '2024-12-25' )
-> seller (
Party :: company ( 'B76123456' , 'Supermercado Canario S.L.' )
-> address ( 'C/ Viera y Clavijo, 20' , '35001' , 'Las Palmas' , 'Las Palmas' )
)
-> buyer (
Party :: person ( '43000000A' , 'Pedro' , 'Suarez' )
-> address ( 'C/ Castillo, 15' , '35004' , 'Las Palmas' , 'Las Palmas' )
)
-> line ( 'Alimentos basicos (pan, leche)' , price : 50.00 , igic : 3 ) // Reduced
-> line ( 'Electrodomestico' , price : 300.00 , igic : 7 ) // General
-> line ( 'Tabaco' , price : 100.00 , igic : 15 ) // Increased
-> cardPayment ( dueDate : '2024-12-25' )
-> legalLiteral ( 'Factura sujeta a diversos tipos de IGIC segun REF Canario.' )
-> export ( 'factura-multi-igic.xsig' );
IGIC with IRPF Withholding
You can combine IGIC with IRPF (personal income tax withholding) for professional services:
Invoice :: create ( 'FAC-IRPF-001' )
-> date ( '2024-12-30' )
-> seller (
Party :: person ( '43000000A' , 'Laura' , 'Hernandez' )
-> address ( 'C/ Perez Galdos, 8' , '35002' , 'Las Palmas' , 'Las Palmas' )
-> email ( '[email protected] ' )
)
-> buyer (
Party :: company ( 'A28000001' , 'Empresa Madrid S.L.' )
-> address ( 'C/ Gran Via, 50' , '28013' , 'Madrid' , 'Madrid' )
)
-> line ( 'Consultoria IT' , price : 1000.00 , igic : 7 , irpf : 15 )
-> transferPayment (
iban : 'ES91 2100 0418 4502 0005 1332' ,
dueDate : '2025-01-30'
)
-> legalLiteral ( 'Operacion sujeta a IGIC 7% y retencion IRPF 15%. REF Canario.' )
-> export ( 'factura-igic-irpf.xsig' );
Calculation : For a €1,000 service with IGIC 7% and IRPF 15%:
Base: €1,000
IGIC (7%): +€70
IRPF (15%): -€150
Total to receive : €920
Peninsular Buyer from Canary Seller
When invoicing from the Canary Islands to mainland Spain, use IGIC:
Invoice :: create ( 'FAC-PENINSULA-001' )
-> date ( '2024-12-28' )
-> seller (
Party :: company ( 'B76123456' , 'Tech Canarias S.L.' )
-> address ( 'C/ Bravo Murillo, 3' , '35007' , 'Las Palmas' , 'Las Palmas' )
)
-> buyer (
Party :: company ( 'B28123456' , 'Barcelona Solutions S.L.' )
-> address ( 'Passeig de Gracia, 100' , '08008' , 'Barcelona' , 'Barcelona' )
)
-> line ( 'Licencia software SaaS' , price : 2000.00 , igic : 7 )
-> transferPayment (
iban : 'ES91 2100 0418 4502 0005 1332' ,
dueDate : '2025-01-28'
)
-> legalLiteral (
'Operacion sujeta al REF Canario. Aplicable IGIC 7%. '
. 'El comprador no esta sujeto a inversion del sujeto pasivo.'
)
-> export ( 'factura-canarias-peninsula.xsig' );
Legal Literal Examples
Always include a legal literal explaining the tax regime:
General IGIC
IGIC + REIGIC
Mixed Rates
-> legalLiteral (
'Factura exenta de IVA por aplicacion del REF Canario. '
. 'IGIC aplicado al tipo general del 7%.'
)
Billing Period for Services
For monthly services in the Canary Islands:
Invoice :: create ( 'FAC-PERIODO-001' )
-> series ( 'S' )
-> date ( '2025-01-05' )
-> billingPeriod ( from : '2024-12-01' , to : '2024-12-31' )
-> seller (
Party :: company ( 'B76123456' , 'Hosting Canarias S.L.' )
-> address ( 'C/ Nestor de la Torre, 12' , '35010' , 'Las Palmas' , 'Las Palmas' )
)
-> buyer (
Party :: company ( 'A28000001' , 'Cliente Demo S.L.' )
-> address ( 'C/ Gran Via, 1' , '28013' , 'Madrid' , 'Madrid' )
)
-> line ( 'Hosting compartido' , price : 29.90 , igic : 7 )
-> line ( 'Mantenimiento WordPress' , price : 150.00 , igic : 7 )
-> directDebitPayment (
iban : 'ES80 0049 1500 0512 3456 7890' ,
dueDate : '2025-01-10'
)
-> legalLiteral ( 'Servicio prestado en diciembre 2024. IGIC 7% tipo general REF Canario.' )
-> export ( 'factura-periodo-igic.xsig' );
Validation
Don’t mix VAT and IGIC : Each invoice must use only one tax system.// ❌ WRONG - Will create validation issues
-> line ( 'Service A' , price : 100 , vat : 21 ) // IVA
-> line ( 'Service B' , price : 200 , igic : 7 ) // IGIC
// ✅ CORRECT - Use only IGIC
-> line ( 'Service A' , price : 100 , igic : 7 )
-> line ( 'Service B' , price : 200 , igic : 7 )
Next Steps
Basic Invoice Learn the fundamentals of invoice creation
Split Payments Configure installment payments for IGIC invoices
Tax Types Explore all 29 available tax types
Tax Enum View all Tax enum values