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ó |
|---|---|---|---|
access_level_raise_forbidden | invalid_request_error | 422 | S'ha intentat pujar el nivell d'accés sobre un compte gestionat que el seu titular ja ha reclamat. Des de la reclamació només el titular pot pujar aquest nivell; el proveïdor només el pot baixar. |
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. |
administrator_key_not_grantable | invalid_request_error | 422 | Una de les seccions de grants és una clau de l’Administrador (gestió d’usuaris, pla i subscripció, API i desenvolupadors o certificat digital) i aquestes seccions no es concedeixen a un membre. |
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. |
enterprise_contract_transition_required | invalid_request_error | 422 | El compte gestionat té un contracte enterprise i, en acabar la gestió, el seu pagament passaria al titular sense que Factuarea hagi fixat encara el pla amb què continua. Mai no es crea una subscripció sense preu, així que no s'ha canviat res. |
external_advisor_already_assigned | invalid_request_error | 422 | El compte ja té un assessor extern marcat: només n'hi pot haver un per compte. |
grant_company_not_in_account | invalid_request_error | 422 | El NIF del grant no és un NIF real del compte o queda fora de l'àmbit de NIF de la credencial. La resposta és la mateixa en tots dos casos, sense revelar quin. |
grants_only_for_member | invalid_request_error | 422 | Només un membre amb rol member pot tenir permisos per NIF (grants). El titular (owner) i els administradors (admin) arriben a tots els NIF del compte, així que un grant sobre ells no significaria res. |
import_file_invalid | invalid_request_error | 422 | Un dels fitxers de la importació no es pot llegir amb el format de la plantilla: no és un CSV llegible, la capçalera no apareix a les 20 primeres línies, li falta una columna obligatòria o té una línia trencada. param indica quin fitxer falla (accounts_file o customers_file) i el missatge, la columna o la línia. No s'ha escrit res. |
import_file_too_large | invalid_request_error | 413 | Un dels fitxers de la importació supera els 5 MB. La mida es comprova abans de llegir cap fila, així que no s'ha processat ni escrit res. param indica quin fitxer falla (accounts_file o customers_file). |
import_in_progress | conflict_error | 409 | Ja hi ha una importació massiva d'aquest compte proveïdor en curs. Les importacions d'un mateix compte s'apliquen d'una en una per no crear comptes, càrrecs ni NIF duplicats, així que aquesta no s'ha aplicat ni ha escrit res. |
import_row_limit_exceeded | invalid_request_error | 422 | Un dels fitxers de la importació porta més files de les que admet una importació: 100 al fitxer de comptes (accounts_file) i 1.000 al de clients (customers_file). Les files es compten abans de llegir-les, així que no s'ha processat ni escrit res. param indica quin fitxer falla. |
invitation_expired | invalid_request_error | 422 | La invitació existeix i és d'aquesta empresa, però la seva finestra d'acceptació ja s'ha tancat, de manera que qui la va rebre no la pot bescanviar. |
invitation_not_found | not_found_error | 404 | L'identificador no correspon a cap invitació pendent de l'empresa autenticada: pot haver-se cancel·lat, haver-se acceptat ja o pertànyer a una altra empresa. |
live_credential_required | authorization_error | 403 | Una clau de proves ha intentat modificar un compte de producció. Només passa en les operacions que canvien el compte —membres, invitacions, titularitat, traspassos de NIF, cartera de NIF, claus i seients—: una clau de proves no pot alterar dades reals. |
managed_account_external_ref_in_other_environment | conflict_error | 409 | La referència externa ja la fa servir un compte gestionat de l'altre entorn (real o de proves). La referència és única entre els dos entorns, i la resposta no anomena aquest compte perquè aquest entorn no el llista. No s'ha escrit res. |
managed_account_not_claimable | invalid_request_error | 422 | El compte gestionat és de proves, i un compte de proves no es reclama mai: no té val de reclamació per emetre ni per reemetre. |
managed_account_plan_not_self_serve | invalid_request_error | 422 | S'ha demanat el pla enterprise per a un compte gestionat. Un compte gestionat es crea o es canvia a emprendedor o empresario; enterprise només l'assigna Factuarea per contracte. |
managed_account_provider_in_trial | invalid_request_error | 422 | El compte proveïdor és en període de prova i ha demanat un compte gestionat real, que es cobra. Durant la prova només es poden crear comptes gestionats de proves. |
managed_accounts_limit_reached | invalid_request_error | 422 | El compte proveïdor ja té tants comptes gestionats reals amb la gestió vigent com admet el seu límit. Els comptes gestionats de proves no compten per a aquest límit. |
member_is_last_owner | invalid_request_error | 422 | L'operació deixaria el NIF sense cap persona que l'administri: el membre que es dona de baixa, o que es degrada a un rol sense administració, és l'últim amb rol owner o admin en aquest NIF. |
member_not_found | not_found_error | 404 | L'identificador no correspon a cap membre de l'equip del compte: o aquesta persona no va pertànyer mai a l'empresa autenticada, o és d'una altra. La superfície de compte respon igual en tots dos casos. |
module_not_grantable | invalid_request_error | 422 | Una de les seccions de grants no es pot concedir: no és una secció exclusiva d’administradors (un membre ja hi accedeix amb permisos normals) o l’empresa no la té pel seu pla. |
nif_transfer_expired | invalid_request_error | 422 | El traspàs de NIF es va emetre de debò, però el seu termini de validesa ha vençut. A diferència d'un traspàs no reconegut, aquesta resposta només arriba a qui ja en tenia un de real, així que no revela res de nou. |
nif_transfer_invalid | invalid_request_error | 422 | El traspàs de NIF presentat no autoritza res: el seu secret està mal copiat, truncat, ja consumit o no es va emetre mai. Tots aquests casos responen igual expressament, perquè l'operació no serveixi per sondejar quins traspassos existeixen. |
owner_transfer_forbidden | authorization_error | 403 | Qui fa la petició no està autoritzat a transferir la titularitat del compte: o no és el titular actual, o el destinatari proposat no la pot rebre. És qüestió de permís, no de payload mal format. |
permissions_not_applicable_to_administrator | invalid_request_error | 422 | El membre és owner o admin del compte: té tots els permisos del seu pla i no admet restriccions ni concessions de seccions. |
permissions_not_applicable_to_employee | invalid_request_error | 422 | La persona és un empleat del portal de l’empleat: el seu accés el governa el portal i no la matriu de seccions, així que no admet restriccions ni concessions. |
plan_limit_exceeded | payment_required_error | 402 | S'ha assolit un límit de recursos del pla de l'empresa. |
privileged_scope_required | authorization_error | 403 | L'operació exigeix el privilegi de proveïdor de comptes (accounts:read o accounts:write) i no es compleix: o el compte de la clau no el té concedit, o la persona que va emetre la clau ja no és propietària ni administradora del compte. Les dues causes responen igual. |
provisioning_account_claimed | conflict_error | 409 | El titular ja ha reclamat aquest compte gestionat i l'administra pel seu compte: ja no es pot tornar a reclamar, reemetre el seu val de reclamació ni tornar-lo a provisionar amb la mateixa referència externa. |
relation_already_exists | invalid_request_error | 422 | Ja hi ha un accés pendent o vigent entre aquests dos comptes, i només en pot haver un d'obert per cada parella de comptes. |
relation_company_not_in_grantor | invalid_request_error | 422 | La llista de NIF de l'accés no és vàlida: o anomena un NIF que no pertany al compte que cedeix l'accés, o arriba buida. L'error assenyala el camp company_ids i no diu quin dels NIF falla. |
relation_invitation_expired | invalid_request_error | 422 | La invitació d'accés existeix i continua pendent, però el seu termini d'acceptació ha vençut, així que ja no es pot acceptar. |
relation_invitation_invalid | invalid_request_error | 422 | La invitació d'accés presentada no serveix: el seu secret no existeix, ja s'ha fet servir, s'ha revocat o va adreçada a un altre compte. Tots aquests casos responen igual a propòsit, perquè l'operació no serveixi per sondejar invitacions alienes. |
relation_self_grant_not_allowed | invalid_request_error | 422 | El compte indicat no pot rebre l'accés: o és el mateix compte que el cedeix, o l'identificador no correspon a un compte vàlid. Els dos casos responen igual. |
relation_transition_not_allowed | invalid_request_error | 422 | L'accés entre comptes és en un estat que no admet el canvi demanat: per exemple, acceptar-ne un que ja és vigent o reenviar la invitació d'un que ja ha acabat. |
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. |
company_read_only | authorization_error | 403 | Qui va emetre la credencial té accés de només lectura (nivell view) a l'empresa efectiva: el seu rol al compte li permet veure aquest NIF, no escriure-hi. El nivell efectiu és el menor entre el desat a la credencial i el que la persona té avui. |
emitter_capability_restricted | authorization_error | 403 | La persona que va emetre la credencial té retirada, a l'empresa efectiva, la secció o l'acció que exigeix l'operació. És la mateixa restricció per mòdul que l'administrador de l'empresa li va posar a l'aplicació web, i s'aplica encara que el seu nivell d'accés al NIF sigui operate. |
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ó es rebutja encara que l'abast sigui el correcte. Els motius habituals són: la teva credencial arriba al NIF per una relació entre comptes (accés cedit al teu compte, o compte gestionat) i l'operació pertany al compte amo del NIF —el registre de peticions, els esdeveniments, els webhook endpoints, la facturació del compte, l'ús d'automatitzacions i les escriptures de credencials de cobrament connectades mai no estan disponibles per una relació—; el NIF és d'un compte gestionat el titular del qual ja el paga, així que el seu proveïdor el pot consultar i editar-ne les dades però ja no activar-lo, desactivar-lo ni arxivar-lo; la persona que va emetre la credencial no és owner ni admin del compte, o la credencial no arriba a tots els NIF del compte; o 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 | El compte ja té el màxim de credencials ACTIVES que admet una cartera. El sostre regeix quan el compte té dos o més NIF reals i es compta sobre totes les credencials actives del compte, no per NIF, de manera que donar d'alta un altre NIF 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_active_rules_limit_exceeded | payment_required_error | 402 | L'empresa ja té actives totes les automatitzacions que permet el seu pla. |
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 un NIF diferent de la cartera. Només s'admeten les accions que avisen la titular del compte o que no toquen cap entitat. |
automation_portfolio_scope_not_available | authorization_error | 403 | L'empresa no pot crear automatitzacions sobre la seva cartera: o no té concedit el mòdul de gestoria, o no és la titular del seu compte. La cartera la representa la titular, així que un NIF addicional del compte mai no té cartera pròpia. |
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 del seu compte (els seus altres NIF i els que un altre compte li cedeix amb nivell d'operació). |
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ï a la cartera del compte de qui va crear l'automatització, abastable amb nivell d'operació i activa. Pot ser que el NIF s'arxivés, es desactivés o es traspassés a un altre compte, que la relació que el cedia es revoqués, acabés o baixés a només consulta, 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. |
Facturació
| Code | Type | HTTP | Descripció |
|---|---|---|---|
customer_offer_benefit_invalid | invalid_request_error | 422 | Les condicions de l’oferta no són vàlides. Revisa els camps indicats. |
customer_offer_billing_state_conflict | conflict_error | 409 | L’estat de facturació ha canviat o necessita revisió. Consulta l’operació abans de continuar. |
customer_offer_catalog_unavailable | service_unavailable_error | 503 | El catàleg de cobrament no està configurat o no es pot verificar; no és una restricció del pla del client. |
customer_offer_collection_not_restorable | invalid_request_error | 422 | La compra no es pot cobrar o el seu saldo no es pot restaurar de manera segura. No es deixa deute per a una altra factura. |
customer_offer_combination_invalid | invalid_request_error | 422 | Els dies extra només es combinen amb un descompte o preu de pla permanent. |
customer_offer_discount_conflict | conflict_error | 409 | Aquesta compra ja té una oferta o un descompte vigent per al mateix concepte. No s’acumulen automàticament. |
customer_offer_forbidden | authorization_error | 403 | L’operació no compleix les condicions o permisos vigents. |
customer_offer_gateway_unavailable | service_unavailable_error | 503 | El proveïdor de pagaments no està disponible. Comprova l’operació abans de tornar-ho a provar. |
customer_offer_idempotency_conflict | idempotency_error | 409 | Aquest intent ja correspon a altres condicions. Conserva l’operació i comprova’n l’estat. |
customer_offer_invalid_terms | invalid_request_error | 422 | Les condicions de l’oferta no són vàlides. Revisa els camps indicats. |
customer_offer_legacy_outcome_unknown | conflict_error | 409 | Una operació anterior de facturació continua pendent de comprovació. |
customer_offer_negotiated_price_invalid | invalid_request_error | 422 | Revisa el preu net, el producte, l’interval i el nombre de cicles acordats. |
customer_offer_not_eligible | invalid_request_error | 422 | L’oferta no és compatible amb l’empresa, el producte o l’estat actual. |
customer_offer_operation_in_progress | conflict_error | 409 | Ja hi ha una operació en curs per a aquest concepte. Comprova’n l’estat abans de continuar. |
customer_offer_payment_method_required | payment_required_error | 402 | Aquesta compra necessita un mètode de pagament. Afegeix-lo i actualitza les condicions abans de confirmar. |
customer_offer_phase_incompatible | conflict_error | 409 | La subscripció té un canvi programat incompatible. No s’ha substituït. |
customer_offer_price_mapping_conflict | conflict_error | 409 | L’estat de facturació ha canviat o necessita revisió. Consulta l’operació abans de continuar. |
customer_offer_purchase_failed | payment_required_error | 402 | El pagament ha fallat i s’ha verificat que aquesta compra no s’ha aplicat. Consulta l’operació abans de tornar-ho a intentar. |
customer_offer_quote_changed | conflict_error | 409 | Les condicions han canviat. Actualitza la cotització abans de confirmar. |
customer_offer_quote_expired | conflict_error | 409 | La cotització ha vençut. Actualitza-la i revisa les condicions. |
customer_offer_quote_unavailable | service_unavailable_error | 503 | No es pot verificar l’import. La confirmació queda bloquejada. |
customer_offer_state_conflict | conflict_error | 409 | L’estat de facturació ha canviat o necessita revisió. Consulta l’operació abans de continuar. |
customer_offer_trial_baseline_changed | conflict_error | 409 | La prova ha canviat. Actualitza la cotització per veure la data vigent. |
customer_offer_trial_limit_exceeded | invalid_request_error | 422 | L’ampliació superaria el màxim de 180 dies de prova. |
customer_offer_trial_not_eligible | invalid_request_error | 422 | Només pots ampliar una prova activa del pla acordat. Una prova vençuda no es reinicia. |
customer_offer_unavailable | invalid_request_error | 422 | L’oferta no està disponible, ha vençut o ha esgotat els bescanvis. |
Empreses
| Code | Type | HTTP | Descripció |
|---|---|---|---|
additional_nif_charge_failed | payment_required_error | 402 | El cobrament immediat del NIF addicional va ser rebutjat: la targeta es va denegar, necessita autenticació, o el proveïdor de pagament era inaccessible. Si no es cobra, el NIF no s'afegeix ni s'activa i no queda cap càrrec. |
additional_nif_not_in_plan | authorization_error | 403 | El compte té un pla vigent, però aquest pla no inclou NIF addicionals: només Empresario i Enterprise (també en prova) els admeten. No s'ha cobrat res ni s'ha escrit cap canvi. |
additional_nif_plan_required | payment_required_error | 402 | El compte no té un pla vigent, així que no hi ha subscripció sobre la qual cobrar el NIF addicional. No s'ha cobrat res ni s'ha escrit cap canvi. |
billing_managed_by_provider | authorization_error | 403 | La facturació d'aquest compte la paga un altre compte, així que aquest no pot contractar pel seu compte un NIF addicional. No s'ha cobrat res ni s'ha escrit cap canvi. |
company_inactive | authorization_error | 403 | L'empresa que anomena el segment {company} de la ruta és dins l'àmbit de la credencial, però està desactivada i no es pot operar fins que torni a estar activa. |
payment_method_required | payment_required_error | 402 | Afegir o activar un NIF addicional en cobra la quota immediatament, i el compte opera en mode real sense mètode de pagament configurat. No s'ha cobrat res ni s'ha escrit cap canvi. |
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. |
import_not_found | invalid_request_error | 404 | La importació de contactes o el seu informe no està disponible a l’empresa autenticada. |
mapping_header_not_found | invalid_request_error | 422 | Una columna del mapatge de la importació no existeix a les capçaleres del fitxer pujat. |
supplier_has_documents | invalid_request_error | 422 | El proveïdor està referenciat per despeses 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_batch_billing_state_conflict | conflict_error | 409 | La facturació necessita revisió abans de continuar aquesta operació. |
employee_batch_forbidden | authorization_error | 403 | Ja no tens permís per a aquesta operació. Comprova’n l’estat abans d’iniciar-ne una altra. |
employee_batch_idempotency_conflict | idempotency_error | 409 | Aquesta sol·licitud correspon a altres dades. Revisa l’operació abans de preparar un lot nou. |
employee_batch_quote_changed | conflict_error | 409 | Les condicions han canviat. Actualitza la cotització i accepta el nou import. |
employee_batch_quote_expired | conflict_error | 409 | La cotització ha vençut. Actualitza-la i revisa l’import. |
employee_batch_quote_unavailable | service_unavailable_error | 503 | No es pot obtenir un import fiable. Reintenta sense iniciar un altre pagament. |
employee_batch_state_conflict | conflict_error | 409 | Aquesta acció ja no està disponible. Consulta l’estat actual de l’operació. |
employee_inactive | invalid_request_error | 422 | L'empleat està donat de baixa: és de només lectura i no admet operacions noves, com fitxar l'entrada, assignar-li un horari o una política d'absències, aprovar-li una absència que passa de la seva data de baixa o convidar-lo al portal. No s'ha escrit res. |
employee_not_found | not_found_error | 404 | L’empleat no existeix o no és accessible en aquesta empresa. |
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_mutation_outcome_unknown | conflict_error | 409 | Una operació anterior d’empleats continua pendent de comprovació. No repeteixis el cobrament. |
employee_seat_operation_in_progress | conflict_error | 409 | Hi ha una operació de places en curs. Recupera-la abans d’iniciar-ne una altra. |
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. |
employee_seat_phase_incompatible | conflict_error | 409 | La subscripció té condicions programades que aquesta modificació de places no pot conservar. |
employee_seats_not_in_plan | authorization_error | 403 | El pla del compte no inclou el control horari (el mòdul control_horario, per pla o per una concessió manual), així que no es poden comprar places d'empleat. No s'ha cobrat res ni s'ha escrit cap canvi; baixar o mantenir les places contractades continua permès. |
invalid_hire_date | invalid_request_error | 422 | La data d'alta de l'empleat quedaria després de la seva data de baixa: en corregir hire_date amb una data posterior a la baixa ja registrada, o en donar de baixa amb una termination_date anterior a l'alta. L'empleat no es modifica. |
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. |
Empreses gestionades
| Code | Type | HTTP | Descripció |
|---|---|---|---|
gestoria_seat_preview_unavailable | service_unavailable_error | 503 | No s’ha pogut verificar l’import del càrrec d’empreses gestionades; això no implica una operació gratuïta per contracte. |
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 | 422 | 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. Un external_id ja emès que es reenvia amb un altre tipus o total a POST /v1/companies/{company}/invoices no retorna aquest error, sinó el 409 unattended_replay_mismatch. |
Integracions
| Code | Type | HTTP | Descripció |
|---|---|---|---|
charge_rule_invalid | invalid_request_error | 422 | La regla no és coherent: la condició, el resultat, el motiu de no facturació, el concepte o l’IVA no encaixen entre si o no són vàlids. El camp conflictiu s’indica a param. |
charge_rule_limit_reached | invalid_request_error | 422 | El compte de Stripe ja té el nombre màxim de regles de tractament de cobraments. |
charge_rule_not_found | not_found_error | 404 | La regla de tractament de cobraments no existeix al compte de Stripe indicat o no pertany a la teva empresa. |
connect_return_domain_already_exists | conflict_error | 409 | El host que intentes donar d'alta ja és un dels dominis de retorn del teu compte. Es compara normalitzat (minúscules, sense port ni ruta), de manera que App.Exemple.com i app.exemple.com són el mateix domini. |
connect_return_domain_limit_reached | invalid_request_error | 422 | El teu compte ja té el nombre màxim de dominis de retorn que admet, i no s'ha desat el nou. El límit és per compte i compta tots els dominis donats d'alta. |
connect_return_domain_not_found | not_found_error | 404 | El domini de retorn que indiques a la ruta no existeix al teu compte, o pertany a un altre: les dues respostes són idèntiques a propòsit per no revelar els dominis d'altres comptes. |
connect_return_url_not_allowed | invalid_request_error | 422 | El host de la return_url no és entre els dominis de retorn del compte de la clau amb què inicies la connexió de Stripe. Només s'accepten adreces https el host exacte de les quals (sense comodins) estigui donat d'alta en aquest compte, perquè ningú pugui portar la persona a un lloc que no controles. |
invalid_connection_method | invalid_request_error | 422 | El mètode de connexió indicat no existeix per a aquest proveïdor. |
platform_account_subscriptions_owned_by_billing | invalid_request_error | 422 | El compte de Stripe connectat és el de la pròpia plataforma: les quotes de subscripció de Factuarea les factura Facturació directament, així que aquest compte no admet l’autofacturació de subscripcions (subscription_autoinvoicing_enabled). |
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. |
stripe_account_linked_elsewhere | conflict_error | 409 | Aquest compte de Stripe ja està vinculat i actiu en una altra empresa de Factuarea. Un compte de Stripe actiu només pot pertànyer a una empresa. |
stripe_oauth_exchange_failed | invalid_request_error | 422 | Stripe no ha confirmat l’autorització del compte: el codi d’autorització ha caducat, ja s’ha fet servir o s’ha denegat. |
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ó |
|---|---|---|---|
amount_reconciliation_failed | invalid_request_error | 422 | Els imports amb IVA inclòs no es poden repartir en línies que sumin exactament el cobrat, així que no s'ha emès res abans que alterar el total. El causa, per exemple, una retenció o un recàrrec d'equivalència que mouen el total més que una diferència d'arrodoniment. |
corrective_client_change_requires_substitution | invalid_request_error | 422 | La rectificativa va a nom d'un client diferent del de la factura original (p. ex. per un error a les dades del client): només pot ser una substitució, perquè per diferències l'import quedaria a nom de qui no va rebre la factura. |
corrective_full_cancellation_with_lines | invalid_request_error | 422 | Anul·lar la factura sencera per diferències (correction_type total, full a l'API, amb correction_nature: I) no admet línies: la rectificativa copia en negatiu totes les de l'original. |
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. |
corrective_substitution_negative_amount | invalid_request_error | 422 | En una rectificativa per substitució (correction_nature: S, o full amb lines sense naturalesa) cada línia porta l'import FINAL de la factura correcta, així que cap quantitat no pot ser negativa (art. 15.5 RD 1619/2012; VERI*FACTU no admet base negativa en una substitució). El preu unitari mai no és negatiu: el signe va a la quantitat. |
corrective_substitution_requires_full | invalid_request_error | 422 | Una rectificativa per substitució (correction_nature: S) substitueix la factura sencera; no hi ha substitució parcial. |
exemption_cause_contradicts_taxed_lines | invalid_request_error | 422 | La factura porta una causa d'exempció de capçalera que declara l'operació sense IVA (exempció, no subjecció o inversió del subjecte passiu) i alguna línia d'operació té un IVA major que zero. |
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. |
face_submission_attempt_conflict | conflict_error | 409 | Una altra petició va modificar l'intent d'enviament a FACe (reserva o conciliació) mentre hi actuaves. |
face_submission_completion_failed | api_error | 500 | FACe va respondre a l'enviament però la plataforma no ha pogut desar el resultat localment. |
face_submission_rejected | invalid_request_error | 422 | FACe va analitzar l'enviament i el va rebutjar amb el seu propi codi d'error (per exemple un codi DIR3 erroni, una signatura no vàlida o un duplicat). A diferència d'una transmissió incerta, FACe no va registrar la factura. |
face_transmission_uncertain | conflict_error | 409 | La factura es va enviar a FACe però es desconeix el resultat, de manera que FACe pot haver-la registrada o no. |
facturae_artifact_unavailable | api_error | 500 | L'arxiu Facturae conservat per a aquest enviament no es pot llegir de l'emmagatzematge perquè falta o està malmès. L'error és nostre. |
facturae_operation_forbidden | authorization_error | 403 | L'actor no pot fer aquesta operació de Facturae; details.reason indica si es tracta dels permisos de l'actor, de l'autoritat de l'emissor, de l'accés a la factura o del dret a enviar-la. |
invalid_correction_nature | invalid_request_error | 422 | correction_nature només accepta I (per diferències: la rectificativa porta l'import de la rectificació, amb el seu signe) o S (substitució: porta la factura tal com queda, amb les línies finals). |
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_delivery_channel | invalid_request_error | 422 | El canal d'enviament queda fora del catàleg, que només té dos valors: email (es registra sol quan el servidor de correu accepta el missatge) i manual (un enviament que vas fer pels teus propis mitjans). |
invalid_facturae_structured_data | invalid_request_error | 422 | Les dades estructurades necessàries per construir l'arxiu Facturae no són vàlides: un valor és incorrecte, els totals no quadren amb les línies o l'XML generat no compleix l'esquema. |
invalid_invoice_business_data | invalid_request_error | 422 | Les dades comercials de la factura (referències de línia, centres administratius o els seus rols) contenen un valor no vàlid. |
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 de numeració de la seva sèrie (per defecte SÈRIE-AAAA-NNN; les rectificatives porten el número correlatiu de la seva pròpia sèrie, p. ex. R-2026-001). |
invalid_invoice_payment_terms | invalid_request_error | 422 | El calendari de pagament de la factura incompleix una regla, per exemple terminis que no sumen el total, dates no vàlides o falta el compte bancari contractual. |
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, issued, overdue, cancelled, annulled). Abans de la versió d'API 2026-10-01 issued es publica com a sent, i allà on l'API llegeix un estat d'entrada (els filtres d'estat, el canvi d'estat massiu) sent es pren com a issued. 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_administrative_precondition_required | invalid_request_error | 428 | El canvi del routing administratiu no va indicar sobre quina versió es basa. |
invoice_administrative_version_conflict | conflict_error | 409 | El routing administratiu de la factura (els seus centres administratius) va canviar després de llegir-la. |
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_rectified_in_full | invalid_request_error | 422 | La factura ja està anul·lada completament (una rectificativa total per diferències), i aleshores no admet cap més rectificativa; o està substituïda completament, i aleshores no admet una altra rectificació total. |
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_marked_as_sent | invalid_request_error | 422 | La marca d'enviament registra que una factura emesa va arribar al client, així que només s'aplica a factures issued o overdue. Un esborrany o una factura programada encara no són la factura fiscal, i una cancel·lada o anul·lada ja no ho és. |
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_due_date_not_last_instalment | invalid_request_error | 422 | La factura té terminis de pagament i el seu venciment (due_on) falta o no és la data de l'últim termini, que és quan venç la factura. |
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, issued o cancelled, scheduled torna a draft o avança a issued, issued passa a overdue o annulled, overdue a annulled, i cancelled i annulled són terminals. El cicle és el mateix a totes les versions d'API; abans de 2026-10-01 l'estat issued es publica com a sent. 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, estigui cobrada o no: issued o overdue (una factura emesa es publica com a sent abans de la versió d'API 2026-10-01). Un esborrany, una factura programada, una 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 d'enviament només s'aplica a una factura emesa (issued o overdue; publicada com a sent abans de la versió d'API 2026-10-01) sense cobraments vigents: neteja sent_at i sent_via i conserva el seu estat fiscal. |
invoice_payment_terms_precondition_required | invalid_request_error | 428 | El canvi del calendari de pagament no va indicar sobre quina versió es basa. |
invoice_payment_terms_version_conflict | conflict_error | 409 | El calendari de pagament de la factura va canviar després de llegir-la. |
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_type_change_not_allowed | invalid_request_error | 422 | Només un esborrany alterna entre factura completa (F1) i simplificada (F2). Una rectificativa, una substitutiva (F3) o una rectificativa de simplificada (R5) conserven el seu tipus, i una simplificada sense client no passa a completa sense indicar abans el destinatari. |
invoice_without_retained_presentation | invalid_request_error | 422 | Una factura del trimestre no té presentació documental retinguda (és anterior a la captura o mai es va inicialitzar), de manera que no es pot incloure al paquet trimestral. Apareix com a error_code als failures del manifest del ZIP trimestral, on la factura queda fora, i com a subcodi d'una violació de regla de negoci al correu trimestral. |
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. |
operation_date_after_issue_date | invalid_request_error | 422 | operation_on és posterior a issued_on. Una data d'operació posterior a la d'expedició només és vàlida en pagaments anticipats (clau de règim 14 o 15). |
pack_return_invalid | invalid_request_error | 422 | La devolució d'un component de pack en una factura rectificativa incompleix les regles de devolució. El pack no és a la factura que es rectifica, el producte no és un dels seus components, la quantitat no és negativa, el preu difereix del preu repartit original o es retornen més unitats de les venudes. |
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 issued ni overdue (una factura emesa es publica com a sent abans de la versió d'API 2026-10-01), 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_invoices_disabled | invalid_request_error | 422 | L'empresa no té habilitades les factures simplificades, així que no es pot crear una factura de tipus F2. |
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. |
tax_rate_mismatch | invalid_request_error | 422 | La línia tria un impost per id (tax_rate_id, retention_rate_id o surcharge_rate_id) i el contradiu: declara un tax_rate, retention_rate o surcharge_rate diferent del d'aquest impost, o l'impost és d'una altra classe que el seu camp (per exemple, una retenció a surcharge_rate_id). L'IVA triat qualifica a més la línia (règim, qualificació AEAT i causa d'exempció), així que totes dues dades han de coincidir. |
unattended_replay_mismatch | idempotency_error | 409 | Ja es va emetre una factura amb aquest external_id amb un altre tipus o un altre total, així que la petició no es pot tractar com un reenviament de la mateixa venda. Es respon amb 409, code i subcode unattended_replay_mismatch i param=external_id: l'external_id identifica UNA operació i no caduca. No és idempotency_key_reused, el 422 d'una Idempotency-Key reutilitzada amb un payload diferent. |
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 no pot ser posterior a avui. Una data anterior a l'emissió sí que s'admet: es registra com a cobrament o pagament anticipat. |
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. |
reversal_reason_reserved | invalid_request_error | 422 | El motiu issued_in_error està reservat a l'anul·lació d'una factura expedida per error; no serveix per revertir un cobrament solt. |
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. |
| Code | Type | HTTP | Descripció |
|---|---|---|---|
invalid_pdf_artifact_fingerprint | invalid_request_error | 422 | La petjada de l’artefacte PDF no és vàlida. |
invalid_pdf_template_configuration | invalid_request_error | 422 | Un valor de la configuració de la plantilla incompleix una regla del model de plantilla; param indica la ruta del camp afectat. |
pdf_artifact_not_found | not_found_error | 404 | L’artefacte PDF no existeix en aquesta empresa, o era una vista prèvia que ha caducat. |
pdf_artifact_not_ready | service_unavailable_error | 503 | El PDF encara s’està preparant. |
pdf_commercial_identity_not_found | not_found_error | 404 | La identitat comercial no existeix en aquesta empresa. |
pdf_commercial_identity_required | invalid_request_error | 422 | El mode de marca de la plantilla (logotip o imatge) necessita una identitat comercial i l'empresa no en té cap per defecte. |
pdf_commercial_identity_unavailable | invalid_request_error | 422 | La identitat comercial existeix però està arxivada o no és compatible amb aquesta operació. |
pdf_engine_profile_unavailable | api_error | 500 | El perfil de generació PDF no està disponible. |
pdf_engine_unreachable | service_unavailable_error | 503 | El motor de generació PDF no ha respost (caigut, reiniciant-se o enmig d’un desplegament). És transitori: la mateixa petició surt bé quan el motor torna, i no s’ha creat ni canviat res. |
pdf_image_resource_unavailable | api_error | 500 | El recurs d’imatge del PDF no està disponible. |
pdf_legal_source_changed | conflict_error | 409 | La font jurídica actual ja no coincideix amb la presentació retinguda. |
pdf_library_association_coverage_incomplete | api_error | 500 | La plataforma no ha pogut comprovar tots els valors per defecte, sèries o recurrències que fan servir la plantilla, de manera que no es pot garantir l'impacte de l'operació. L'error és nostre. |
pdf_library_impact_conflict | conflict_error | 409 | Els valors per defecte, sèries o recurrències afectats per l'operació van canviar després de revisar-ne l'impacte. |
pdf_main_template_required | conflict_error | 409 | L'empresa ja treballa amb la biblioteca de plantilles PDF, on el disseny (pdf_template) i el color d'accent (accent_color) de la personalització s'apliquen a la seva plantilla principal, i no té cap plantilla principal on aplicar-los. |
pdf_original_corrupt | api_error | 500 | No es pot verificar la integritat del PDF original. |
pdf_original_layout_unavailable | api_error | 500 | El disseny amb què es va generar el PDF original ja no està disponible en aquesta versió de Factuarea. |
pdf_original_unavailable | api_error | 500 | El PDF original no està disponible. |
pdf_payload_resource_unavailable | api_error | 500 | Els recursos necessaris per preparar el PDF no estan disponibles. |
pdf_presentation_conflict | conflict_error | 409 | La presentació va canviar després de llegir-la, de manera que l'expected_version enviat està desfasat. |
pdf_presentation_context_changed | conflict_error | 409 | Les dades amb què es va construir la vista prèvia (document, empresa o context de plantilla) van canviar després de generar-la. |
pdf_presentation_etag_mismatch | conflict_error | 412 | L'ETag enviat a If-Match ja no coincideix amb la presentació desada, que es va modificar després de llegir-la. |
pdf_presentation_invalid | invalid_request_error | 422 | La presentació no compleix una regla de contingut o de camp. |
pdf_presentation_not_found | not_found_error | 404 | La presentació documental no existeix en aquesta empresa o no pertany al document consultat. |
pdf_presentation_not_ready | invalid_request_error | 422 | La presentació revisionada encara no està disponible per a aquesta empresa: l'activació està pendent. |
pdf_presentation_precondition_required | invalid_request_error | 428 | El canvi de la presentació no va indicar sobre quina versió es basa. |
pdf_signature_personal_data_forgotten | not_found_error | 410 | Les dades personals de la signatura d’aquesta presentació s’han eliminat. |
pdf_template_access_denied | authorization_error | 403 | La credencial o l'usuari no té permís per fer aquesta operació a la biblioteca de plantilles PDF. |
pdf_template_archived | invalid_request_error | 422 | La plantilla PDF està arxivada i una plantilla arxivada no es pot assignar ni editar. |
pdf_template_asset_conflict | conflict_error | 409 | Ja existeix un actiu de plantilla amb aquest identificador, per la qual cosa la pujada el sobreescriuria. |
pdf_template_asset_not_found | not_found_error | 404 | L'actiu de la plantilla (logotip, imatge o tipus de lletra) no existeix en aquesta empresa o es va eliminar. |
pdf_template_default_replacement_required | invalid_request_error | 422 | Arxivar la plantilla deixaria valors per defecte o associacions sense plantilla i no s'ha indicat cap reemplaçament. |
pdf_template_not_found | not_found_error | 404 | La plantilla PDF no existeix en aquesta empresa. |
pdf_template_precondition_failed | conflict_error | 412 | L'ETag enviat a If-Match ja no coincideix amb la plantilla desada, que es va modificar després de llegir-la. |
pdf_template_precondition_required | invalid_request_error | 428 | Modificar la plantilla exigeix indicar la versió en què es basa i no se n'ha enviat cap. |
pdf_template_version_conflict | conflict_error | 409 | La plantilla es va modificar després de llegir-la, de manera que l'expected_version enviat està desfasat. |
preparation_required | conflict_error | 409 | Cal preparar el PDF d’aquesta presentació abans de sol·licitar-lo. |
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_item_not_found | not_found_error | 404 | L'article indicat no existeix a la tarifa: ja es va retirar o l'identificador no és d'aquesta tarifa. |
price_list_not_found | not_found_error | 404 | L'identificador no resol a cap tarifa de l'empresa autenticada. |
Productes
| Code | Type | HTTP | Descripció |
|---|---|---|---|
duplicate_pack_component | invalid_request_error | 422 | El mateix producte, variant, presentació o configuració apareix més d'una vegada al pack. |
duplicate_promotion_item | invalid_request_error | 422 | El mateix article apareix més d'una vegada a l'oferta i cada article només pot tenir una regla de preu. |
gross_weight_not_allowed | invalid_request_error | 422 | Aquest article no admet pes brut de transport: els serveis no pesen, els productes i variants amb unitat base de massa (KGM, GRM) ja pesen la seva quantitat, i una presentació de mesura variable es pesa a cada línia. |
invalid_gross_weight | invalid_request_error | 422 | El pes brut de transport no és un número, és zero o negatiu, té més de 4 decimals o supera el sostre de la seva columna. En una línia de mercaderia d'un document de control, també quan la quantitat pel pes per unitat dona un pes de línia que s'arrodoneix a 0 kg o supera aquest sostre. |
invalid_pack_component | invalid_request_error | 422 | Un component no pot formar part d'un pack, per exemple un producte que es ven per pes real, l'import del qual només es coneix a la bàscula. |
invalid_pack_image | invalid_request_error | 422 | El fitxer pujat no és una imatge de pack utilitzable: no és un JPG, PNG, WebP o GIF, supera la mida màxima o no s'ha pogut llegir. |
invalid_pack_pricing | invalid_request_error | 422 | El preu del pack no és vàlid per al seu mode: falta el valor, és fora de rang, té més de dos decimals o el descompte iguala o supera el preu dels productes per separat. |
invalid_pack_status_transition | invalid_request_error | 422 | El canvi d'estat demanat no està permès des de l'estat actual del pack, per exemple activar un pack sense canals de venda o restaurar-ne un amb la composició bloquejada. |
invalid_promotion | invalid_request_error | 422 | Un camp de l'oferta incompleix alguna de les seves regles: el nom, el text que veu la web, les dates, la zona horària, els canals o la llista d'articles. |
invalid_promotion_item | invalid_request_error | 422 | Un article de l'oferta no és vàlid: el seu destí, el seu mode, la seva base o el seu valor incompleix una regla. |
pack_composition_too_small | invalid_request_error | 422 | Un pack necessita almenys dos components, o un sol producte comptat amb quantitat de 2 o més. |
pack_group_not_contiguous | invalid_request_error | 422 | Les línies d'un mateix pack no van seguides al document. Hi ha una altra línia entre elles. |
pack_image_limit_reached | invalid_request_error | 422 | El pack ja té el màxim de 5 imatges. |
pack_in_use | invalid_request_error | 422 | El pack està referenciat per documents emesos, així que esborrar-lo trencaria la seva composició. |
pack_line_locked | invalid_request_error | 422 | Una línia que pertany a un grup de pack no pot canviar el seu producte, quantitat, preu unitari ni descompte. |
pack_lines_must_be_expanded | invalid_request_error | 422 | Les línies d'un pack no es poden construir a mà. El servidor reparteix el preu entre els components del pack i fixa ell mateix les dades del grup. |
pack_not_found | not_found_error | 404 | L'identificador no resol a cap pack de l'empresa autenticada. |
pack_not_sellable | invalid_request_error | 422 | El pack no es pot afegir a un document: està arxivat, inactiu, fora de la seva vigència o un dels seus components està inactiu. |
pack_price_allocation_impossible | invalid_request_error | 422 | El preu del pack no es pot repartir entre els seus components perquè no tenen preu per separat. |
pack_price_unreachable | invalid_request_error | 422 | El preu amb IVA demanat no es pot assolir exactament perquè l'IVA s'arrodoneix línia a línia. |
pack_print_mode_not_allowed | invalid_request_error | 422 | Només hi ha el mode d'impressió full_breakdown: cada producte del pack s'imprimeix com una línia normal, amb el nom del pack. |
pack_snapshot_invalid | invalid_request_error | 422 | La fotografia del pack enviada amb la línia del document no té signatura, està alterada o està mal formada. |
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. |
promotion_not_found | not_found_error | 404 | L'identificador no resol a cap oferta de l'empresa autenticada. |
promotion_read_only | invalid_request_error | 422 | L'oferta ja ha acabat o s'ha cancel·lat, així que és de només lectura i no admet més canvis. |
promotion_started | invalid_request_error | 422 | L'oferta ja ha començat i forma part de l'historial de preus. Una oferta començada només admet canviar-ne el final i no es pot esborrar. |
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. |
slug_already_exists | conflict_error | 409 | El slug ja el fa servir, com a actual o anterior, un altre producte o pack de l'empresa. |
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. |
Despeses
| 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 despesa 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 despesa 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 despesa 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 despeses 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 despesa és un esborrany, i aquesta ja està registrada. |
purchase_invoice_not_editable_in_current_state | invalid_request_error | 422 | Només s'edita una despesa 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 despesa de l'empresa autenticada. |
purchase_invoice_requires_at_least_one_line | invalid_request_error | 422 | La despesa no porta línies, així que no hi ha despesa ni IVA suportat a registrar. |
Escàner de despeses
| Code | Type | HTTP | Descripció |
|---|---|---|---|
duplicate_override_reason_required | invalid_request_error | 422 | No s’ha indicat un motiu vàlid per continuar malgrat el duplicat. |
duplicate_resolution_required | invalid_request_error | 422 | Hi ha una possible duplicitat que requereix revisió. |
invalid_inbound_signature | authentication_error | 401 | No s’ha pogut autenticar la signatura del correu entrant. |
invalid_purchase_scan_transition | invalid_request_error | 422 | L’estat actual de l’escaneig no permet aquesta transició. |
module_upgrade_required | authorization_error | 403 | El pla actual no inclou la capacitat d’OCR sol·licitada. |
ocr_company_daily_quota_exceeded | rate_limit_error | 429 | L’empresa ha esgotat la quota diària d’OCR. |
ocr_company_quota_exceeded | rate_limit_error | 429 | L’empresa ha esgotat la quota mensual d’OCR. |
purchase_scan_already_converted | conflict_error | 409 | L’escaneig ja està vinculat a una despesa. |
purchase_scan_not_found | not_found_error | 404 | L’escaneig no existeix o no pertany a l’empresa activa. |
purchase_scan_retry_not_allowed | invalid_request_error | 422 | L’escaneig no admet un altre intent en l’estat actual. |
purchase_scan_review_incomplete | invalid_request_error | 422 | Falten dades obligatòries o els imports revisats no quadren. |
purchase_scan_source_unavailable | invalid_request_error | 422 | L’original de l’escaneig s’ha purgat o ja no està disponible a l’emmagatzematge segur. |
scan_batch_too_large | invalid_request_error | 413 | El lot supera la mida total permesa. |
scan_decompression_limit_exceeded | invalid_request_error | 413 | El fitxer supera el límit segur en descomprimir-se. |
scan_file_too_large | invalid_request_error | 413 | Un fitxer supera el màxim de 20 MiB. |
scan_page_limit_exceeded | invalid_request_error | 413 | El document supera el límit de pàgines configurat. |
scan_pixel_limit_exceeded | invalid_request_error | 413 | La resolució del document supera el límit de processament segur. |
scan_storage_unavailable | service_unavailable_error | 503 | L’emmagatzematge segur de l’original no està disponible. |
scanner_admin_required | authorization_error | 403 | L’acció requereix permisos d’administració de l’escàner. |
stale_scan_version | conflict_error | 409 | L’escaneig ha canviat des de l’última lectura. |
unsafe_scan_file | invalid_request_error | 422 | L’original no ha superat la inspecció de seguretat. |
unsupported_purchase_currency | invalid_request_error | 422 | La divisa del document no s’admet per a la conversió. |
unsupported_purchase_document_type | invalid_request_error | 422 | L’original és un albarà, una comanda, un pressupost, una proforma o un altre document que no acredita una despesa fiscal. |
unsupported_scan_format | invalid_request_error | 422 | El format real del fitxer no és compatible. |
validation_failed | invalid_request_error | 422 | Les dades de l’escaneig no compleixen les restriccions indicades. |
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. |
import_row_quota_exceeded | rate_limit_error | 429 | Les noves files admeses d’importació superarien la quota mensual de files del pla. |
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 el compte sencer —tots els seus NIF en conjunt—, així que el consum d'un NIF exhaureix el de tots. |
portfolio_rate_limit_exceeded | rate_limit_error | 429 | El sostre per minut que s'ha assolit és el de la CARTERA —un compte amb dos o més NIF reals, on se sumen les peticions de totes les seves credencials sobre qualsevol NIF que abastin—, no el d'aquesta credencial ni el d'aquesta empresa. Per això ni repartir el trànsit entre credencials ni donar d'alta un altre NIF al compte no canvien res: tot continua 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. |
invalid_recurring_payment_terms_template | invalid_request_error | 422 | La plantilla de calendari de pagament de la recurrència, que s'aplica a cada factura que genera, no és vàlida. |
invalid_recurring_presentation_policy | invalid_request_error | 422 | La política de presentació de la recurrència, que defineix com es presenten les factures que genera, té un valor no 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_completed_cannot_resume | invalid_request_error | 422 | Una recurrència completada no es reprèn ni s'activa: ja ha esgotat les seves ocurrències o ha passat la data de fi, així que no li queda cap generació pendent. |
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. |
recurring_presentation_activation_changed | conflict_error | 409 | L'empresa ha canviat l'activació del sistema de presentació dues vegades seguides mentre es generava la factura recurrent. La generació s'ha aturat sense escriure res. |
recurring_presentation_policy_precondition_required | invalid_request_error | 428 | El canvi de la política de presentació no va indicar sobre quina versió es basa. |
recurring_presentation_policy_version_conflict | conflict_error | 409 | La política de presentació de la recurrència va canviar després de llegir-la. |
recurring_presentation_unavailable | invalid_request_error | 422 | Quan es va executar una generació de la recurrència, la presentació que té configurada no estava disponible, de manera que no s'ha pogut generar la factura. details.reason indica què faltava. |
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. També el retorna una línia de factura, pressupost, proforma, albarà o factura recurrent sense tax_rate quan ni el producte té impost assignat ni la teva empresa té un IVA per defecte per a aquest tipus de document: error.param és lines.N.tax_rate i error.line_index és la posició (base 0) d'aquesta línia. També el retorna POST /v1/companies/{company}/invoices quan demanes l'enviament per correu (options.send_automatically) i no hi ha destinatari possible —sense client, o amb un client sense email, i sense options.send_to—: error.param és options.send_to i no es crea cap factura. |
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, i surt com a codi principal (400). En les operacions que validen un formulari o un paràmetre de consulta amb regles (per exemple format als PDF de factura) arriba com a entrada d'error.errors[], amb el seu allowed_values, dins d'un 422 invalid_param_value. |
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, el page de paginació per offset —v1 pagina per cursor— o una capçalera retirada de la v1. |
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 | El segment {company} de la ruta anomena una empresa que no existeix o que no és dins l'àmbit de NIFs de la credencial. Tots dos casos responen igual perquè l'API mai reveli empreses d'altres comptes. |
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. A POST /v1/companies/{company}/invoices amb external_id, una altra petició amb el MATEIX external_id continua en curs i no va acabar després d'esperar-la 20 segons. |
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, una ruta d'una altra àrea de l'API o la forma plana d'una ruta que la finestra de ruptura va traslladar al segment d'empresa o de compte; en aquest últim cas error.subcode val legacy_route_moved. |
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_template_assignment | invalid_request_error | 422 | L'assignació de plantilla PDF enviada per a la sèrie és incoherent: la selecció o la seva versió no són vàlides. |
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_default_kind_change | invalid_request_error | 422 | La sèrie és la predeterminada del seu propòsit (invoice_kind): la sèrie per defecte ho és per empresa, tipus i propòsit, així que canviar-li el propòsit deixaria aquest propòsit sense sèrie predeterminada. |
series_format_immutable_with_documents | invalid_request_error | 422 | La màscara de numeració d'una sèrie es pot canviar fins a la primera emissió: després, el PDF i el registre de l'AEAT dels documents ja emesos porten el número amb el format 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 | Una sèrie no s'elimina per l'API: conserva els documents que va numerar i el seu codi no s'allibera. PUT i DELETE no són operacions sobre una sèrie. |
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_invoice_kind_invalid | invalid_request_error | 422 | El propòsit de la sèrie queda fora del catàleg complete, simplified, corrective, simplified_corrective, o s'ha indicat en una sèrie que no és de factures. |
series_invoice_kind_locked | invalid_request_error | 422 | El propòsit de la sèrie (invoice_kind) es fixa en crear-la i deixa de ser editable tan bon punt té alguna factura: canviar-lo barrejaria tipus de factura en una mateixa numeració correlativa. |
series_invoice_kind_mismatch | invalid_request_error | 422 | Les sèries de factures tenen un propòsit fix (invoice_kind): complete per a factures completes, simplified per a simplificades, corrective per a rectificatives i simplified_corrective per a rectificatives de simplificades. Una factura només es numera en una sèrie del seu mateix propòsit (arts. 6.1.a, 7.1.a i 15 del RD 1619/2012), i la sèrie indicada és d'un altre. |
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_template_access_denied | authorization_error | 403 | La credencial o l'usuari no té permís per canviar la plantilla PDF d'aquesta sèrie. |
series_template_incompatible | invalid_request_error | 422 | La plantilla no admet el tipus de document, el propòsit (invoice_kind) o el format de numeració de la sèrie. |
series_template_precondition_failed | conflict_error | 412 | L'ETag enviat a If-Match ja no coincideix amb el recurs de plantilla de la sèrie, que va canviar després de llegir-lo. |
series_template_precondition_required | invalid_request_error | 428 | El canvi de la plantilla de la sèrie no va indicar la versió o la precondició del recurs en què es basa. |
series_template_unavailable | invalid_request_error | 422 | La plantilla està arxivada o no es pot seleccionar per a aquesta empresa, de manera que no es pot assignar a la sèrie. |
series_template_version_conflict | conflict_error | 409 | L'assignació de plantilla PDF de la sèrie va canviar després de llegir-la. |
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 ha pogut produir el PDF. El document i les seves dades estan intactes: el que ha fallat és l'arxiu. |
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 compte ha arribat al seu ús màxim. |
Integracions de tasques
| Code | Type | HTTP | Descripció |
|---|---|---|---|
forge_account_link_rejected | invalid_request_error | 422 | Només es poden vincular comptes personals de GitHub. GitLab i Gitea no fan servir comptes vinculats: es connecten amb el token d'accés de la integració del projecte. |
forge_account_not_linked | invalid_request_error | 422 | L'operació actua en nom teu a la forja —per exemple, per llistar els teus repositoris de GitHub— i encara no has vinculat el teu compte d'aquesta forja al teu usuari. |
forge_credentials_rejected | invalid_request_error | 422 | La instància de GitLab o Gitea rebutja l'adreça o la credencial indicades. El subcode diu el motiu: not_a_forge_instance, redirected, repository_not_found, insufficient_permissions o unauthorized. |
forge_oauth_state_invalid | invalid_request_error | 422 | La vinculació amb la forja no s'ha pogut completar: l'estat de l'autorització ha caducat, ja es va fer servir, no és vàlid o pertany a un altre usuari o empresa. |
forge_repository_access_denied | authorization_error | 403 | El teu compte de GitHub vinculat no permet connectar aquest repositori, o el repositori no existeix; la resposta és la mateixa en tots dos casos per no revelar repositoris aliens. |
forge_repository_bound_elsewhere | conflict_error | 409 | El repositori ja està connectat a un altre projecte actiu de l'empresa. Un repositori alimenta un únic projecte, perquè cada issue o pull request acabi en una sola tasca. |
forge_secret_rotation_not_supported | invalid_request_error | 422 | Aquesta integració no té un secret de webhook propi per rotar: les de GitHub signen amb el secret de la GitHub App, i la rotació només existeix a les integracions de GitLab i Gitea. |
forge_token_required | invalid_request_error | 422 | Es canvia l'URL de la instància de la forja sense aportar un token nou. El token desat mai no s'envia a una adreça diferent d'aquella per a la qual es va donar, perquè no acabi en un servidor aliè. |
forge_webhook_signature_invalid | authentication_error | 401 | El lliurament de webhook de la forja no s'ha pogut autenticar: la signatura no coincideix amb el secret de la integració, o la integració no existeix. No s'ha processat cap esdeveniment. |
forge_workflow_rule_column_invalid | invalid_request_error | 422 | La columna de destinació de la regla no pertany al projecte de la integració; una columna inexistent, d'un altre projecte o d'una altra empresa responen igual. |
forge_workflow_rule_not_found | not_found_error | 404 | La regla que mou tasques de columna davant d'un esdeveniment de la forja (per exemple, en fusionar una pull request) no existeix o és d'una altra empresa; els dos casos responen igual. |
github_app_not_configured | invalid_request_error | 422 | La integració amb GitHub no està disponible en aquest servidor perquè el seu administrador no ha configurat la GitHub App. No és un problema del teu compte ni dels teus permisos. |
import_credentials_rejected | invalid_request_error | 422 | El sistema d'origen de la importació ha rebutjat les credencials aportades amb una resposta de no autoritzat o prohibit. No s'ha importat res. |
import_run_already_active | conflict_error | 409 | Ja hi ha una importació en curs des del mateix origen cap a la mateixa destinació. Dues importacions simultànies crearien tasques duplicades, així que la segona no s'engega. |
integration_destination_not_allowed | invalid_request_error | 422 | La política de sortida de l'empresa no permet connectar amb aquesta adreça: per seguretat, les destinacions privades o internes es bloquegen tret que l'empresa les hagi autoritzat. L'error no repeteix l'URL rebutjada. |
project_integration_already_connected | conflict_error | 409 | El projecte ja té una integració d'aquest tipus, o ja està connectat a un altre repositori. Cada projecte admet una sola integració per tipus, perquè els esdeveniments no es dupliquin. |
project_integration_not_found | not_found_error | 404 | La integració del projecte no existeix o és d'una altra empresa; els dos casos responen igual. Les integracions de forges i xats només es gestionen des de l'aplicació web, no des de l'API v1. |
task_import_run_not_found | not_found_error | 404 | La importació indicada no existeix o és d'una altra empresa; els dos casos responen igual. Cada importació té el seu propi identificador, diferent del del projecte de destinació. |
Tasques
| Code | Type | HTTP | Descripció |
|---|---|---|---|
bulk_task_selection_too_large | invalid_request_error | 422 | L'operació massiva inclou més tasques de les que admet un sol lot (200 per defecte; el missatge diu el sostre vigent). No és un límit de peticions ni del pla: acota el que es processa d'una vegada. |
column_has_tasks | conflict_error | 409 | La columna que intentes esborrar encara té tasques i la petició no diu on portar-les. Per no deixar tasques sense lloc al tauler, l'esborrat es rebutja i no s'ha modificat res. |
column_slug_in_use | conflict_error | 409 | Una altra columna del mateix projecte ja té un nom equivalent. Es compara l'identificador que es deriva del nom, així que dos noms que només difereixen en majúscules o signes xoquen igualment. |
column_slug_reserved | invalid_request_error | 422 | El nom de la columna es tradueix a l'identificador planned o archived, reservats per als estats de les tasques que són fora del tauler. Una columna així seria indistingible d'aquests estats. |
invalid_custom_field_definition | invalid_request_error | 422 | La definició del camp personalitzat no és vàlida: nom fora d'1 a 60 caràcters, tipus desconegut, camp obligatori sense valor per defecte, opcions en un tipus que no les admet, canvi de tipus després de crear-lo, treure una opció que fan servir tasques, o una reordenació incompleta. error.param assenyala la dada concreta. |
invalid_custom_field_value | invalid_request_error | 422 | El valor no encaixa amb el tipus del camp personalitzat —per exemple, text en un camp numèric o una opció que no és a la llista— o el camp no pertany al projecte de la tasca. |
invalid_move_target_column | invalid_request_error | 422 | La columna indicada per rebre les tasques no serveix de destinació: no existeix, és d'un altre projecte o és la mateixa columna que s'està esborrant. L'esborrat no s'ha fet. |
invalid_task_key | invalid_request_error | 422 | La clau de tasca no té la forma CLAU-N —clau del projecte, guionet i número, com WEB-42— o el número de tasca no és un enter positiu. |
invalid_task_reference | invalid_request_error | 422 | Una tasca referenciada al cos de la petició no existeix o és d'una altra empresa; els dos casos responen igual. error.param indica quin camp contenia la referència. |
invalid_task_schedule | invalid_request_error | 422 | Les dates de la tasca no són coherents: la data d'inici és posterior a la data límit, o una de les dues no existeix al calendari (per exemple, un 30 de febrer). |
invalid_task_status | invalid_request_error | 422 | La destinació de la tasca no és vàlida: l'estat no existeix, la transició no està permesa, s'envien alhora columna i estat, la columna no és del projecte de la tasca, o es demana columna per a una tasca planificada o arxivada. Una tasca al tauler sempre té columna i una fora del tauler no en té mai. |
invalid_time_entry_period | invalid_request_error | 422 | El període de l'entrada de temps no és vàlid: el final és anterior a l'inici, dura més de 24 hores, l'inici és més d'un dia en el futur, una data no és vàlida, s'intenta treure el final d'una entrada tancada o es canvien les hores d'una entrada que continua en marxa. |
limit_exceeded | payment_required_error | 402 | L'empresa ha arribat al límit de factures o de documents anuals del seu pla; el missatge diu quin. A l'API v1 l'emet la facturació d'hores (POST /v1/companies/{company}/projects/{project}/time-invoices), que ho comprova abans de crear res: no s'ha generat l'esborrany de factura ni s'ha marcat cap hora com a facturada. |
linked_entity_not_found | not_found_error | 404 | L'entitat que es vol vincular no existeix, és d'una altra empresa o pertany a un mòdul que l'empresa no té contractat; els tres casos responen igual. Passa en vincular (POST /v1/companies/{company}/tasks/{task}/entity-links) i també en crear una tasca amb entity_link a POST /v1/companies/{company}/tasks: en aquest cas la tasca NO es crea. |
project_archived | invalid_request_error | 422 | El projecte està arxivat i no admet tasques noves ni que s'hi moguin tasques. Arxivar congela el projecte sense esborrar-lo. |
project_column_not_found | not_found_error | 404 | La columna no existeix, pertany a un altre projecte o és d'una altra empresa; els tres casos responen igual. Una columna només s'adreça dins del projecte que la conté. |
project_has_no_columns | invalid_request_error | 422 | Es demana col·locar la tasca al tauler, però el projecte no té cap columna on posar-la. Una tasca activa sempre viu en una columna. |
project_key_in_use | conflict_error | 409 | La clau curta ja la fa servir un altre projecte de l'empresa, o continua reservada com a clau anterior d'un projecte que la va canviar. La clau dona nom a les tasques (WEB-42), així que no es pot repetir dins de l'empresa. |
project_not_found | not_found_error | 404 | No hi ha cap projecte amb aquest identificador o aquesta clau a l'empresa autenticada. Un projecte d'una altra empresa respon exactament igual, així que la resposta mai no revela si existeix en un altre lloc. |
required_custom_field_missing | invalid_request_error | 422 | Falta el valor d'un camp personalitzat que el projecte declara obligatori; el missatge anomena el camp. Un camp obligatori no pot quedar buit. |
task_already_in_project | invalid_request_error | 422 | Es demana traslladar la tasca al projecte on ja és, així que no hi ha cap trasllat per fer. |
task_assignee_not_member | invalid_request_error | 422 | L'usuari indicat com a assignat no és membre de l'empresa. Un usuari inexistent, d'una altra empresa o sense pertinença responen igual, per no revelar comptes aliens. |
task_attachment_not_found | not_found_error | 404 | L'adjunt no existeix, pertany a una altra tasca o és d'una altra empresa; els tres casos responen igual. Un adjunt esborrat ja no es pot consultar ni baixar. |
task_attachment_rejected | invalid_request_error | 422 | El fitxer no s'admet com a adjunt: és buit, supera els 10 MB, o el seu tipus real —detectat pel contingut (magic bytes), no per l'extensió ni per la capçalera— no està permès. També es rebutja una surface diferent de description o comment. |
task_calendar_feed_not_found | not_found_error | 404 | El feed de calendari (iCal) no existeix, està revocat, és d'una altra empresa o és el feed personal d'un altre usuari; tots els casos responen igual. Només l'emet l'aplicació web en rotar o revocar feeds, no l'API v1. |
task_column_capacity_exceeded | conflict_error | 409 | L'àmbit del tauler —la columna, o l'estat planificat o arxivat— ha esgotat el rang de posicions amb què s'ordenen les seves tasques. No és un límit del pla ni de permisos, sinó el sostre tècnic d'ordenació d'aquest àmbit. |
task_comment_not_editable | invalid_request_error | 422 | El comentari no es pot editar: només el seu autor el pot modificar, i els comentaris importats o portats per una integració són immutables per conservar el que va dir l'origen. |
task_comment_not_found | not_found_error | 404 | El comentari no existeix, pertany a una altra tasca o és d'una altra empresa; els tres casos responen igual. Un comentari només s'adreça sota la tasca on es va escriure. |
task_custom_field_not_found | not_found_error | 404 | El camp personalitzat no existeix, pertany a un altre projecte o és d'una altra empresa; els tres casos responen igual. Cada projecte defineix els seus propis camps. |
task_description_too_large | invalid_request_error | 422 | La descripció supera el màxim de 100.000 caràcters, comptats sobre el Markdown enviat abans de sanejar-lo. El sostre no depèn del pla: protegeix l'editor i l'emmagatzematge. |
task_entity_link_not_found | not_found_error | 404 | El vincle entre la tasca i un document, contacte, producte o empleat no existeix, pertany a una altra tasca o és d'una altra empresa; els tres casos responen igual. |
task_external_link_not_found | not_found_error | 404 | L'enllaç extern no existeix, pertany a una altra tasca o és d'una altra empresa. També respon així un enllaç que manté una integració (una issue o una pull request de la forja) quan s'intenta gestionar com si fos un enllaç manual. |
task_label_name_in_use | conflict_error | 409 | L'empresa ja té una etiqueta amb aquest nom; la comparació no distingeix majúscules de minúscules. Les etiquetes es comparteixen entre tots els projectes de l'empresa. |
task_label_not_found | not_found_error | 404 | No hi ha cap etiqueta amb aquest identificador a l'empresa autenticada; una etiqueta d'una altra empresa respon igual. Les etiquetes són de l'empresa, no d'un projecte concret. |
task_not_found | not_found_error | 404 | No hi ha cap tasca amb aquest identificador o aquesta clau a l'empresa autenticada. Una tasca d'una altra empresa —o, al portal de l'empleat, una que no té assignada— respon exactament igual. |
task_relation_cycle | invalid_request_error | 422 | La relació tancaria un cicle de subtasques o de bloquejos: la tasca de destinació ja depèn, directament o indirectament, de la d'origen, i cap de les dues no es podria completar primer. |
task_relation_exists | conflict_error | 409 | Entre aquestes dues tasques ja hi ha una relació del mateix tipus, en qualsevol de les dues direccions. Repetir-la no afegiria informació, així que no se'n crea una segona. |
task_relation_not_found | not_found_error | 404 | No hi ha cap relació amb aquest identificador entre tasques de l'empresa autenticada; una relació d'una altra empresa, o una ja esborrada, respon igual. |
task_self_relation | invalid_request_error | 422 | La tasca d'origen i la de destinació són la mateixa, i una tasca no es pot relacionar amb si mateixa. |
task_time_entry_invoiced | invalid_request_error | 422 | L'entrada de temps ja és inclosa en una factura. Mentre continuï vinculada no s'edita ni es torna a facturar, perquè la factura i les hores no es contradiguin. |
task_time_entry_not_found | not_found_error | 404 | L'entrada de temps no existeix, pertany a una altra tasca o és d'una altra empresa; els tres casos responen igual. |
task_time_not_invoiceable | invalid_request_error | 422 | No es poden facturar les hores demanades i el missatge anomena el motiu: el projecte no té client de facturació o aquest client ja no admet factures, falta tarifa per hora o producte amb preu, una entrada no és facturable, és en marxa o és d'un altre projecte, no hi ha entrades facturables, o la selecció és ambigua. |
task_timer_already_running | conflict_error | 409 | Ja tens un temporitzador en marxa en aquesta empresa. Cada usuari pot tenir-ne com a màxim un alhora per empresa, perquè el temps registrat no se solapi entre tasques. |
task_timer_not_running | invalid_request_error | 422 | Es demana aturar el temporitzador, però no en tens cap en marxa en aquesta empresa; potser ja es va aturar des d'una altra sessió o dispositiu. |
task_upload_link_expired | invalid_request_error | 410 | L'enllaç de pujada ja no serveix. El subcode diu per què: expired, perquè l'enllaç ha caducat (viu 30 minuts des que es va crear), o consumed, perquè ja es va fer servir una vegada i cada enllaç admet un únic enviament. |
task_upload_link_not_found | not_found_error | 404 | L'enllaç de pujada no és vàlid: el token està mal format o no correspon a cap enllaç, gairebé sempre perquè es va copiar incomplet. Un enllaç caducat o ja fet servir respon en canvi amb task_upload_link_expired. |
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ó |
|---|---|---|---|
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. |
global_tax_read_only | authorization_error | 403 | L'impost pertany al catàleg de Factuarea, que és de només lectura per a les empreses: només pots modificar o eliminar els impostos que va crear la teva pròpia empresa. |
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_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_default_axis_disabled | invalid_request_error | 422 | L'impost no es pot fixar com a predeterminat perquè el seu tipus (IVA, retenció o recàrrec) està desactivat a l'empresa per al document demanat, o en tots els documents als quals s'aplicaria si no n'indiques cap. |
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_defaultable_for_document | invalid_request_error | 422 | L'impost no pot ser el predeterminat d'aquest document: és de tipus other, el seu àmbit (applies_to) no cobreix el document o el document és recurring_invoice, que hereta de factura. |
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. |
Control horari
| Code | Type | HTTP | Descripció |
|---|---|---|---|
clocking_outside_employment_period | invalid_request_error | 422 | L'instant del fitxatge cau abans de la data d'alta de l'empleat o després de la seva data de baixa, així que no s'ha escrit res al registre horari. El dia d'alta i el dia de baixa sí que admeten fitxatge. En aprovar una correcció es torna a comprovar el període d'alta vigent, i una aprovació rebutjada deixa la sol·licitud pendent. |
Documents de control
| Code | Type | HTTP | Descripció |
|---|---|---|---|
delivery_note_cancelled | invalid_request_error | 422 | Un dels albarans enviats per emplenar el document de control està anul·lat, i un albarà anul·lat no pot ser origen d'un enviament. No s'ha creat res. |
invalid_cargo_measure | invalid_request_error | 422 | La magnitud declarada d'un enviament no és vàlida: el seu type no és weight ni other, falta el pes o el valor o no és més gran que zero, o la unitat lliure no té entre 1 i 30 caràcters. |
invalid_transport_tax_id | invalid_request_error | 422 | La identificació fiscal d'una part no és vàlida: un NIF, NIE o CIF espanyol amb el caràcter de control erroni, o un identificador estranger fora de 2 a 20 caràcters alfanumèrics. |
invalid_vehicle_plate | invalid_request_error | 422 | Una matrícula no encaixa en cap format espanyol (actual, provincial antiga, remolc R, especial E o històrica H; les espanyoles no porten vocals) ni en una d'estrangera de 2 a 12 caràcters alfanumèrics amb el seu país. |
transport_date_in_past | invalid_request_error | 422 | Un document de control s'emet abans d'iniciar el transport, i una de les dates de transport és anterior a avui (Europe/Madrid). L'esborrany admet qualsevol data; l'emissió no. |
transport_document_cannot_be_cancelled | invalid_request_error | 422 | Només es pot anul·lar un document de control emès i en curs; un esborrany s'esborra, i un de tancat, anul·lat o substituït no s'anul·la. |
transport_document_cannot_be_closed | invalid_request_error | 422 | Només es pot tancar un document de control emès; aquest és un esborrany o ja està tancat, anul·lat o substituït. |
transport_document_cannot_be_deleted | invalid_request_error | 422 | Només es pot esborrar un esborrany: un document de control emès es conserva com a prova durant tot el termini de conservació. |
transport_document_cannot_be_edited | invalid_request_error | 422 | Només un document de control en esborrany es pot editar; aquest ja està emès, tancat, anul·lat o substituït. |
transport_document_cannot_be_modified | invalid_request_error | 422 | Només es pot modificar un document de control emès, i la modificació l'ha de deixar amb totes les dades obligatòries i almenys un enviament. |
transport_document_cannot_be_reopened | invalid_request_error | 422 | Només es pot reobrir un document de control tancat a mà, i només abans del seu termini de tancament automàtic; després d'un tancament automàtic queda tancat. |
transport_document_cannot_be_superseded | invalid_request_error | 422 | Només es pot marcar com a substituït pel document del transportista un document de control emès i en curs. |
transport_document_file_unavailable | not_found_error | 410 | Els PDF d'aquest document de control es van purgar en acabar el termini de conservació (un any després de tancar-lo, anul·lar-lo o substituir-lo, i només perquè el compte està tancat). El document i les seves dades es conserven. |
transport_document_no_changes | invalid_request_error | 422 | La modificació porta exactament les mateixes dades que la versió vigent, així que no hi ha cap versió nova per publicar. |
transport_document_not_found | not_found_error | 404 | L'identificador no resol cap document de control de l'empresa autenticada, o el token públic no existeix. |
transport_document_not_issuable | invalid_request_error | 422 | El document no es pot emetre: no és un esborrany o li falten dades obligatòries de l'art. 6 de l'Ordre FOM/2861/2012 (parts, NIF, domicili del carregador, enviaments amb origen, destinació, mercaderia i magnitud, matrícula de la tractora o data de transport). |
transport_document_not_sendable | invalid_request_error | 422 | No es pot enviar el document per correu: no està emès ni tancat, no hi ha destinatari (sense to i el contacte transportista sense correu) o to, cc i bcc sumen més de 5 adreces. |
transport_document_parties_immutable | invalid_request_error | 422 | Després d'emetre, el carregador contractual i el transportista efectiu queden fixats: la norma no permet canviar-los en una modificació. |
transport_document_pdf_too_large | invalid_request_error | 422 | El PDF de la versió superaria els 5 MB (5.000.000 bytes) que permet la normativa per la quantitat de dades del document: enviaments, línies de mercaderia, descripcions o observacions. No s'ha desat res. |
transport_document_version_limit_reached | invalid_request_error | 422 | Un document de control admet com a màxim 50 versions i l'última es reserva per anul·lar-lo o substituir-lo, així que ja no admet més modificacions. No s'ha desat res. |
transport_document_version_not_found | not_found_error | 404 | El document de control existeix, però no té la versió demanada a version: les seves versions van de la 1 a la vigent (current_version). |
transport_outside_spain | invalid_request_error | 422 | El document de control només cobreix transport interior, i un enviament surt o arriba fora d'Espanya. El transport internacional es documenta amb la carta de port CMR. |
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. |
chain_position_conflict | conflict_error | 409 | Dos registres de la mateixa empresa van intentar prendre alhora la mateixa posició de la cadena d'empremtes i els reintents automàtics no van resoldre la col·lisió. |
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. |
invalid_representation | invalid_request_error | 422 | La representació incompleix una regla: falta l'annex I signat o el justificant de l'apoderament, el document no és un PDF vàlid o supera els 5 MB, signer_name, power_of_attorney_reference o el motiu de la revocació (reason, de 3 a 500 caràcters) no respecten la seva longitud, valid_until és anterior a granted_on o la supera en més de 5 anys, o la representació ja està revocada (o no n'hi ha cap de vigent per revocar). |
max_retries_exceeded | invalid_request_error | 422 | Només s'aplica als ESDEVENIMENTS del mode NO VERI*FACTU (POST /v1/companies/{company}/verifactu/events/{id}/retry): l'esdeveniment va esgotar els seus intents de transmissió. Els registres de facturació NO tenen topall de reintents —l'art. 16.4 de l'Ordre HAC/1177/2024 exigeix reintentar almenys una vegada per hora mentre duri la incidència—, així que cap reintent d'un registre retorna ja aquest codi. |
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 | Només es pot esmenar un registre d'alta que l'AEAT va acceptar (o va acceptar amb errors) o va rebutjar. Aquest registre està en un altre estat —pendent de remetre, enviat sense resposta o en error tècnic—, que cobreix el reintent i no l'esmena. |
record_not_subsanable | invalid_request_error | 422 | El registre no admet esmena: no és un registre d'alta, no és l'ÚLTIMA alta de la seva factura (una altra esmena posterior el substitueix), la factura està anul·lada, és un rebutjat l'alta corregida del qual ja espera reenviar-se, o no té factura d'origen des de la qual regenerar-ne les dades. |
representation_required | invalid_request_error | 422 | El mode de remissió demana a Factuarea que remeti els teus registres a l'AEAT en nom teu, i l'empresa no té una representació vigent —ni revocada ni caducada— del tipus que aquest mode necessita (l'annex I signat per a social_collaborator, l'apoderament inscrit per a power_of_attorney). |
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. |
signing_certificate_unavailable | invalid_request_error | 422 | L'empresa té VeriFactu activat en mode NO VERI*FACTU, on cada registre de facturació es signa (Ordre HAC/1177/2024, arts. 6.c i 14), i no hi ha amb què signar-lo. error.param diu QUÈ falta, i és estable: certificate = el certificat de l'empresa falta, està caducat o revocat, porta el NIF d'una altra empresa o el seu fitxer .p12 no es pot llegir (malmès, o amb una contrasenya desada que ja no és vàlida); representation = en els modes de remissió per tercer, la representació que habilita Factuarea a signar en nom de l'empresa no està activa; system_certificate = el certificat de Factuarea no està disponible o no es pot llegir. Sense signatura no hi ha registre vàlid, i una factura emesa o anul·lada no pot quedar sense el seu, així que l'operació es rebutja abans d'executar-se. |
sii_excluded | invalid_request_error | 422 | L'empresa està registrada al SII, i els obligats al SII queden exclosos del reglament VeriFactu. |
social_collaborator_unavailable | invalid_request_error | 422 | L'acord de col·laboració social amb l'AEAT encara no està en vigor en aquesta instància, així que no es pot triar el mode social_collaborator. |
system_certificate_unavailable | api_error | 500 | El certificat de Factuarea que remet els registres en els modes de tercer falta, ha caducat o ha estat revocat. És un problema nostre, no de la teva petició. |
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. En emetre o anul·lar, el mateix codi amb el subcodi signing_certificate_unavailable indica que l'empresa, amb VeriFactu activat en mode NO VERI*FACTU, no té amb què signar el registre (error.param: certificate, representation o system_certificate, segons el que falti), i amb altres error.param que una dada de la factura no cap al registre d'alta (llegeix error.param i error.message). |
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ó |
|---|---|---|---|
account_webhook_endpoint_limit_reached | invalid_request_error | 422 | El compte va arribar al nombre d'endpoints de webhook de compte que permet el seu tram en aquest entorn. El límit es compta per compte i per entorn (live o test) i inclou els endpoints desactivats: només s'allibera una plaça en esborrar un endpoint. |
addon_required | payment_required_error | 402 | Crear endpoints de webhook exigeix un pla que els inclogui: en els d'empresa, l'add-on Developer API de l'empresa; en els de compte, el pla del pagador del compte. Aquí falta aquesta contractació: 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 | invalid_request_error | 422 | 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. Es respon com un 422 business_rule_violation amb error.subcode webhook_secret_recently_rotated; no és un límit de peticions i no consumeix cap cubell de rate limit. |