| 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 |
The route ... could not be found |
Falta /v1 en la base, o se usó un id numérico de pago donde va un UUID de transacción |
Arreglá la URL; anulación/reembolso/recibo se identifican por el UUID de transacción (13.1) |
404 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 |
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 en silencio |
12.1 - compará contra openapi.yaml e inspeccioná la respuesta |
| 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 |