Build the SII Libro Registro de Facturas Emitidas XML (AEAT)
Skill: Convert issued-invoice records into the SII Facturas Emitidas XML
Region: Spain (España)
Category: VAT — SII (Suministro Inmediato de Información)
Does: Takes issued-invoice records and produces the SuministroLRFacturasEmitidas XML — the Libro Registro de Facturas Emitidas that taxpayers under SII send near-real-time to the AEAT, mapping each invoice to its RegistroLRFacturasEmitidas with VAT breakdown.
Standard: AEAT SII — SuministroLRFacturasEmitidas (esquemas SuministroLR.xsd / SuministroInformacion.xsd, v1.1)
This XML is the SOAP body submitted to the AEAT SII web service (the issued-invoice ledger of the Suministro Inmediato de Información), not a standalone file deposited anywhere. Records are due within ~4 business days of issuing the invoice (excluding Saturdays, Sundays, and national holidays). Validate against the current
SuministroLR.xsd/SuministroInformacion.xsdand the AEAT validaciones (error code list) before sending.
When this applies
- A taxpayer enrolled in SII (large companies with turnover over €6,010,121.04, VAT groups, monthly REDEME refund registrants, or voluntary adherents) must report each issued invoice to the AEAT electronically.
- Submitted near-real-time: within 4 business days from issuing the invoice (8 days for invoices issued by the recipient or a third party), and never later than the 16th of the month following the accrual period.
- Excluded: taxpayers not subject to SII (who file the periodic Modelo 303 / annual Modelo 390 ledgers instead), and books other than issued invoices (received invoices use
SuministroLRFacturasRecibidas, intra-EU goods useSuministroLRDetOperacionIntracomunitaria, etc.).
Input data required
| Input | SII element |
|---|---|
| Holder (titular) name and NIF | sii:Titular / sii:NombreRazon, sii:NIF |
| Communication type (alta / modificación) | sii:TipoComunicacion |
| Schema version | sii:IDVersionSii |
| Accrual period (year + month) | sii:PeriodoLiquidacion / sii:Ejercicio, sii:Periodo |
| Invoice issuer NIF | sii:IDEmisorFactura / sii:NIF |
| Invoice series + number | sii:NumSerieFacturaEmisor |
| Invoice issue date (dd-mm-yyyy) | sii:FechaExpedicionFacturaEmisor |
| Invoice type (F1, F2, R1…) | sii:TipoFactura |
| Special regime / transcendence key | sii:ClaveRegimenEspecialOTrascendencia |
| Invoice total (gross) | sii:ImporteTotal |
| Operation description | sii:DescripcionOperacion |
| Counterparty (customer) name + NIF | sii:Contraparte / sii:NombreRazon, sii:NIF |
| VAT rate, taxable base, output VAT | sii:TipoImpositivo, sii:BaseImponible, sii:CuotaRepercutida |
Document structure
siiLR:SuministroLRFacturasEmitidas
├── sii:Cabecera (header — once per submission)
│ ├── sii:IDVersionSii (1.1)
│ ├── sii:Titular
│ │ ├── sii:NombreRazon
│ │ └── sii:NIF
│ └── sii:TipoComunicacion (A0 alta | A1 modificación)
└── siiLR:RegistroLRFacturasEmitidas (one per invoice, repeatable)
├── sii:PeriodoLiquidacion
│ ├── sii:Ejercicio (yyyy)
│ └── sii:Periodo (01–12)
├── siiLR:IDFactura
│ ├── sii:IDEmisorFactura / sii:NIF
│ ├── sii:NumSerieFacturaEmisor
│ └── sii:FechaExpedicionFacturaEmisor (dd-mm-yyyy)
└── siiLR:FacturaExpedida
├── sii:TipoFactura (F1, F2, F4, R1–R5)
├── sii:ClaveRegimenEspecialOTrascendencia (01, 07, …)
├── sii:ImporteTotal
├── sii:DescripcionOperacion
├── sii:Contraparte (omit for F2 simplified / final-consumer)
│ ├── sii:NombreRazon
│ └── sii:NIF
└── sii:TipoDesglose
└── sii:DesgloseFactura
└── sii:Sujeta
└── sii:NoExenta
├── sii:TipoNoExenta (S1 sin inversión | S2 con inversión)
└── sii:DesgloseIVA
└── sii:DetalleIVA (one per rate)
├── sii:TipoImpositivo
├── sii:BaseImponible
└── sii:CuotaRepercutida
Note the two namespaces: the root and the per-invoice Registro wrapper use the siiLR prefix (SuministroLR.xsd); everything inside — header, period, content blocks — uses the sii prefix (SuministroInformacion.xsd). Use sii:TipoDesglose/sii:DesgloseTipoOperacion instead of sii:DesgloseFactura when the counterparty is non-established or the operation mixes goods/services. Exempt or non-subject operations use sii:Exenta / sii:NoSujeta instead of sii:NoExenta.
Source → SII field map
| From the source | → Target element / field |
|---|---|
| Reporting company name | sii:Cabecera/sii:Titular/sii:NombreRazon |
| Reporting company NIF | sii:Cabecera/sii:Titular/sii:NIF |
| New record vs. correction | sii:Cabecera/sii:TipoComunicacion (A0 / A1) |
| Schema version (fixed) | sii:Cabecera/sii:IDVersionSii (1.1) |
| Accrual year | sii:PeriodoLiquidacion/sii:Ejercicio |
| Accrual month | sii:PeriodoLiquidacion/sii:Periodo (01–12) |
| Issuer NIF (usually the titular) | siiLR:IDFactura/sii:IDEmisorFactura/sii:NIF |
| Invoice series + number | siiLR:IDFactura/sii:NumSerieFacturaEmisor |
| Issue date → dd-mm-yyyy | siiLR:IDFactura/sii:FechaExpedicionFacturaEmisor |
| Invoice type | siiLR:FacturaExpedida/sii:TipoFactura |
| Regime/transcendence key | siiLR:FacturaExpedida/sii:ClaveRegimenEspecialOTrascendencia |
| Gross total | siiLR:FacturaExpedida/sii:ImporteTotal |
| Goods/services description | siiLR:FacturaExpedida/sii:DescripcionOperacion |
| Customer name | siiLR:FacturaExpedida/sii:Contraparte/sii:NombreRazon |
| Customer NIF | siiLR:FacturaExpedida/sii:Contraparte/sii:NIF |
| VAT rate (%) | …/sii:DetalleIVA/sii:TipoImpositivo |
| Taxable base | …/sii:DetalleIVA/sii:BaseImponible |
| Output VAT | …/sii:DetalleIVA/sii:CuotaRepercutida |
Every required output element appears above. Repeat siiLR:RegistroLRFacturasEmitidas once per invoice and sii:DetalleIVA once per VAT rate within an invoice.
Code tables
sii:TipoComunicacion
| Code | Meaning |
|---|---|
A0 |
Alta — new registration of invoices |
A1 |
Modificación — correction of previously submitted invoices |
sii:TipoFactura
| Code | Meaning |
|---|---|
F1 |
Factura (full / ordinary invoice) |
F2 |
Factura simplificada (and tickets without counterparty ID) |
F4 |
Asiento resumen de facturas (summary entry) |
R1 |
Factura rectificativa (error fundado en derecho, art. 80.1/.2/.6 LIVA) |
R2 |
Factura rectificativa (art. 80.3 — concurso) |
R3 |
Factura rectificativa (art. 80.4 — créditos incobrables) |
R4 |
Factura rectificativa (other) |
R5 |
Factura rectificativa en facturas simplificadas |
sii:ClaveRegimenEspecialOTrascendencia (issued-invoice book, selected)
| Code | Meaning |
|---|---|
01 |
Régimen general |
02 |
Exportación |
03 |
Bienes usados, objetos de arte, antigüedades (REBU) |
04 |
Régimen especial oro de inversión |
05 |
Régimen especial agencias de viajes |
06 |
Grupo de entidades en IVA (nivel avanzado) |
07 |
Régimen especial criterio de caja |
08 |
Operaciones con IPSI / IGIC |
12 |
Operaciones de arrendamiento de local de negocio |
15 |
Factura con IVA pendiente de devengo (certificaciones de obra, Admón. Pública) |
sii:Periodo
| Code | Meaning |
|---|---|
01–12 |
January (01) through December (12) — the accrual month |
sii:Ejercicio is the four-digit accrual year (e.g. 2026). Together they form the PeriodoLiquidacion.
sii:TipoNoExenta
| Code | Meaning |
|---|---|
S1 |
Sujeta y no exenta — sin inversión del sujeto pasivo |
S2 |
Sujeta y no exenta — con inversión del sujeto pasivo |
Calculation rules
- Output VAT per rate:
sii:CuotaRepercutida=sii:TipoImpositivo×sii:BaseImponible, rounded to 2 decimals. (e.g. 21 × 1000.00 = 210.00.) - Invoice total:
sii:ImporteTotal= Σ(BaseImponible) + Σ(CuotaRepercutida) + any equivalence-surcharge (CuotaRecargoEquivalencia) and non-subject amounts, rounded to 2 decimals. - One
sii:DetalleIVAblock per distinctTipoImpositivo; sum the bases and quotas across all detail blocks to reconcile againstImporteTotal. - Amounts in EUR with a dot decimal separator and 2 decimals, no thousands separator (
1000.00, not1.000,00). sii:TipoImpositivois the numeric percentage (21,10,4,0), not a fraction.- Always recompute
CuotaRepercutidaandImporteTotal; never blindly copy a printed total — flag any mismatch with the source.
Worked example (end-to-end)
Issuer Comercial Ejemplo SL (NIF B12345678) issues one ordinary F1 invoice (series/number FE2026/000123) on 15-03-2026, accrual period 2026 / 03, under the régimen general (01), to customer Cliente Destino SA (NIF A87654321): taxable base 1000.00 at 21% → CuotaRepercutida 210.00, ImporteTotal 1210.00.
<?xml version="1.0" encoding="UTF-8"?>
<siiLR:SuministroLRFacturasEmitidas xmlns:sii="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInformacion.xsd" xmlns:siiLR="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroLR.xsd">
<sii:Cabecera>
<sii:IDVersionSii>1.1</sii:IDVersionSii>
<sii:Titular>
<sii:NombreRazon>Comercial Ejemplo SL</sii:NombreRazon>
<sii:NIF>B12345678</sii:NIF>
</sii:Titular>
<sii:TipoComunicacion>A0</sii:TipoComunicacion>
</sii:Cabecera>
<siiLR:RegistroLRFacturasEmitidas>
<sii:PeriodoLiquidacion>
<sii:Ejercicio>2026</sii:Ejercicio>
<sii:Periodo>03</sii:Periodo>
</sii:PeriodoLiquidacion>
<siiLR:IDFactura>
<sii:IDEmisorFactura>
<sii:NIF>B12345678</sii:NIF>
</sii:IDEmisorFactura>
<sii:NumSerieFacturaEmisor>FE2026/000123</sii:NumSerieFacturaEmisor>
<sii:FechaExpedicionFacturaEmisor>15-03-2026</sii:FechaExpedicionFacturaEmisor>
</siiLR:IDFactura>
<siiLR:FacturaExpedida>
<sii:TipoFactura>F1</sii:TipoFactura>
<sii:ClaveRegimenEspecialOTrascendencia>01</sii:ClaveRegimenEspecialOTrascendencia>
<sii:ImporteTotal>1210.00</sii:ImporteTotal>
<sii:DescripcionOperacion>Venta de mercaderias y servicios</sii:DescripcionOperacion>
<sii:Contraparte>
<sii:NombreRazon>Cliente Destino SA</sii:NombreRazon>
<sii:NIF>A87654321</sii:NIF>
</sii:Contraparte>
<sii:TipoDesglose>
<sii:DesgloseFactura>
<sii:Sujeta>
<sii:NoExenta>
<sii:TipoNoExenta>S1</sii:TipoNoExenta>
<sii:DesgloseIVA>
<sii:DetalleIVA>
<sii:TipoImpositivo>21</sii:TipoImpositivo>
<sii:BaseImponible>1000.00</sii:BaseImponible>
<sii:CuotaRepercutida>210.00</sii:CuotaRepercutida>
</sii:DetalleIVA>
</sii:DesgloseIVA>
</sii:NoExenta>
</sii:Sujeta>
</sii:DesgloseFactura>
</sii:TipoDesglose>
</siiLR:FacturaExpedida>
</siiLR:RegistroLRFacturasEmitidas>
</siiLR:SuministroLRFacturasEmitidas>
Normalisations shown: issue date 15/03/2026 → 15-03-2026 (dd-mm-yyyy); rate 21% → 21; amounts to dot-decimal 2dp (1.000,00 € → 1000.00); CuotaRepercutida recomputed 21% × 1000.00 = 210.00; ImporteTotal recomputed 1000.00 + 210.00 = 1210.00. This XML is wrapped in the SOAP envelope (SuministroFactEmitidas operation) and sent to the AEAT SII endpoint with the holder's electronic certificate.
Validation checklist
- All required fields extracted; AI asked about anything missing or ambiguous (no invented NIFs, dates, or amounts)
- Two namespaces declared and prefixes kept exact:
siiLRonly onSuministroLRFacturasEmitidasandRegistroLRFacturasEmitidas/IDFactura/FacturaExpedida;siion all inner elements -
sii:IDVersionSii=1.1;sii:TipoComunicacionisA0(alta) orA1(modificación) -
sii:Ejercicio(yyyy) andsii:Periodo(01–12) match the accrual period -
sii:FechaExpedicionFacturaEmisorin dd-mm-yyyy;NumSerieFacturaEmisormatches the issued invoice -
sii:TipoFacturaandsii:ClaveRegimenEspecialOTrascendenciaare valid codes for an issued invoice -
Contrapartepresent for F1/R* (omitted for F2 simplified / final-consumer where allowed) - One
sii:DetalleIVAper rate;CuotaRepercutida=TipoImpositivo×BaseImponible(2dp) -
sii:ImporteTotal= Σ bases + Σ quotas (+ surcharges); recomputed totals match the source or discrepancy flagged - Amounts use dot decimals, 2dp, no thousands separator; rates are plain numbers
- Record submitted within ~4 business days and validated against the current
SuministroLR.xsd/SuministroInformacion.xsdand AEAT validaciones
Last updated: 2026-06-12 — verify the active SII schema version (SuministroLR), code lists, and AEAT submission deadlines against the current specification before use.