Facturació des de terminals desatesos
Una factura simplificada ja cobrada des d'un caixer en una sola crida idempotent, la remissió de VeriFactu a través de Factuarea, l'esmena de registres acceptats i errors per línia. Tres canvis que trenquen: una línia sense tipus ja no pren el 21 %, emetre es rebutja quan el registre no cap a l'esquema de l'AEAT i, en mode NO VERI*FACTU, cal un certificat utilitzable. POST /v1/verifactu/records/{id}/retry ja no respon max_retries_exceeded.
3 d'octubre de 2026 — Un terminal d'autoservei o una màquina expenedora poden ja emetre una factura simplificada cobrada, amb el seu QR VERI*FACTU, en una sola crida idempotent. Al darrere hi ha una revisió de com arriben els registres a l'AEAT, una manera de remetre a través de Factuarea en lloc de fer-ho amb el teu propi certificat i una comprovació més estricta abans d'emetre una factura. Llegeix primer els tres canvis que trenquen; les operacions noves i les actualitzades es llisten al final.
Canvis que trenquen
1. Una línia sense tipus d'IVA ja no pren el 21 %. Una línia de venda sense
tax_rate, sense impost referenciat i sense producte amb impost pren ara l'IVA per
defecte de l'empresa per a aquest tipus de document. Si l'empresa no en té cap, la
crida respon 422 missing_required_param amb error.param: lines.N.tax_rate.
Afecta factures, pressupostos, proformes, albarans i factures recurrents, a l'API v1 i
a MCP. Envia tax_rate explícitament, o configura l'IVA per defecte.
2. Una factura el registre de la qual no cap a l'AEAT no s'emet. Amb VeriFactu
activat, una factura que abans s'emetia i el registre de la qual fallava després
respon ara 422 verifactu_not_eligible abans d'emetre's, amb el camp a
error.param. No es consumeix número. Els límits són a la taula de sota.
3. El mode NO VERI*FACTU necessita un certificat utilitzable per emetre i per
anul·lar. Una empresa que ha activat VeriFactu en mode NO VERI*FACTU i no té un
certificat utilitzable ja no pot emetre ni anul·lar fins que en pugi un: l'operació
respon 422 verifactu_not_eligible amb subcode: signing_certificate_unavailable i
error.param certificate, representation o system_certificate, i la factura
queda com estava. No afecta les empreses amb VeriFactu desactivat — el mode per
defecte de les quals és no_verifactu sense estar al sistema — ni les empreses en
mode VERI*FACTU, que mai no es bloquegen per això.
A més, POST /v1/verifactu/records/{record}/retry ja no respon
max_retries_exceeded per als registres de facturació: ja no hi ha límit d'intents. El
codi continua aplicant al reintent d'un esdeveniment en mode no_verifactu.
Cobrament desatès a POST /v1/invoices
POST /v1/invoices i la tool
MCP create_invoice guanyen, amb la mateixa semàntica:
type: "F2": una factura simplificada, sense client (tiquet anònim) o amb un (factura simplificada qualificada, registrada com aF1ambFacturaSimplificadaArt7273).prices_include_tax: elunit_pricede cada línia és el preu final, i la base es calcula al cèntim perquè el total sigui igual a la suma que has enviat («qualsevol línia, i partir»;422amount_reconciliation_failednomés quan una retenció o un recàrrec desplacen el total).payment(method,paid_at,reference): el pagament es registra després d'emetre.operation_on: el dia de l'operació quan difereix d'issued_on.options.register_verifactu: l'alta VeriFactu es genera abans de respondre.options.wait_for_pdfespera fins a uns 15 segons el PDF A4.
El 201 porta tres blocs addicionals, només en un cobrament desatès: verifactu
(status, error_code, aeat_status, huella, qr_url, qr_png_base64, legend,
csv), pdf (status, url, expires_at) i public_url. La guia és
Facturació des de terminals desatesos, i el que ha de
declarar el teu terminal és a
Compliment del component de l'integrador.
El reenviament per external_id no caduca mai:
- El mateix
external_idamb el mateix tipus i total respon200ambIdempotent-Replayed: truei la factura ja emesa, completant l'alta i el pagament si faltaven. Un email a la cua o lliurat no es torna a enviar. - Un tipus o un total diferents respon
409idempotency_key_reused, amberror.type: idempotency_error,subcode: unattended_replay_mismatchiparam: external_id. - Una altra petició amb el mateix
external_idencara en curs fa que la segona esperi fins a 20 segons, i respongui després409resource_lockedsi la primera no ha acabat; la mateixa petició es pot enviar una altra vegada.
Un email demanat sense destinatari possible (options.send_automatically sense
options.send_to i sense email de client) es rebutja abans de crear res: 422
missing_required_param amb error.param: options.send_to, sense esborrany i sense
número. També regeix per a les altres peticions de POST /v1/invoices, que abans
rebutjaven després de crear l'esborrany.
Emetre es rebutja quan el registre no hi cap
422 verifactu_not_eligible el retornen les operacions que emeten una factura:
POST /v1/invoices amb options, POST /v1/invoices/{id}/issue,
POST /v1/invoices/{id}/send i …/mark-sent quan emeten,
POST /v1/invoices/{id}/corrective i POST /v1/invoices/substitute-simplified. La
factura continua sent un esborrany i no consumeix número; corregeixes el camp i repeteixes.
A bulk-create i bulk-status el rebuig apareix a failures[], per element.
error.param | Causa |
|---|---|
client_id | Nom del client absent o de més de 120 caràcters; un NIF espanyol que no té 9 caràcters; una identificació estrangera de més de 20; un país que l'AEAT no admet; una factura completa sense client. |
series_id | El número de la factura té més de 60 caràcters o caràcters que l'AEAT no admet. |
original_invoice_id | El número de la factura rectificada no és admissible. |
simplified_invoice_uuids | El número d'una factura simplificada substituïda no és admissible. |
company_name | Raó social de l'empresa de més de 120 caràcters. Una raó social absent és 422 business_rule_violation amb el mateix param. |
lines | Més de 12 desglossaments fiscals, o un import que no cap en 12 xifres enteres i 2 decimals. |
total | Un total, o la seva quota, que no cap al format; una F2 per sobre de 3.000 €. |
type | La marca de simplificada qualificada amb un tipus que no l'admet. |
Sense certificat de signatura utilitzable
Per a una empresa amb VeriFactu activat en mode NO VERI*FACTU, emetre i anul·lar es
rebutgen abans d'executar-se quan l'empresa no pot signar el registre. Les operacions
són POST /v1/invoices amb options, …/issue, …/send, …/mark-sent,
…/corrective, substitute-simplified, …/annul i …/void. error.param diu què
falta:
error.param | Què falta | Qui ho resol |
|---|---|---|
certificate | El certificat de l'empresa és absent, caducat, revocat, d'un altre NIF o il·legible. | L'empresa, a Configuració → Certificat digital. |
representation | La representació que permet a Factuarea signar en nom de l'empresa no està activa. | L'empresa: registrar-la o canviar al seu propi certificat. |
system_certificate | El certificat de Factuarea no està disponible. | Factuarea. |
GET /v1/invoices/{invoice}/can-annul ho anticipa: can_annul és false i reasons
porta el mateix missatge. A bulk-status el rebuig apareix a failures[], per element.
Consulta Alta automàtica a VeriFactu.
Anul·lar una operació cobrada, tiquets i data de l'operació
revert_collections—POST /v1/invoices/{invoice}/annull'accepta (falseper defecte). Ambtrue, tots els pagaments vigents es reverteixen amb el motiu reservatissued_in_errori la factura s'anul·la en una sola operació atòmica.GET …/can-annulafegeixrequires_collection_reversaliactive_collections_amount.POST /v1/invoices/{invoice}/payments/{payment}/reversalrebutjaissued_in_erroramb422reversal_reason_reserved.POST …/voidno té aquesta opció.- Format tiquet —
GET /v1/invoices/{invoice}/pdfi…/pdf-linkacceptenformat:a4(per defecte),ticket_80oticket_58. Cada format es genera i es desa a la memòria cau per separat, i l'ETagcanvia quan es crea l'alta VeriFactu i amb el format. operation_on— el recurs de factura el retorna, iPOST /v1/invoices,PUT /v1/invoices/{invoice}iPOST /v1/invoices/bulk-createl'accepten. No pot ser posterior aissued_on(422operation_date_after_issue_date) tret que la primera línia que declara unregime_keyfaci servir 14 o 15, i una factura rectificativa l'hereta.- Detall de pagaments — cada entrada de
payments.detailal recurs de factura porta les cinc claus de reversió (is_reversed,reversed_at,reversal_reason,reversal_reason_textireversal_note), també un pagament que continua en vigor (falseinull). - Enviament de la proforma —
shipping_costés un import amb IVA inclòs. En convertir la proforma en factura es desglossa en base i IVA i es conserva el total. - Conversions — convertir un pressupost, una proforma o un albarà respon, només quan
hi ha alguna cosa a advertir,
warningsiwarning_codes(zero_rate_line_without_exemption): una línia ha quedat al 0 % sense causa d'exempció. No bloqueja. Elwarningsde la factura rectificativa passa a ser opcional.
Errors que anomenen la línia
Un error de domini que neix d'una línia d'un document porta line_index, la posició de
la línia començant per zero, al costat de param: error.line_index a l'API (i com a
membre arrel d'application/problem+json) i error.data.line_index a MCP. És additiu;
param continua anomenant el camp exactament com abans.
Rectificatives i edició
- Naturalesa per línia en una rectificativa —
POST /v1/invoices/{invoice}/correctivei la toolcreate_corrective_invoiceacceptenunit,regime_key,exemption_reasoniexemption_reason_textper línia. Una clau que omets hereta la línia original per índex; una clau que envies la substitueix;nullsignifica cap. - Les edicions no revaliden el que ja està desat. Editar un document de les cinc
famílies de venda ja no exigeix que les referències que ja porta desades (variant o
presentació del catàleg, configuració, opcions, despeses vinculades) continuïn
actives o existents. Les referències noves o canviades es validen com sempre.
update_delivery_notea MCP valida com l'API. original_pack_dataes retorna i es conserva també a les línies de proformes i albarans, de manera que sobreviu a les edicions i a la conversió a factura.
VeriFactu: remissió, registres bloquejats i esmena
- Remissió per lots — els registres d'una empresa van a l'AEAT en lots ordenats de fins a 1.000, respectant el temps d'espera que indica l'AEAT, amb la resposta llegida registre a registre. Les fallades tècniques es reintenten almenys cada hora sense topall. Consulta Com arriben els registres a l'AEAT.
POST /v1/verifactu/records/retry-blocked(nova, scopeverifactu:write) — reactiva tots els registres bloquejats de l'empresa i respon202ambdata.reactivated. La tool MCP ésretry_blocked_verifactu_records.- Estadístiques —
GET /v1/verifactu/statsafegeixpending_incident_count,blocked_incident_countioldest_pending_at. - Registre — afegeix
is_blocked,block_reason,aeat_error_code(inclouSCHEMA_INVALID, un registre que va incomplir l'esquema de l'AEAT i no es va enviar mai) ican_subsanar. POST /v1/verifactu/records/{record}/subsanar— ara admet també registres acceptats i genera sempre un registre nou:data.idés l'id del nou, no el del registre que vas enviar. Els errors de l'esmena sónrecord_not_rejected,record_not_subsanableirequires_annulment. Consulta Esmena de registres VeriFactu.- Remissió per un tercer —
GET,POSTiDELETE /v1/verifactu/representation(noves) registren, llegeixen i revoquen la representació, ambvalid_until(com a màxim cinc anys),is_expiredi un avís 30 i 7 dies abans que caduqui, iremission_modeaPUT /v1/verifactu/settings. El201del registre portaremission_mode; revocar admetreasonde 3 a 500 caràcters.GET /v1/verifactu/configafegeixremission_mode,social_collaborator_available,has_active_representation,active_representation_valid_until,active_representation_is_expiredipresenter_certificate_status. Les tools MCP sónget_company_representation,register_company_representationirevoke_company_representation. - Declaración responsable —
GET /v1/verifactu/declaracion-responsableretorna el contingut de l'article 15:components,producer_addressisignature_types, isystem_nameés ara el nom del sistema i no el seu codi. - Factures simplificades — una factura simplificada amb el NIF del destinatari es
registra com a
F1ambFacturaSimplificadaArt7273, i la seva rectificativa com aR1aR4; la rectificativa d'una d'anònima continua sentR5.
Codis d'error: verifactu_not_eligible,
signing_certificate_unavailable,
resource_locked,
idempotency_key_reused,
unattended_replay_mismatch,
amount_reconciliation_failed,
reversal_reason_reserved,
operation_date_after_issue_date,
simplified_invoices_disabled,
representation_required,
invalid_representation i
social_collaborator_unavailable.
Migració
- Envia
tax_ratea cada línia de venda, o configura l'IVA per defecte de l'empresa per a cada tipus de document, i tracta422missing_required_paramamblines.N.tax_rate. - Tracta
422verifactu_not_eligiblea cada operació que emet una factura: es recupera corregint el camp d'error.param. - Si una empresa funciona amb VeriFactu en mode NO VERI*FACTU, comprova que té un certificat utilitzable (o una representació activa) abans d'emetre o d'anul·lar.
- Deixa de ramificar segons
max_retries_exceededals registres de facturació. - Si crides
subsanar, llegeixdata.idcom el registre nou. - Un terminal envia un
external_idestable per venda i reenvia la mateixa petició fins a rebre una resposta definitiva.
Nous endpoints4
| Endpoint | Descripció |
|---|---|
POST/v1/verifactu/records/retry-blocked | Reintentar tots els registres VeriFactu bloquejats |
GET/v1/verifactu/representation | Recuperar la representació vigent |
POST/v1/verifactu/representation | Registrar una representació |
DEL/v1/verifactu/representation | Revocar la representació vigent |