Factuarea API

Factures rectificatives

De R1 a R5, substitució davant diferències, i com es construeixen les línies d'una rectificativa — les quatre decisions que determinen el que reben de debò l'AEAT i la declaració d'IVA.

Una factura rectificativa és un document fiscal per dret propi: rep el seu propi número, la seva pròpia alta davant l'AEAT i el seu propi efecte a la declaració d'IVA. Emetre-la implica quatre decisions independents, i les integracions tendeixen a barrejar-les:

  1. Quina factura es pot rectificar.
  2. Quin codi de rectificació porta — el motiu legal.
  3. Substitució o diferències — si la rectificativa declara els imports correctes o només el delta.
  4. Amb quines línies acaba la rectificativa.

Equivoca't alhora a la tercera i a la quarta i presentaràs una declaració d'IVA amb el signe invertit.

Quan aplica

La factura original ha d'estar sent o paid. Cap altra no serveix (BR-INV-001, RD 1619/2012 art. 15):

Estat de l'originalRectificable?
sent, paidSí.
draft, cancelledNo — edita'l o elimina'l, encara no és un document fiscal.
overdueNo. Registra abans el cobrament o anul·la-la.
annulledNo — ja s'ha retirat.
Ja és una rectificativaNo. Emet una rectificativa nova de la factura original.

Per a una factura pagada això no és una opció entre diverses: és l'única. Una factura pagada no es pot anul·lar, perquè el seu IVA repercutit ja està compromès amb un període (BR-INV-023). Vegeu Anul·lar o rectificar.

La matriu de codis de rectificació és legal, no cosmètica

El codi de rectificació declara per què es rectifica l'original, i l'AEAT restringeix quins codis són legals per a cada tipus d'original.

Tipus de la factura originalCodis legals
Simplificada F2només R5
Completa F1, substitutiva F3només R1R4

Força un codi fora de la seva fila i l'API respon 422 amb els valors legals a allowed_values (BR-INV-035).

Hi ha dues maneres d'arribar al codi. Per defecte es deriva del slug correction_reason que envies (BR-INV-018):

correction_reasonCodiBase legal
error_fundadoR1Art. 80.Uno, Dos y Seis LIVA — error fonamentat de dret
concursoR2Art. 80.Tres LIVA — concurs de creditors
incobrableR3Art. 80.Cuatro LIVA — crèdit incobrable
error_importe, error_cliente, devolucion, descuento, otrasR4RD 1619/2012 art. 15 — resta de causes

R5 no es deriva mai d'un motiu. Ve del tipus de l'original: una rectificativa d'una F2 neix sempre R5, sigui quin sigui el motiu que passis (BR-INV-019).

Com a alternativa, fixes correction_code de manera explícita. Sobre un original complet, un R1R4 explícit guanya a la derivació per slug i passa a ser el codi que viatja a la cadena VeriFactu. Fes-lo servir quan el teu propi sistema ja conegui la causa legal i no vulguis que s'infereixi d'un slug.

R2 i R3 exigeixen documentació acreditativa per llei. Passa justification (de 10 a 1000 caràcters); s'anteposa a les notes de la rectificativa com a traçabilitat documental.

Substitució o diferències

És la decisió de més radi d'impacte, i al contracte v1 no la fixes directament — fixes correction_type i la naturalesa se'n deriva:

correction_typeNaturalesaLa rectificativa contéSigne
fullS — substitucióEls imports correctes, complets. Reemplaça l'original sencer.Sempre positiu o zero.
partialI — per diferènciesNomés la diferència entre el que es va facturar i el que és correcte.Pot ser negatiu.

La regla que imposa el motor fiscal: una base imposable pot ser negativa només en una rectificativa per diferències. En una substitució —i en qualsevol factura ordinària— una base negativa és una dada incoherent i es rebutja amb 422 (BR-VFC-033, BR-INV-017).

Aquest és el mecanisme per a una correcció a la baixa. Un abonament és una rectificativa per diferències amb base i quota d'IVA negatives, i l'AEAT l'accepta precisament perquè és la manera fiscalment correcta d'expressar un crèdit. Intentar expressar aquest mateix abonament com una substitució amb imports negatius es rebutja.

Una rectificativa per diferències sobre una factura al 0 % d'IVA té base negativa i quota zero — no quota negativa. El motor fiscal hereta el tipus de les línies de l'original i no se'l inventa mai; fabricar aquí un 21 % és la manera clàssica de collir un rebuig de l'AEAT.

Què envia l'API

POST /v1/invoices/{id}/corrective, scope invoices:write. Respon 201 amb la factura nova i una capçalera Location que hi apunta.

CampObligatoriNotes
correction_reasonUn dels vuit slugs de dalt.
correction_typefull o partial.
correction_codeNoR1R5. Es valida contra la matriu legal.
justificationNoDe 10 a 1000 caràcters. A la pràctica, obligatòria per a R2 i R3.
notesNoText lliure, fins a 1000 caràcters.
linesObligatori quan correction_type és partialdescription, quantity, unit_price i, opcionalment, tax_rate, discount_percent, indirect_tax_regime, product_id.

L'API Reference publica un exemple llest per enviar per cada codi — r1_error_fundado, r2_concurso, r3_incobrable, r4_otras i r5_simplificada — al desplegable d'exemples del cos de petició d'aquesta operació. Es publiquen a més com a entrades reutilitzables components.examples.corrective_* del document OpenAPI, de manera que els clients generats les puguin resoldre per $ref.

curl -X POST https://api.factuarea.com/v1/invoices/0197a2a8-4cf0-7a31-9a5e-3f2b8c1d6e42/corrective \
  -H "Authorization: Bearer fact_live_3pXnR2VbY7TcA9eFmN5z8KqW" \
  -H "Content-Type: application/json" \
  -d '{
        "correction_reason": "otras",
        "correction_type": "partial",
        "correction_code": "R3",
        "justification": "Crédito declarado incobrable por resolución judicial firme.",
        "lines": [
          { "description": "Ajuste por impago", "quantity": -1, "unit_price": 100, "tax_rate": 21 }
        ]
      }'

La resposta és un objecte factura ordinari amb is_corrective a true i amb un bloc corrective que porta original_id, original_number, original_date, correction_reason, correction_type, correction_nature, base_rectificada, cuota_rectificada i correction_aeat_type — aquest últim és el codi de rectificació que va viatjar de debò a l'AEAT.

Per llistar totes les rectificatives emeses contra una factura, fes servir GET /v1/invoices/{id}/correctives.

Com es construeixen les línies

Les tres combinacions produeixen documents genuïnament diferents (BR-INV-036):

full sense lines — una anul·lació completa. Es genera una línia per cada línia de l'original amb la quantitat negada, conservant el producte, el preu, el tipus impositiu, la retenció, el recàrrec, el descompte i el règim indirecte de l'original.

full amb lines — una substitució. Les línies que envies són les línies finals; no hi ha comparació de diferències. Cada camp que ometis s'hereta per índex de la línia original equivalent, fiscalitat inclosa. L'herència no cau mai a un tipus per defecte, així que una operació exempta continua exempta en lloc d'adquirir un 21 % fantasma. Si envies més línies de les que tenia l'original, les sobrants no tenen contrapart: no porten producte i la seva fiscalitat queda a zero.

partial — línies d'ajust. No hi ha cap línia original amb què casar per índex, així que els valors per defecte són zero i product_id viatja només si el declares explícitament. Una línia sense product_id no mou inventari.

L'herència per índex dona per fet que les línies rectificades arriben en el mateix ordre que les originals. Reordenar o suprimir línies creua els valors heretats. Quan qui et crida reordeni, declara els camps de manera explícita a cada línia en lloc de recolzar-te en l'herència.

Les línies de suplert també s'hereten de l'original, i per això el payload de la rectificativa accepta line_type i source_invoice_reference en una línia. Vegeu Suplerts.

Què surt al PDF

La rectificativa s'imprimeix com a document a part amb el seu propi número, derivat de l'original: SERIE-AAAA-NNN-REC{n}, on {n} compta les rectificatives ja emeses contra aquest original (BR-INV-021).

Els seus blocs de destinatari i emissor es congelen en el seu propi moment d'emissió, no es copien de l'original. És deliberat: un motiu habitual per rectificar és precisament que les dades del destinatari estaven malament, així que la rectificativa ha d'imprimir les corregides (BR-INV-024).

Com qualsevol factura emesa per una empresa adherida a VeriFactu, porta el bloc QR legal.

Què arriba a l'AEAT

Com a registre VeriFactu, la rectificativa és una alta ordinària amb un invoice_type que és el codi de rectificació. El seu desglossament fiscal porta el signe descrit a Substitució o diferències: base i quota negatives per a una correcció a la baixa per diferències, sempre no negatives per a una substitució. La substitució declara a més la base i la quota rectificades de l'original; una correcció per diferències no ho fa, en línia amb l'esquema de l'AEAT (BR-VFC-033).

A la declaració trimestral d'IVA, la rectificació d'una operació en règim general aterra a les caselles [14] i [15] amb el seu signe: una correcció a la baixa resta, una a l'alça suma. El snapshot fiscal conserva el codi real (R1R4) en lloc de col·lapsar tota rectificativa a R5 (BR-TXR-019).

Aquest encaminament aplica només al règim general. Una rectificativa amb un règim d'operació de capçalera diferent segueix les caselles pròpies d'aquell règim — la inversió del subjecte passiu i les operacions exemptes o d'exportació es declaren en un altre lloc i per tant no arriben a [14]/[15]. Vegeu Claus de règim per saber com es determina el règim de capçalera.

Traçabilitat

Derivat de les regles de domini del backend de Factuarea:

  • BR-INV-001 — una rectificativa ha de referenciar un original emès; els estats admissibles.
  • BR-INV-017 — la naturalesa de la rectificació és exactament S o I.
  • BR-INV-018 — el mapatge de slug de motiu a R1R4.
  • BR-INV-019 — una rectificativa d'una F2 neix R5.
  • BR-INV-021 — la numeració -REC{n} de les rectificatives.
  • BR-INV-024 — el snapshot immutable del destinatari, congelat en el moment d'emissió de la rectificativa mateixa.
  • BR-INV-035correction_code explícit, la matriu legal de l'AEAT i justification.
  • BR-INV-036 — com es generen les línies de la rectificativa i què s'hereta per índex.
  • BR-VFC-033 — base i quota negatives admeses només en rectificacions per diferències.
  • BR-TXR-019 — el signe a les caselles [14]/[15] i la conservació del codi de rectificació real.

En aquesta pàgina