rail: "PSE" when you want the payer to authenticate the payment with a supported Colombian bank through the PSE flow.
Before implementing this rail:
- Review How to create your first payin for the shared request fields and lifecycle.
- Configure webhooks to receive the final payin outcome asynchronously.
- Treat
callbackUrlas the payer return URL, not as the source of truth for payment confirmation.
How the PSE flow works
- Create the payin with
rail: "PSE"and include the selected bank inpse.bank. - HelloPay starts the payin in
PROCESSING. - Right after creation,
sourceData.pseUrlisnull. - Poll the payin until HelloPay updates
sourceData.pseUrlwith the redirect URL for the payer. - The payer completes the authorization through the PSE bank flow.
- HelloPay sends webhook events such as
payin.confirmed,payin.canceled, orpayin.declined. - After the payer finishes the flow, HelloPay redirects them to your
callbackUrl.
Request example
This flow is asynchronous. After creating the payin,sourceData.pseUrl is initially null, so you must poll the transaction until the redirect URL is available.
Request fields
amountInCents: amount to collect, expressed in cents.currency: currentlyCOP.rail: must bePSE.reference: your internal identifier for this payin.inlineCustomer: customer information used during the payment flow. Supported document types are listed in How to create your first payin.pse.bank: bank selected by the payer from the supported PSE bank list.pse.personType: payer type. Supported values areINDIVIDUALandBUSINESS.callbackUrl: URL where the payer is redirected after leaving the PSE flow.
Supported banks
Use one of the following values inpse.bank:
Supported person types
Use one of the following values inpse.personType:
Response example
What the response means
status: "PROCESSING"means the payin was created and is waiting for the payer to complete the PSE flow.sourceData.pseUrlisnullin the creation response and is filled later when you poll the payin again.sourceDataalso includes the PSE-specific data associated with the payin, such as the selected bank and person type.- The final outcome is delivered asynchronously through webhooks, so do not treat the creation response as the final payment result.

