Ves al contingut

Errors ​

Tots els endpoints de /api/v1/* retornen el mateix sobre d'error. error.code és estable: pots basar-hi la lògica sense dependre del text del missatge.

Els endpoints OAuth2 /oauth/token i /oauth/revoke fan servir errors del protocol (per exemple, {"error":"invalid_grant"} si el codi o el refresh token no és vàlid), en lloc d'aquest sobre de l'API pública. Consulta Autenticació i scopes.

El sobre ​

json
{
  "error": {
    "type": "validation_error",
    "code": "invoice.nif_receptor_invalid",
    "message": "El NIF del receptor no té un format vàlid",
    "param": "partner.id_num"
  }
}
CampDescripció
typeCategoria general de l'error.
codeCodi estable i llegible per màquina. Basa-hi les decisions.
messageText orientatiu per depurar. No el processis.
detailsDades estructurades específiques, si n'hi ha.
paramCamp afectat, quan aplica.

Categories ​

typeHTTPSignificat
validation_error400Cos o paràmetres invàlids.
authentication_error401Credencial absent, invàlida o caducada.
permission_error403Falta un scope o l'operació no està permesa.
not_found_error404El recurs no existeix al tenant.
conflict_error409 / 422Conflicte amb l'estat actual o amb la idempotència.
billing_error402El pla ha arribat a un límit d'ús.
verifactu_error422L'AEAT rebutjaria l'operació.
internal_error500Error inesperat del servei.

Codis habituals ​

Autenticació i permisos ​

codeQuan
api_key.missingNo s'ha enviat Authorization.
api_key.invalidLa clau no existeix o ha estat revocada.
api_key.no_scopesLa clau no té cap scope.
oauth.invalid_tokenL'access token OAuth és invàlid, ha caducat o s'ha revocat.
api_key.insufficient_scopesA la clau li falta l'scope de l'endpoint.
oauth.insufficient_scopesAl token OAuth li falta l'scope necessari.
mutability.invoice_lockedS'intenta editar una factura que no és un esborrany.
plan_permission_requiredEl pla no inclou la funcionalitat.

Límit del pla (402) ​

plan_limit_reached inclou a details la metric, plan_code, limit, used i, per a mètriques mensuals, reset_at. No repeteixis la mateixa operació fins que s'alliberi consum, comenci un altre mes o canviï el pla.

Validació (400) ​

codeQuan
invalid_bodyEl JSON no compleix l'esquema.
param.invalid_uuidUn UUID de la ruta és invàlid.
pagination.invalid_cursorEl cursor no és vàlid.
invoices.partner_requiredEl tipus de factura exigeix partner_id.
idempotency.key_too_longIdempotency-Key supera 255 caràcters.

No trobat (404) ​

Entre altres: invoice.not_found, invoice_line.not_found, partner.not_found, product.not_found, serie.not_found, tax.not_found, economic_activity.not_found, verifactu_record.not_found i external_invoice.not_found.

Conflicte (409) ​

codeQuan
partner.external_id_taken / product.external_id_takenL'identificador extern ja està en ús.
partner.id_num_taken / product.name_takenLa identificació o el nom ja existeix.
serie.code_takenJa existeix una sèrie amb aquest code.
serie.in_useLa sèrie té documents i no es pot eliminar.
serie.numbering_startedLa sèrie ja ha numerat: només poden canviar name i is_active.
serie.type_immutableEl tipus de sèrie no es pot canviar.
serie.last_of_typeNo es pot eliminar l'última sèrie d'un tipus.
economic_activity.in_useL'activitat està referenciada per factures.
economic_activity.last_activityNo es pot eliminar l'última activitat.
idempotency.request_in_progressUna petició amb la mateixa clau encara s'està processant.
issuance_authorization_requiredL'emissió encara no està habilitada.
external_invoices_not_enabledVerifactu Direct API no està habilitat.

Reutilitzar una Idempotency-Key amb un cos diferent retorna 422 i idempotency.key_reused_with_different_body. Utilitza una clau nova per operació.

VeriFactu / no processable (422) ​

Amb type: verifactu_error, la forma és vàlida però l'AEAT rebutjaria les dades: desglossament incoherent, factura simplificada per sobre del límit o NIF no identificat. message descriu la causa concreta.

Gestió recomanada ​

  • Basa la lògica en error.code, mai en message.
  • En 401 o 403, revisa la clau i els scopes; no repeteixis la mateixa petició.
  • En 409, torna a llegir l'estat del servidor i reconcilia'l.
  • En 422 durant l'emissió, la factura continua en esborrany: corregeix-la i torna-ho a provar.
  • idempotency.request_in_progress es pot reintentar al cap d'uns segons; idempotency.key_reused_with_different_body exigeix una clau nova.

Bilteo · Documentació