Saltar al contenido principal

Códigos de respuesta y errores

Hay dos familias de respuestas, y conviene no mezclarlas:

  • Decisiones del emisor (HTTP 200): llevan resultado y codigoRespuesta (DE 39). Decides por resultado.
  • Errores de protocolo (HTTP 4xx y 503): llegan como application/problem+json (RFC 9457) con un codigo estable. Ninguno llega al emisor, salvo NO_ENVIADA, que por definición no salió.

Catálogo del DE 39​

DE 39mensajeresultado¿Reintentar?
00AprobadaAPROBADA—
10Aprobada parcialmenteAPROBADA— Solo con opciones.aprobacionParcial. Cobra monto.aprobado y pide el resto por otro medio
03Comercio no válidoRECHAZADANo. Revisa el registro del comercio con FINORA
05No aprobadaRECHAZADANo con los mismos datos
12Transacción no válidaRECHAZADANo. Revisa la operación
13Importe no válidoRECHAZADANo con el mismo importe
14Tarjeta no válidaRECHAZADANo
25Operación original no encontradaRECHAZADANo. Aplica a reverso, captura y devolución
51Fondos insuficientesRECHAZADASolo como operación nueva (otra clave), si el titular lo decide
54Tarjeta vencidaRECHAZADANo
55Credencial no válidaRECHAZADASolo con una credencial FPW1 nueva (otra clave)
57Operación no permitida al titularRECHAZADANo
61Excede el límite de importeRECHAZADANo con el mismo importe
62Tarjeta restringidaRECHAZADANo
65Excede el límite de frecuenciaRECHAZADAMás tarde, como operación nueva
91Sin respuesta en el plazo; se envió el reversoINDETERMINADANo. El reverso ya está en curso; consulta con GET
—El emisor no está disponible; no se envió nadaNO_ENVIADA (HTTP 503)Sí, con la misma clave, tras Retry-After

Cualquier otro código del emisor se publica como RECHAZADA con el mensaje «No aprobada». Los códigos 91, 94 y 96 del emisor no deciden nada: el autorizador los trata como INDETERMINADA, reversa la operación y a ti siempre te muestra 91.

«Reintentar con la misma clave» devuelve la respuesta guardada; por eso, tras una RECHAZADA, un nuevo intento es siempre una operación nueva con otra Idempotency-Key.

Errores HTTP​

Formato RFC 9457, con type = urn:finora:auth-gateway:<codigo-en-kebab> y traceId para soporte:

{
"type": "urn:finora:auth-gateway:comercio-ajeno",
"title": "Comercio no registrado para el cliente",
"status": 403,
"codigo": "COMERCIO_AJENO",
"traceId": "4bf92f3577b34da6a3ce929d0e0e4736"
}
HTTPcodigoSignificado¿Reintentar?
400ESQUEMA_INVALIDOJSON inválido, propiedad desconocida o duplicada, tipo o patrón que no cumple, Idempotency-Key ausente o mal formadaNo. Corrige la petición
400MONTO_INVALIDOEscala distinta de 2 decimales, cero o más de 10 enteros. Nunca se redondeaNo. Corrige el importe
400DE_NO_PERMITIDO, DE_INVALIDO_PARA_LAYOUT, ETIQUETA_DE48_NO_PERMITIDAVista ISO: DE prohibido o reservado, valor que no cabe en el formato del emisor, o etiqueta del DE 48 no admitidaNo
401FIRMA_INVALIDA, RELOJ_FUERA_DE_TOLERANCIA, NONCE_REPETIDO, CERTIFICADO_NO_REGISTRADOAutenticación del canalSí, con firma, fecha y nonce nuevos
403CLIENTE_SUSPENDIDO, IP_NO_PERMITIDA, OPERACION_NO_PERMITIDA, VISTA_ISO_NO_HABILITADA, COMERCIO_AJENO, MCC_NO_COINCIDE, MONEDA_NO_HABILITADATu cliente no está autorizado para esoNo. Revisa tu registro con FINORA
404AUTORIZACION_NO_ENCONTRADANo existe o es de otro clienteNo
409ORIGINAL_NO_ADMITE_OPERACIONLa original no admite reverso, captura o devolución en su estado; detail dice por quéSegún el detail (ver Flujos)
422IDEMPOTENCIA_CUERPO_DISTINTOMisma clave con otro cuerpo; trae el idAutorizacion que ya la usaNo. Consulta esa autorización
422MONTO_EXCEDE_ORIGINAL, MONEDA_DISTINTA_ORIGINALCaptura o devolución por encima de lo aprobado o en otra monedaNo con ese importe
429LIMITE_DE_TASAPor encima de tu límite o del límite globalSí, tras Retry-After
503CANAL_NO_DISPONIBLEEl autorizador no puede verificar su registro o su base (falla cerrado)Sí, con la misma clave

Los mensajes de los 401 son deliberadamente genéricos: no indican qué parte de la autenticación falló.