Factuarea API

Tots els error codes

Referència completa de cada error code de l'API pública, agrupat per bounded context, amb el seu estat HTTP i type.

Aquesta és la referència canònica de tots els code d'error que pot retornar l'API pública, agrupats pel bounded context que els emet. Cada code és estable entre versions; el message és només per mostrar. El total i l'agrupació es generen del catàleg en viu.

Compte

CodeTypeHTTPDescripció
account_not_foundnot_found_error404No es va poder resoldre el compte associat a la clau, cosa que sol voler dir que la clau ja no apunta a una empresa viva.
api_key_already_revokedinvalid_request_error422La clau ja estava revocada, i una clau revocada no admet més operacions: la revocació és terminal.
api_key_not_foundnot_found_error404L'identificador no correspon a cap clau API de l'empresa autenticada.

Autenticació

CodeTypeHTTPDescripció
api_key_expiredauthentication_error401La clau va passar la seva data de caducitat.
api_key_revokedauthentication_error401La clau va ser revocada, i una clau revocada no torna a autenticar mai: revocar és justament la manera de tallar una credencial filtrada.
invalid_api_keyauthentication_error401La clau no correspon a cap clau activa. Pot estar mal copiada, truncada, o pertànyer a un altre entorn: les claus de prova i les de producció no són intercanviables.
ip_not_allowedauthentication_error401La clau restringeix les adreces que accepta, i la petició va arribar des d'una que no és a la llista.
missing_api_keyauthentication_error401La petició no porta credencials: ni capçalera Authorization ni X-API-Key.
origin_not_allowedauthentication_error401La petició ve d'un origen de navegador que la clau no accepta.
too_many_auth_failuresauthentication_error429Van arribar massa intents fallits d'autenticació des de la mateixa adreça, així que queda bloquejada temporalment per frenar els intents d'endevinar credencials.

Autorització

CodeTypeHTTPDescripció
addon_not_activeauthorization_error403La funcionalitat pertany a un add-on que ara mateix no està actiu per a l'empresa.
feature_not_available_in_planauthorization_error403La funcionalitat no està inclosa en el pla de l'empresa.
forbidden_actionauthorization_error403L'acció està bloquejada per a aquest recurs encara que l'abast sigui el correcte: el recurs pertany a un catàleg compartit, o el canvi va per un altre endpoint.
insufficient_scopeauthorization_error403La clau autentica correctament però no porta l'abast que exigeix aquesta operació. Els abasts es concedeixen en emetre la clau i no s'amplien en temps de crida.
max_api_keys_exceededauthorization_error422L'empresa va arribar al nombre de claus API que permet el seu pla.
max_webhook_endpoints_exceededauthorization_error422L'empresa va arribar al nombre d'endpoints de webhook que permet el seu nivell d'add-on.
module_not_available_in_sandboxauthorization_error403El recurs pertany a un mòdul vetat en mode test. La sandbox mai toca l'AEAT, els bancs ni cobraments reals, així que aquests mòduls queden fora a propòsit.
scope_not_allowed_by_planauthorization_error422Un dels abasts demanats pertany a un mòdul que el pla no inclou, així que la clau naixeria amb un permís que mai podria exercir.
scope_not_allowed_in_sandboxauthorization_error422Una clau de prova no pot néixer amb abasts de mòduls vetats a la sandbox.

Clients

CodeTypeHTTPDescripció
alternative_id_type_invalidinvalid_request_error422El tipus d'identificador alternatiu queda fora del catàleg nif_iva, passport, country_id, residence_certificate, other_document, not_registered.
cannot_have_both_tax_id_and_alternative_idinvalid_request_error422El client envia tax_id i un identificador alternatiu alhora. La identitat fiscal és una: l'identificador alternatiu existeix precisament per a parts sense NIF espanyol.
census_requires_tax_idinvalid_request_error422La verificació censal contrasta el parell nom + NIF contra l'AEAT, i en falta un dels dos.
client_has_documentsinvalid_request_error422El client està referenciat per documents emesos. Esborrar-lo deixaria factures, pressupostos o albarans sense la part a qui es van emetre, i els registres fiscals han de seguir sent traçables.
client_import_too_largeinvalid_request_error422El CSV supera el límit de files que admet la importació síncrona, ja que el fitxer sencer es processa dins de la mateixa petició.
client_not_foundnot_found_error404L'identificador no resol a cap client de l'empresa autenticada.
client_requires_tax_identityinvalid_request_error422El client no té identitat fiscal: ni tax_id ni identificador alternatiu, i no es pot emetre una factura a una part sense identificar.
direct_debit_requires_default_bank_accountinvalid_request_error422Es va triar domiciliació bancària com a mètode de pagament, però el client no té compte bancari per defecte on carregar.
tax_id_already_existsconflict_error409Un altre client de l'empresa ja té aquest NIF, i el NIF identifica la part sense ambigüitat dins d'una empresa.

Empreses

CodeTypeHTTPDescripció
company_inactiveauthorization_error403El perfil que indica X-Active-Profile és una de les teves empreses gestionades, però està desactivada i no es pot operar fins que torni a estar activa.
gestoria_module_requiredauthorization_error403La gestoria té un pla vigent, però sense el mòdul de gestoria, així que no pot crear ni operar empreses gestionades.
gestoria_plan_requiredpayment_required_error402La gestoria no té una subscripció de pagament activa, així que no hi ha subscripció sobre la qual cobrar el seient.
payment_method_requiredpayment_required_error402Donar d'alta una empresa gestionada cobra un seient immediatament, i la gestoria opera en mode real sense mètode de pagament configurat.
seat_charge_failedpayment_required_error402El cobrament immediat del prorrateig del seient va ser rebutjat: la targeta es va denegar, necessita autenticació, o el proveïdor de pagament era inaccessible. L'empresa no es crea si el seient no es cobra.

Albarans

CodeTypeHTTPDescripció
delivery_note_not_foundnot_found_error404L'identificador no resol a cap albarà de l'empresa autenticada.
delivery_note_section_not_editable_in_statusinvalid_request_error422La secció logística —transportista, vehicle, conductor— està congelada perquè l'albarà ja està lliurat, facturat o cancel·lat.
driver_tax_id_requires_nameinvalid_request_error422Es va enviar el NIF del conductor sense el seu nom, i un identificador sense nom no identifica ningú al document de lliurament.
signature_payload_too_largeinvalid_request_error422La imatge de la signatura supera la mida admesa per al camp.

Empleats

CodeTypeHTTPDescripció
employee_seat_charge_failedpayment_required_error402El cobrament immediat del prorrateig del seient d'empleat va ser rebutjat: la targeta es va denegar, necessita autenticació, o el proveïdor de pagament era inaccessible. L'empleat no s'activa si el seient no es cobra.
employee_seat_payment_method_requiredpayment_required_error402Donar d'alta o reactivar un empleat cobra un seient immediatament, i l'empresa opera en mode real sense mètode de pagament configurat.

Events

CodeTypeHTTPDescripció
event_not_foundnot_found_error404L'identificador no correspon a cap esdeveniment de l'empresa autenticada, o l'esdeveniment va ser purgat per la política de retenció de 30 dies.

Idempotency

CodeTypeHTTPDescripció
idempotency_key_in_useidempotency_error409Hi ha una altra petició amb la mateixa Idempotency-Key encara en curs, i encara no se'n coneix el resultat.
idempotency_key_invalidinvalid_request_error400La Idempotency-Key no encaixa amb el format admès: entre 1 i 255 caràcters ASCII imprimibles.
idempotency_key_reusedidempotency_error409Aquesta Idempotency-Key ja es va fer servir amb un payload diferent. La clau identifica una operació concreta, així que reutilitzar-la per a una altra buidaria de sentit el replay.

Factures

CodeTypeHTTPDescripció
corrective_invoice_inanulableinvalid_request_error422La factura és al seu torn una rectificativa, i les rectificatives no s'anul·len mai: la cadena de correcció ha de seguir sent auditable de punta a punta.
export_limit_exceededinvalid_request_error422La selecció filtrada supera el límit de 5.000 factures de l'exportació, així que el fitxer es rebutja d'entrada en lloc de truncar-se en silenci.
invalid_correction_natureinvalid_request_error422correction_nature només accepta S (substitució: la rectificativa porta els imports corregits complets) o I (per diferències: només porta el delta).
invalid_correction_reasoninvalid_request_error422El motiu de rectificació queda fora de la llista fiscal tancada (error_fundado, concurso, incobrable, error_importe, error_cliente, devolucion, descuento, otras), que mapeja als codis AEAT R1 a R4.
invalid_invoice_idinvalid_request_error400La referència de factura rebuda no és un identificador vàlid; sol voler dir que s'ha colat un valor intern on l'API espera l'id públic.
invalid_invoice_numberinvalid_request_error422El número de factura no segueix el format canònic SÈRIE-AAAA-NNN, més el sufix -RECn a les rectificatives.
invalid_invoice_statusinvalid_request_error422El valor enviat com a estat de factura queda fora del catàleg del cicle de vida (draft, scheduled, sent, paid, overdue, cancelled, annulled).
invalid_invoice_uuidinvalid_request_error400L'identificador de factura de la ruta o del payload no és un UUID vàlid.
invalid_payment_methodinvalid_request_error422El mètode de pagament queda fora de l'allowlist tancada: bank_transfer, cash, credit_card, sepa_direct_debit, paypal, bizum, other.
invoice_already_annulledinvalid_request_error422La factura ja estava anul·lada. L'anul·lació és terminal i, amb VeriFactu actiu, el seu registre d'anul·lació ja va arribar a l'AEAT.
invoice_already_paidinvalid_request_error422La factura ja està cobrada. paid és un estat terminal i comptablement tancat: l'IVA repercutit ja s'ha declarat, o es declararà en el període.
invoice_already_sentinvalid_request_error422La factura ja va ser emesa: té número definitiu de sèrie i, amb VeriFactu actiu, l'alta a l'AEAT. L'emissió no passa dues vegades.
invoice_cannot_assign_numberinvalid_request_error422Es va demanar número definitiu per a una factura que no és esborrany, o que ja en té. La numeració de sèrie és monòtona i els números no es reassignen.
invoice_invalid_status_transitioninvalid_request_error422L'estat destí no és assolible des de l'actual. El cicle de vida és dirigit: draft passa a scheduled o sent, sent a paid, overdue o annulled, i paid, cancelled i annulled són terminals.
invoice_not_cancellable_in_current_stateinvalid_request_error422Cancel·lar retira un esborrany que encara no és fiscalment vinculant, així que només s'aplica mentre la factura està en draft.
invoice_not_correctable_in_current_stateinvalid_request_error422Una rectificativa només s'emet contra una factura ja emesa (sent o paid). Un esborrany, una factura cancel·lada o una anul·lada no tenen res a rectificar.
invoice_not_deletable_in_current_stateinvalid_request_error422Només s'esborren les factures en draft i cancelled. Una factura numerada no desapareix mai: la sèrie correlativa ha de seguir sent auditable.
invoice_not_editable_in_current_stateinvalid_request_error422Només un esborrany admet edició. Un cop emesa, la factura és immutable i el seu contingut queda congelat juntament amb el seu registre fiscal.
invoice_not_eligible_for_actioninvalid_request_error422L'acció sol·licitada no s'aplica a aquesta factura: el seu tipus o el seu estat actual la deixen fora de l'abast de l'operació.
invoice_not_foundnot_found_error404L'identificador no resol a cap factura de l'empresa autenticada. Les factures d'una altra empresa responen exactament igual.
invoice_not_modifiable_in_current_stateinvalid_request_error422El camp que intentes canviar està congelat per a l'estat actual — per exemple el règim fiscal d'una factura anul·lada.
invoice_not_paidinvalid_request_error422Es va demanar un justificant de pagament d'una factura sense cobrament registrat, així que no hi ha res a certificar.
invoice_not_reschedulable_in_current_stateinvalid_request_error422Reprogramar mou la data d'emissió d'una factura que espera en scheduled, i aquesta factura no està esperant.
invoice_not_schedulable_in_current_stateinvalid_request_error422Només un esborrany es pot programar: la programació reserva un moment futur d'emissió sense consumir encara número de sèrie.
invoice_not_unschedulable_in_current_stateinvalid_request_error422Desprogramar torna la factura de scheduled a draft, així que només s'aplica mentre segueix esperant a emetre's.
invoice_not_unsendable_in_current_stateinvalid_request_error422Desfer la marca de lliurament només s'aplica a una factura sent: neteja sent_at i manté la factura emesa.
invoice_requires_at_least_one_lineinvalid_request_error422La factura no porta cap línia d'operació, així que no té base imposable i no es pot emetre. Passa tant quan no envies línies com quan totes les que envies són de suplert: un suplert és una quantitat pagada per compte del client (art. 78.Tres.3 LIVA), no una operació teva.
invoice_year_required_for_ambiguous_numberinvalid_request_error422Aquest número de factura existeix en més d'un exercici, així que per si sol no identifica una única factura.
line_total_checksum_mismatchinvalid_request_error422El line_total declarat no coincideix amb el que calcula Factuarea per a aquella línia (quantitat × preu − descompte + IVA − retenció + recàrrec) i la desviació supera el cèntim de tolerància. L'import que es factura i es declara a l'AEAT és sempre el calculat aquí, així que la discrepància vol dir que el teu sistema i la factura emesa no quadrarien.
line_type_invalidinvalid_request_error422El tipus de línia queda fora del catàleg tancat NORMAL / SUPLIDO. Una factura emesa només distingeix dues naturaleses: el que véns tu, que forma base imposable i porta IVA, i el suplert, que són diners avançats en nom i per compte del client i per això queda fora de la base (art. 78.Tres.3 LIVA).
no_invoices_in_periodinvalid_request_error422L'operació trimestral no va trobar factures en el període demanat, així que no hi ha res a empaquetar ni a enviar.
payment_method_invalidinvalid_request_error422La mateixa allowlist tancada que invalid_payment_method, reportada quan el valor es rebutja en llegir el camp de mètode de pagament del payload.
reminder_not_applicableinvalid_request_error422El recordatori de pagament no escau: la factura no està en sent ni overdue, no hi ha adreça de destinatari, falta l'enllaç públic o està desactivat, o ja va sortir un altre recordatori les últimes 24 hores.
scheduled_for_in_pastinvalid_request_error422scheduled_for no és estrictament futur, així que no hi ha cap espera a reservar.
simplified_invoice_cannot_be_substitutedinvalid_request_error422Una de les factures de la llista de substitució no es pot substituir: no és simplificada, està cancel·lada o anul·lada, pertany a una altra empresa, o ja té substitutiva.
simplified_invoice_not_allowedinvalid_request_error422L'operació no és elegible per a factura simplificada: supera els 3.000 €, o és un lliurament intracomunitari, una exportació, una operació amb inversió del subjecte passiu, o el client necessita factura completa per deduir l'IVA.
simplified_limit_exceededinvalid_request_error422Les línies portarien la factura simplificada (F2) per sobre del límit legal absolut de 3.000 € IVA inclòs.
suplido_line_cannot_carry_taxesinvalid_request_error422La línia de suplert porta càrrega pròpia: tipus d'IVA, retenció, recàrrec d'equivalència, descompte, clau de règim, causa d'exempció o producte/paquet. Un suplert no és una operació de l'emissor, així que repercutir-hi un impost seria tributar per un lliurament que no has fet, i lligar-lo a un producte mouria un estoc que mai no has venut.
suplido_not_allowed_in_simplified_invoiceinvalid_request_error422La factura és simplificada (F2) i una simplificada no identifica el destinatari. Sense destinatari identificat no hi ha a qui acreditar el pagament per compte d'altri, així que l'import no admet el tractament de suplert en aquest tipus de factura.
suplido_requires_source_invoice_referenceinvalid_request_error422La línia de suplert no informa source_invoice_reference, el número del justificant que el tercer va expedir a nom del client. Sense aquest justificant el pagament no s'acredita com a fet per compte d'altri i Hisenda el tractaria com a base imposable pròpia de l'emissor, amb el seu IVA repercutit.

Notificacions

CodeTypeHTTPDescripció
notification_not_foundnot_found_error404L'identificador no correspon a cap notificació de l'empresa autenticada, o la notificació va quedar fora de la finestra de retenció.

Pagaments

CodeTypeHTTPDescripció
invalid_payment_dateinvalid_request_error422La data de pagament queda fora de la finestra admesa: no pot ser anterior a la data d'emissió de la factura ni situar-se al futur.
payout_reconciliation_amount_mismatchinvalid_request_error422L'import confirmat no coincideix amb el net de la liquidació, així que la conciliació tancaria amb una diferència que ningú justifica.
receipt_not_availableinvalid_request_error422No hi ha justificant a emetre perquè el document no té cap cobrament registrat al darrere.
stripe_payout_already_reconciledinvalid_request_error422La liquidació ja estava conciliada, i la conciliació és terminal: repetir-la comptabilitzaria dues vegades l'apunt bancari.
stripe_payout_not_foundnot_found_error404L'identificador no resol a cap liquidació de l'empresa autenticada.

Productes

CodeTypeHTTPDescripció
pack_in_useinvalid_request_error422El pack està referenciat per documents emesos, així que esborrar-lo trencaria la seva composició.
pack_not_foundnot_found_error404L'identificador no resol a cap pack de l'empresa autenticada.
pack_share_link_failedapi_error500No es va poder generar l'enllaç per compartir el pack. El pack en si no queda afectat.
product_in_useinvalid_request_error422El producte està referenciat per documents emesos o per altres entrades del catàleg, i eliminar-lo deixaria aquestes referències penjant.
product_not_foundnot_found_error404L'identificador no resol a cap producte de l'empresa autenticada.
sku_already_existsconflict_error409Un altre producte de l'empresa ja fa servir aquest SKU, i el SKU identifica l'article sense ambigüitat dins del catàleg.

Factures proforma

CodeTypeHTTPDescripció
invalid_expiry_dateinvalid_request_error422La data de venciment és anterior a la d'emissió, o la supera en més de 365 dies.
invalid_proforma_idinvalid_request_error400La referència de proforma rebuda no és un identificador vàlid, normalment perquè un valor intern va substituir l'id públic.
invalid_proforma_numberinvalid_request_error422El número de proforma no segueix el format canònic de numeració de la seva sèrie.
invalid_proforma_statusinvalid_request_error422El valor enviat com a estat queda fora del catàleg draft, accepted, rejected, expired, invoiced, cancelled.
invalid_proforma_uuidinvalid_request_error400L'identificador de proforma de la ruta o del payload no és un UUID vàlid.
proforma_already_acceptedinvalid_request_error422El client ja va acceptar la proforma, i l'acceptació es registra una sola vegada.
proforma_already_rejectedinvalid_request_error422La proforma ja està marcada com a rebutjada.
proforma_cannot_be_acceptedinvalid_request_error422L'acceptació no escau des de l'estat actual: una proforma facturada, cancel·lada o expirada ja no l'admet.
proforma_cannot_be_rejectedinvalid_request_error422El rebuig no escau des de l'estat actual: un cop facturada, cancel·lada o expirada, la proforma està tancada.
proforma_cannot_be_sentinvalid_request_error422L'enviament per correu no s'aplica a una proforma en estat terminal: no hi ha oferta viva a lliurar.
proforma_invalid_status_transitioninvalid_request_error422L'estat destí no és assolible des de l'actual: un esborrany s'accepta, es cancel·la o expira; una proforma acceptada es factura, es rebutja o expira; facturada, cancel·lada i expirada són terminals.
proforma_not_convertible_in_current_stateinvalid_request_error422Convertir en factura exigeix que el client hagi acceptat la proforma; des de qualsevol altre estat no hi ha acord a facturar.
proforma_not_deletable_in_current_stateinvalid_request_error422Només s'esborra una proforma en esborrany. Un cop acceptada, rebutjada o facturada forma part del rastre comercial.
proforma_not_draftinvalid_request_error422L'operació només té sentit mentre la proforma és un esborrany, i aquesta ja ha avançat.
proforma_not_editable_in_current_stateinvalid_request_error422Només una proforma en esborrany admet edició. Un cop acceptada, rebutjada, expirada, facturada o cancel·lada, el seu contingut queda fixat.
proforma_not_foundnot_found_error404L'identificador no resol a cap proforma de l'empresa autenticada.
proforma_requires_at_least_one_lineinvalid_request_error422La proforma no porta línies, així que no hi ha import a posar davant del client.
public_link_expires_at_exceeds_max_daysinvalid_request_error422La caducitat demanada per a l'enllaç públic supera la finestra màxima que permet el teu pla per a documents compartits.

Factures de compra

CodeTypeHTTPDescripció
attachment_invalid_filenameinvalid_request_error422El nom del fitxer no és utilitzable: és buit, porta components de ruta, o supera els 200 caràcters.
attachment_mime_not_allowedinvalid_request_error422El tipus de fitxer queda fora del conjunt admès: PDF, PNG, JPEG, XML i HTML.
attachment_missingnot_found_error404La factura de compra existeix però no té fitxer adjunt, així que no hi ha res a descarregar.
attachment_too_largeinvalid_request_error422El fitxer supera la mida màxima permesa per a un adjunt de document.
cannot_attach_to_cancelled_purchase_invoiceinvalid_request_error422La factura està cancel·lada, i adjuntar documents a un registre cancel·lat alteraria documentació ja tancada.
invalid_purchase_invoice_idinvalid_request_error400La referència de factura de compra rebuda no és un identificador vàlid, normalment perquè un valor intern va substituir l'id públic.
invalid_purchase_invoice_numberinvalid_request_error422El número de factura és buit o no encaixa amb el format admès. En una factura de compra el número és el que va imprimir el proveïdor, no un que generi Factuarea.
invalid_purchase_invoice_uuidinvalid_request_error400L'identificador de factura de compra de la ruta o del payload no és un UUID vàlid.
operation_regime_invalidinvalid_request_error422El règim d'operació queda fora del catàleg general, intracomunitaria, importacion_exportacion, isp.
purchase_invoice_already_existsconflict_error409Aquest proveïdor ja té registrada una factura de compra amb el mateix número. El parell proveïdor + número identifica el document sense ambigüitat i evita comptabilitzar dues vegades la mateixa despesa.
purchase_invoice_not_deletable_in_current_stateinvalid_request_error422Només s'esborren les factures de compra en esborrany o cancel·lades. Una de pendent o pagada forma part del llibre de despeses.
purchase_invoice_not_draftinvalid_request_error422L'operació només s'aplica mentre la factura de compra és un esborrany, i aquesta ja està registrada.
purchase_invoice_not_editable_in_current_stateinvalid_request_error422Només s'edita una factura de compra en esborrany. Un cop registrada com a pendent, pagada o cancel·lada, el seu contingut dona suport a un apunt comptable.
purchase_invoice_not_foundnot_found_error404L'identificador no resol a cap factura de compra de l'empresa autenticada.
purchase_invoice_requires_at_least_one_lineinvalid_request_error422La factura de compra no porta línies, així que no hi ha despesa ni IVA suportat a registrar.

Pressupostos

CodeTypeHTTPDescripció
quote_already_acceptedinvalid_request_error422El pressupost ja estava aprovat, i l'aprovació es registra una sola vegada.
quote_already_rejectedinvalid_request_error422El pressupost ja està marcat com a rebutjat.
quote_expiredinvalid_request_error422El pressupost va passar la seva data de validesa, així que les condicions ofertes ja no vinculen i no es pot aprovar ni convertir tal com està.
quote_not_foundnot_found_error404L'identificador no resol a cap pressupost de l'empresa autenticada.

Límit de peticions

CodeTypeHTTPDescripció
monthly_quota_exceededrate_limit_error429L'empresa va esgotar la quota mensual de crides que inclou el seu pla.
rate_limit_exceededrate_limit_error429La clau va enviar més peticions de les que permet el seu ritme a la finestra actual.

Factures recurrents

CodeTypeHTTPDescripció
invalid_frequency_intervalinvalid_request_error422L'interval és menor que 1, així que la recurrència mai avançaria a una execució següent.
invalid_frequency_typeinvalid_request_error422La freqüència queda fora del catàleg daily, weekly, biweekly, monthly, bimonthly, quarterly, semiannual, annual, custom.
invalid_holiday_handlinginvalid_request_error422La política de festius queda fora del catàleg skip, before, after, same.
invalid_recurring_invoice_idinvalid_request_error400La referència de recurrència rebuda no és un identificador vàlid, normalment perquè un valor intern va substituir l'id públic.
invalid_recurring_invoice_uuidinvalid_request_error400L'identificador de recurrència de la ruta o del payload no és un UUID vàlid.
recurring_already_activeinvalid_request_error422La recurrència ja està en marxa, així que no hi ha res a activar. Codi antic conservat per compatibilitat: els endpoints actuals reporten això com a recurring_invoice_already_active.
recurring_invoice_already_activeinvalid_request_error422La recurrència ja està en marxa.
recurring_invoice_already_cancelledinvalid_request_error422La recurrència ja estava cancel·lada, i la cancel·lació és terminal.
recurring_invoice_already_pausedinvalid_request_error422La recurrència ja està pausada, així que pausar-la un altre cop no canvia res.
recurring_invoice_cancelled_cannot_resumeinvalid_request_error422Una recurrència cancel·lada no es reprèn: la cancel·lació la tanca definitivament, a diferència de la pausa.
recurring_invoice_cannot_runinvalid_request_error422La recurrència no pot generar una factura ara mateix: no està en marxa, el seu cicle s'ha acabat, o li falten dades que la factura necessita. error.message indica el motiu concret.
recurring_invoice_has_generated_invoicesinvalid_request_error422La recurrència ja va generar factures, i aquestes factures en depenen per a la seva traçabilitat.
recurring_invoice_not_foundnot_found_error404L'identificador no resol a cap recurrència de l'empresa autenticada.
recurring_invoice_requires_at_least_one_lineinvalid_request_error422La recurrència no porta línies, així que cada factura generada sortiria buida.
recurring_not_activeinvalid_request_error422L'operació necessita una recurrència en marxa i aquesta està pausada, completada o cancel·lada. Codi antic conservat per compatibilitat amb integracions velles.

Request

CodeTypeHTTPDescripció
business_rule_violationinvalid_request_error422Una invariant del domini va rebutjar l'operació. Aquest codi indica la família; error.subcode anomena la regla concreta i error.message l'explica.
conflicting_pagination_paramsinvalid_request_error422starting_after i ending_before van viatjar a la mateixa petició. Recorren la col·lecció en sentits oposats, així que només se'n pot aplicar un.
external_id_already_existsconflict_error409L'external_id amb què concilies contra el teu sistema ja està assignat a un altre objecte del mateix tipus en aquesta empresa.
invalid_param_formatinvalid_request_error422Un form request antic va rebutjar la forma d'un valor. Els endpoints migrats reporten el mateix com a parameter_invalid_format o parameter_invalid_integer.
invalid_param_valueinvalid_request_error422Un form request antic va rebutjar el valor d'un camp. Els endpoints migrats reporten el mateix com a parameter_invalid_enum o parameter_invalid_range.
invalid_status_transitioninvalid_request_error422L'estat sol·licitat no és assolible des de l'estat en què es troba ara mateix el document.
length_requiredinvalid_request_error411Va arribar una petició amb body en codificació chunked, sense declarar-ne la mida. L'API necessita conèixer la longitud per avançat per rebutjar payloads excessius abans de carregar-los a memòria.
metadata_too_many_keysinvalid_request_error422L'objecte metadata supera el límit de 50 claus per recurs.
metadata_value_too_longinvalid_request_error422Un valor de metadata supera els 500 caràcters un cop serialitzat a text.
method_not_allowedinvalid_request_error405La ruta existeix però no accepta el verb HTTP utilitzat.
missing_required_paraminvalid_request_error422Un form request antic va detectar que faltava un camp obligatori. Els endpoints ja migrats als parsers canònics reporten el mateix com a parameter_missing.
parameter_invalidinvalid_request_error422Un value object construït a partir del payload va rebutjar el valor rebut. error.subcode diu quin: codi d'impost, codi de país, tipus impositiu, etc.
parameter_invalid_booleaninvalid_request_error400Un paràmetre que ha de ser booleà va rebre un valor fora de les representacions acceptades (true/false, 1/0).
parameter_invalid_cursorinvalid_request_error400El cursor starting_after o ending_before no és un UUID vàlid, així que no pot apuntar a cap fila de la col·lecció.
parameter_invalid_emptyinvalid_request_error400Un paràmetre va arribar amb el valor buit: un filtre in sense elements, una comparació sense res després de l'operador, o un filtre d'igualtat amb la cadena buida.
parameter_invalid_enuminvalid_request_error400El valor queda fora del conjunt tancat que accepta el paràmetre. En els llistats cobreix a més un operador de filtre diferent de eq, gte, lte, gt, lt, in o contains.
parameter_invalid_formatinvalid_request_error400El valor té el tipus correcte però no la forma que exigeix el paràmetre: una data, un patró d'identificador o una capçalera com Factuarea-Version.
parameter_invalid_integerinvalid_request_error400Un paràmetre que ha de ser un nombre enter va rebre alguna cosa que no es pot interpretar com a tal, per exemple limit=abc.
parameter_invalid_iso8601invalid_request_error400Un filtre de rang (gte, lte, gt, lt) va rebre un valor que no és numèric ni una data ISO 8601.
parameter_invalid_rangeinvalid_request_error400Un paràmetre numèric va quedar fora dels seus límits. El cas habitual és limit, que ha d'estar entre 1 i 100.
parameter_invalid_stringinvalid_request_error400Un paràmetre que ha de ser text va rebre un array, un objecte o un valor que no es pot llegir com a cadena.
parameter_invalid_urlinvalid_request_error400Un camp que ha de contenir una URL absoluta va rebre un valor que no ho és, normalment perquè li falta l'esquema o l'amfitrió.
parameter_invalid_uuidinvalid_request_error400Un camp d'identificador va rebre un valor que no és un UUID vàlid. Tot id de recurs a v1 és un UUID.
parameter_invalid_valueinvalid_request_error422El valor és sintàcticament correcte però no admissible per a aquest recurs: fora del catàleg canònic del camp, o incoherent amb la resta del payload.
parameter_missinginvalid_request_error400L'endpoint exigeix un paràmetre que la petició no portava. error.param diu quin.
parameter_unknowninvalid_request_error400La petició porta un paràmetre que l'endpoint no accepta: un filtre fora de la seva allowlist, un camp de sort no ordenable, o el page de paginació per offset — v1 pagina per cursor.
payload_too_largeinvalid_request_error413El body de la petició supera la mida admesa: 1 MB amb caràcter general, 6 MB als endpoints que accepten fitxers.
profile_not_foundnot_found_error404La capçalera X-Active-Profile anomena una empresa que no existeix o que no pertany a l'arbre de gestoria de la clau autenticada. Tots dos casos responen igual perquè l'API mai reveli empreses d'altres tenants.
resource_already_existsconflict_error409Crear l'objecte duplicaria un que ja existeix sota una clau única — NIF, SKU, external id. error.details.existing_resource_id apunta a l'objecte que ja ocupa aquest valor.
resource_conflictconflict_error409L'operació va xocar amb l'estat actual del recurs i no s'aplica cap codi de conflicte més específic.
resource_immutableinvalid_request_error422L'objecte està tancat a canvis per a aquesta operació: el seu estat o el seu registre comptable impedeixen modificar-lo.
resource_lockedconflict_error409Una altra operació reté el recurs fins que acaba: les escriptures concurrents sobre el mateix objecte se serialitzen en lloc d'entrellaçar-se.
resource_not_deletableinvalid_request_error422L'objecte existeix, però el seu estat o els seus dependents bloquegen l'esborrat. En els esborrats massius aquest és el codi per fila de cada entrada que no es va poder eliminar.
resource_not_foundnot_found_error404L'identificador no resol a res visible per a l'empresa autenticada. Els objectes d'una altra empresa responen exactament igual, a propòsit.
route_not_foundnot_found_error404La ruta no correspon a cap endpoint de v1. Sol ser una errada, un prefix /v1 absent o una ruta d'una altra àrea de l'API.
unknown_filterinvalid_request_error422Un llistat va rebre un filtre que no coneix. Els parsers canònics de v1 reporten això com a parameter_unknown; aquest codi sobreviu per als endpoints encara sense migrar.
unsupported_api_versioninvalid_request_error400La capçalera Factuarea-Version està ben formada però anomena una versió fora del conjunt suportat.
unsupported_media_typeinvalid_request_error415Una petició amb body va declarar un Content-Type diferent de application/json.

Series

CodeTypeHTTPDescripció
cannot_archive_last_default_seriesinvalid_request_error422La sèrie és l'única activa del seu tipus de document. Arxivar-la deixaria l'empresa sense numeració disponible i congelaria aquest tipus de document.
document_type_required_for_ambiguous_codeinvalid_request_error422Aquest codi de sèrie existeix per a més d'un tipus de document, així que per si sol no identifica una única sèrie.
invalid_series_codeinvalid_request_error422El codi de la sèrie és buit, massa llarg, o porta caràcters que no corresponen a un prefix fiscal.
invalid_series_nameinvalid_request_error422El nom de la sèrie és buit o supera la longitud permesa.
invalid_series_numberinvalid_request_error422El número inicial no és vàlid: no és un enter positiu, o queda a l'últim número ja emès o per sota, cosa que reemetria números ja consumits.
invalid_series_uuidinvalid_request_error400L'identificador de sèrie de la ruta o del payload no és un UUID vàlid.
invalid_series_yearinvalid_request_error422L'exercici no és un any de quatre xifres vàlid per a una sèrie de numeració.
monthly_requires_month_segmented_formatinvalid_request_error422El comptador es reinicia cada mes però la màscara de numeració no segrega per mes, així que dos mesos arrencarien al mateix correlatiu i produirien números duplicats dins de l'any.
series_already_archivedinvalid_request_error422La sèrie ja estava arxivada, i l'arxivat no es repeteix: una segona crida indica que el client ha perdut l'estat real.
series_code_immutable_with_documentsinvalid_request_error422Canviar el prefix d'una sèrie que ja va emetre documents reescriuria retroactivament el seu identificador fiscal, mentre els clients i l'AEAT tenen el número original.
series_has_documentsinvalid_request_error422La sèrie ja va numerar documents, així que no es pot eliminar: la seqüència correlativa ha de seguir sent auditable.
series_immutableinvalid_request_error405Les sèries no són editables ni eliminables via API: la continuïtat legal de la numeració exigeix que el seu prefix, el seu any i el seu comptador es quedin com estan.
series_initial_number_creates_gapinvalid_request_error422El número inicial salta més enllà del següent correlatiu natural havent-hi documents de l'any en curs, i aquest buit a la seqüència no és admissible per a l'AEAT.
series_locked_by_verifactuinvalid_request_error422Com a mínim una factura de la sèrie té un registre de facturació acceptat per l'AEAT, cosa que congela el prefix, l'any i la base de numeració de la sèrie.
series_not_foundnot_found_error404L'identificador no resol a cap sèrie de numeració de l'empresa autenticada.
series_type_invalidinvalid_request_error422El tipus de document de la sèrie queda fora del catàleg invoice, quote, delivery_note, proforma, purchase_invoice, recurring_invoice.
series_year_lockedinvalid_request_error422La sèrie ja va emetre documents en el seu any vigent. Moure l'any deixaria aquests documents apuntant a un exercici buit mentre la seva base imposable és en un altre.

Servidor

CodeTypeHTTPDescripció
dependency_unavailableservice_unavailable_error503Un servei extern del qual depèn l'operació no va respondre a temps.
face_transmission_failedapi_error502La plataforma FACe —el punt d'entrada de les administracions públiques— era inaccessible o va respondre amb una fallada. El problema és aigües amunt, no a la teva petició.
facturae_signing_failedapi_error500No es va poder produir la signatura XAdES del fitxer Facturae, normalment perquè el certificat de signatura no és utilitzable en aquell moment.
internal_errorapi_error500Alguna cosa s'ha trencat al nostre costat en processar la petició. La condició no la provoca el teu payload.
maintenanceservice_unavailable_error503La plataforma és en finestra de manteniment i les escriptures es retenen a propòsit.
pdf_generation_failedservice_unavailable_error503El servei de renderitzat no va poder produir el PDF. El document i les seves dades són intactes: el que ha fallat és el fitxer.
register_sealing_failedapi_error500El segellat criptogràfic del registre no es va completar, així que el tancament va quedar sense signar en lloc de segellat amb una signatura trencada.
send_failedapi_error500El document no es va lliurar per correu: el proveïdor de correu va rebutjar el missatge o era inaccessible.
service_unavailableservice_unavailable_error503El servei, o una dependència que necessita, no pot respondre temporalment.

Proveïdors

CodeTypeHTTPDescripció
supplier_has_documentsinvalid_request_error422El proveïdor està referenciat per factures de compra registrades, i esborrar-lo deixaria aquestes despeses sense la part que les va emetre.
supplier_not_foundnot_found_error404L'identificador no resol a cap proveïdor de l'empresa autenticada.

Informes fiscals

CodeTypeHTTPDescripció
insufficient_data_for_reportinvalid_request_error422El període no té dades a declarar, o a una factura del període li falta un camp obligatori per a aquest model, típicament el NIF del client.
invalid_periodinvalid_request_error422El període no identifica una declaració: l'any queda fora del rang admès, o falta el trimestre o és fora del rang 1 a 4 en un model trimestral.
report_format_invalidinvalid_request_error422El format queda fora del catàleg txt_aeat, pdf, excel.
tax_report_not_foundnot_found_error404L'identificador no resol a cap declaració de l'empresa autenticada.
tax_report_type_invalidinvalid_request_error422El tipus de declaració queda fora del catàleg modelo_303, modelo_347, modelo_130.
unsupported_formatinvalid_request_error422El format demanat no està disponible per a aquest model: no tota declaració produeix totes les sortides.

Impostos

CodeTypeHTTPDescripció
custom_tax_creation_disabledauthorization_error403La creació d'impostos personalitzats està deshabilitada per a aquesta empresa.
duplicate_tax_default_for_document_typeinvalid_request_error422Ja hi ha un altre impost del mateix tipus marcat com a default per a aquest tipus de document, i el parell (tipus d'impost, tipus de document) admet un únic default.
indirect_tax_regime_invalidinvalid_request_error422El règim indirecte queda fora del catàleg iva, igic, ipsi.
invalid_aeat_codeinvalid_request_error422El codi d'operació AEAT queda fora del catàleg tancat S1, S2, S3, E1-E6, N1, N2 que fan servir VeriFactu i el SII.
invalid_country_aeat_zoneinvalid_request_error422La zona territorial AEAT queda fora del catàleg peninsula, canarias, ceuta, melilla.
invalid_country_codeinvalid_request_error422El codi de país no té exactament dos caràcters, així que no és un codi ISO 3166-1 alfa-2 vàlid.
invalid_customer_visible_labelinvalid_request_error422L'etiqueta que es mostra al client al document supera la longitud permesa.
invalid_descriptioninvalid_request_error422La descripció supera la longitud màxima permesa per al camp.
invalid_document_typeinvalid_request_error422El tipus de document queda fora del catàleg: invoice, quote, delivery_note, proforma, purchase_invoice, recurring_invoice.
invalid_rate_for_tax_regimeinvalid_request_error422El tipus no pertany a la graella legal del seu règim: l'IGIC admet 0, 3, 5, 7, 9,5, 15 i 20 %; l'IPSI admet 0, 0,5, 1, 2, 4, 8 i 10 %.
invalid_tax_codeinvalid_request_error422El codi de l'impost és buit o supera els 50 caràcters.
invalid_tax_nameinvalid_request_error422El nom de l'impost és buit o supera els 255 caràcters.
invalid_tax_rateinvalid_request_error422El tipus impositiu queda fora del rang permès per a la seva classe: IVA 0-27 %, retenció 0-47 %, recàrrec d'equivalència 0-10 %, altres 0-100 %.
invalid_tax_type_filterinvalid_request_error422El filtre type del llistat per tipus porta un valor fora de l'enum vat, retention, surcharge, other.
invalid_validity_windowinvalid_request_error422La finestra de vigència està invertida: valid_until és anterior a valid_from.
system_tax_default_modification_forbiddenauthorization_error403Els defaults dels impostos del catàleg compartit no es fixen sobre l'impost: el catàleg és global i la preferència és de la teva empresa.
system_tax_immutableinvalid_request_error422L'impost pertany al catàleg canònic AEAT que porta el producte. El seu tipus, el seu codi i el seu nom són fixos perquè totes les empreses comparteixin la mateixa referència fiscal.
system_tax_immutable_fieldinvalid_request_error422L'actualització toca un camp congelat en un impost del sistema; error.param diu quin.
system_tax_undeletableinvalid_request_error422Els impostos del sistema formen part del catàleg fiscal compartit i no s'eliminen: esborrar-los trencaria els documents que els referencien.
tax_applies_to_invalidinvalid_request_error422L'àmbit de l'impost queda fora del catàleg sale, purchase, both.
tax_code_already_existsconflict_error409Un altre impost del catàleg ja fa servir aquest codi, i el codi identifica l'impost sense ambigüitat.
tax_id_requiredinvalid_request_error422L'operació necessita el número d'identificació fiscal (NIF, CIF o NIE) de la part implicada i el registre no en té.
tax_in_useinvalid_request_error422L'impost està referenciat per documents, productes o proveïdors. Eliminar-lo deixaria documents històrics sense la seva referència fiscal.
tax_inactive_cannot_be_defaultinvalid_request_error422Un impost desactivat no pot quedar com a default, ni global ni per tipus de document: seria un default ocult que cap formulari pot triar.
tax_not_foundnot_found_error404L'identificador no correspon a cap impost del catàleg accessible per a aquesta empresa.
tax_type_invalidinvalid_request_error422El tipus d'impost queda fora del catàleg vat, retention, surcharge, other.

VeriFactu

CodeTypeHTTPDescripció
alta_record_not_foundnot_found_error404La factura no té registre d'alta, així que l'operació que en depèn no té sobre què treballar.
anulacion_record_already_existsconflict_error409La factura ja té un registre d'anul·lació a la cadena, i l'anul·lació es declara una sola vegada.
certificate_expiredinvalid_request_error422El certificat està fora de la seva finestra de validesa: ha caducat, o encara no és vàlid.
certificate_nif_mismatchinvalid_request_error422El NIF del titular del certificat no coincideix amb el de l'empresa. Els registres AEAT es signen en nom de l'empresa, així que tots dos han de ser el mateix.
certificate_not_foundnot_found_error404L'empresa no té cap certificat FNMT que correspongui a l'identificador, o no en té cap de pujat.
certificate_too_largeinvalid_request_error422El fitxer supera el límit de 100 KB, quan un certificat FNMT real pesa uns pocs kilobytes.
clock_drift_exceededinvalid_request_error422El rellotge del servidor es va desviar de l'NTP per sobre del marge permès. La marca de temps de generació entra a l'empremta AEAT, així que un rellotge desincronitzat produiria registres que l'AEAT rebutja.
declaracion_already_existsconflict_error409L'empresa ja té presentada la declaració responsable del SIF d'aquest període.
declaracion_not_foundnot_found_error404L'empresa no té presentada la declaració responsable del SIF del període sol·licitat.
event_already_processedinvalid_request_error422Aquest esdeveniment del SIF ja consta a la cadena d'esdeveniments, i cada esdeveniment es processa exactament una vegada.
invalid_certificate_formatinvalid_request_error422El fitxer no és un contenidor PKCS#12: els seus primers bytes no corresponen a l'estructura ASN.1 que exigeix el format, digui el que digui l'extensió.
invalid_certificate_passwordinvalid_request_error422La contrasenya no obre el fitxer del certificat.
max_retries_exceededinvalid_request_error422El registre va esgotar el pressupost de reintents tècnics de reenviament de l'XML emmagatzemat. Reintentar el mateix contingut tornaria a fallar igual.
mode_switch_blocked_until_year_endinvalid_request_error422El mode VeriFactu es va activar en aquest exercici i ja es va emetre com a mínim un registre de facturació. Fer marxa enrere degradaria la integritat d'una cadena ja declarada a l'AEAT.
record_already_acceptedinvalid_request_error422L'AEAT ja va acceptar el registre. L'acceptació és terminal i el seu contingut queda congelat com a part de la cadena d'empremtes.
record_immutableinvalid_request_error422El registre pertany a un ledger de només-addició: un cop escrit, el seu contingut fiscal queda tancat a modificacions i a esborrat.
record_not_rejectedinvalid_request_error422L'esmena només s'aplica a registres que l'AEAT va rebutjar per dades. Aquest registre està en un altre estat — una fallada tècnica, per exemple, la cobreix el reintent automàtic.
record_not_subsanableinvalid_request_error422El registre no es pot esmenar: no és un registre d'alta, o no té factura d'origen des de la qual regenerar-ne el contingut.
requires_annulmentinvalid_request_error422El contingut regenerat canvia un camp que entra a l'empremta —NIF de l'emissor, sèrie i número, data d'expedició, tipus de factura, quota o import total— i la cadena no es pot reescriure.
sii_excludedinvalid_request_error422L'empresa està registrada al SII, i els obligats al SII queden exclosos del reglament VeriFactu.
verifactu_already_submittedinvalid_request_error422La factura ja té el seu registre d'alta. Existeix exactament una alta per factura, així que una segona trencaria la idempotència de la cadena.
verifactu_mode_invalidinvalid_request_error422El mode queda fora del catàleg verifactu / no_verifactu.
verifactu_not_eligibleinvalid_request_error422La factura no es pot registrar ara mateix a l'AEAT: l'empresa no està en mode VeriFactu, no té certificat actiu, o el certificat està revocat o emès per a un altre NIF.
verifactu_record_not_foundnot_found_error404L'identificador no correspon a cap registre de facturació de l'empresa autenticada.
verifactu_transmission_failedinvalid_request_error422L'enviament del registre a l'AEAT no es va completar: l'endpoint era inaccessible o va respondre amb una incidència.

Webhooks

CodeTypeHTTPDescripció
addon_requiredpayment_required_error402Crear endpoints de webhook pertany a l'add-on Developer API, i l'empresa no el té actiu: el nivell gratuït permet zero endpoints.
api_version_invalid_formatinvalid_request_error422La versió de payload de l'endpoint no és una data YYYY-MM-DD.
api_version_unsupportedinvalid_request_error422La versió de payload està ben formada però no és entre les que serveix la plataforma.
custom_header_blocklistedinvalid_request_error422Una de les capçaleres personalitzades està reservada: la gestiona la capa HTTP (host, content-type, content-length, user-agent), l'envia Factuarea com a part del contracte signat (factuarea-*), o pertany al proxy (x-forwarded-*).
custom_header_value_too_longinvalid_request_error422El valor d'una capçalera personalitzada supera els 1024 caràcters.
replay_delivery_not_retryableinvalid_request_error422Només es reenvien els lliuraments fallits. Un lliurament que va arribar bé, o un encara en curs, no té res a reenviar.
replay_event_expiredinvalid_request_error422L'esdeveniment que dona suport al lliurament va ser purgat per la política de retenció de 30 dies, així que ja no queda payload a reenviar.
timeout_seconds_out_of_rangeinvalid_request_error422timeout_seconds queda fora del rang d'1 a 30 segons.
too_many_custom_headersinvalid_request_error422L'endpoint declara més de 20 capçaleres personalitzades.
webhook_delivery_not_foundnot_found_error404L'identificador no correspon a cap intent de lliurament, o el lliurament queda fora de la finestra de retenció de l'històric.
webhook_endpoint_degradedinvalid_request_error422L'endpoint està degradat després de fallades repetides de lliurament, així que els pings de prova es rebutgen mentre segueixi en aquest estat.
webhook_endpoint_not_foundnot_found_error404L'identificador no resol a cap endpoint de webhook de l'empresa autenticada.
webhook_secret_recently_rotatedrate_limit_error429El secret de signatura es va rotar fa menys de cinc minuts. La finestra de gràcia permet que el teu receptor accepti tots dos secrets durant el canvi; rotar un altre cop dins d'ella invalidaria signatures encara en vol.

En aquesta pàgina