Simular pagos en prueba
En modo prueba nadie paga de verdad: tú decides cómo termina cada cobro con una llamada a la API o desde el panel.
Un cobro creado con kuti_test_… se queda esperando el pago. Para probar tu integración de punta a punta (pantalla de gracias, webhooks, conciliación) simula el resultado: el cobro cambia de estado y recibes los mismos eventos que con un pago real.
Simular el pago de un cobro
- 1
Crea el cobro
POST /payment-intents o POST /checkout-sessions con tu clave de prueba. Guarda el id (pi_…).
- 2
Simula el resultado
POST /payment-intents/{id}/simulate con outcome (SUCCEEDED o FAILED) y, si el cobro ofrece varios métodos, payment_method_type con el método con el que pagó el cliente.
- 3
Verifica
La respuesta trae el cobro actualizado y a tu webhook llega payment.succeeded (o payment.failed).
curl -s -X POST https://api.kuti.pe/v1/payment-intents/pi_01J8Z3K4M5N6P7Q8R9S0T1U2V3/simulate \
-H 'Authorization: Bearer kuti_test_…' \
-H 'Content-Type: application/json' \
-d '{ "outcome": "SUCCEEDED" }'curl -s -X POST https://api.kuti.pe/v1/payment-intents/pi_01J8Z3K4M5N6P7Q8R9S0T1U2V3/simulate \
-H 'Authorization: Bearer kuti_test_…' \
-H 'Content-Type: application/json' \
-d '{ "outcome": "FAILED" }'Con qué método pagó
payment_method_type dice con cuál de los métodos del cobro pagó el cliente. Tiene que ser uno de los que el cobro ofrece (su payment_method_types): si envías otro, responde 422.
| El cobro ofrece | payment_method_type |
|---|---|
| Un solo método | Opcional: se usa ese. |
| INTEROPERABLE_QR y BANK_TRANSFER | Obligatorio: INTEROPERABLE_QR o BANK_TRANSFER. Sin él responde 422. |
| YAPE (Yape afiliado) | No va aquí: usa /payment-intents/{id}/simulate/yape (más abajo). |
curl -s -X POST https://api.kuti.pe/v1/payment-intents/pi_01J8Z3K4M5N6P7Q8R9S0T1U2V3/simulate \
-H 'Authorization: Bearer kuti_test_…' \
-H 'Content-Type: application/json' \
-d '{
"outcome": "SUCCEEDED",
"payment_method_type": "BANK_TRANSFER"
}'El cobro queda pagado con ese método: lo ves en paid_with.method_type de la respuesta y del evento payment.succeeded.
Desde el panel
Con el panel en Modo prueba, abre el cobro en Cobros y usa Simular pago. Hace lo mismo que la llamada a la API.
Pruébalo en el demo
demo.kuti.pe usa estos mismos simuladores: creas un cobro en una tienda de ejemplo, pulsas Simular pago exitoso o rechazado y ves la llamada a la API con su respuesta. Solo necesitas tu clave de prueba.
Yape afiliado, suscripciones y reembolsos
En modo prueba no hay app de Yape: tú simulas lo que haría el cliente y cómo responde el débito. Cada simulador tiene un GET (estado actual) y un POST (simular).
| Qué simulas | Endpoint | Body | Permiso |
|---|---|---|---|
| Yape afiliado en un cobro | /payment-intents/{id}/simulate/yape | affiliation: APPROVE · REJECT · EXPIRE; payment: SUCCEED · INSUFFICIENT_FUNDS · REVOKED · PENDING · ERROR; settle: COMPLETE · DENY | payment_intents |
| Afiliación de una suscripción | /subscriptions/{id}/simulate/yape | Los mismos campos que en un cobro | subscriptions |
| Reembolsos de un cobro | /payment-intents/{id}/simulate/refunds | next_outcome: SUCCEED · PENDING · DENY; settle: { refund_id, result: COMPLETE · DENY } | refunds |
curl -s -X POST https://api.kuti.pe/v1/subscriptions/sub_01J8Z3K4M5N6P7Q8R9S0T1U2V3/simulate/yape \
-H 'Authorization: Bearer kuti_test_…' \
-H 'Content-Type: application/json' \
-d '{ "affiliation": "APPROVE" }'Siguiente
- Demo en vivo — tienda, suscripción y link de pago en modo prueba
- Simular pago — referencia del endpoint
- Prueba vs producción — qué cambia entre modos
- Webhooks — recibe payment.succeeded