Ir al contenido

Referencia de códigos de error

Esta página es la referencia centralizada para las respuestas de error de todas las API de fiskaly. Usa el explorador interactivo de abajo para buscar y filtrar errores, o desplázate hacia abajo para consultar las tablas de referencia estáticas.

36 errors found


Comienza por el árbol de decisión para la resolución de problemas si tienes un error y necesitas una respuesta rápida, o consulta las tablas específicas de cada producto para obtener códigos de error detallados.

Todas las API de fiskaly devuelven los errores en un formato JSON consistente:

{
"status_code": 400,
"error": "Bad Request",
"code": "E_SOME_ERROR",
"message": "Una descripción legible por humanos de lo que salió mal"
}
CampoTipoDescripción
status_codeenteroCódigo de estado HTTP
errorcadenaTexto de estado HTTP
codecadenaCódigo de error específico de fiskaly (prefijado con E_)
messagecadenaDescripción del error legible por humanos
CódigoSignificadoCuándo aparece
200OKLa solicitud se realizó correctamente; el cuerpo de la respuesta contiene el resultado
201CreadoRecurso creado correctamente
204Sin contenidoLa solicitud se realizó correctamente, sin cuerpo de respuesta (p. ej., operaciones DELETE)

Estos indican un problema con tu solicitud. No reintentar con el mismo payload — primero corrige el problema.

CódigoSignificadoCausas comunes
400Solicitud incorrectaJSON mal formado, campos obligatorios faltantes, valores de campo inválidos
401No autorizadoToken de acceso caducado o faltante, credenciales de API inválidas
403ProhibidoPermisos insuficientes para el recurso solicitado
404No encontradoEl recurso no existe, o ruta URL incorrecta
409ConflictoEl recurso ya existe (intento de creación duplicada)
422Entidad no procesableJSON válido pero semánticamente incorrecto (p. ej., transición de estado inválida)
423BloqueadoEl recurso está bloqueado actualmente por otra operación
429Demasiadas solicitudesLímite de frecuencia superado — espera y reintenta con retraso exponencial

Estos indican un problema temporal en el lado de fiskaly. Se puede reintentar con backoff exponencial.

CódigoSignificadoAcción
500Error interno del servidorReintentar tras un breve retraso; si persiste, consulta status.fiskaly.com
502Gateway incorrectoServicio upstream temporalmente no disponible; reintentar
503Servicio no disponibleEl servicio está temporalmente caído por mantenimiento; reintentar
504Timeout del gatewayLa solicitud agotó el tiempo de espera en upstream; reintentar con mayor timeout

Estos son los errores más comunes que los desarrolladores encuentran durante la integración.

Código de errorEstado HTTPCausaSolución
E_UNAUTHORIZED_ACCESS401Token de acceso caducado o no proporcionadoVuelve a autenticarte usando tu clave y secreto de API
E_INVALID_CREDENTIALS401La clave o el secreto de API son incorrectosVerifica las credenciales en el HUB
E_TOKEN_EXPIRED401El token de acceso JWT ha caducadoUsa el token de actualización o vuelve a autenticarte
E_ACCESS_FORBIDDEN403Tu clave de API no tiene permiso para este recursoComprueba los ámbitos de la clave de API en el HUB
Clave API + Secreto → POST /auth → access_token (24h) + refresh_token (48h)
├── Usar en todas las llamadas a la API
└── Con 401 → volver a autenticarse (no en cada solicitud)
Código de errorEstado HTTPCausaSolución
E_TSS_NOT_FOUND404El ID del TSS no existeVerifica el ID del TSS; lista todos los TSS mediante GET /tss
E_TSS_NOT_INITIALIZED400El TSS aún no ha sido inicializadoSigue todos los pasos necesarios: crea el TSS, actualízalo a UNINITIALIZED, establece el PIN Admin, inicia sesión como Admin y cambia el TSS a INITIALIZED
E_TSS_DISABLED400El TSS ha sido desactivadoEl TSS ya no puede firmar transacciones; crea un TSS nuevo
E_TSS_IN_USE409El TSS está siendo modificado por otra solicitudEspera y reintenta
E_CLIENT_NOT_FOUND404El ID del cliente no existe para este TSSCrea un cliente mediante PUT /tss/{tss_id}/client/{client_id}
E_CLIENT_NOT_REGISTERED400El cliente existe pero no está registradoRegistra el cliente antes de crear transacciones
E_TX_NOT_FOUND404El ID de la transacción no existeVerifica el ID de la transacción y el contexto del TSS
E_TX_INVALID_STATE422La transacción está en un estado que no permite esta operaciónComprueba el estado actual de la transacción; sigue la máquina de estados
E_EXPORT_NOT_FOUND404El ID de exportación no existeVerifica el ID de exportación; las exportaciones pueden tardar en procesarse
E_EXPORT_IN_PROGRESS409La exportación aún se está generandoSondea el estado de la exportación hasta que state: COMPLETED
Código de errorEstado HTTPCausaSolución
E_ESTABLISHMENT_NOT_FOUND404ID de establecimiento no encontradoVerifica que el establecimiento existe para tu organización
E_TAXPAYER_NOT_FOUND404Registro de contribuyente no encontradoCrea primero el recurso de contribuyente
E_TAXPAYER_ADDRESS_NOT_FOUND404Dirección del contribuyente no configuradaAñade datos de dirección al recurso de contribuyente
E_TAXPAYER_PERSON_NOT_FOUND404Registro de persona del contribuyente faltanteAñade datos de persona al recurso de contribuyente
E_SUBMISSION_NOT_FOUND404ID de declaración no encontradoVerifica el ID de declaración; comprueba que la declaración fue creada
E_CLIENT_ADDITIONAL_DATA_NOT_FOUND404Datos adicionales del cliente faltantesProporciona los datos adicionales requeridos para el cliente
E_LOCKED_RESOURCE423El recurso está bloqueado por una operación en cursoEspera a que se completa la operación actual y vuelve a intentarlo
Código de errorEstado HTTPCausaSolución
E_CASH_REGISTER_NOT_FOUND404Caja registradora no encontradaCrea primero la caja registradora mediante la API DSFinV-K
E_CASH_POINT_CLOSING_NOT_FOUND404Cierre de punto de venta no encontradoVerifica el ID de cierre
E_VAT_DEFINITION_NOT_FOUND404Definición de IVA no configuradaCrea las definiciones de IVA antes de insertar cierres
E_INVALID_CLOSING_DATA400El payload de cierre no coincide con el esquema esperadoValida tu payload frente a la especificación DSFinV-K

Estos errores son compartidos por todos los productos de la API Unificada (SIGN FR, SIGN IT, SIGN ES). Las tres APIs usan la misma capa de autenticación, organización y gestión de recursos.

Código de errorEstado HTTPCausaSolución
E_ORGANIZATION_NOT_FOUND404El ID de organización no existeVerifica el ID de la org; asegúrate de que fue creada bajo el GROUP correcto
E_TAXPAYER_NOT_COMMISSIONED400El contribuyente existe pero su estado no es COMMISSIONEDActualiza el estado del contribuyente a COMMISSIONED antes de operar
E_IDEMPOTENCY_KEY_REUSED409La clave de idempotencia ya fue usada para otra solicitudGenera un nuevo UUID para cada nueva solicitud
E_API_VERSION_NOT_SUPPORTED400El header X-Api-Version contiene una fecha no compatibleUsa la versión más reciente compatible (p. ej., 2026-02-03)
E_SCOPE_IDENTIFIER_MISSING400Header X-Scope-Identifier no proporcionadoIncluye el ID de organización en X-Scope-Identifier
E_SUBJECT_NOT_FOUND404Subject (clave API) no encontradoVerifica que el subject fue creado bajo la organización correcta
E_TOKEN_INVALID401El token está malformado o ha caducadoVuelve a autenticarte mediante POST /api/v1/auth/token
E_LOCATION_NOT_COMMISSIONED400La ubicación existe pero no está comisionadaActualiza el estado de la ubicación a COMMISSIONED
E_SYSTEM_NOT_COMMISSIONED400El sistema existe pero no está comisionadoActualiza el estado del sistema a COMMISSIONED
Código de errorEstado HTTPCausaSolución
E_RECORD_INVALID_OPERATION422El tipo de operación del registro no es válido para el estado actualComprueba el flujo Intention → Transaction; asegura la secuencia correcta
E_RECORD_INTENTION_REQUIRED400Registro de transacción creado sin Intention previaCrea primero un registro Intention y luego referencia su ID
E_TAXPAYER_CREDENTIALS_INVALID400Las credenciales de fiscalización francesa (NF 525) son inválidasVerifica tax_id_number (SIREN) y las credenciales
E_CLOSURE_IN_PROGRESS409Ya hay un cierre fiscal en cursoEspera a que se completa el cierre actual
Código de errorEstado HTTPCausaSolución
E_RT_DEVICE_NOT_FOUND404Dispositivo Registratore Telematico no encontradoVerifica que el dispositivo RT fue creado y comisionado
E_RT_SUBMISSION_FAILED502Envío a Agenzia delle Entrate fallidoReintenta; comprueba el estado del servicio AdE si persiste
E_LOTTERY_CODE_INVALID400El formato del código de la lotería de recibos es inválidoAsegúrate de que el código de la lotería tiene 8 caracteres alfanuméricos
E_FISCAL_CODE_INVALID400El formato del codice fiscale italiano es incorrectoVerifica el formato del código fiscal de 16 caracteres

SIGN ES devuelve los errores de validación en un array validations en la respuesta, cada uno con un code y una description. Estos son específicos de las transmisiones TicketBAI / Verifactu / SII.

Código de validaciónCausa
V_TICKETBAIError desconocido o no gestionado de TicketBAI
V_XSD_SCHEMA_NOT_COMPLYEl archivo XML no cumple con el esquema XML
V_INVOICE_WITHOUT_LINESEl archivo XML no incluye líneas de detalle
V_REQUIRED_FIELD_MISSING_OR_INCORRECTFaltan datos obligatorios o son incorrectos
V_INVOICE_ALREADY_REGISTEREDYa se registró una factura con el mismo número/serie/año
V_SERVICE_NOT_AVAILABLEEl servicio de recepción no está disponible
V_INCORRECT_SENDER_CERTIFICATEEl certificado del remitente es desconocido
V_INVALID_SENDER_CERTIFICATEEl certificado del remitente no es válido
V_WRONG_SIGNATURELa validación de la firma ha fallado
V_INCORRECT_INVOICE_CHAININGEl encadenamiento de facturas es incorrecto
V_INVALID_TBAI_LICENSELicencia TicketBAI no registrada o no válida
V_DEVICE_NOT_REGISTEREDEl certificado de dispositivo usado para el envío está pendiente de registro
V_EXPIRED_SIGNATURE_CERTIFICATEEl certificado usado para firmar el archivo TicketBAI ha caducado
V_EXPIRED_SENDER_CERTIFICATEEl certificado del remitente no es válido o ha caducado
V_EXPIRED_SIGNER_CERTIFICATEEl certificado usado para firmar no es válido o ha caducado
V_FULL_AMOUNT_MISMATCHLa suma de los full_amount de las líneas no es igual al full_amount de la factura
V_ISSUE_DATE_OUT_OF_RANGELa fecha de emisión tiene más de 20 años o es futura
V_INVALID_VAT_RATELa tasa de IVA no es un valor válido para la región del contribuyente
V_INVOICE_ALREADY_CANCELLEDLa factura ya fue cancelada
V_INVOICE_ALREADY_CORRECTEDLa factura ya fue corregida
V_INCOMPATIBLE_VAT_SYSTEMSLos sistemas de IVA proporcionados no son compatibles entre sí
V_INCORRECT_ITEM_VAT_CALCULATIONUn artículo de la factura tiene un cálculo de IVA aplicado incorrectamente

Las diferentes operaciones tienen distintas duraciones esperadas. Configura tus timeouts en consecuencia:

OperaciónTimeout recomendadoNotas
Autenticación (POST /auth)3-4 segundosOperación rápida; no bloquear el pago
Firma de transacción (PUT /tx)3-5 segundosNunca debe bloquear el TPV
Creación / inicialización del TSS30 segundosConfiguración única; procesamiento más pesado
Cierres de punto de venta DSFinV-KHasta 10 minutosProcesamiento pesado con grandes conjuntos de datos
Generación de exportaciónBasado en sondeoUsa sondeo asíncrono, no espera síncrona

Para errores transitorios (5xx, timeouts, límites de frecuencia), usa backoff exponencial:

async function callWithRetry(fn, maxRetries = 3) {
for (let attempt = 0; attempt <= maxRetries; attempt++) {
try {
return await fn();
} catch (error) {
if (attempt === maxRetries) throw error;
const isRetryable =
error.status >= 500 ||
error.status === 429 ||
error.code === "ETIMEDOUT";
if (!isRetryable) throw error;
const delay = Math.min(1000 * 2 ** attempt, 30000);
await new Promise((r) => setTimeout(r, delay));
}
}
}

Árbol de decisión para la resolución de problemas

Sección titulada «Árbol de decisión para la resolución de problemas»
¿Tienes un error?
├── 401 Unauthorized
│ └── ¿Ha caducado tu token?
│ ├── Sí → Vuelve a autenticarte con clave API + secreto
│ └── No → Comprueba las credenciales en el HUB
├── 400 Bad Request
│ └── Comprueba el campo `message` para saber qué campo es inválido
│ └── Valida tu payload JSON frente al esquema de la API
├── 404 Not Found
│ └── ¿Existe el recurso?
│ ├── Comprueba que el ID es correcto (formato UUIDv4)
│ └── Asegúrate de que el recurso fue creado en el entorno correcto (TEST vs LIVE)
├── 409 Conflict
│ └── El recurso ya existe o está siendo modificado
│ └── Usa GET para comprobar el estado actual antes de reintentar
├── 429 Rate Limited
│ └── Espera con retraso exponencial
│ └── Comprueba si te estás autenticando de nuevo en cada solicitud (no lo hagas)
└── Error 5xx del servidor
└── Comprueba status.fiskaly.com
├── Incidente conocido → Espera la resolución
└── Sin incidente → Reintenta con backoff exponencial; contacta con soporte si persiste

Monitoriza el estado del servicio fiskaly en status.fiskaly.com.

Estos son los errores que el soporte de fiskaly ve más a menudo de los equipos durante tu primera integración. Evitarlos ahorra tiempo de depuración significativo.

ErrorQué ocurreCómo evitarlo
Volver a autenticarse en cada solicitudErrores de límite de frecuencia 429; latencia innecesaria en cada pagoAlmacena en caché el token de acceso (TTL 24h). Solo vuelve a autenticarte con 401.
No guardar el admin_pukNo se puede establecer el PIN Admin en el TSS; bloqueado en estado UNINITIALIZEDGuarda el admin_puk de la respuesta de creación del TSS inmediatamente.
Reutilizar UUIDsErrores 409 Conflict al crear TSS, clientes o transaccionesGenera un nuevo UUIDv4 para cada llamada de creación de recursos.
Bloquear el pago ante un fallo de firmaLos clientes esperan indefinidamente si el TSS es lento o no está disponibleEstablece un timeout de 3-5 segundos en la firma. Emite el recibo con “TSS no disponible” y reintenta más tarde.
Usar credenciales TEST en LIVE (o viceversa)401 Unauthorized — las credenciales son específicas del entornoVerifica que la URL base coincide con el entorno de la clave API. TEST y LIVE son completamente separados.
Saltarse la inicialización del TSS400 E_TSS_NOT_INITIALIZED al crear clientes o transaccionesSigue todos los pasos necesarios: crea el TSS, actualízalo a UNINITIALIZED, establece el PIN Admin, inicia sesión como Admin y cambia el TSS a INITIALIZED.
No manejar correctamente tx_revision422 E_TX_INVALID_STATE o errores de transacción duplicadaComienza con tx_revision=1 (ACTIVE), termina con tx_revision=2 (FINISHED). Siempre incrementa.
Sondeo síncrono de exportacionesTimeouts en la generación de exportaciones DSFinV-K (puede tardar hasta 10 minutos)Usa sondeo asíncrono: activa la exportación, luego sondea el endpoint de estado hasta que state: COMPLETED.
Hardcodear timeoutsEl equipo de desarrollo no puede ajustarlos sin un release de códigoHaz los timeouts configurables (p. ej., 1,5-5 segundos para transacciones). Ajustable por el administrador es lo ideal.

Was this page helpful?