Sandbox: Simulated Bank
El 'banco' de Shinkansen para tu proceso de integración
¿Qué es?
SimulatedBank es el "banco" de Shinkansen que puedes usar para integrar nuestros diferentes productos. Los bancos reales no suelen tener un ambiente de pruebas en el cual puedas simular una transacción, por ello hemos creado nuestro banco ficticio, llamado Simulated Bank. Aquí puedes tener una cuenta y enviar payouts, generar notificaciones de payins, probar casos de error, y otras acciones más. El propósito de SimulatedBank es que tengas un acercamiento lo más real posible a un ambiente de producción.
Para poder operar con SimulatedBank:
-
Tu organización se crea automáticamente como parte del proceso de onboarding con Shinkansen. Cuando el equipo de Shinkansen te da de alta, se genera tu organización en SimulatedBank junto con cuentas bancarias pre-configuradas para los países habilitados.
-
Recibirás un email de invitación para acceder a SimulatedBank. Regístrate o inicia sesión en https://simulatedbank.shinkansen.tech usando ese correo y acepta la invitación a tu organización.
-
Una vez dentro de tu organización, encontrarás que ya tienes cuentas bancarias configuradas para los países donde operarás. También puedes crear cuentas adicionales a tu preferencia; verás los diferentes tipos de cuentas y divisas disponibles según el país que selecciones.
-
Ahí te aparecerán los datos que deberás usar en el entorno de prueba en el campo
debtorde tus transacciones de payout. Cuando uses esos datos como cuenta de origen y uses el endpointdev.shinkansen.finance, nuestro switch enviará la solicitud al Simulated Bank. El id de SimulatedBank dentro del esquema Shinkansen esSIMULATED_BANK, esto es lo que deberías poner en el campofinancial_institution.fin_idsi lo necesitas (recordando que para México es suficiente con la cuentaclabe, y en algunos casos en Perú si usas cuentascci).
Gestión de usuarios sandbox
Si necesitas que otros miembros de tu equipo accedan a SimulatedBank, puedes agregarlos como usuarios con perfil sandbox admin desde tu dashboard. Cada nuevo usuario recibirá un email de invitación a SimulatedBank automáticamente. De la misma forma, si eliminas un usuario, se removerá su acceso en SimulatedBank.
Probar Payouts
Para hacer pruebas primero ingresas a una cuenta y presionas el botón que te permite depositar dinero. Ingresa un monto razonable que te permita hacer algunas pruebas (a menos que quieras partir probando el error de falta de fondos 😉).
Luego tienes los siguientes casos:
- Transferir a un destinatario (creditor) en el banco con id
SIMULATED_BANK. En ese caso:- Te saldrá error de cuenta inexistente si usas una cuenta que no ha sido creada en el banco simulado o es una cuenta para simular un caso de error
- Funcionará ok si usas una cuenta correcta (si vas a tu dashboard personal, encontrarás un número de cuenta falso a título personal que puedes usar como cuenta de destino en una prueba exitosa)
- Transferir a un destinatario (creditor) en cualquier otro banco. Acá funcionará todo, excepto cuando el destino (creditor) sea cualquiera de los números de cuenta para simular un caso de error
- Nota que cualquier otro escenario será reportado como exitoso.
🇵🇪 Para pruebas de pagos en MXN o PEN no se indica el identificador del banco
En México usamos la CLABE como número de cuenta para transferir. Este número ya incluye el identificador del banco en sus primeros tres dígitos. Y en Perú usamos el tipo de cuenta CCI que también contiene el identificador del banco en sus tres primeros digitos (vaya coincidencia 😮).
En el ambiente dev, asumimos que cualquier cuenta que comience con 999 es una cuenta de Simulated Bank.
Por lo tanto, cualquier transferencia en el ambiente de pruebas a una cuenta CLABE o CCI que no comience con "999" será reportada exitosa.
Cuentas para simular casos de error
| Número de cuenta | Tipo de Cuenta | Error que recibirás |
|---|---|---|
99900 |
current_account, cash_account, savings_account |
error |
999000000000000000 |
clabe |
error |
99900000000000000000 |
cci |
error |
99901 |
current_account, cash_account, savings_account |
error_creditor_account_not_found |
999010000000000000 |
clabe |
error_creditor_account_not_found |
99901000000000000000 |
cci |
error_creditor_account_not_found |
99902 |
current_account, cash_account, savings_account |
error_creditor_account_detail_mismatch |
999020000000000000 |
clabe |
error_creditor_account_detail_mismatch |
99902000000000000000 |
cci |
error_creditor_account_detail_mismatch |
99903 |
current_account, cash_account, savings_account |
error_creditor_account_over_limits |
999030000000000000 |
clabe |
error_creditor_account_over_limits |
99903000000000000000 |
cci |
error_creditor_account_over_limits |
99904 |
current_account, cash_account, savings_account |
error_creditor_fi_offline |
999040000000000000 |
clabe |
error_creditor_fi_offline |
99904000000000000000 |
cci |
error_creditor_fi_offline |
99905 |
current_account, cash_account, savings_account |
error_payment_rail_offline |
999050000000000000 |
clabe |
error_payment_rail_offline |
99905000000000000000 |
cci |
error_payment_rail_offline |
99906 |
current_account, cash_account, savings_account |
error_debtor_account_over_limits |
999060000000000000 |
clabe |
error_debtor_account_over_limits |
99906000000000000000 |
cci |
error_debtor_account_over_limits |
99907 |
current_account, cash_account, savings_account |
error_debtor_insufficient_funds |
999070000000000000 |
clabe |
error_debtor_insufficient_funds |
99907000000000000000 |
cci |
error_debtor_insufficient_funds |
99942 |
current_account, cash_account, savings_account |
No habrá respuesta del banco. Usado por Shinkansen para protocolos de timeout, pero puedes usarlo también en caso que desarrolles alertas después de X tiempo sin tener una respuesta del banco. |
999420000000000000 |
clabe |
No habrá respuesta del banco. Usado por Shinkansen para protocolos de timeout, pero puedes usarlo también en caso que desarrolles alertas después de X tiempo sin tener una respuesta del banco. |
99942000000000000000 |
cci |
No habrá respuesta del banco. Usado por Shinkansen para protocolos de timeout, pero puedes usarlo también en caso que desarrolles alertas después de X tiempo sin tener una respuesta del banco. |
Cuentas que simulan rechazos de nómina de Bci
Estas cuentas reproducen los motivos de rechazo que informa Bci al procesar pagos por nómina. Úsalas como cuenta de destino (creditor), con tipo current_account, cash_account o savings_account, para probar cómo tu integración maneja cada caso. Cuando hay dos cuentas para un mismo motivo, la primera simula una nómina rechazada por completo y la segunda una nómina pagada con rechazos. En ambos casos tu payout termina con el error indicado.
| Número de cuenta | Motivo que simula | Error que recibirás |
|---|---|---|
99908 |
Operación duplicada | error |
99909 |
El monto de la nómina excede el máximo permitido | error_debtor_account_over_limits |
99910, 99911 |
Error en la validación de la cuenta | error |
99912, 99913 |
El pago excede el monto máximo | error_debtor_account_over_limits |
99914, 99915 |
Cuenta de destino incorrecta | error_creditor_account_not_found |
99916, 99917 |
Cuenta de destino cerrada | error_creditor_account_not_found |
99918, 99919 |
Relación inválida entre RUT y cuenta corriente | error_creditor_account_detail_mismatch |
99920, 99921 |
La cuenta del beneficiario no existe | error_creditor_account_not_found |
99922, 99923 |
El monto excede el máximo permitido | error_creditor_account_over_limits |
99924, 99925 |
La cuenta no existe | error_creditor_account_not_found |
99926, 99927 |
Cuenta cerrada | error_creditor_account_not_found |
99928, 99929 |
La cuenta no corresponde al RUT | error_creditor_account_detail_mismatch |
99930, 99931 |
Cuenta inactiva | error_creditor_account_not_found |
99932 |
Nómina eliminada por el cliente | error |
99933 |
Cargo no efectuado | error |
99934 |
Nómina caducada | error |
Probar una reversa de payout
Así como puedes revertir un payin, también puedes revertir un payout ya enviado para probar el flujo de devoluciones de punta a punta.
Una vez que envías un payout exitoso, este aparece como un movimiento (débito) en la lista de movimientos de la cuenta de origen. Al lado de ese movimiento aparecerá un botón Reverse payout. Al presionarlo se abre un formulario donde eliges el motivo de la devolución (reversal_reason) y confirmas. SimulatedBank entonces:
- Devuelve los fondos a tu cuenta ficticia (un crédito por el monto del payout revertido), y
- Envía una notificación
payout_reversalal webhooknotification_payout_reversal_endpointque hayas configurado en tu dashboard en el modo test.
El botón solo aparece en cuentas de organizaciones
La reversa de payout está disponible sobre los movimientos de payout de una cuenta de organización (el remitente del pago), no sobre cuentas personales.
Para entender qué contiene esa notificación y qué significa cada reversal_reason, revisa Payouts y Devoluciones.
Probar Payins Notifications (Y Reversas)
Para probar notificaciones de payins (abonos a tu cuenta), ingresa a tu organización dentro de SimulatedBank, selecciona una cuenta y presiona el botón Deposit money. El formulario viene prellenado con los datos de tu propia cuenta como ordenante; puedes cambiarlos para simular quién te transfiere (nombre, identificación, cuenta y tipo de cuenta), además del monto y la descripción. Al guardar, el depósito siempre genera dos notificaciones, sin que tengas que marcar ninguna opción:
- Una notificación de
payin, que llega al webhook de payins que hayas configurado en tu dashboard en el modo test. - Una notificación de movimientos (
account_report) con el saldo actualizado de la cuenta (ver Probar movimientos y cartolas).
También recibes un payin cuando un payout de prueba tiene como destino una cuenta de tu organización en SimulatedBank.
Las notificaciones solo se generan en cuentas de organizaciones
Los depósitos y reversas en cuentas personales mueven el saldo, pero no envían notificaciones.
El caso de las reversas de payins es aún más sencillo. Una vez depositado un monto en tu cuenta ficticia, este se agregará a tu lista de movimientos, y al lado del depósito aparecerá un botón Reverse. Si lo presionas, se descontará el monto revertido de tu cuenta ficticia y se enviarán una notificación de payin_reversal y una nueva notificación de movimientos (account_report) con el saldo actualizado. Si quieres saber más sobre esto de las reversas 🇨🇱 te super recomiendo leer este post de nuestro CEO en el que habla sobre esto mismo 😁.
Probar movimientos y cartolas
En el sandbox, la única forma de recibir notificaciones de movimientos y de cartolas es generarlas desde SimulatedBank. Ingresa a una cuenta de tu organización y usa los botones de la parte superior:
| Botón | Notificación que se envía | Qué contiene |
|---|---|---|
Generate account report |
account_report |
El saldo actual de la cuenta y sus últimos movimientos (hasta 100). |
Generate account statement |
account_statement |
La cartola del día (fecha UTC): saldo inicial, saldo final y los movimientos del día (hasta 100). |
Cada notificación se envía al webhook correspondiente que hayas configurado en tu dashboard en el modo test (notification_account_report_endpoint para movimientos y notification_account_statement_endpoint para cartolas). Qué webhooks puedes configurar depende de los productos habilitados para tu organización.
Además del botón, SimulatedBank envía un account_report automáticamente cada vez que depositas, reviertes un payin o reviertes un payout en una cuenta de tu organización.
Los botones solo aparecen en cuentas de organizaciones
Las cuentas personales no muestran estos botones ni generan notificaciones de movimientos o cartolas.
Probar Validator
El entorno dev de Validator te permite probar los 3 posibles return_code que puede devolver el validador:
| Número de cuenta | Tipo de Cuenta | Resultado que recibirás |
|---|---|---|
99900 |
current_account, cash_account, savings_account |
❓ unable_to_validate |
999000000000000000 |
clabe |
❓unable_to_validate |
99901 |
current_account, cash_account, savings_account |
❌invalid_account_details |
999010000000000000 |
clabe |
❌invalid_account_details |
| Cuenta creada en https://simulatedbank.shinkansen.tech | Tipo de cuenta indicado por SimulatedBank | ✅ valid_account_details |
Simulated Bank solo verifica el número de cuenta
Por ahora Simulated Bank NO verifica que los datos de identidad coincidan con la cuenta. Por ende cualquier cuenta existente en Simulated Bank generará validaciones exitosas. Y por eso para probar validaciones fallidas debes usar lo indicado más arriba.
Probar Payins (Interactivos)
Para probar payins interactivos, solo debes usar la cuenta creada para tu organización en SimulatedBank para rellenar los datos correspondientes al creditor. Una vez enviada la petición a Shinkansen, recibirás en la respuesta una URL (interactive_payment_url) que te dirigirá a SimulatedBank, donde podrás ver el estado de la transacción. Si todo es correcto, debería mostrarse un ✅ indicando que el abono fue exitoso y verías en la lista de movimientos de tu cuenta el monto correspondiente. Además, recibirás la respuesta con el estado ok de la transacción en el webhook que configuraste en tu dashboard. Si la transacción no es exitosa, la URL mostrará un estado pending permanente y recibirás la respuesta en tu webhook con estado error, indicando el motivo del mismo.
