Available providers
Useinstitution_id to filter banks on the checkout page and payment_type to route webhook logic per bank.
Business-account providers include a multi-signer flow. Personal-only providers complete in one step.
Create a Checkout Session in test mode
Send the request with your test API key. Setpayment_method_types to ["bank_transfer"] so the checkout page renders bank buttons.
Node
id and redirect_url.
Open the checkout and pick a bank
Openredirect_url in a browser and click the bank you want to test. Fintoc redirects you to https://pay.fintoc.com/sandbox/{checkout_session_id}.
Trigger an outcome
The simulator renders a page styled after the selected bank. For business-capable providers (Santander, Banco de Chile, BancoEstado), first pick the scenario:Pago PersonaPago empresa con 1 apoderadoPago empresa con 2 o más apoderados
Pago Persona flow on business-capable providers):
Business payments (1 or 2+ apoderados on Santander, Banco de Chile, BancoEstado):
The 30-second delay reproduces the time it takes for every signer to sign the payment in production.
Inspect the webhooks
Subscribe to these events in your webhook endpoint configuration; the sandbox emits the same payloads as production. The payloads below show only the fields relevant to this flow.Business approved by all signers
The customer clicks Pago aprobado por todos los apoderados. Fintoc sendscheckout_session.finished immediately, then payment_intent.succeeded after 30 seconds.
Business pending approval
The customer clicks Pago pendiente de aprobación. Fintoc sendscheckout_session.finished. The intent stays in requires_action until the remaining signers act. If no one acts before the deadline shown in next_action.expires_at, Fintoc sends payment_intent.expired.
Business rejected
The customer clicks Pago fallido. Fintoc sendscheckout_session.finished and then payment_intent.failed.
Personal succeeded
The customer clicks Pago exitoso. Fintoc sendscheckout_session.finished and payment_intent.succeeded in the same transaction.
Personal failed
The customer clicks Pago fallido. Same structure as personal succeeded, withstatus: "failed".
checkout_session.finished also fires alongside, with payment_resource.payment_intent.status: "failed".
Personal expired
The customer clicks Pago expirado. Fintoc sendscheckout_session.finished and payment_intent.expired.
checkout_session.finished also fires alongside, with payment_resource.payment_intent.status: "expired".
When the payment ends in failed or expired, the payment_intent object may also include an error_reason field describing the failure. The exact values depend on the bank and the reason translator.