Exemples fiscals de factura
Els 21 escenaris fiscals espanyols de facturació, quins quatre d'ells es publiquen com a exemples de request llestos per enviar a la Referència de l'API i un exemple de rectificativa per cada codi R de l'AEAT (R1–R5).
La facturació espanyola cobreix molts escenaris fiscals — B2B nacional,
béns i serveis intracomunitaris, vendes a distància OSS, IGIC a Canàries,
IPSI a Ceuta/Melilla, retenció IRPF, recàrrec d'equivalència, operacions
exemptes i no subjectes. La part difícil és encertar la combinació
correcta de tax_rate, exemption_reason, regime_key,
retention_rate i surcharge_rate a cada línia.
Per fer-ho concret, la Referència de l'API inclou quatre exemples de
request amb nom i llestos per enviar a
POST /v1/companies/{company}/invoices
— un conjunt curat i representatiu, no un per escenari. Cadascun és un
payload vàlid que pots copiar, adaptar i enviar: tria el més proper al teu
cas al desplegable d'exemples del request body i recolza't en la taula
següent i en la guia enllaçada a cada fila per a la resta.
Totes les rutes d'aquesta guia pengen de /v1/companies/{company}/…: {company} és l'id (UUID v7)
del NIF amb què operes, i als exemples curl és $COMPANY_ID.
Arribar a un NIF explica com resoldre'l.
Els 21 escenaris
Cada fila de sota és un escenari que pots expressar línia a línia amb els camps anteriors. Els quatre marcats amb ★ són a més exemples de request amb nom que pots triar directament al desplegable; els altres disset estan documentats aquí i a la guia enllaçada, però no tenen exemple amb nom al spec — construeix-los a partir del marcat més proper.
| Clau de l'escenari | Escenari | Guia |
|---|---|---|
★ b2b_nacional | B2B nacional, IVA 21% per línia (règim general AEAT 01). | Claus de règim |
b2b_nacional_iva_reducido | IVA reduït (10%) o superreduït (4%), règim 01. | Classificació per línia |
★ b2c | Consumidor final (sense NIF del destinatari; factura simplificada quan escaigui). | Simplificades o completes |
★ intracomunitario_bienes | Lliurament intracomunitari de béns, exempta E5 (art. 25 LIVA). | Clients internacionals |
intracomunitario_servicios | Serveis B2B UE, inversió del subjecte passiu — qualificació S2 (subjecta i no exempta, quota repercutida 0) derivada del règim de capçalera isp, no una causa d'exempció. | Clients internacionals |
oss | Vendes a distància OSS (IVA del país de destí), regime_key: 17. | Clients internacionals · Claus de règim |
igic_canarias | IGIC a Canàries, regime_key: 08. | Impostos territorials |
ipsi_ceuta_melilla | IPSI a Ceuta / Melilla, regime_key: 08. | Impostos territorials |
★ con_irpf | Retenció IRPF per línia (retention_rate). | Classificació per línia |
con_recargo_equivalencia | Recàrrec d'equivalència amb un parell legal IVA↔recàrrec, regime_key: 18. | Classificació per línia · Claus de règim |
exenta_articulo_20 | Exempta per art. 20 LIVA, exemption_reason: E1. | Classificació per línia |
exenta_exportacion | Exportació fora de la UE, exempta E2 (art. 21), regime_key: 02. | Clients internacionals · Claus de règim |
no_sujeta | Operació no subjecta, exemption_reason: N1 / N2. | Classificació per línia |
inversion_sujeto_pasivo_nacional | Inversió del subjecte passiu nacional (p. ex. execució d'obra), tax_rate: 0. | Classificació per línia |
regimen_especial_bienes_usados | Règim del marge de béns usats (REBU), regime_key: 03. | Claus de règim |
regimen_agencias_viajes | Règim d'agències de viatges (REAV), regime_key: 05. | Claus de règim |
criterio_caja | Règim del criteri de caixa, regime_key: 07. | Claus de règim |
multilinea_iva_mixto | Diverses línies a tipus d'IVA diferents (21% / 10% / 4%). | Classificació per línia |
con_descuento_y_metadata | discount_percent per línia més metadata d'integració. | Receptari fiscal |
con_idempotency_key | Reintents segurs amb el header Idempotency-Key. | Receptari fiscal |
cliente_extranjero_alternative_id | Destinatari estranger amb identificador alternatiu (matriu tipus↔país AEAT). | Clients internacionals |
Cadascun dels quatre exemples marcats també es publica com una entrada
reutilitzable components.examples.invoice_* al spec OpenAPI, perquè els SDK i
el tooling els puguin resoldre per $ref.
Els value objects fiscals (règim, motiu d'exempció, IRPF, recàrrec)
vénen del motor fiscal de Factuarea. Els exemples mostren combinacions
vàlides; per al contracte camp a camp consulta el schema del request de
POST /v1/companies/{company}/invoices
i Imports i dates.
Una factura completa amb dades estructurades
Una factura completa per a un client públic que porta tots els blocs estructurats del
contracte: referències de capçalera i de línia, període de facturació, literals legals, els
quatre centres DIR3 i un calendari de pagaments. La línia suma 121.00 (100 més 21% d'IVA)
i els tres venciments sumen aquests mateixos 121.00.
curl -X POST https://api.factuarea.com/v1/companies/$COMPANY_ID/invoices \
-H "Authorization: Bearer $FACTUAREA_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"client_id": "019e0000-0000-7000-8000-0000000000f1",
"series_id": "019e0000-0000-7000-8000-0000000000f2",
"issued_on": "2026-01-15",
"due_on": "2026-04-15",
"business_references": {
"receiver_contract_reference": "CON-2026-1",
"receiver_transaction_reference": "PED-2026-1",
"file_reference": "EXP-2026-1"
},
"invoicing_period": { "start_date": "2026-01-01", "end_date": "2026-01-31" },
"legal_literals": ["Pago sujeto al contrato indicado."],
"administrative_centres": [
{ "role_code": "01", "code": "L01000001", "name": "Oficina contable" },
{ "role_code": "02", "code": "L01000002", "name": "Órgano gestor" },
{ "role_code": "03", "code": "L01000003", "name": "Unidad tramitadora" },
{ "role_code": "04", "code": "L01000004", "name": "Órgano proponente" }
],
"lines": [
{
"description": "Servicio contratado",
"quantity": 1,
"unit_price": 100,
"tax_rate": 21,
"business_references": {
"issuer_contract_reference": "REF-2026-01",
"issuer_contract_date": "2026-01-10"
},
"delivery_notes_references": [{ "number": "ALB-2026-1", "date": "2026-01-10" }]
}
],
"payment_terms": [
{ "due_date": "2026-02-15", "amount": "40.00", "payment_means": "01" },
{ "due_date": "2026-03-15", "amount": "30.00", "payment_means": "04",
"account": { "iban": "ES9121000418450200051332", "bic": "CAIXESBBXXX" } },
{ "due_date": "2026-04-15", "amount": "51.00", "payment_means": "04",
"account": { "iban": "ES9121000418450200051332", "bic": "CAIXESBBXXX" } }
]
}'Què ha de complir cada bloc:
business_references(capçalera) té exactament tres claus, de fins a 20 caràcters cadascuna; les dates i les referències de l'emissor viuen a la línia.administrative_centresconté com a màxim un centre perrole_code(01oficina comptable,02òrgan gestor,03unitat tramitadora,04òrgan proposant).codeés un codi DIR3 de 9 o 10 caràcters alfanumèrics que comença per lletra;nameés opcional, de fins a 40 caràcters. Enviar [] no selecciona cap centre.- Les files de
payment_termsconserven el teu ordre, les dates no decreixen, els imports són cadenes de dos decimals i sumen exactamenttotal_to_pay. Els codis de pagament02i04porten l'account; la resta no. delivery_notes_references[].numberté fins a 30 caràcters idateés opcional.
La resposta és 201 amb la factura, que ara retorna la identitat persistida de cada
venciment (payment_terms[].id, UUID v7), payment_terms_version i administrative_version.
Desa-les: qualsevol canvi posterior d'un calendari existent o de l'encaminament reenvia
la versió (expected_payment_terms_version, expected_version de les
revisions administratives),
i si falta la versió respon 428.
Si un venciment és incorrecte, per exemple "40.5" en lloc de "40.50", no s'escriu res:
{
"error": {
"type": "invalid_request_error",
"code": "invalid_invoice_payment_terms",
"message": "Las condiciones de pago de la factura no son válidas.",
"param": "payment_terms.1.amount",
"request_id": "req_..."
}
}Una factura rectificativa de -50.00 porta venciments amb signe amb la mateixa regla:
"-20.00" i "-30.00". Consulta Factures rectificatives i
Dades de negoci de la factura.
Factures rectificatives per codi R
Una factura rectificativa porta el codi de rectificació de l'AEAT que
indica per què es corregeix l'original.
POST /v1/companies/{company}/invoices/{id}/corrective
inclou un exemple amb nom per cada codi, cadascun un payload vàlid que
produeix aquest correction_code exacte:
| Exemple | Codi | Aplica a | Guia |
|---|---|---|---|
r1_error_fundado | R1 | Error fonamentat de dret / anul·lació. Factures completes F1/F3. | Factures rectificatives |
r2_concurso | R2 | Concurs de creditors del destinatari. F1/F3. | Factures rectificatives |
r3_incobrable | R3 | Crèdits incobrables. F1/F3. | Factures rectificatives |
r4_otras | R4 | Resta de causes; total o parcial (correction_type: partial amb lines). F1/F3. | Factures rectificatives |
r5_simplificada | R5 | Rectificació d'una factura simplificada. Només F2. | Factures rectificatives · Simplificades o completes |
Passa correction_code explícitament per seleccionar el codi R; R5
només aplica a factures simplificades (F2).
Una rectificativa és al seu torn un document fiscal: un cop emesa es reporta a l'AEAT via VeriFactu igual que qualsevol altra factura. Usa l'exemple que coincideixi amb la causa legal — el codi no és cosmètic.