Factuarea APIDevelopers

Tots els error codes

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

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

Compte

CodeTypeHTTPDescripció
access_level_raise_forbiddeninvalid_request_error422S'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_foundnot_found_error404No es va poder resoldre el compte associat a la clau, cosa que sol voler dir que la clau ja no apunta a una empresa viva.
administrator_key_not_grantableinvalid_request_error422Una 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_revokedinvalid_request_error422La clau ja estava revocada, i una clau revocada no admet més operacions: la revocació és terminal.
api_key_not_foundnot_found_error404L'identificador no correspon a cap clau API de l'empresa autenticada.
enterprise_contract_transition_requiredinvalid_request_error422El 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_assignedinvalid_request_error422El compte ja té un assessor extern marcat: només n'hi pot haver un per compte.
grant_company_not_in_accountinvalid_request_error422El 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_memberinvalid_request_error422Nomé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_invalidinvalid_request_error422Un 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_largeinvalid_request_error413Un 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_progressconflict_error409Ja 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_exceededinvalid_request_error422Un 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_expiredinvalid_request_error422La 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_foundnot_found_error404L'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_requiredauthorization_error403Una 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_environmentconflict_error409La 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_claimableinvalid_request_error422El 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_serveinvalid_request_error422S'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_trialinvalid_request_error422El 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_reachedinvalid_request_error422El 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_ownerinvalid_request_error422L'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_foundnot_found_error404L'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_grantableinvalid_request_error422Una 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_expiredinvalid_request_error422El 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_invalidinvalid_request_error422El 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_forbiddenauthorization_error403Qui 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_administratorinvalid_request_error422El 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_employeeinvalid_request_error422La 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_exceededpayment_required_error402S'ha assolit un límit de recursos del pla de l'empresa.
privileged_scope_requiredauthorization_error403L'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_claimedconflict_error409El 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_existsinvalid_request_error422Ja 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_grantorinvalid_request_error422La 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_expiredinvalid_request_error422La 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_invalidinvalid_request_error422La 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_allowedinvalid_request_error422El 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_allowedinvalid_request_error422L'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_verifiedinvalid_request_error422L'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ó

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

Autorització

CodeTypeHTTPDescripció
addon_not_activeauthorization_error403La funcionalitat pertany a un add-on que ara mateix no està actiu per a l'empresa.
company_read_onlyauthorization_error403Qui 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_restrictedauthorization_error403La 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_planauthorization_error403La funcionalitat no està inclosa en el pla de l'empresa.
forbidden_actionauthorization_error403L'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_scopeauthorization_error403La clau autentica correctament però no porta l'abast que exigeix aquesta operació. Els abasts es concedeixen en emetre la clau i no s'amplien en temps de crida.
max_api_keys_exceededauthorization_error422L'empresa va arribar al nombre de claus API que permet el seu pla.
max_webhook_endpoints_exceededauthorization_error422L'empresa va arribar al nombre d'endpoints de webhook que permet el seu nivell d'add-on.
module_not_available_in_sandboxauthorization_error403El recurs pertany a un mòdul vetat en mode test. La sandbox mai toca l'AEAT, els bancs ni cobraments reals, així que aquests mòduls queden fora a propòsit.
portfolio_max_api_keys_exceededauthorization_error422El 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_planauthorization_error422Un dels abasts demanats pertany a un mòdul que el pla no inclou, així que la clau naixeria amb un permís que mai podria exercir.
scope_not_allowed_in_sandboxauthorization_error422Una clau de prova no pot néixer amb abasts de mòduls vetats a la sandbox.

Automatitzacions

CodeTypeHTTPDescripció
automation_action_order_invalidinvalid_request_error422La 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_missinginvalid_request_error422No 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_unknowninvalid_request_error422Una 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_invalidinvalid_request_error422Un paràmetre de l'acció porta un valor fora del conjunt que admet el seu esquema.
automation_action_parameters_invalidinvalid_request_error422Els 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_invalidinvalid_request_error422Un dels passos declara un tipus d'acció sense adaptador al darrere, així que en aquella posició no s'executaria res.
automation_active_rules_limit_exceededpayment_required_error402L'empresa ja té actives totes les automatitzacions que permet el seu pla.
automation_chain_depth_exceededinvalid_request_error422Una 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_invalidinvalid_request_error422Una 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_exceededinvalid_request_error422La condició nidifica més nivells dels que recorre l'avaluador, així que la regla no es pot avaluar sencera.
automation_condition_expression_invalidinvalid_request_error422La 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_evaluableinvalid_request_error422La 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_invalidinvalid_request_error422Una comparació de la condició anomena un operador fora del conjunt admès.
automation_condition_operator_not_applicableinvalid_request_error422L'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_unsupportedinvalid_request_error422L'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_missinginvalid_request_error422La 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_mismatchinvalid_request_error422El 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_mismatchinvalid_request_error422L'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_unresolvableinvalid_request_error422L'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_resolvableinvalid_request_error422No 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_exhaustedpayment_required_error402L'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_actioninvalid_request_error422Una 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_availableauthorization_error403L'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_exceededrate_limit_error429L'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_allowedinvalid_request_error422L'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_emptyinvalid_request_error422L'automatització no declara cap acció, així que no hi hauria res a executar quan saltés el seu disparador.
automation_rule_actions_limit_exceededinvalid_request_error422La 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_deletedinvalid_request_error422L'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_mismatchinvalid_request_error422L'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_invalidinvalid_request_error422El 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_foundnot_found_error404No 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_immutableinvalid_request_error422La 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_invalidinvalid_request_error422L'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_invalidinvalid_request_error422L'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_invalidinvalid_request_error422L'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_foundnot_found_error404L'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_invalidinvalid_request_error422El 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_foundnot_found_error404L'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_foundnot_found_error404No 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_invalidinvalid_request_error422L'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_foundnot_found_error404L'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_invalidinvalid_request_error422L'identificador de l'execució no és un UUID v7 vàlid.
automation_step_index_invalidinvalid_request_error422L'índex d'un pas no pot ser negatiu: cap execució adreça un pas així.
automation_step_status_transition_invalidinvalid_request_error422El 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_mismatchinvalid_request_error422L'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_verifiedinvalid_request_error422En 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_foundnot_found_error404El 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_unknowninvalid_request_error422El disparador no publica contracte de camps avaluables, així que no hi ha catàleg contra el qual resoldre una condició.
automation_trigger_type_invalidinvalid_request_error422L'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ó

CodeTypeHTTPDescripció
customer_offer_benefit_invalidinvalid_request_error422Les condicions de l’oferta no són vàlides. Revisa els camps indicats.
customer_offer_billing_state_conflictconflict_error409L’estat de facturació ha canviat o necessita revisió. Consulta l’operació abans de continuar.
customer_offer_catalog_unavailableservice_unavailable_error503El catàleg de cobrament no està configurat o no es pot verificar; no és una restricció del pla del client.
customer_offer_collection_not_restorableinvalid_request_error422La 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_invalidinvalid_request_error422Els dies extra només es combinen amb un descompte o preu de pla permanent.
customer_offer_discount_conflictconflict_error409Aquesta compra ja té una oferta o un descompte vigent per al mateix concepte. No s’acumulen automàticament.
customer_offer_forbiddenauthorization_error403L’operació no compleix les condicions o permisos vigents.
customer_offer_gateway_unavailableservice_unavailable_error503El proveïdor de pagaments no està disponible. Comprova l’operació abans de tornar-ho a provar.
customer_offer_idempotency_conflictidempotency_error409Aquest intent ja correspon a altres condicions. Conserva l’operació i comprova’n l’estat.
customer_offer_invalid_termsinvalid_request_error422Les condicions de l’oferta no són vàlides. Revisa els camps indicats.
customer_offer_legacy_outcome_unknownconflict_error409Una operació anterior de facturació continua pendent de comprovació.
customer_offer_negotiated_price_invalidinvalid_request_error422Revisa el preu net, el producte, l’interval i el nombre de cicles acordats.
customer_offer_not_eligibleinvalid_request_error422L’oferta no és compatible amb l’empresa, el producte o l’estat actual.
customer_offer_operation_in_progressconflict_error409Ja hi ha una operació en curs per a aquest concepte. Comprova’n l’estat abans de continuar.
customer_offer_payment_method_requiredpayment_required_error402Aquesta compra necessita un mètode de pagament. Afegeix-lo i actualitza les condicions abans de confirmar.
customer_offer_phase_incompatibleconflict_error409La subscripció té un canvi programat incompatible. No s’ha substituït.
customer_offer_price_mapping_conflictconflict_error409L’estat de facturació ha canviat o necessita revisió. Consulta l’operació abans de continuar.
customer_offer_purchase_failedpayment_required_error402El 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_changedconflict_error409Les condicions han canviat. Actualitza la cotització abans de confirmar.
customer_offer_quote_expiredconflict_error409La cotització ha vençut. Actualitza-la i revisa les condicions.
customer_offer_quote_unavailableservice_unavailable_error503No es pot verificar l’import. La confirmació queda bloquejada.
customer_offer_state_conflictconflict_error409L’estat de facturació ha canviat o necessita revisió. Consulta l’operació abans de continuar.
customer_offer_trial_baseline_changedconflict_error409La prova ha canviat. Actualitza la cotització per veure la data vigent.
customer_offer_trial_limit_exceededinvalid_request_error422L’ampliació superaria el màxim de 180 dies de prova.
customer_offer_trial_not_eligibleinvalid_request_error422Només pots ampliar una prova activa del pla acordat. Una prova vençuda no es reinicia.
customer_offer_unavailableinvalid_request_error422L’oferta no està disponible, ha vençut o ha esgotat els bescanvis.

Empreses

CodeTypeHTTPDescripció
additional_nif_charge_failedpayment_required_error402El 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_planauthorization_error403El 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_requiredpayment_required_error402El 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_providerauthorization_error403La 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_inactiveauthorization_error403L'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_requiredpayment_required_error402Afegir 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

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

Albarans

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

Empleats

CodeTypeHTTPDescripció
employee_batch_billing_state_conflictconflict_error409La facturació necessita revisió abans de continuar aquesta operació.
employee_batch_forbiddenauthorization_error403Ja no tens permís per a aquesta operació. Comprova’n l’estat abans d’iniciar-ne una altra.
employee_batch_idempotency_conflictidempotency_error409Aquesta sol·licitud correspon a altres dades. Revisa l’operació abans de preparar un lot nou.
employee_batch_quote_changedconflict_error409Les condicions han canviat. Actualitza la cotització i accepta el nou import.
employee_batch_quote_expiredconflict_error409La cotització ha vençut. Actualitza-la i revisa l’import.
employee_batch_quote_unavailableservice_unavailable_error503No es pot obtenir un import fiable. Reintenta sense iniciar un altre pagament.
employee_batch_state_conflictconflict_error409Aquesta acció ja no està disponible. Consulta l’estat actual de l’operació.
employee_inactiveinvalid_request_error422L'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_foundnot_found_error404L’empleat no existeix o no és accessible en aquesta empresa.
employee_seat_charge_failedpayment_required_error402El cobrament immediat del prorrateig del seient d'empleat va ser rebutjat: la targeta es va denegar, necessita autenticació, o el proveïdor de pagament era inaccessible. L'empleat no s'activa si el seient no es cobra.
employee_seat_mutation_outcome_unknownconflict_error409Una operació anterior d’empleats continua pendent de comprovació. No repeteixis el cobrament.
employee_seat_operation_in_progressconflict_error409Hi ha una operació de places en curs. Recupera-la abans d’iniciar-ne una altra.
employee_seat_payment_method_requiredpayment_required_error402Donar d'alta o reactivar un empleat cobra un seient immediatament, i l'empresa opera en mode real sense mètode de pagament configurat.
employee_seat_phase_incompatibleconflict_error409La subscripció té condicions programades que aquesta modificació de places no pot conservar.
employee_seats_not_in_planauthorization_error403El 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_dateinvalid_request_error422La 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

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

Exportacions

CodeTypeHTTPDescripció
export_budget_exceededrate_limit_error429S'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_exceededinvalid_request_error413La 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_exceededinvalid_request_error413La 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

CodeTypeHTTPDescripció
gestoria_seat_preview_unavailableservice_unavailable_error503No s’ha pogut verificar l’import del càrrec d’empreses gestionades; això no implica una operació gratuïta per contracte.

Idempotency

CodeTypeHTTPDescripció
idempotency_key_in_useidempotency_error409Hi ha una altra petició amb la mateixa Idempotency-Key encara en curs, i encara no se'n coneix el resultat.
idempotency_key_invalidinvalid_request_error400La Idempotency-Key no encaixa amb el format admès: entre 1 i 255 caràcters ASCII imprimibles.
idempotency_key_requiredinvalid_request_error422La 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_reusedidempotency_error422Aquesta 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

CodeTypeHTTPDescripció
charge_rule_invalidinvalid_request_error422La 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_reachedinvalid_request_error422El compte de Stripe ja té el nombre màxim de regles de tractament de cobraments.
charge_rule_not_foundnot_found_error404La regla de tractament de cobraments no existeix al compte de Stripe indicat o no pertany a la teva empresa.
connect_return_domain_already_existsconflict_error409El 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_reachedinvalid_request_error422El 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_foundnot_found_error404El 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_allowedinvalid_request_error422El 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_methodinvalid_request_error422El mètode de connexió indicat no existeix per a aquest proveïdor.
platform_account_subscriptions_owned_by_billinginvalid_request_error422El 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_expiredapi_error500La 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_rejectedinvalid_request_error422La 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_unreachableapi_error502La 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_connectedinvalid_request_error422Aquesta 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_mismatchinvalid_request_error422L'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_foundnot_found_error404L'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_allowedinvalid_request_error422L'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_elsewhereconflict_error409Aquest 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_failedinvalid_request_error422Stripe no ha confirmat l’autorització del compte: el codi d’autorització ha caducat, ja s’ha fet servir o s’ha denegat.
woocommerce_credentials_rejectedinvalid_request_error422La 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_missinginvalid_request_error422La 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_unreachableapi_error502La 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

CodeTypeHTTPDescripció
amount_reconciliation_failedinvalid_request_error422Els 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_substitutioninvalid_request_error422La 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_linesinvalid_request_error422Anul·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_inanulableinvalid_request_error422La factura és al seu torn una rectificativa, i les rectificatives no s'anul·len mai: la cadena de correcció ha de seguir sent auditable de punta a punta.
corrective_substitution_negative_amountinvalid_request_error422En 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_fullinvalid_request_error422Una rectificativa per substitució (correction_nature: S) substitueix la factura sencera; no hi ha substitució parcial.
exemption_cause_contradicts_taxed_linesinvalid_request_error422La 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_exceededinvalid_request_error422La selecció filtrada supera el límit de 5.000 factures de l'exportació, així que el fitxer es rebutja d'entrada en lloc de truncar-se en silenci.
face_submission_attempt_conflictconflict_error409Una altra petició va modificar l'intent d'enviament a FACe (reserva o conciliació) mentre hi actuaves.
face_submission_completion_failedapi_error500FACe va respondre a l'enviament però la plataforma no ha pogut desar el resultat localment.
face_submission_rejectedinvalid_request_error422FACe 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_uncertainconflict_error409La factura es va enviar a FACe però es desconeix el resultat, de manera que FACe pot haver-la registrada o no.
facturae_artifact_unavailableapi_error500L'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_forbiddenauthorization_error403L'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_natureinvalid_request_error422correction_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_reasoninvalid_request_error422El motiu de rectificació queda fora de la llista fiscal tancada (error_fundado, concurso, incobrable, error_importe, error_cliente, devolucion, descuento, otras), que mapeja als codis AEAT R1 a R4.
invalid_delivery_channelinvalid_request_error422El 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_datainvalid_request_error422Les 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_datainvalid_request_error422Les dades comercials de la factura (referències de línia, centres administratius o els seus rols) contenen un valor no vàlid.
invalid_invoice_idinvalid_request_error400La referència de factura rebuda no és un identificador vàlid; sol voler dir que s'ha colat un valor intern on l'API espera l'id públic.
invalid_invoice_numberinvalid_request_error422El número de factura no segueix el format 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_termsinvalid_request_error422El 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_statusinvalid_request_error422El 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_uuidinvalid_request_error400L'identificador de factura de la ruta o del payload no és un UUID vàlid.
invalid_payment_methodinvalid_request_error422El mètode de pagament queda fora de l'allowlist tancada: bank_transfer, cash, credit_card, sepa_direct_debit, paypal, bizum, other.
invoice_administrative_precondition_requiredinvalid_request_error428El canvi del routing administratiu no va indicar sobre quina versió es basa.
invoice_administrative_version_conflictconflict_error409El routing administratiu de la factura (els seus centres administratius) va canviar després de llegir-la.
invoice_already_annulledinvalid_request_error422La factura ja estava anul·lada. L'anul·lació és terminal i, amb VeriFactu actiu, el seu registre d'anul·lació ja va arribar a l'AEAT.
invoice_already_paidinvalid_request_error422La factura ja està cobrada. paid és un estat terminal i comptablement tancat: l'IVA repercutit ja s'ha declarat, o es declararà en el període.
invoice_already_rectified_in_fullinvalid_request_error422La 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_sentinvalid_request_error422La factura ja va ser emesa: té número definitiu de sèrie i, amb VeriFactu actiu, l'alta a l'AEAT. L'emissió no passa dues vegades.
invoice_cannot_assign_numberinvalid_request_error422Es va demanar número definitiu per a una factura que no és esborrany, o que ja en té. La numeració de sèrie és monòtona i els números no es reassignen.
invoice_cannot_be_marked_as_sentinvalid_request_error422La 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_sentinvalid_request_error422La 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_instalmentinvalid_request_error422La 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_transitioninvalid_request_error422L'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_stateinvalid_request_error422Cancel·lar retira un esborrany que encara no és fiscalment vinculant, així que només s'aplica mentre la factura està en draft.
invoice_not_correctable_in_current_stateinvalid_request_error422Una rectificativa només s'emet contra una factura ja emesa, 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_stateinvalid_request_error422Només s'esborren les factures en draft i cancelled. Una factura numerada no desapareix mai: la sèrie correlativa ha de seguir sent auditable.
invoice_not_editable_in_current_stateinvalid_request_error422Només un esborrany admet edició. Un cop emesa, la factura és immutable i el seu contingut queda congelat juntament amb el seu registre fiscal.
invoice_not_eligible_for_actioninvalid_request_error422L'acció sol·licitada no s'aplica a aquesta factura: el seu tipus o el seu estat actual la deixen fora de l'abast de l'operació.
invoice_not_foundnot_found_error404L'identificador no resol a cap factura de l'empresa autenticada. Les factures d'una altra empresa responen exactament igual.
invoice_not_modifiable_in_current_stateinvalid_request_error422El camp que intentes canviar està congelat per a l'estat actual — per exemple el règim fiscal d'una factura anul·lada.
invoice_not_paidinvalid_request_error422Es va demanar un justificant de pagament d'una factura sense cobrament registrat, així que no hi ha res a certificar.
invoice_not_reschedulable_in_current_stateinvalid_request_error422Reprogramar mou la data d'emissió d'una factura que espera en scheduled, i aquesta factura no està esperant.
invoice_not_schedulable_in_current_stateinvalid_request_error422Només un esborrany es pot programar: la programació reserva un moment futur d'emissió sense consumir encara número de sèrie.
invoice_not_unschedulable_in_current_stateinvalid_request_error422Desprogramar torna la factura de scheduled a draft, així que només s'aplica mentre segueix esperant a emetre's.
invoice_not_unsendable_in_current_stateinvalid_request_error422Desfer la marca 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_requiredinvalid_request_error428El canvi del calendari de pagament no va indicar sobre quina versió es basa.
invoice_payment_terms_version_conflictconflict_error409El calendari de pagament de la factura va canviar després de llegir-la.
invoice_requires_at_least_one_lineinvalid_request_error422La factura no porta cap línia d'operació, així que no té base imposable i no es pot emetre. Passa tant quan no envies línies com quan totes les que envies són de suplert: un suplert és una quantitat pagada per compte del client (art. 78.Tres.3 LIVA), no una operació teva.
invoice_type_change_not_allowedinvalid_request_error422Nomé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_presentationinvalid_request_error422Una 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_numberinvalid_request_error422Aquest 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_mismatchinvalid_request_error422El line_total declarat no coincideix amb el que calcula Factuarea per a aquella línia (quantitat × preu − descompte + IVA − retenció + recàrrec) i la desviació supera el cèntim de tolerància. L'import que es factura i es declara a l'AEAT és sempre el calculat aquí, així que la discrepància vol dir que el teu sistema i la factura emesa no quadrarien.
line_type_invalidinvalid_request_error422El tipus de línia queda fora del catàleg tancat NORMAL / SUPLIDO. Una factura emesa només distingeix dues naturaleses: el que véns tu, que forma base imposable i porta IVA, i el suplert, que són diners avançats en nom i per compte del client i per això queda fora de la base (art. 78.Tres.3 LIVA).
no_invoices_in_periodinvalid_request_error422L'operació trimestral no va trobar factures en el període demanat, així que no hi ha res a empaquetar ni a enviar.
operation_date_after_issue_dateinvalid_request_error422operation_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_invalidinvalid_request_error422La 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_invalidinvalid_request_error422La mateixa allowlist tancada que invalid_payment_method, reportada quan el valor es rebutja en llegir el camp de mètode de pagament del payload.
rectified_invoice_inanulableinvalid_request_error422Aquesta 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_applicableinvalid_request_error422El 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_pastinvalid_request_error422scheduled_for no és estrictament futur, així que no hi ha cap espera a reservar.
simplified_invoice_cannot_be_substitutedinvalid_request_error422Una de les factures de la llista de substitució no es pot substituir: no és simplificada, està cancel·lada o anul·lada, pertany a una altra empresa, o ja té substitutiva.
simplified_invoice_not_allowedinvalid_request_error422L'operació no és elegible per a factura simplificada: supera els 3.000 €, o és un lliurament intracomunitari, una exportació, una operació amb inversió del subjecte passiu, o el client necessita factura completa per deduir l'IVA.
simplified_invoices_disabledinvalid_request_error422L'empresa no té habilitades les factures simplificades, així que no es pot crear una factura de tipus F2.
simplified_limit_exceededinvalid_request_error422Les línies portarien la factura simplificada (F2) per sobre del límit legal absolut de 3.000 € IVA inclòs.
suplido_line_cannot_carry_taxesinvalid_request_error422La línia de suplert porta càrrega pròpia: tipus d'IVA, retenció, recàrrec d'equivalència, descompte, clau de règim, causa d'exempció o producte/paquet. Un suplert no és una operació de l'emissor, així que repercutir-hi un impost seria tributar per un lliurament que no has fet, i lligar-lo a un producte mouria un estoc que mai no has venut.
suplido_not_allowed_in_simplified_invoiceinvalid_request_error422La factura és simplificada (F2) i una simplificada no identifica el destinatari. Sense destinatari identificat no hi ha a qui acreditar el pagament per compte d'altri, així que l'import no admet el tractament de suplert en aquest tipus de factura.
suplido_requires_source_invoice_referenceinvalid_request_error422La línia de suplert no informa source_invoice_reference, el número del justificant que el tercer va expedir a nom del client. Sense aquest justificant el pagament no s'acredita com a fet per compte d'altri i Hisenda el tractaria com a base imposable pròpia de l'emissor, amb el seu IVA repercutit.
tax_rate_mismatchinvalid_request_error422La 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_mismatchidempotency_error409Ja 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

CodeTypeHTTPDescripció
mcp_guardrail_violationinvalid_request_error422La 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

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

Pagaments

CodeTypeHTTPDescripció
invalid_payment_dateinvalid_request_error422La data de pagament 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_reversedinvalid_request_error422El 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_invalidinvalid_request_error422La nota de l'anul·lació supera els 500 caràcters admesos.
payment_reversal_reason_invalidinvalid_request_error422El 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_mismatchinvalid_request_error422L'import confirmat no coincideix amb el net de la liquidació, així que la conciliació tancaria amb una diferència que ningú justifica.
receipt_not_availableinvalid_request_error422No hi ha justificant a emetre perquè el document no té cap cobrament registrat al darrere.
reversal_reason_reservedinvalid_request_error422El 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_reconciledinvalid_request_error422La liquidació ja estava conciliada, i la conciliació és terminal: repetir-la comptabilitzaria dues vegades l'apunt bancari.
stripe_payout_not_foundnot_found_error404L'identificador no resol a cap liquidació de l'empresa autenticada.

PDF

CodeTypeHTTPDescripció
invalid_pdf_artifact_fingerprintinvalid_request_error422La petjada de l’artefacte PDF no és vàlida.
invalid_pdf_template_configurationinvalid_request_error422Un valor de la configuració de la plantilla incompleix una regla del model de plantilla; param indica la ruta del camp afectat.
pdf_artifact_not_foundnot_found_error404L’artefacte PDF no existeix en aquesta empresa, o era una vista prèvia que ha caducat.
pdf_artifact_not_readyservice_unavailable_error503El PDF encara s’està preparant.
pdf_commercial_identity_not_foundnot_found_error404La identitat comercial no existeix en aquesta empresa.
pdf_commercial_identity_requiredinvalid_request_error422El 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_unavailableinvalid_request_error422La identitat comercial existeix però està arxivada o no és compatible amb aquesta operació.
pdf_engine_profile_unavailableapi_error500El perfil de generació PDF no està disponible.
pdf_engine_unreachableservice_unavailable_error503El 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_unavailableapi_error500El recurs d’imatge del PDF no està disponible.
pdf_legal_source_changedconflict_error409La font jurídica actual ja no coincideix amb la presentació retinguda.
pdf_library_association_coverage_incompleteapi_error500La 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_conflictconflict_error409Els valors per defecte, sèries o recurrències afectats per l'operació van canviar després de revisar-ne l'impacte.
pdf_main_template_requiredconflict_error409L'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_corruptapi_error500No es pot verificar la integritat del PDF original.
pdf_original_layout_unavailableapi_error500El disseny amb què es va generar el PDF original ja no està disponible en aquesta versió de Factuarea.
pdf_original_unavailableapi_error500El PDF original no està disponible.
pdf_payload_resource_unavailableapi_error500Els recursos necessaris per preparar el PDF no estan disponibles.
pdf_presentation_conflictconflict_error409La presentació va canviar després de llegir-la, de manera que l'expected_version enviat està desfasat.
pdf_presentation_context_changedconflict_error409Les 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_mismatchconflict_error412L'ETag enviat a If-Match ja no coincideix amb la presentació desada, que es va modificar després de llegir-la.
pdf_presentation_invalidinvalid_request_error422La presentació no compleix una regla de contingut o de camp.
pdf_presentation_not_foundnot_found_error404La presentació documental no existeix en aquesta empresa o no pertany al document consultat.
pdf_presentation_not_readyinvalid_request_error422La presentació revisionada encara no està disponible per a aquesta empresa: l'activació està pendent.
pdf_presentation_precondition_requiredinvalid_request_error428El canvi de la presentació no va indicar sobre quina versió es basa.
pdf_signature_personal_data_forgottennot_found_error410Les dades personals de la signatura d’aquesta presentació s’han eliminat.
pdf_template_access_deniedauthorization_error403La credencial o l'usuari no té permís per fer aquesta operació a la biblioteca de plantilles PDF.
pdf_template_archivedinvalid_request_error422La plantilla PDF està arxivada i una plantilla arxivada no es pot assignar ni editar.
pdf_template_asset_conflictconflict_error409Ja existeix un actiu de plantilla amb aquest identificador, per la qual cosa la pujada el sobreescriuria.
pdf_template_asset_not_foundnot_found_error404L'actiu de la plantilla (logotip, imatge o tipus de lletra) no existeix en aquesta empresa o es va eliminar.
pdf_template_default_replacement_requiredinvalid_request_error422Arxivar la plantilla deixaria valors per defecte o associacions sense plantilla i no s'ha indicat cap reemplaçament.
pdf_template_not_foundnot_found_error404La plantilla PDF no existeix en aquesta empresa.
pdf_template_precondition_failedconflict_error412L'ETag enviat a If-Match ja no coincideix amb la plantilla desada, que es va modificar després de llegir-la.
pdf_template_precondition_requiredinvalid_request_error428Modificar la plantilla exigeix indicar la versió en què es basa i no se n'ha enviat cap.
pdf_template_version_conflictconflict_error409La plantilla es va modificar després de llegir-la, de manera que l'expected_version enviat està desfasat.
preparation_requiredconflict_error409Cal preparar el PDF d’aquesta presentació abans de sol·licitar-lo.

Tarifes

CodeTypeHTTPDescripció
duplicate_price_list_nameinvalid_request_error422Una altra tarifa de l'empresa ja fa servir aquest nom, que ha de ser únic dins del tenant.
inactive_price_listinvalid_request_error422La tarifa està inactiva i només es pot consultar per explicar documents històrics, no seleccionar per a una operació nova.
invalid_price_list_iteminvalid_request_error422L'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_useinvalid_request_error422La tarifa està assignada a clients o esborranys i eliminar-la deixaria aquestes referències sense origen de preu.
price_list_item_not_foundnot_found_error404L'article indicat no existeix a la tarifa: ja es va retirar o l'identificador no és d'aquesta tarifa.
price_list_not_foundnot_found_error404L'identificador no resol a cap tarifa de l'empresa autenticada.

Productes

CodeTypeHTTPDescripció
duplicate_pack_componentinvalid_request_error422El mateix producte, variant, presentació o configuració apareix més d'una vegada al pack.
duplicate_promotion_iteminvalid_request_error422El 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_allowedinvalid_request_error422Aquest 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_weightinvalid_request_error422El 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_componentinvalid_request_error422Un 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_imageinvalid_request_error422El 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_pricinginvalid_request_error422El 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_transitioninvalid_request_error422El 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_promotioninvalid_request_error422Un 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_iteminvalid_request_error422Un 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_smallinvalid_request_error422Un pack necessita almenys dos components, o un sol producte comptat amb quantitat de 2 o més.
pack_group_not_contiguousinvalid_request_error422Les línies d'un mateix pack no van seguides al document. Hi ha una altra línia entre elles.
pack_image_limit_reachedinvalid_request_error422El pack ja té el màxim de 5 imatges.
pack_in_useinvalid_request_error422El pack està referenciat per documents emesos, així que esborrar-lo trencaria la seva composició.
pack_line_lockedinvalid_request_error422Una línia que pertany a un grup de pack no pot canviar el seu producte, quantitat, preu unitari ni descompte.
pack_lines_must_be_expandedinvalid_request_error422Les 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_foundnot_found_error404L'identificador no resol a cap pack de l'empresa autenticada.
pack_not_sellableinvalid_request_error422El 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_impossibleinvalid_request_error422El preu del pack no es pot repartir entre els seus components perquè no tenen preu per separat.
pack_price_unreachableinvalid_request_error422El preu amb IVA demanat no es pot assolir exactament perquè l'IVA s'arrodoneix línia a línia.
pack_print_mode_not_allowedinvalid_request_error422Nomé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_invalidinvalid_request_error422La fotografia del pack enviada amb la línia del document no té signatura, està alterada o està mal formada.
product_in_useinvalid_request_error422El producte està referenciat per documents emesos o per altres entrades del catàleg, i eliminar-lo deixaria aquestes referències penjant.
product_not_foundnot_found_error404L'identificador no resol a cap producte de l'empresa autenticada.
promotion_not_foundnot_found_error404L'identificador no resol a cap oferta de l'empresa autenticada.
promotion_read_onlyinvalid_request_error422L'oferta ja ha acabat o s'ha cancel·lat, així que és de només lectura i no admet més canvis.
promotion_startedinvalid_request_error422L'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_existsconflict_error409Un altre producte de l'empresa ja fa servir aquest SKU, i el SKU identifica l'article sense ambigüitat dins del catàleg.
slug_already_existsconflict_error409El slug ja el fa servir, com a actual o anterior, un altre producte o pack de l'empresa.

Factures proforma

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

Despeses

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

Escàner de despeses

CodeTypeHTTPDescripció
duplicate_override_reason_requiredinvalid_request_error422No s’ha indicat un motiu vàlid per continuar malgrat el duplicat.
duplicate_resolution_requiredinvalid_request_error422Hi ha una possible duplicitat que requereix revisió.
invalid_inbound_signatureauthentication_error401No s’ha pogut autenticar la signatura del correu entrant.
invalid_purchase_scan_transitioninvalid_request_error422L’estat actual de l’escaneig no permet aquesta transició.
module_upgrade_requiredauthorization_error403El pla actual no inclou la capacitat d’OCR sol·licitada.
ocr_company_daily_quota_exceededrate_limit_error429L’empresa ha esgotat la quota diària d’OCR.
ocr_company_quota_exceededrate_limit_error429L’empresa ha esgotat la quota mensual d’OCR.
purchase_scan_already_convertedconflict_error409L’escaneig ja està vinculat a una despesa.
purchase_scan_not_foundnot_found_error404L’escaneig no existeix o no pertany a l’empresa activa.
purchase_scan_retry_not_allowedinvalid_request_error422L’escaneig no admet un altre intent en l’estat actual.
purchase_scan_review_incompleteinvalid_request_error422Falten dades obligatòries o els imports revisats no quadren.
purchase_scan_source_unavailableinvalid_request_error422L’original de l’escaneig s’ha purgat o ja no està disponible a l’emmagatzematge segur.
scan_batch_too_largeinvalid_request_error413El lot supera la mida total permesa.
scan_decompression_limit_exceededinvalid_request_error413El fitxer supera el límit segur en descomprimir-se.
scan_file_too_largeinvalid_request_error413Un fitxer supera el màxim de 20 MiB.
scan_page_limit_exceededinvalid_request_error413El document supera el límit de pàgines configurat.
scan_pixel_limit_exceededinvalid_request_error413La resolució del document supera el límit de processament segur.
scan_storage_unavailableservice_unavailable_error503L’emmagatzematge segur de l’original no està disponible.
scanner_admin_requiredauthorization_error403L’acció requereix permisos d’administració de l’escàner.
stale_scan_versionconflict_error409L’escaneig ha canviat des de l’última lectura.
unsafe_scan_fileinvalid_request_error422L’original no ha superat la inspecció de seguretat.
unsupported_purchase_currencyinvalid_request_error422La divisa del document no s’admet per a la conversió.
unsupported_purchase_document_typeinvalid_request_error422L’original és un albarà, una comanda, un pressupost, una proforma o un altre document que no acredita una despesa fiscal.
unsupported_scan_formatinvalid_request_error422El format real del fitxer no és compatible.
validation_failedinvalid_request_error422Les dades de l’escaneig no compleixen les restriccions indicades.

Pressupostos

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

Límit de peticions

CodeTypeHTTPDescripció
account_probation_limit_exceededrate_limit_error429L'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_exceededrate_limit_error429L'empresa ha exhaurit el volum mensual que el seu pla concedeix al conjunt de les seves claus.
company_rate_limit_exceededrate_limit_error429L'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_openrate_limit_error429L'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_exceededrate_limit_error429S'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_exceededrate_limit_error429Les noves files admeses d’importació superarien la quota mensual de files del pla.
monthly_quota_exceededrate_limit_error429L'empresa va esgotar la quota mensual de crides que inclou el seu pla.
pdf_generation_budget_exceededrate_limit_error429S'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_exceededrate_limit_error429La 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_exceededrate_limit_error429El 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_exceededrate_limit_error429La clau va enviar més peticions de les que permet el seu ritme a la finestra actual.
upload_in_flight_budget_exceededrate_limit_error429L'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

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

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

Series

CodeTypeHTTPDescripció
cannot_archive_last_default_seriesinvalid_request_error422La sèrie és l'única activa del seu tipus de document. Arxivar-la deixaria l'empresa sense numeració disponible i congelaria aquest tipus de document.
document_type_required_for_ambiguous_codeinvalid_request_error422Aquest codi de sèrie existeix per a més d'un tipus de document, així que per si sol no identifica una única sèrie.
invalid_series_codeinvalid_request_error422El codi de la sèrie és buit, massa llarg, o porta caràcters que no corresponen a un prefix fiscal.
invalid_series_nameinvalid_request_error422El nom de la sèrie és buit o supera la longitud permesa.
invalid_series_numberinvalid_request_error422El número inicial no és vàlid: no és un enter positiu, o queda a l'últim número ja emès o per sota, cosa que reemetria números ja consumits.
invalid_series_template_assignmentinvalid_request_error422L'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_uuidinvalid_request_error400L'identificador de sèrie de la ruta o del payload no és un UUID vàlid.
invalid_series_yearinvalid_request_error422L'exercici no és un any de quatre xifres vàlid per a una sèrie de numeració.
monthly_requires_month_segmented_formatinvalid_request_error422El comptador es reinicia cada mes però la màscara de numeració no segrega per mes, així que dos mesos arrencarien al mateix correlatiu i produirien números duplicats dins de l'any.
series_already_archivedinvalid_request_error422La sèrie ja estava arxivada, i l'arxivat no es repeteix: una segona crida indica que el client ha perdut l'estat real.
series_code_immutable_with_documentsinvalid_request_error422Canviar el prefix d'una sèrie que ja va emetre documents reescriuria retroactivament el seu identificador fiscal, mentre els clients i l'AEAT tenen el número original.
series_default_kind_changeinvalid_request_error422La 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_documentsinvalid_request_error422La 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_documentsinvalid_request_error422La sèrie ja va numerar documents, així que no es pot eliminar: la seqüència correlativa ha de seguir sent auditable.
series_immutableinvalid_request_error405Una 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_gapinvalid_request_error422El número inicial salta més enllà del següent correlatiu natural havent-hi documents de l'any en curs, i aquest buit a la seqüència no és admissible per a l'AEAT.
series_invoice_kind_invalidinvalid_request_error422El 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_lockedinvalid_request_error422El 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_mismatchinvalid_request_error422Les 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_verifactuinvalid_request_error422Com a mínim una factura de la sèrie té un registre de facturació acceptat per l'AEAT, cosa que congela el prefix, l'any i la base de numeració de la sèrie.
series_not_foundnot_found_error404L'identificador no resol a cap sèrie de numeració de l'empresa autenticada.
series_template_access_deniedauthorization_error403La credencial o l'usuari no té permís per canviar la plantilla PDF d'aquesta sèrie.
series_template_incompatibleinvalid_request_error422La plantilla no admet el tipus de document, el propòsit (invoice_kind) o el format de numeració de la sèrie.
series_template_precondition_failedconflict_error412L'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_requiredinvalid_request_error428El canvi de la plantilla de la sèrie no va indicar la versió o la precondició del recurs en què es basa.
series_template_unavailableinvalid_request_error422La 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_conflictconflict_error409L'assignació de plantilla PDF de la sèrie va canviar després de llegir-la.
series_type_invalidinvalid_request_error422El tipus de document de la sèrie queda fora del catàleg invoice, quote, delivery_note, proforma, purchase_invoice, recurring_invoice.
series_year_lockedinvalid_request_error422La sèrie ja va emetre documents en el seu any vigent. Moure l'any deixaria aquests documents apuntant a un exercici buit mentre la seva base imposable és en un altre.

Servidor

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

Emmagatzematge

CodeTypeHTTPDescripció
storage_quota_exceededpayment_required_error402El compte ha arribat al seu ús màxim.

Integracions de tasques

CodeTypeHTTPDescripció
forge_account_link_rejectedinvalid_request_error422Nomé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_linkedinvalid_request_error422L'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_rejectedinvalid_request_error422La 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_invalidinvalid_request_error422La 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_deniedauthorization_error403El 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_elsewhereconflict_error409El 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_supportedinvalid_request_error422Aquesta 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_requiredinvalid_request_error422Es 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_invalidauthentication_error401El 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_invalidinvalid_request_error422La 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_foundnot_found_error404La 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_configuredinvalid_request_error422La 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_rejectedinvalid_request_error422El 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_activeconflict_error409Ja 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_allowedinvalid_request_error422La 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_connectedconflict_error409El 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_foundnot_found_error404La 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_foundnot_found_error404La 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

CodeTypeHTTPDescripció
bulk_task_selection_too_largeinvalid_request_error422L'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_tasksconflict_error409La 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_useconflict_error409Una 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_reservedinvalid_request_error422El 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_definitioninvalid_request_error422La 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_valueinvalid_request_error422El 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_columninvalid_request_error422La 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_keyinvalid_request_error422La 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_referenceinvalid_request_error422Una 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_scheduleinvalid_request_error422Les 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_statusinvalid_request_error422La 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_periodinvalid_request_error422El 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_exceededpayment_required_error402L'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_foundnot_found_error404L'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_archivedinvalid_request_error422El projecte està arxivat i no admet tasques noves ni que s'hi moguin tasques. Arxivar congela el projecte sense esborrar-lo.
project_column_not_foundnot_found_error404La 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_columnsinvalid_request_error422Es 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_useconflict_error409La 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_foundnot_found_error404No 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_missinginvalid_request_error422Falta 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_projectinvalid_request_error422Es demana traslladar la tasca al projecte on ja és, així que no hi ha cap trasllat per fer.
task_assignee_not_memberinvalid_request_error422L'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_foundnot_found_error404L'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_rejectedinvalid_request_error422El 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_foundnot_found_error404El 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_exceededconflict_error409L'à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_editableinvalid_request_error422El 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_foundnot_found_error404El 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_foundnot_found_error404El 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_largeinvalid_request_error422La 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_foundnot_found_error404El 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_foundnot_found_error404L'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_useconflict_error409L'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_foundnot_found_error404No 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_foundnot_found_error404No 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_cycleinvalid_request_error422La 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_existsconflict_error409Entre 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_foundnot_found_error404No 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_relationinvalid_request_error422La tasca d'origen i la de destinació són la mateixa, i una tasca no es pot relacionar amb si mateixa.
task_time_entry_invoicedinvalid_request_error422L'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_foundnot_found_error404L'entrada de temps no existeix, pertany a una altra tasca o és d'una altra empresa; els tres casos responen igual.
task_time_not_invoiceableinvalid_request_error422No 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_runningconflict_error409Ja 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_runninginvalid_request_error422Es 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_expiredinvalid_request_error410L'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_foundnot_found_error404L'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

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

Impostos

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

Control horari

CodeTypeHTTPDescripció
clocking_outside_employment_periodinvalid_request_error422L'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

CodeTypeHTTPDescripció
delivery_note_cancelledinvalid_request_error422Un 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_measureinvalid_request_error422La 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_idinvalid_request_error422La 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_plateinvalid_request_error422Una 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_pastinvalid_request_error422Un 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_cancelledinvalid_request_error422Nomé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_closedinvalid_request_error422Nomé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_deletedinvalid_request_error422Nomé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_editedinvalid_request_error422Nomé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_modifiedinvalid_request_error422Nomé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_reopenedinvalid_request_error422Nomé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_supersededinvalid_request_error422Només es pot marcar com a substituït pel document del transportista un document de control emès i en curs.
transport_document_file_unavailablenot_found_error410Els 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_changesinvalid_request_error422La modificació porta exactament les mateixes dades que la versió vigent, així que no hi ha cap versió nova per publicar.
transport_document_not_foundnot_found_error404L'identificador no resol cap document de control de l'empresa autenticada, o el token públic no existeix.
transport_document_not_issuableinvalid_request_error422El 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_sendableinvalid_request_error422No 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_immutableinvalid_request_error422Despré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_largeinvalid_request_error422El 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_reachedinvalid_request_error422Un 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_foundnot_found_error404El 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_spaininvalid_request_error422El 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

CodeTypeHTTPDescripció
alta_record_not_foundnot_found_error404La factura no té registre d'alta, així que l'operació que en depèn no té sobre què treballar.
anulacion_record_already_existsconflict_error409La factura ja té un registre d'anul·lació a la cadena, i l'anul·lació es declara una sola vegada.
certificate_expiredinvalid_request_error422El certificat està fora de la seva finestra de validesa: ha caducat, o encara no és vàlid.
certificate_nif_mismatchinvalid_request_error422El NIF del titular del certificat no coincideix amb el de l'empresa. Els registres AEAT es signen en nom de l'empresa, així que tots dos han de ser el mateix.
certificate_not_foundnot_found_error404L'empresa no té cap certificat FNMT que correspongui a l'identificador, o no en té cap de pujat.
certificate_too_largeinvalid_request_error422El fitxer supera el límit de 100 KB, quan un certificat FNMT real pesa uns pocs kilobytes.
chain_position_conflictconflict_error409Dos 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_exceededinvalid_request_error422El rellotge del servidor es va desviar de l'NTP per sobre del marge permès. La marca de temps de generació entra a l'empremta AEAT, així que un rellotge desincronitzat produiria registres que l'AEAT rebutja.
declaracion_already_existsconflict_error409L'empresa ja té presentada la declaració responsable del SIF d'aquest període.
declaracion_not_foundnot_found_error404L'empresa no té presentada la declaració responsable del SIF del període sol·licitat.
event_already_processedinvalid_request_error422Aquest esdeveniment del SIF ja consta a la cadena d'esdeveniments, i cada esdeveniment es processa exactament una vegada.
invalid_certificate_formatinvalid_request_error422El fitxer no és un contenidor PKCS#12: els seus primers bytes no corresponen a l'estructura ASN.1 que exigeix el format, digui el que digui l'extensió.
invalid_certificate_passwordinvalid_request_error422La contrasenya no obre el fitxer del certificat.
invalid_representationinvalid_request_error422La 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_exceededinvalid_request_error422Nomé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_endinvalid_request_error422El mode VeriFactu es va activar en aquest exercici i ja es va emetre com a mínim un registre de facturació. Fer marxa enrere degradaria la integritat d'una cadena ja declarada a l'AEAT.
record_already_acceptedinvalid_request_error422L'AEAT ja va acceptar el registre. L'acceptació és terminal i el seu contingut queda congelat com a part de la cadena d'empremtes.
record_immutableinvalid_request_error422El registre pertany a un ledger de només-addició: un cop escrit, el seu contingut fiscal queda tancat a modificacions i a esborrat.
record_not_rejectedinvalid_request_error422Nomé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_subsanableinvalid_request_error422El 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_requiredinvalid_request_error422El 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_annulmentinvalid_request_error422El contingut regenerat canvia un camp que entra a l'empremta —NIF de l'emissor, sèrie i número, data d'expedició, tipus de factura, quota o import total— i la cadena no es pot reescriure.
signing_certificate_unavailableinvalid_request_error422L'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_excludedinvalid_request_error422L'empresa està registrada al SII, i els obligats al SII queden exclosos del reglament VeriFactu.
social_collaborator_unavailableinvalid_request_error422L'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_unavailableapi_error500El 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_submittedinvalid_request_error422La factura ja té el seu registre d'alta. Existeix exactament una alta per factura, així que una segona trencaria la idempotència de la cadena.
verifactu_mode_invalidinvalid_request_error422El mode queda fora del catàleg verifactu / no_verifactu.
verifactu_not_eligibleinvalid_request_error422La factura no es pot registrar ara mateix a l'AEAT: l'empresa no està en mode VeriFactu, no té certificat actiu, o el certificat està revocat o emès per a un altre NIF. 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_foundnot_found_error404L'identificador no correspon a cap registre de facturació de l'empresa autenticada.
verifactu_transmission_failedinvalid_request_error422L'enviament del registre a l'AEAT no es va completar: l'endpoint era inaccessible o va respondre amb una incidència.

Webhooks

CodeTypeHTTPDescripció
account_webhook_endpoint_limit_reachedinvalid_request_error422El 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_requiredpayment_required_error402Crear 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_formatinvalid_request_error422La versió de payload de l'endpoint no és una data YYYY-MM-DD.
api_version_unsupportedinvalid_request_error422La versió de payload està ben formada però no és entre les que serveix la plataforma.
custom_header_blocklistedinvalid_request_error422Una de les capçaleres personalitzades està reservada: la gestiona la capa HTTP (host, content-type, content-length, user-agent), l'envia Factuarea com a part del contracte signat (factuarea-*), o pertany al proxy (x-forwarded-*).
custom_header_value_too_longinvalid_request_error422El valor d'una capçalera personalitzada supera els 1024 caràcters.
invalid_url_targetinvalid_request_error422L'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_retryableinvalid_request_error422Només es reenvien els lliuraments fallits. Un lliurament que va arribar bé, o un encara en curs, no té res a reenviar.
replay_event_expiredinvalid_request_error422L'esdeveniment que dona suport al lliurament va ser purgat per la política de retenció de 30 dies, així que ja no queda payload a reenviar.
timeout_seconds_out_of_rangeinvalid_request_error422timeout_seconds queda fora del rang d'1 a 30 segons.
too_many_custom_headersinvalid_request_error422L'endpoint declara més de 20 capçaleres personalitzades.
webhook_delivery_not_foundnot_found_error404L'identificador no correspon a cap intent de lliurament, o el lliurament queda fora de la finestra de retenció de l'històric.
webhook_endpoint_degradedinvalid_request_error422L'endpoint està degradat després de fallades repetides de lliurament, així que els pings de prova es rebutgen mentre segueixi en aquest estat.
webhook_endpoint_not_foundnot_found_error404L'identificador no resol a cap endpoint de webhook de l'empresa autenticada.
webhook_secret_recently_rotatedinvalid_request_error422El 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.

En aquesta pàgina

Et donem un cop de mà?Contactar amb suport