Formats
Invoices in the Spanish market are issued in the national Facturae 3.2.2 format.
POST /invoices,
POST /invoices/draft and
PUT /invoices/draft/{uuid}
accept the document in either representation, selected by Content-Type:
application/xml(ortext/xml) — the Facturae XML document.application/json— an equivalent JSON object whose keys mirror the Facturae element names one-for-one; repeated elements (Invoice,Tax,InvoiceLine,Installment, …) become JSON arrays. JSON is converted to Facturae XML before processing, so the two paths run the identical validation.
A-Cube validates the document against the official Facturaev3_2_2.xsd schema plus the
business rules required for acceptance. Only single-invoice documents are accepted;
a batch / lote (Modality L) is rejected.
The root element is <fe:Facturae> in namespace
http://www.facturae.gob.es/formato/Versiones/Facturaev3_2_2.xml (FileHeader /
Parties / Invoices top-level object keys in JSON), with three top-level blocks:
| Block | Purpose |
|---|---|
FileHeader | SchemaVersion, Modality (I individual — always, see above), InvoiceIssuerType (EM seller / RE buyer / TE third party), Batch totals |
Parties | SellerParty and BuyerParty, each with TaxIdentification (the NIF/NIE/CIF in TaxIdentificationNumber) and LegalEntity or Individual |
Invoices | a single Invoice with InvoiceHeader (InvoiceNumber, InvoiceDocumentType, InvoiceClass), InvoiceIssueData, TaxesOutputs, InvoiceTotals, Items |
InvoiceDocumentType: FC complete invoice, FA simplified invoice, AF self-billed
invoice. InvoiceClass: OO original, OR corrective, OC summary (and the CO /
CR / CC copies). Corrective invoices are covered in
Credit notes.
Under VERI*FACTU, A-Cube turns each accepted invoice into a billing record (registro de alta), chains it to the previous record through a hash (huella), reports it to AEAT, and returns the invoice as a factura verificable with its QR code. You send the Facturae document; the record building and reporting are handled for you.
Example
The Send invoice page shows this same document in both XML and JSON, side by side. The XML form is below.
Facturae 3.2.2 invoice example (XML)
<?xml version="1.0" encoding="UTF-8"?>
<fe:Facturae xmlns:fe="http://www.facturae.gob.es/formato/Versiones/Facturaev3_2_2.xml" xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<FileHeader>
<SchemaVersion>3.2.2</SchemaVersion>
<Modality>I</Modality>
<InvoiceIssuerType>EM</InvoiceIssuerType>
<Batch>
<BatchIdentifier>A58818501-FV-2026-0001</BatchIdentifier>
<InvoicesCount>1</InvoicesCount>
<TotalInvoicesAmount><TotalAmount>1452.00</TotalAmount></TotalInvoicesAmount>
<TotalOutstandingAmount><TotalAmount>1452.00</TotalAmount></TotalOutstandingAmount>
<TotalExecutableAmount><TotalAmount>1452.00</TotalAmount></TotalExecutableAmount>
<InvoiceCurrencyCode>EUR</InvoiceCurrencyCode>
</Batch>
</FileHeader>
<Parties>
<SellerParty>
<TaxIdentification>
<PersonTypeCode>J</PersonTypeCode>
<ResidenceTypeCode>R</ResidenceTypeCode>
<TaxIdentificationNumber>A58818501</TaxIdentificationNumber>
</TaxIdentification>
<LegalEntity>
<CorporateName>SupplierOfficialName Ltd.</CorporateName>
<AddressInSpain>
<Address>Calle Mayor 1</Address>
<PostCode>28001</PostCode>
<Town>Madrid</Town>
<Province>Madrid</Province>
<CountryCode>ESP</CountryCode>
</AddressInSpain>
</LegalEntity>
</SellerParty>
<BuyerParty>
<TaxIdentification>
<PersonTypeCode>J</PersonTypeCode>
<ResidenceTypeCode>R</ResidenceTypeCode>
<TaxIdentificationNumber>B12345674</TaxIdentificationNumber>
</TaxIdentification>
<LegalEntity>
<CorporateName>Buyer Official Name</CorporateName>
<AddressInSpain>
<Address>Calle Alcala 20</Address>
<PostCode>28014</PostCode>
<Town>Madrid</Town>
<Province>Madrid</Province>
<CountryCode>ESP</CountryCode>
</AddressInSpain>
</LegalEntity>
</BuyerParty>
</Parties>
<Invoices>
<Invoice>
<InvoiceHeader>
<InvoiceNumber>FV-2026-0001</InvoiceNumber>
<InvoiceDocumentType>FC</InvoiceDocumentType>
<InvoiceClass>OO</InvoiceClass>
</InvoiceHeader>
<InvoiceIssueData>
<IssueDate>2026-01-15</IssueDate>
<InvoiceCurrencyCode>EUR</InvoiceCurrencyCode>
<TaxCurrencyCode>EUR</TaxCurrencyCode>
<LanguageName>es</LanguageName>
</InvoiceIssueData>
<TaxesOutputs>
<Tax>
<TaxTypeCode>01</TaxTypeCode>
<TaxRate>21.00</TaxRate>
<TaxableBase><TotalAmount>1200.00</TotalAmount></TaxableBase>
<TaxAmount><TotalAmount>252.00</TotalAmount></TaxAmount>
</Tax>
</TaxesOutputs>
<InvoiceTotals>
<TotalGrossAmount>1200.00</TotalGrossAmount>
<TotalGrossAmountBeforeTaxes>1200.00</TotalGrossAmountBeforeTaxes>
<TotalTaxOutputs>252.00</TotalTaxOutputs>
<TotalTaxesWithheld>0.00</TotalTaxesWithheld>
<InvoiceTotal>1452.00</InvoiceTotal>
<TotalOutstandingAmount>1452.00</TotalOutstandingAmount>
<TotalExecutableAmount>1452.00</TotalExecutableAmount>
</InvoiceTotals>
<Items>
<InvoiceLine>
<ItemDescription>Servicios de consultoria</ItemDescription>
<Quantity>1</Quantity>
<UnitPriceWithoutTax>1200.00</UnitPriceWithoutTax>
<TotalCost>1200.00</TotalCost>
<GrossAmount>1200.00</GrossAmount>
<TaxesOutputs>
<Tax>
<TaxTypeCode>01</TaxTypeCode>
<TaxRate>21.00</TaxRate>
<TaxableBase><TotalAmount>1200.00</TotalAmount></TaxableBase>
<TaxAmount><TotalAmount>252.00</TotalAmount></TaxAmount>
</Tax>
</TaxesOutputs>
</InvoiceLine>
</Items>
<PaymentDetails>
<Installment>
<InstallmentDueDate>2026-02-14</InstallmentDueDate>
<InstallmentAmount>1452.00</InstallmentAmount>
<PaymentMeans>04</PaymentMeans>
</Installment>
</PaymentDetails>
</Invoice>
</Invoices>
</fe:Facturae>
See the POST /invoices API reference for
the full request schema.