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
| Code | Type | HTTP | Descripció |
|---|---|---|---|
account_not_found | not_found_error | 404 | No 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_revoked | invalid_request_error | 422 | La clau ja estava revocada, i una clau revocada no admet més operacions: la revocació és terminal. |
api_key_not_found | not_found_error | 404 | L'identificador no correspon a cap clau API de l'empresa autenticada. |
sender_identity_not_verified | invalid_request_error | 422 | L'empresa emissora encara no ha acreditat la seva identitat, i sense això no pot escriure a destinataris externs des del domini remitent compartit. No és un cupó exhaurit ni un problema de permisos: la credencial té l'abast, i esperar no ho resol. |
Autenticació
| Code | Type | HTTP | Descripció |
|---|---|---|---|
api_key_expired | authentication_error | 401 | La clau va passar la seva data de caducitat. |
api_key_revoked | authentication_error | 401 | La 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_key | authentication_error | 401 | La 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_allowed | authentication_error | 401 | La clau restringeix les adreces que accepta, i la petició va arribar des d'una que no és a la llista. |
missing_api_key | authentication_error | 401 | La petició no porta credencials: ni capçalera Authorization ni X-API-Key. |
origin_not_allowed | authentication_error | 401 | La petició ve d'un origen de navegador que la clau no accepta. |
too_many_auth_failures | authentication_error | 429 | Van 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ó
| Code | Type | HTTP | Descripció |
|---|---|---|---|
addon_not_active | authorization_error | 403 | La funcionalitat pertany a un add-on que ara mateix no està actiu per a l'empresa. |
feature_not_available_in_plan | authorization_error | 403 | La funcionalitat no està inclosa en el pla de l'empresa. |
forbidden_action | authorization_error | 403 | L'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_scope | authorization_error | 403 | La 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_exceeded | authorization_error | 422 | L'empresa va arribar al nombre de claus API que permet el seu pla. |
max_webhook_endpoints_exceeded | authorization_error | 422 | L'empresa va arribar al nombre d'endpoints de webhook que permet el seu nivell d'add-on. |
module_not_available_in_sandbox | authorization_error | 403 | El 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. |
portfolio_max_api_keys_exceeded | authorization_error | 422 | La cartera ja té el màxim de credencials ACTIVES. El sostre es compta sobre l'empresa gestora i les seves filles actives juntes, no per empresa, de manera que donar d'alta una altra filla per encunyar-li la credencial tampoc no permet crear aquesta. |
scope_not_allowed_by_plan | authorization_error | 422 | Un 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_sandbox | authorization_error | 422 | Una clau de prova no pot néixer amb abasts de mòduls vetats a la sandbox. |
Automatitzacions
| Code | Type | HTTP | Descripció |
|---|---|---|---|
automation_action_order_invalid | invalid_request_error | 422 | La posició d'un pas dins de la seqüència no és un número enter, o és negativa. Aquella posició és la que fixa l'ordre en què s'executen les accions. |
automation_action_parameter_missing | invalid_request_error | 422 | No ha arribat un paràmetre que l'acció declara obligatori. Es rebutja aquí, en lloc d'omplir-lo amb un valor per defecte dins de l'adaptador, perquè l'assaig predigui l'execució real. |
automation_action_parameter_unknown | invalid_request_error | 422 | Una clau de paràmetre no pertany a l'esquema de l'acció. Acceptar-la desaria una configuració que cap adaptador llegeix, i la creuries activa fins que la regla es disparés i fes una altra cosa. |
automation_action_parameter_value_invalid | invalid_request_error | 422 | Un paràmetre de l'acció porta un valor fora del conjunt que admet el seu esquema. |
automation_action_parameters_invalid | invalid_request_error | 422 | Els paràmetres d'una acció no se sostenen com a conjunt: un valor no és serialitzable, una clau no és text, han arribat junts dos paràmetres excloents, o una parella que n'exigeix un dels dos ha arribat sense cap. |
automation_action_type_invalid | invalid_request_error | 422 | Un dels passos declara un tipus d'acció sense adaptador al darrere, així que en aquella posició no s'executaria res. |
automation_chain_depth_exceeded | invalid_request_error | 422 | Una automatització en va disparar una altra fins a exhaurir el marge d'encadenament, així que l'execució s'atura abans d'encuar cap pas. Esperar no ho arregla: el mateix esdeveniment tornaria a recórrer la mateixa cadena. |
automation_condition_combinator_invalid | invalid_request_error | 422 | Una branca de la condició declara un combinador lògic fora del conjunt admès, així que la branca no es pot llegir com un «i» ni com un «o». |
automation_condition_depth_exceeded | invalid_request_error | 422 | La condició nidifica més nivells dels que recorre l'avaluador, així que la regla no es pot avaluar sencera. |
automation_condition_expression_invalid | invalid_request_error | 422 | La forma de l'arbre de condicions no se sosté: un node mal format, un operador que rep un valor de la mena equivocada, una ruta de camp que no és un camí amb punts, o un arbre que passa del límit de profunditat o de nodes. |
automation_condition_field_not_evaluable | invalid_request_error | 422 | La condició llegeix un camp que el disparador no publica com a avaluable. La llista de camps admesos mai no resol una ruta desconeguda amb un valor per defecte, perquè un camp resolt en silenci és justament el forat que el sandbox existeix per tancar. |
automation_condition_operator_invalid | invalid_request_error | 422 | Una comparació de la condició anomena un operador fora del conjunt admès. |
automation_condition_operator_not_applicable | invalid_request_error | 422 | L'operador no s'aplica al tipus del camp que compara: preguntar si un text és més gran que un altre no és una comparació que l'avaluador pugui fer. |
automation_condition_operator_unsupported | invalid_request_error | 422 | L'avaluador no implementa aquell operador, així que s'atura en lloc de respondre «fals»: un «fals» en silenci faria indistingible «la condició no es compleix» de «no es pot avaluar». |
automation_condition_payload_field_missing | invalid_request_error | 422 | La clau que llegeix la condició no ve al payload de l'esdeveniment, que no és el mateix que venir present amb valor nul. Alguns esdeveniments porten un payload reduït: un esborrat, per exemple, pot conservar només l'identificador. |
automation_condition_payload_type_mismatch | invalid_request_error | 422 | El valor de l'esdeveniment contradiu el tipus que el disparador declara per a aquell camp, i l'avaluador no converteix tipus: una comparació per conversió donaria un veredicte correcte per accident i amagaria que el payload va canviar de forma. |
automation_dry_run_event_type_mismatch | invalid_request_error | 422 | L'assaig s'ha demanat amb un tipus d'esdeveniment diferent del disparador de l'automatització que s'assaja, i una regla només rep esdeveniments del seu propi disparador. La predicció descriuria un lliurament que mai no passarà. |
automation_event_company_unresolvable | invalid_request_error | 422 | L'esdeveniment va arribar al motor sense una empresa resoluble, i el motor s'atura en lloc de suposar-ne una: escriure una execució sota una empresa substituïda trencaria l'aïllament entre empreses. |
automation_event_payload_not_resolvable | invalid_request_error | 422 | No s'ha pogut recuperar el contingut de l'esdeveniment, així que no hi ha payload per congelar a l'execució. Passa quan el recurs que hi ha darrere de l'esdeveniment ja no es pot llegir en el moment del lliurament. |
automation_monthly_budget_exhausted | payment_required_error | 402 | L'empresa va exhaurir les execucions d'automatització que el seu pla inclou per al període en curs, així que l'execució s'atura abans d'encuar cap pas. A diferència d'un límit de ritme, esperar uns segons no canvia res: el que s'ha exhaurit és el pressupost del cicle. |
automation_portfolio_scope_forbids_action | invalid_request_error | 422 | Una de les accions de l'automatització actua sobre dades d'una sola empresa, i en abast de cartera cada execució té per subjecte una empresa gestionada diferent. Només s'admeten les accions que avisen la gestoria o que no toquen cap document. |
automation_portfolio_scope_not_available | authorization_error | 403 | L'empresa no pot crear automatitzacions sobre la seva cartera: o no té contractat el mòdul de gestoria, o ella mateixa és una empresa gestionada per una altra, i la relació és d'un sol nivell. |
automation_rate_limit_exceeded | rate_limit_error | 429 | L'empresa va superar les execucions d'automatització que el seu pla admet dins de la finestra del limitador. La feina sí que és admissible; senzillament va arribar massa de pressa. |
automation_replay_not_allowed | invalid_request_error | 422 | L'execució existeix i és teva, però rellançar-la no escau: encara no ha acabat, va acabar bé i el seu efecte ja es va produir, el seu desenllaç tornaria a prendre exactament la mateixa branca, o no consta el motiu pel qual va acabar. |
automation_rule_actions_empty | invalid_request_error | 422 | L'automatització no declara cap acció, així que no hi hauria res a executar quan saltés el seu disparador. |
automation_rule_actions_limit_exceeded | invalid_request_error | 422 | La regla conté més de 50 accions. Un sol esdeveniment disparador es multiplicaria en massa passos, jobs en cua i possibles efectes externs. |
automation_rule_already_deleted | invalid_request_error | 422 | L'automatització ja estava donada de baixa. L'esborrat és lògic i no retorna èxit en silenci la segona vegada, perquè dues baixes diferents no es confonguin entre elles. |
automation_rule_company_mismatch | invalid_request_error | 422 | L'automatització que s'anava a materialitzar no pertany a l'empresa de l'esdeveniment, així que l'execució no es crea: congelar el snapshot d'un esdeveniment —client, imports, identificador fiscal— en files d'una altra empresa no es permet mai. |
automation_rule_name_invalid | invalid_request_error | 422 | El nom és buit o supera el límit de longitud. El nom és el que identifica l'automatització als llistats i a l'historial de les seves execucions. |
automation_rule_not_found | not_found_error | 404 | No existeix cap automatització amb aquest identificador per a l'empresa autenticada. Una regla d'una altra empresa respon exactament igual, així que la resposta mai no revela si existeix en un altre lloc. |
automation_rule_scope_immutable | invalid_request_error | 422 | La petició intenta canviar l'abast d'una automatització que ja existeix. L'abast es fixa en crear-la perquè determina de quines empreses observa els esdeveniments, i canviar-lo reinterpretaria totes les execucions anteriors. |
automation_rule_scope_invalid | invalid_request_error | 422 | L'abast enviat no pertany al catàleg de l'automatització. Només n'hi ha dos: l'empresa que la crea i la cartera d'empreses gestionades. |
automation_rule_status_transition_invalid | invalid_request_error | 422 | L'automatització no pot passar del seu estat actual al que demanes: activar, pausar i donar de baixa accepten cadascun els seus propis estats d'origen. |
automation_rule_uuid_invalid | invalid_request_error | 422 | L'identificador no és un UUID v7 vàlid. Les automatitzacions adrecen els seus recursos amb l'id que retorna l'API, mai amb un número intern. |
automation_rule_version_not_found | not_found_error | 404 | L'automatització existeix, però no té cap versió amb aquest número: cada desada publica una versió nova i la numeració mai no reutilitza un valor. |
automation_rule_version_number_invalid | invalid_request_error | 422 | El número de versió és menor que 1. Les versions es numeren des d'un cap amunt, en l'ordre en què es van publicar. |
automation_rule_version_snapshot_not_found | not_found_error | 404 | L'execució apunta a una versió de l'automatització la definició congelada de la qual no està desada, així que no hi ha definició per executar: una execució sempre corre la versió amb què va començar, mai la regla viva. |
automation_run_not_found | not_found_error | 404 | No existeix cap execució d'automatització amb aquest identificador per a l'empresa autenticada. Una execució d'una altra empresa respon exactament igual, així que la resposta mai no revela si existeix en un altre lloc. |
automation_run_status_transition_invalid | invalid_request_error | 422 | L'execució no pot passar del seu estat actual al sol·licitat: el cicle de vida d'una execució només admet les transicions que declara el seu estat. |
automation_run_step_not_found | not_found_error | 404 | L'execució existeix i és teva, però no té cap pas en aquest índex. Una execució materialitza tots els seus passos en arrencar i el nombre no canvia després. |
automation_run_uuid_invalid | invalid_request_error | 422 | L'identificador de l'execució no és un UUID v7 vàlid. |
automation_step_index_invalid | invalid_request_error | 422 | L'índex d'un pas no pot ser negatiu: cap execució adreça un pas així. |
automation_step_status_transition_invalid | invalid_request_error | 422 | El pas no pot passar del seu estat actual al sol·licitat. És el que impedeix reclamar dues vegades un pas ja acabat, i aquella guarda és la que fa que un rellançament produeixi cada efecte una sola vegada. |
automation_step_subject_company_mismatch | invalid_request_error | 422 | L'element sobre el qual anava a actuar l'acció no pertany a l'empresa de l'execució, o no s'ha pogut determinar a quina empresa pertany. En tots dos casos el pas avorta abans d'invocar l'adaptador, així que no es produeix cap efecte. |
automation_subject_company_ownership_not_verified | invalid_request_error | 422 | En preparar l'execució no es va poder demostrar que l'empresa de l'esdeveniment continuï sent una empresa gestionada i activa de qui va crear l'automatització. Pot ser que el vincle s'arxivés, que l'empresa es donés de baixa o que l'execució arribés amb dades creuades. |
automation_trigger_not_found | not_found_error | 404 | El disparador no és al catàleg que la teva empresa pot veure. Un nom que no existeix i un disparador real el mòdul del qual la teva empresa no té concedit responen igual, així que la resposta mai no confirma quin dels dos casos és. |
automation_trigger_payload_contract_unknown | invalid_request_error | 422 | El disparador no publica contracte de camps avaluables, així que no hi ha catàleg contra el qual resoldre una condició. |
automation_trigger_type_invalid | invalid_request_error | 422 | L'escriptura porta un disparador que no és al catàleg disponible per a la teva empresa, així que la regla no rebria cap esdeveniment. |
Empreses
| Code | Type | HTTP | Descripció |
|---|---|---|---|
company_inactive | authorization_error | 403 | El 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_required | authorization_error | 403 | La gestoria té un pla vigent, però sense el mòdul de gestoria, així que no pot crear ni operar empreses gestionades. |
gestoria_plan_required | payment_required_error | 402 | La gestoria no té una subscripció de pagament activa, així que no hi ha subscripció sobre la qual cobrar el seient. |
payment_method_required | payment_required_error | 402 | Donar d'alta una empresa gestionada cobra un seient immediatament, i la gestoria opera en mode real sense mètode de pagament configurat. |
seat_charge_failed | payment_required_error | 402 | El 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. |
Contactes
| Code | Type | HTTP | Descripció |
|---|---|---|---|
alternative_id_type_invalid | invalid_request_error | 422 | El tipus d'identificador alternatiu queda fora del catàleg nif_iva, passport, country_id, residence_certificate, other_document, not_registered. |
bank_account_usage_required | invalid_request_error | 422 | El compte bancari no declara per a què serveix: ni collection ni payment, i tampoc no marca cap ús predeterminat del qual deduir-ho. Un compte sense propòsit no es pot fer servir en cobraments ni en pagaments. |
cannot_have_both_tax_id_and_alternative_id | invalid_request_error | 422 | El 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_id | invalid_request_error | 422 | La verificació censal contrasta el parell nom + NIF contra l'AEAT, i en falta un dels dos. |
client_has_documents | invalid_request_error | 422 | El 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_large | invalid_request_error | 422 | El 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_found | not_found_error | 404 | L'identificador no resol a cap client de l'empresa autenticada. |
client_requires_tax_identity | invalid_request_error | 422 | El client no té identitat fiscal: ni tax_id ni identificador alternatiu, i no es pot emetre una factura a una part sense identificar. |
contact_not_found | not_found_error | 404 | L'identificador no resol a cap contacte comercial de l'empresa autenticada. |
direct_debit_requires_default_bank_account | invalid_request_error | 422 | Es va triar domiciliació bancària com a mètode de pagament, però el client no té compte bancari per defecte on carregar. |
supplier_has_documents | invalid_request_error | 422 | El proveïdor està referenciat per factures de compra registrades, i esborrar-lo deixaria aquestes despeses sense la part que les va emetre. |
supplier_not_found | not_found_error | 404 | L'identificador no resol a cap proveïdor de l'empresa autenticada. |
tax_id_already_exists | conflict_error | 409 | Un altre client de l'empresa ja té aquest NIF, i el NIF identifica la part sense ambigüitat dins d'una empresa. |
Albarans
| Code | Type | HTTP | Descripció |
|---|---|---|---|
delivery_note_cannot_be_sent | invalid_request_error | 422 | L'albarà ja està facturat o cancel·lat: lliurar-lo ara donaria al client un document superat. |
delivery_note_not_found | not_found_error | 404 | L'identificador no resol a cap albarà de l'empresa autenticada. |
delivery_note_section_not_editable_in_status | invalid_request_error | 422 | La secció logística —transportista, vehicle, conductor— està congelada perquè l'albarà ja està lliurat, facturat o cancel·lat. |
driver_tax_id_requires_name | invalid_request_error | 422 | Es 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_large | invalid_request_error | 422 | La imatge de la signatura supera la mida admesa per al camp. |
Empleats
| Code | Type | HTTP | Descripció |
|---|---|---|---|
employee_seat_charge_failed | payment_required_error | 402 | El 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_required | payment_required_error | 402 | Donar d'alta o reactivar un empleat cobra un seient immediatament, i l'empresa opera en mode real sense mètode de pagament configurat. |
Events
| Code | Type | HTTP | Descripció |
|---|---|---|---|
event_not_found | not_found_error | 404 | L'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. |
Exportacions
| Code | Type | HTTP | Descripció |
|---|---|---|---|
export_budget_exceeded | rate_limit_error | 429 | S'ha exhaurit el pressupost horari de TREBALL D'EMPAQUETAT de l'empresa. No és un límit de peticions: compta documents empaquetats i artefactes generats contra el disc i el pool de render que comparteixen tots els inquilins, així que ni repartir les crides ni fer servir una altra credencial no canvien res. El subcode diu quin dels dos eixos s'ha exhaurit: export_documents_budget (el contingut empaquetat) o export_artifacts_budget (el nombre de fitxers generats). |
export_byte_cap_exceeded | invalid_request_error | 413 | La descàrrega empaquetada supera el sostre de BYTES d'aquest tipus d'artefacte. No compta documents sinó pes, així que un lot petit de documents molt pesants —amb plantilla il·lustrada o adjunts— també l'assoleix. El subcode diu en quin moment s'ha rebutjat: before_writing, quan el pes estimat ja el superava i NO s'ha arribat a escriure res, o while_writing, quan el pes real l'ha superat durant l'empaquetat i el fitxer parcial s'ha descartat. |
export_document_cap_exceeded | invalid_request_error | 413 | La descàrrega empaquetada demana MÉS DOCUMENTS dels que admet aquest tipus d'artefacte. No és un límit de peticions ni un problema de permisos: és la mida del que es demana en una sola crida, i el mateix sostre regeix a l'aplicació web i a l'API, de manera que partir la feina entre superfícies no l'esquiva. |
Idempotency
| Code | Type | HTTP | Descripció |
|---|---|---|---|
idempotency_key_in_use | idempotency_error | 409 | Hi ha una altra petició amb la mateixa Idempotency-Key encara en curs, i encara no se'n coneix el resultat. |
idempotency_key_invalid | invalid_request_error | 400 | La Idempotency-Key no encaixa amb el format admès: entre 1 i 255 caràcters ASCII imprimibles. |
idempotency_key_required | invalid_request_error | 422 | La petició va arribar sense capçalera Idempotency-Key i aquesta operació lliura un efecte que no es pot desfer —un correu enviat, un fitxer generat, un càrrec—, així que la seva finestra de transició ja s'ha tancat per a l'entorn d'aquesta credencial. |
idempotency_key_reused | idempotency_error | 409 | Aquesta 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. |
Integracions
| Code | Type | HTTP | Descripció |
|---|---|---|---|
shopify_api_version_expired | api_error | 500 | La versió de l'API d'administració amb què parlem amb la botiga ja no està suportada. Shopify no retorna cap error quan això passa: serveix la versió estable més antiga amb codi 200, de manera que l'avaria apareix com a camps que deixen de ser a la resposta. |
shopify_credentials_rejected | invalid_request_error | 422 | La botiga ha contestat i ha rebutjat el testimoni d'accés, o no n'hi havia cap per fer servir. A Shopify el testimoni neix de l'autorització de l'aplicació i el comerciant la pot revocar des del seu panell en qualsevol moment, així que un testimoni que ahir funcionava pot no valer avui sense que ningú hagi tocat la configuració. |
shopify_store_unreachable | api_error | 502 | La botiga no ha contestat: s'ha esgotat el temps d'espera, ha fallat el transport, Shopify ha retornat un error propi o s'ha esgotat el pressupost de cost de consulta de l'API d'administració. El que falla és aigües amunt i no pas a la credencial. |
store_already_connected | invalid_request_error | 422 | Aquesta botiga ja està connectada a la teva empresa amb el mateix proveïdor. La parella proveïdor + botiga remota és única per empresa, així que connectar-la dues vegades deixaria dues botigues ingerint les mateixes comandes i facturant-les per duplicat. |
store_external_id_mismatch | invalid_request_error | 422 | L'identificador remot que envies no correspon a cap botiga que la teva empresa hagi autoritzat per a aquesta integració. En els proveïdors que signen els seus avisos amb el secret de l'aplicació —Shopify—, aquest identificador decideix a quina empresa es factura cada venda, així que només s'admet el d'una botiga que hagi passat per l'autorització. |
store_not_found | not_found_error | 404 | L'identificador no correspon a cap botiga connectada de l'empresa autenticada. Una botiga d'una altra empresa respon exactament igual, de manera que la resposta mai no revela si existeix en un altre lloc. |
store_url_not_allowed | invalid_request_error | 422 | L'adreça base de la botiga no és una destinació de sortida autoritzada per a la teva empresa. Rellegir comandes des de la botiga obriria una connexió cap a un amfitrió que ningú no ha aprovat. |
woocommerce_credentials_rejected | invalid_request_error | 422 | La botiga ha contestat i ha rebutjat la credencial, o la credencial no es podia fer servir: falta la clau, falta el secret o l'adreça base no és https. L'autenticació viatja a la capçalera sobre HTTPS, de manera que una botiga publicada en text clar lliuraria les dues peces al primer salt, i per això es rebutja abans de sortir. |
woocommerce_rest_route_missing | invalid_request_error | 422 | La botiga ha contestat, però la seva API REST no està publicada: WordPress ha respost que la ruta no existeix. Habitualment és perquè els enllaços permanents estan en mode simple i /wp-json/ no se serveix. La credencial pot ser perfectament correcta. |
woocommerce_store_unreachable | api_error | 502 | La botiga no ha contestat: s'ha esgotat el temps d'espera, ha fallat el transport o el seu allotjament ha retornat un error propi. El que falla és aigües amunt, a la instal·lació del comerciant, i no pas a la plataforma ni a la credencial. |
Factures
| Code | Type | HTTP | Descripció |
|---|---|---|---|
corrective_invoice_inanulable | invalid_request_error | 422 | La 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_exceeded | invalid_request_error | 422 | La 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_nature | invalid_request_error | 422 | correction_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_reason | invalid_request_error | 422 | El 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_id | invalid_request_error | 400 | La 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_number | invalid_request_error | 422 | El número de factura no segueix el format canònic SÈRIE-AAAA-NNN, més el sufix -RECn a les rectificatives. |
invalid_invoice_status | invalid_request_error | 422 | El valor enviat com a estat de factura queda fora del catàleg del cicle de vida documental (draft, scheduled, sent, overdue, cancelled, annulled). paid és un valor vàlid per llegir i per filtrar, però no per escriure: registra un cobrament al seu lloc. |
invalid_invoice_uuid | invalid_request_error | 400 | L'identificador de factura de la ruta o del payload no és un UUID vàlid. |
invalid_payment_method | invalid_request_error | 422 | El mètode de pagament queda fora de l'allowlist tancada: bank_transfer, cash, credit_card, sepa_direct_debit, paypal, bizum, other. |
invoice_already_annulled | invalid_request_error | 422 | La 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_paid | invalid_request_error | 422 | La 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_sent | invalid_request_error | 422 | La 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_number | invalid_request_error | 422 | Es 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_cannot_be_sent | invalid_request_error | 422 | La factura està anul·lada o cancel·lada: ja no representa una operació vàlida, així que el seu PDF no es lliura al destinatari. |
invoice_invalid_status_transition | invalid_request_error | 422 | L'estat destí no és assolible des de l'actual. El cicle de vida documental és dirigit: draft passa a scheduled o sent, sent a overdue o annulled, overdue a annulled, i cancelled i annulled són terminals. Estar cobrada no és un pas d'aquest cicle: es llegeix del ledger de cobraments. |
invoice_not_cancellable_in_current_state | invalid_request_error | 422 | Cancel·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_state | invalid_request_error | 422 | Una 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_state | invalid_request_error | 422 | Nomé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_state | invalid_request_error | 422 | Nomé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_action | invalid_request_error | 422 | L'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_found | not_found_error | 404 | L'identificador no resol a cap factura de l'empresa autenticada. Les factures d'una altra empresa responen exactament igual. |
invoice_not_modifiable_in_current_state | invalid_request_error | 422 | El camp que intentes canviar està congelat per a l'estat actual — per exemple el règim fiscal d'una factura anul·lada. |
invoice_not_paid | invalid_request_error | 422 | Es 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_state | invalid_request_error | 422 | Reprogramar mou la data d'emissió d'una factura que espera en scheduled, i aquesta factura no està esperant. |
invoice_not_schedulable_in_current_state | invalid_request_error | 422 | Nomé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_state | invalid_request_error | 422 | Desprogramar torna la factura de scheduled a draft, així que només s'aplica mentre segueix esperant a emetre's. |
invoice_not_unsendable_in_current_state | invalid_request_error | 422 | Desfer 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_line | invalid_request_error | 422 | La 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_number | invalid_request_error | 422 | Aquest número de factura correspon a més d'una factura, així que per si sol no n'identifica cap. Es repeteix per dos motius independents: l'exercici (les sèries reciclen la numeració cada any) i la sèrie (dues sèries de la teva empresa emeten cadascuna el seu F-2026-001). |
line_total_checksum_mismatch | invalid_request_error | 422 | El 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_invalid | invalid_request_error | 422 | El 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_period | invalid_request_error | 422 | L'operació trimestral no va trobar factures en el període demanat, així que no hi ha res a empaquetar ni a enviar. |
payment_method_invalid | invalid_request_error | 422 | La mateixa allowlist tancada que invalid_payment_method, reportada quan el valor es rebutja en llegir el camp de mètode de pagament del payload. |
rectified_invoice_inanulable | invalid_request_error | 422 | Aquesta factura ja té una rectificativa total (correction_type: full), que va tornar el seu import i la seva mercaderia. Anul·lar-la ara els tornaria per segona vegada. Una rectificativa parcial no bloqueja: la factura segueix viva i anul·lar-la és legítim. |
reminder_not_applicable | invalid_request_error | 422 | El 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_past | invalid_request_error | 422 | scheduled_for no és estrictament futur, així que no hi ha cap espera a reservar. |
simplified_invoice_cannot_be_substituted | invalid_request_error | 422 | Una 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_allowed | invalid_request_error | 422 | L'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_exceeded | invalid_request_error | 422 | Les línies portarien la factura simplificada (F2) per sobre del límit legal absolut de 3.000 € IVA inclòs. |
suplido_line_cannot_carry_taxes | invalid_request_error | 422 | La 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_invoice | invalid_request_error | 422 | La 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_reference | invalid_request_error | 422 | La 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. |
MCP
| Code | Type | HTTP | Descripció |
|---|---|---|---|
mcp_guardrail_violation | invalid_request_error | 422 | La crida infringeix una regla fiscal declarada i s'ha rebutjat LOCALMENT, abans d'executar res: no s'ha creat, modificat ni esborrat cap document. És l'únic codi del catàleg que cap ruta de l'API v1 no pot emetre — qui el rep està parlant per MCP. El subcode diu quin dels nou guardrails s'ha infringit, i les dades de l'error porten guardrail_uri (el resource que explica la regla) i rule_id (la regla concreta, amb la forma BR-XXX-NNN). |
Notificacions
| Code | Type | HTTP | Descripció |
|---|---|---|---|
notification_not_found | not_found_error | 404 | L'identificador no correspon a cap notificació de l'empresa autenticada, o la notificació va quedar fora de la finestra de retenció. |
Pagaments
| Code | Type | HTTP | Descripció |
|---|---|---|---|
invalid_payment_date | invalid_request_error | 422 | La 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. |
payment_already_reversed | invalid_request_error | 422 | El cobrament ja està anul·lat, i el seu rastre no es trepitja amb una segona anul·lació: el motiu, l'instant i l'autor del primer són el registre comptable de per què la factura va deixar d'estar cobrada. |
payment_reversal_invalid | invalid_request_error | 422 | La nota de l'anul·lació supera els 500 caràcters admesos. |
payment_reversal_reason_invalid | invalid_request_error | 422 | El motiu de l'anul·lació no pertany al catàleg tancat: només s'admeten devolució de rebut SEPA, disputa o retrocessió de targeta, error d'imputació, efecte impagat i error de registre. |
payout_reconciliation_amount_mismatch | invalid_request_error | 422 | L'import confirmat no coincideix amb el net de la liquidació, així que la conciliació tancaria amb una diferència que ningú justifica. |
receipt_not_available | invalid_request_error | 422 | No hi ha justificant a emetre perquè el document no té cap cobrament registrat al darrere. |
stripe_payout_already_reconciled | invalid_request_error | 422 | La liquidació ja estava conciliada, i la conciliació és terminal: repetir-la comptabilitzaria dues vegades l'apunt bancari. |
stripe_payout_not_found | not_found_error | 404 | L'identificador no resol a cap liquidació de l'empresa autenticada. |
Tarifes
| Code | Type | HTTP | Descripció |
|---|---|---|---|
duplicate_price_list_name | invalid_request_error | 422 | Una altra tarifa de l'empresa ja fa servir aquest nom, que ha de ser únic dins del tenant. |
inactive_price_list | invalid_request_error | 422 | La tarifa està inactiva i només es pot consultar per explicar documents històrics, no seleccionar per a una operació nova. |
invalid_price_list_item | invalid_request_error | 422 | L'entrada de tarifa té un destí, import o unitat incompatible, o duplica el mateix producte, variant i presentació dins de la tarifa. |
price_list_in_use | invalid_request_error | 422 | La tarifa està assignada a clients o esborranys i eliminar-la deixaria aquestes referències sense origen de preu. |
price_list_not_found | not_found_error | 404 | L'identificador no resol a cap tarifa de l'empresa autenticada. |
Productes
| Code | Type | HTTP | Descripció |
|---|---|---|---|
pack_in_use | invalid_request_error | 422 | El pack està referenciat per documents emesos, així que esborrar-lo trencaria la seva composició. |
pack_not_found | not_found_error | 404 | L'identificador no resol a cap pack de l'empresa autenticada. |
pack_share_link_failed | api_error | 500 | No es va poder generar l'enllaç per compartir el pack. El pack en si no queda afectat. |
product_in_use | invalid_request_error | 422 | El producte està referenciat per documents emesos o per altres entrades del catàleg, i eliminar-lo deixaria aquestes referències penjant. |
product_not_found | not_found_error | 404 | L'identificador no resol a cap producte de l'empresa autenticada. |
sku_already_exists | conflict_error | 409 | Un 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
| Code | Type | HTTP | Descripció |
|---|---|---|---|
invalid_expiry_date | invalid_request_error | 422 | La data de venciment és anterior a la d'emissió, o la supera en més de 365 dies. |
invalid_proforma_id | invalid_request_error | 400 | La referència de proforma rebuda no és un identificador vàlid, normalment perquè un valor intern va substituir l'id públic. |
invalid_proforma_number | invalid_request_error | 422 | El número de proforma no segueix el format canònic de numeració de la seva sèrie. |
invalid_proforma_status | invalid_request_error | 422 | El valor enviat com a estat queda fora del catàleg draft, accepted, rejected, expired, invoiced, cancelled. |
invalid_proforma_uuid | invalid_request_error | 400 | L'identificador de proforma de la ruta o del payload no és un UUID vàlid. |
proforma_already_accepted | invalid_request_error | 422 | El client ja va acceptar la proforma, i l'acceptació es registra una sola vegada. |
proforma_already_rejected | invalid_request_error | 422 | La proforma ja està marcada com a rebutjada. |
proforma_cannot_be_accepted | invalid_request_error | 422 | L'acceptació no escau des de l'estat actual: una proforma facturada, cancel·lada o expirada ja no l'admet. |
proforma_cannot_be_rejected | invalid_request_error | 422 | El rebuig no escau des de l'estat actual: un cop facturada, cancel·lada o expirada, la proforma està tancada. |
proforma_cannot_be_sent | invalid_request_error | 422 | L'enviament per correu no s'aplica a una proforma en estat terminal: no hi ha oferta viva a lliurar. |
proforma_invalid_status_transition | invalid_request_error | 422 | L'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_state | invalid_request_error | 422 | Convertir 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_state | invalid_request_error | 422 | Només s'esborra una proforma en esborrany. Un cop acceptada, rebutjada o facturada forma part del rastre comercial. |
proforma_not_draft | invalid_request_error | 422 | L'operació només té sentit mentre la proforma és un esborrany, i aquesta ja ha avançat. |
proforma_not_editable_in_current_state | invalid_request_error | 422 | Només una proforma en esborrany admet edició. Un cop acceptada, rebutjada, expirada, facturada o cancel·lada, el seu contingut queda fixat. |
proforma_not_found | not_found_error | 404 | L'identificador no resol a cap proforma de l'empresa autenticada. |
proforma_requires_at_least_one_line | invalid_request_error | 422 | La proforma no porta línies, així que no hi ha import a posar davant del client. |
public_link_expires_at_exceeds_max_days | invalid_request_error | 422 | La 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
| Code | Type | HTTP | Descripció |
|---|---|---|---|
attachment_invalid_filename | invalid_request_error | 422 | El nom del fitxer no és utilitzable: és buit, porta components de ruta, o supera els 200 caràcters. |
attachment_mime_not_allowed | invalid_request_error | 422 | El tipus de fitxer queda fora del conjunt admès: PDF, PNG, JPEG, XML i HTML. |
attachment_missing | not_found_error | 404 | La factura de compra existeix però no té fitxer adjunt, així que no hi ha res a descarregar. |
attachment_too_large | invalid_request_error | 422 | El fitxer supera la mida màxima permesa per a un adjunt de document. |
cannot_attach_to_cancelled_purchase_invoice | invalid_request_error | 422 | La factura està cancel·lada, i adjuntar documents a un registre cancel·lat alteraria documentació ja tancada. |
invalid_purchase_invoice_id | invalid_request_error | 400 | La 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_number | invalid_request_error | 422 | El 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_uuid | invalid_request_error | 400 | L'identificador de factura de compra de la ruta o del payload no és un UUID vàlid. |
operation_regime_invalid | invalid_request_error | 422 | El règim d'operació queda fora del catàleg general, intracomunitaria, importacion_exportacion, isp. |
purchase_invoice_already_exists | conflict_error | 409 | Aquest 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_state | invalid_request_error | 422 | Nomé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_draft | invalid_request_error | 422 | L'operació només s'aplica mentre la factura de compra és un esborrany, i aquesta ja està registrada. |
purchase_invoice_not_editable_in_current_state | invalid_request_error | 422 | Nomé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_found | not_found_error | 404 | L'identificador no resol a cap factura de compra de l'empresa autenticada. |
purchase_invoice_requires_at_least_one_line | invalid_request_error | 422 | La factura de compra no porta línies, així que no hi ha despesa ni IVA suportat a registrar. |
Pressupostos
| Code | Type | HTTP | Descripció |
|---|---|---|---|
quote_already_accepted | invalid_request_error | 422 | El pressupost ja estava aprovat, i l'aprovació es registra una sola vegada. |
quote_already_rejected | invalid_request_error | 422 | El pressupost ja està marcat com a rebutjat. |
quote_cannot_be_sent | invalid_request_error | 422 | El pressupost està rebutjat, convertit, caducat o cancel·lat: ja no és una oferta viva a lliurar. |
quote_expired | invalid_request_error | 422 | El 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_found | not_found_error | 404 | L'identificador no resol a cap pressupost de l'empresa autenticada. |
Límit de peticions
| Code | Type | HTTP | Descripció |
|---|---|---|---|
account_probation_limit_exceeded | rate_limit_error | 429 | L'empresa és dins del seu PERÍODE DE CONFIANÇA de compte nou, i el sostre que ha rebutjat aquesta crida el posa l'EDAT DEL COMPTE, no pas el seu pla. Un compte acabat de crear arrenca amb un marge reduït que s'eixampla tot sol a mesura que madura. |
company_monthly_quota_exceeded | rate_limit_error | 429 | L'empresa ha exhaurit el volum mensual que el seu pla concedeix al conjunt de les seves claus. |
company_rate_limit_exceeded | rate_limit_error | 429 | L'empresa ha superat el ritme per minut que el seu pla concedeix al conjunt de les seves claus, no el d'una clau sola. |
email_delivery_circuit_open | rate_limit_error | 429 | L'enviament de correu està TALLAT temporalment, per una incidència del proveïdor o per un problema d'entrega d'aquesta empresa. No és un cupó: és un tall de seguretat per no continuar cremant reputació d'enviament mentre l'entrega falla. |
email_recipient_budget_exceeded | rate_limit_error | 429 | S'ha exhaurit el pressupost de DESTINATARIS DIFERENTS de l'empresa dins la finestra. No és un límit de peticions: compta bústies assolides, així que ni repartir l'enviament en més crides ni fer servir una altra credencial no canvien res. |
monthly_quota_exceeded | rate_limit_error | 429 | L'empresa va esgotar la quota mensual de crides que inclou el seu pla. |
pdf_generation_budget_exceeded | rate_limit_error | 429 | S'ha exhaurit el pressupost horari de TREBALL DE RENDER de PDF. No és un límit de peticions: compta renders contra el pool de Chrome que comparteixen tots els inquilins, així que ni repartir les crides ni fer servir una altra credencial no canvien res. El subcode diu quin dels dos cupons s'ha exhaurit: company_budget (el de l'empresa sencera) o document_budget (el d'aquest document sol, mentre els altres continuen generant). |
portfolio_monthly_quota_exceeded | rate_limit_error | 429 | La quota MENSUAL de la cartera s'ha exhaurit. Es compta sobre l'empresa gestora i les seves filles actives en conjunt, així que el consum d'una filla exhaureix el de totes. |
portfolio_rate_limit_exceeded | rate_limit_error | 429 | El sostre per minut que s'ha assolit és el de la CARTERA —l'empresa gestora i totes les seves filles actives sumades—, no el d'aquesta credencial ni el d'aquesta empresa. Per això ni repartir el trànsit entre credencials ni donar d'alta una altra empresa filla no canvien res: totes dues continuen comptant al mateix cubell. |
rate_limit_exceeded | rate_limit_error | 429 | La clau va enviar més peticions de les que permet el seu ritme a la finestra actual. |
upload_in_flight_budget_exceeded | rate_limit_error | 429 | L'empresa té massa bytes travessant alhora el disc temporal (importacions tabulars i les seves previsualitzacions, UBL, OCR i restauració de còpia). És un pressupost de bytes EN VOL, no d'espai ocupat: no consumeix cap cubell de peticions ni apareix a les capçaleres de límit. |
Factures recurrents
| Code | Type | HTTP | Descripció |
|---|---|---|---|
invalid_frequency_interval | invalid_request_error | 422 | L'interval és menor que 1, així que la recurrència mai avançaria a una execució següent. |
invalid_frequency_type | invalid_request_error | 422 | La freqüència queda fora del catàleg daily, weekly, biweekly, monthly, bimonthly, quarterly, semiannual, annual, custom. |
invalid_holiday_handling | invalid_request_error | 422 | La política de festius queda fora del catàleg skip, before, after, same. |
invalid_recurring_invoice_id | invalid_request_error | 400 | La 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_uuid | invalid_request_error | 400 | L'identificador de recurrència de la ruta o del payload no és un UUID vàlid. |
recurring_already_active | invalid_request_error | 422 | La 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_active | invalid_request_error | 422 | La recurrència ja està en marxa. |
recurring_invoice_already_cancelled | invalid_request_error | 422 | La recurrència ja estava cancel·lada, i la cancel·lació és terminal. |
recurring_invoice_already_paused | invalid_request_error | 422 | La recurrència ja està pausada, així que pausar-la un altre cop no canvia res. |
recurring_invoice_cancelled_cannot_resume | invalid_request_error | 422 | Una recurrència cancel·lada no es reprèn: la cancel·lació la tanca definitivament, a diferència de la pausa. |
recurring_invoice_cannot_run | invalid_request_error | 422 | La 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_invoices | invalid_request_error | 422 | La recurrència ja va generar factures, i aquestes factures en depenen per a la seva traçabilitat. |
recurring_invoice_not_found | not_found_error | 404 | L'identificador no resol a cap recurrència de l'empresa autenticada. |
recurring_invoice_requires_at_least_one_line | invalid_request_error | 422 | La recurrència no porta línies, així que cada factura generada sortiria buida. |
recurring_not_active | invalid_request_error | 422 | L'operació necessita una recurrència en marxa i aquesta està pausada, completada o cancel·lada. Codi antic conservat per compatibilitat amb integracions velles. |
Request
| Code | Type | HTTP | Descripció |
|---|---|---|---|
business_rule_violation | invalid_request_error | 422 | Una 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_params | invalid_request_error | 422 | starting_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_exists | conflict_error | 409 | L'external_id amb què concilies contra el teu sistema ja està assignat a un altre objecte del mateix tipus en aquesta empresa. |
invalid_param_format | invalid_request_error | 422 | Un 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_value | invalid_request_error | 422 | Un 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_transition | invalid_request_error | 422 | L'estat sol·licitat no és assolible des de l'estat en què es troba ara mateix el document. |
length_required | invalid_request_error | 411 | Va 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_keys | invalid_request_error | 422 | L'objecte metadata supera el límit de 50 claus per recurs. |
metadata_value_too_long | invalid_request_error | 422 | Un valor de metadata supera els 500 caràcters un cop serialitzat a text. |
method_not_allowed | invalid_request_error | 405 | La ruta existeix però no accepta el verb HTTP utilitzat. |
missing_required_param | invalid_request_error | 422 | Un 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_invalid | invalid_request_error | 422 | Un 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_boolean | invalid_request_error | 400 | Un paràmetre que ha de ser booleà va rebre un valor fora de les representacions acceptades (true/false, 1/0). |
parameter_invalid_cursor | invalid_request_error | 400 | El 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_empty | invalid_request_error | 400 | Un 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_enum | invalid_request_error | 400 | El 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_format | invalid_request_error | 400 | El 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_integer | invalid_request_error | 400 | Un 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_iso8601 | invalid_request_error | 400 | Un filtre de rang (gte, lte, gt, lt) va rebre un valor que no és numèric ni una data ISO 8601. |
parameter_invalid_range | invalid_request_error | 400 | Un 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_string | invalid_request_error | 400 | Un 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_url | invalid_request_error | 400 | Un 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_uuid | invalid_request_error | 400 | Un 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_value | invalid_request_error | 422 | El 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_missing | invalid_request_error | 400 | L'endpoint exigeix un paràmetre que la petició no portava. error.param diu quin. |
parameter_unknown | invalid_request_error | 400 | La 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_large | invalid_request_error | 413 | El body de la petició supera la mida admesa: 1 MB amb caràcter general, 6 MB als endpoints que accepten fitxers. |
profile_not_found | not_found_error | 404 | La 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_exists | conflict_error | 409 | Crear 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_conflict | conflict_error | 409 | L'operació va xocar amb l'estat actual del recurs i no s'aplica cap codi de conflicte més específic. |
resource_immutable | invalid_request_error | 422 | L'objecte està tancat a canvis per a aquesta operació: el seu estat o el seu registre comptable impedeixen modificar-lo. |
resource_locked | conflict_error | 409 | Una 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_deletable | invalid_request_error | 422 | L'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_found | not_found_error | 404 | L'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_found | not_found_error | 404 | La 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_filter | invalid_request_error | 422 | Un 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_version | invalid_request_error | 400 | La capçalera Factuarea-Version està ben formada però anomena una versió fora del conjunt suportat. |
unsupported_media_type | invalid_request_error | 415 | Una petició amb body va declarar un Content-Type diferent de application/json. |
Series
| Code | Type | HTTP | Descripció |
|---|---|---|---|
cannot_archive_last_default_series | invalid_request_error | 422 | La 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_code | invalid_request_error | 422 | Aquest 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_code | invalid_request_error | 422 | El codi de la sèrie és buit, massa llarg, o porta caràcters que no corresponen a un prefix fiscal. |
invalid_series_name | invalid_request_error | 422 | El nom de la sèrie és buit o supera la longitud permesa. |
invalid_series_number | invalid_request_error | 422 | El 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_uuid | invalid_request_error | 400 | L'identificador de sèrie de la ruta o del payload no és un UUID vàlid. |
invalid_series_year | invalid_request_error | 422 | L'exercici no és un any de quatre xifres vàlid per a una sèrie de numeració. |
monthly_requires_month_segmented_format | invalid_request_error | 422 | El 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_archived | invalid_request_error | 422 | La 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_documents | invalid_request_error | 422 | Canviar 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_documents | invalid_request_error | 422 | La sèrie ja va numerar documents, així que no es pot eliminar: la seqüència correlativa ha de seguir sent auditable. |
series_immutable | invalid_request_error | 405 | Les 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_gap | invalid_request_error | 422 | El 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_verifactu | invalid_request_error | 422 | Com 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_found | not_found_error | 404 | L'identificador no resol a cap sèrie de numeració de l'empresa autenticada. |
series_type_invalid | invalid_request_error | 422 | El tipus de document de la sèrie queda fora del catàleg invoice, quote, delivery_note, proforma, purchase_invoice, recurring_invoice. |
series_year_locked | invalid_request_error | 422 | La 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
| Code | Type | HTTP | Descripció |
|---|---|---|---|
dependency_unavailable | service_unavailable_error | 503 | Un servei extern del qual depèn l'operació no va respondre a temps. |
face_transmission_failed | api_error | 502 | La 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_failed | api_error | 500 | No es va poder produir la signatura XAdES del fitxer Facturae, normalment perquè el certificat de signatura no és utilitzable en aquell moment. |
internal_error | api_error | 500 | Alguna cosa s'ha trencat al nostre costat en processar la petició. La condició no la provoca el teu payload. |
maintenance | service_unavailable_error | 503 | La plataforma és en finestra de manteniment i les escriptures es retenen a propòsit. |
pdf_generation_failed | service_unavailable_error | 503 | El 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_failed | api_error | 500 | El 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_failed | api_error | 500 | El document no es va lliurar per correu: el proveïdor de correu va rebutjar el missatge o era inaccessible. |
service_unavailable | service_unavailable_error | 503 | El servei, o una dependència que necessita, no pot respondre temporalment. |
Emmagatzematge
| Code | Type | HTTP | Descripció |
|---|---|---|---|
storage_quota_exceeded | payment_required_error | 402 | El fitxer no cap a l'espai que li queda a l'empresa. El saldo que es compara és l'AGREGAT de totes les superfícies que guarden bytes —vault, PDF de contractes, marca d'empresa, parcel·les, packs, adjunts de compra, certificats, extractes bancaris i signatures d'albarà—, així que el disc pot estar ple per una superfície que no és la que fas servir. |
Informes fiscals
| Code | Type | HTTP | Descripció |
|---|---|---|---|
insufficient_data_for_report | invalid_request_error | 422 | El 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_period | invalid_request_error | 422 | El 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_invalid | invalid_request_error | 422 | El format queda fora del catàleg txt_aeat, pdf, excel. |
tax_report_not_found | not_found_error | 404 | L'identificador no resol a cap declaració de l'empresa autenticada. |
tax_report_type_invalid | invalid_request_error | 422 | El tipus de declaració queda fora del catàleg modelo_303, modelo_347, modelo_130. |
unsupported_format | invalid_request_error | 422 | El format demanat no està disponible per a aquest model: no tota declaració produeix totes les sortides. |
Impostos
| Code | Type | HTTP | Descripció |
|---|---|---|---|
custom_tax_creation_disabled | authorization_error | 403 | La creació d'impostos personalitzats està deshabilitada per a aquesta empresa. |
duplicate_tax_default_for_document_type | invalid_request_error | 422 | Ja 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_invalid | invalid_request_error | 422 | El règim indirecte queda fora del catàleg iva, igic, ipsi. |
invalid_aeat_code | invalid_request_error | 422 | El 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_zone | invalid_request_error | 422 | La zona territorial AEAT queda fora del catàleg peninsula, canarias, ceuta, melilla. |
invalid_country_code | invalid_request_error | 422 | El 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_label | invalid_request_error | 422 | L'etiqueta que es mostra al client al document supera la longitud permesa. |
invalid_description | invalid_request_error | 422 | La descripció supera la longitud màxima permesa per al camp. |
invalid_document_type | invalid_request_error | 422 | El tipus de document queda fora del catàleg: invoice, quote, delivery_note, proforma, purchase_invoice, recurring_invoice. |
invalid_rate_for_tax_regime | invalid_request_error | 422 | El 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_code | invalid_request_error | 422 | El codi de l'impost és buit o supera els 50 caràcters. |
invalid_tax_name | invalid_request_error | 422 | El nom de l'impost és buit o supera els 255 caràcters. |
invalid_tax_rate | invalid_request_error | 422 | El 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_filter | invalid_request_error | 422 | El filtre type del llistat per tipus porta un valor fora de l'enum vat, retention, surcharge, other. |
invalid_validity_window | invalid_request_error | 422 | La finestra de vigència està invertida: valid_until és anterior a valid_from. |
system_tax_default_modification_forbidden | authorization_error | 403 | Els 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_immutable | invalid_request_error | 422 | L'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_field | invalid_request_error | 422 | L'actualització toca un camp congelat en un impost del sistema; error.param diu quin. |
system_tax_undeletable | invalid_request_error | 422 | Els 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_invalid | invalid_request_error | 422 | L'àmbit de l'impost queda fora del catàleg sale, purchase, both. |
tax_code_already_exists | conflict_error | 409 | Un altre impost del catàleg ja fa servir aquest codi, i el codi identifica l'impost sense ambigüitat. |
tax_id_required | invalid_request_error | 422 | L'operació necessita el número d'identificació fiscal (NIF, CIF o NIE) de la part implicada i el registre no en té. |
tax_in_use | invalid_request_error | 422 | L'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_default | invalid_request_error | 422 | Un 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_found | not_found_error | 404 | L'identificador no correspon a cap impost del catàleg accessible per a aquesta empresa. |
tax_type_invalid | invalid_request_error | 422 | El tipus d'impost queda fora del catàleg vat, retention, surcharge, other. |
VeriFactu
| Code | Type | HTTP | Descripció |
|---|---|---|---|
alta_record_not_found | not_found_error | 404 | La factura no té registre d'alta, així que l'operació que en depèn no té sobre què treballar. |
anulacion_record_already_exists | conflict_error | 409 | La factura ja té un registre d'anul·lació a la cadena, i l'anul·lació es declara una sola vegada. |
certificate_expired | invalid_request_error | 422 | El certificat està fora de la seva finestra de validesa: ha caducat, o encara no és vàlid. |
certificate_nif_mismatch | invalid_request_error | 422 | El 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_found | not_found_error | 404 | L'empresa no té cap certificat FNMT que correspongui a l'identificador, o no en té cap de pujat. |
certificate_too_large | invalid_request_error | 422 | El fitxer supera el límit de 100 KB, quan un certificat FNMT real pesa uns pocs kilobytes. |
clock_drift_exceeded | invalid_request_error | 422 | El 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_exists | conflict_error | 409 | L'empresa ja té presentada la declaració responsable del SIF d'aquest període. |
declaracion_not_found | not_found_error | 404 | L'empresa no té presentada la declaració responsable del SIF del període sol·licitat. |
event_already_processed | invalid_request_error | 422 | Aquest esdeveniment del SIF ja consta a la cadena d'esdeveniments, i cada esdeveniment es processa exactament una vegada. |
invalid_certificate_format | invalid_request_error | 422 | El 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_password | invalid_request_error | 422 | La contrasenya no obre el fitxer del certificat. |
max_retries_exceeded | invalid_request_error | 422 | El 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_end | invalid_request_error | 422 | El 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_accepted | invalid_request_error | 422 | L'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_immutable | invalid_request_error | 422 | El 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_rejected | invalid_request_error | 422 | L'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_subsanable | invalid_request_error | 422 | El 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_annulment | invalid_request_error | 422 | El 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_excluded | invalid_request_error | 422 | L'empresa està registrada al SII, i els obligats al SII queden exclosos del reglament VeriFactu. |
verifactu_already_submitted | invalid_request_error | 422 | La 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_invalid | invalid_request_error | 422 | El mode queda fora del catàleg verifactu / no_verifactu. |
verifactu_not_eligible | invalid_request_error | 422 | La 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_found | not_found_error | 404 | L'identificador no correspon a cap registre de facturació de l'empresa autenticada. |
verifactu_transmission_failed | invalid_request_error | 422 | L'enviament del registre a l'AEAT no es va completar: l'endpoint era inaccessible o va respondre amb una incidència. |
Webhooks
| Code | Type | HTTP | Descripció |
|---|---|---|---|
addon_required | payment_required_error | 402 | Crear 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_format | invalid_request_error | 422 | La versió de payload de l'endpoint no és una data YYYY-MM-DD. |
api_version_unsupported | invalid_request_error | 422 | La versió de payload està ben formada però no és entre les que serveix la plataforma. |
custom_header_blocklisted | invalid_request_error | 422 | Una 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_long | invalid_request_error | 422 | El valor d'una capçalera personalitzada supera els 1024 caràcters. |
invalid_url_target | invalid_request_error | 422 | L'amfitrió de destí no és una adreça públicament accessible, així que no hi lliurem: es rebutgen els rangs privats (RFC 1918), loopback, link-local, CGNAT (100.64.0.0/10), ULA IPv6 (fc00::/7) i multicast. Malgrat el que diu el missatge, la restricció s'aplica a tots els entorns, no només en producció. |
replay_delivery_not_retryable | invalid_request_error | 422 | Només es reenvien els lliuraments fallits. Un lliurament que va arribar bé, o un encara en curs, no té res a reenviar. |
replay_event_expired | invalid_request_error | 422 | L'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_range | invalid_request_error | 422 | timeout_seconds queda fora del rang d'1 a 30 segons. |
too_many_custom_headers | invalid_request_error | 422 | L'endpoint declara més de 20 capçaleres personalitzades. |
webhook_delivery_not_found | not_found_error | 404 | L'identificador no correspon a cap intent de lliurament, o el lliurament queda fora de la finestra de retenció de l'històric. |
webhook_endpoint_degraded | invalid_request_error | 422 | L'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_found | not_found_error | 404 | L'identificador no resol a cap endpoint de webhook de l'empresa autenticada. |
webhook_secret_recently_rotated | rate_limit_error | 429 | El 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. |