| 401 en todas las llamadas |
Llave mal escrita, regenerada, o con espacios en blanco de más |
Regenerala en el portal y actualizá la configuración |
404 code: not_found - The route ... could not be found |
Falta /v1 en la base, o se llamó a un endpoint que no está |
Arreglá la URL. Cambiar el identificador no ayuda |
404 code: transaction_id_expected |
Se pasó el id numérico del pago a una anulación, un reembolso o un recibo |
Pasá transaction_id, no id (13.1) |
422 code: tokenized_charge_disabled al listar o cobrar tarjetas guardadas |
El modo 3A no está habilitado en la cuenta |
Pedile a ROKI que lo habilite. Ningún valor de campo lo arregla (23.1.0) |
404 code: payment_not_found (Pago no encontrado) |
Id del otro entorno (creado con sk_test_, consultado con sk_live_ o al revés) |
Usá la llave del mismo entorno |
| Errores mal clasificados después de actualizar |
El cliente compara "could not be found" para detectar una ruta mala |
Ramificá por code - desde el 2026-08-21 el error del id numérico ya no trae ese texto (12.3) |
422 sobre currency_code en sandbox |
El sandbox no está aprovisionado para el comercio |
16.2 - pedile a ROKI que lo habilite |
| Pago creado pero sin impuesto/propina/comisión |
Nombre de campo mal escrito e ignorado |
12.1 - leé warnings en la respuesta y compará contra openapi.yaml |
| No llegan webhooks |
Endpoint registrado en el entorno equivocado, URL no pública, o sin HTTPS |
Revisá el selector sandbox/producción y "Entregas recientes" en el portal |
| Llegan webhooks pero falla la firma |
Se firmó el JSON re-serializado en vez del cuerpo crudo |
14.4, regla 1 |
| Órdenes pagadas que quedan en pendiente |
Confiar en success_url para confirmar |
9.3 - confirmá por webhook o por consulta |
| Pagos duplicados |
Falta Idempotency-Key (external_reference no es único) |
11 |
| El enlace de checkout muere después de un pago |
reusable es false por defecto y el enlace se consume |
8.4 |
| El vencimiento sale corrido seis horas |
Timestamps interpretados como UTC en vez de UTC-6 |
12.4 |