Payment methods · Colombia
PSE in Colombia: pay-ins straight from the customer’s bank
Offer the bank payment Colombians already know. The customer is redirected to their bank, approves in online banking and you get the final status by signed webhook.
- Bank redirect
- Colombia
- Pay-in
- 09:41:02.11409:41:02PayIn100 INPROGRESS20084 ms
- 09:41:05.90209:41:05PayIn200 COMPLETED20091 ms
- 09:42:18.33009:42:18PayOut100 INPROGRESS20077 ms
- 09:42:40.01809:42:40PayOut200 COMPLETED20088 ms
- 09:43:00.55109:43:00VirtualAccount200 COMPLETED20080 ms
POST https://example-merchant.com/webhooks/localpayment
x-Signature: HMAC-SHA256 3f9a1c0e…b47e2b
{ "transactionType": "PayIn", "transactionFlow": "DIRECT",
"data": { "externalId": "order_8F2K-1043",
"status": { "code": "200", "description": "COMPLETED" } } }Key facts
Colombia pays from the bank account
Sources: Superintendencia Financiera, CCCE, Banco de la República, World Bank.
82.4%
Share of operations through non-in-person channels (% of operations, Q1 2025)
Source: Superintendencia Financiera de Colombia, Informe de operaciones - primer trimestre 2025
684.6 million
E-commerce transactions (2025)
3.6
Daily account-to-account transfers vs card transactions (times, ratio, 2024)
57.1%
Adults with an account, financial institution or mobile money (% of adults 15+, 2024)
Source: World Bank, Global Findex Database 2025 (FX.OWN.TOTL.ZS), 2024
What it is
The bank payment of Colombia
PSE is the online bank payment method used in Colombia. Instead of typing card data, the customer chooses their bank, is redirected to it, signs in to online banking and approves the payment. With Localpayment you create the pay-in through the API and track its status by signed webhook.
- Redirect flow: the payer approves in their own online banking
- Documented limit of up to COP 788,800,000 per transaction
- Asynchronous confirmation, delivered by signed webhook
- 09:41:02.11409:41:02PayIn100 INPROGRESS20084 ms
- 09:41:05.90209:41:05PayIn200 COMPLETED20091 ms
- 09:42:18.33009:42:18PayOut100 INPROGRESS20077 ms
- 09:42:40.01809:42:40PayOut200 COMPLETED20088 ms
- 09:43:00.55109:43:00VirtualAccount200 COMPLETED20080 ms
POST https://example-merchant.com/webhooks/localpayment
x-Signature: HMAC-SHA256 3f9a1c0e…b47e2b
{ "transactionType": "PayIn", "transactionFlow": "DIRECT",
"data": { "externalId": "order_8F2K-1043",
"status": { "code": "200", "description": "COMPLETED" } } }How it works
How a PSE payment works
Actors and steps follow the documented flow. The final status always arrives by signed webhook.
- 1
CustomerYour business:
Selects their bank
At your checkout or through a payment link.
- 2
Your businessLocalpayment:
Redirect to the bank
POST /api/payin/ with country, currency, amount and payer data. The response includes the redirect URL to the payer’s bank, where PSE payment is completed. The payment stays in progress until the bank confirms.
- 3
CustomerBank · PSE:
Approves in their bank
The payer signs in to their online banking and approves the payment. There is no QR to scan.
- 4
LocalpaymentYour business:
Webhook
Localpayment receives the confirmation and updates the transaction. Signed with HMAC-SHA256 (x-Signature). Status 200 means completed; deduplicate on externalId.
Simplified diagram. Timing depends on the rail and the bank; see the key facts below.
How it works
See PSE in action
A simplified, fictitious walkthrough. Names and amounts are examples.
- 1Comercio EjemploThe customer picks PSE to pay COP 350,000.00.
- 2Banco EjemploThe payer is taken to their bank to sign in and authorize.
- 3Payment confirmedYour system receives the signed webhook and releases the order.
Key facts
PSE: key facts
Country
- Detail
- 🇨🇴 Colombia
Currency
- Detail
- COP
Direction
- Detail
- Pay-in only
PSE
- Detail
- Asynchronous, confirmed by webhook · Up to COP 788,800,000
Flow
- Detail
- Redirect to the customer’s bank
Status
- Detail
- Webhook (asynchronous)
Taken from the Localpayment documentation for each country. Limits and availability can change; confirm them with your account manager.
Consumer experience
What your customer sees with PSE
Authorization, limits and refunds as documented on docs.localpayment.com. Limits are shown only where the documentation states them.
How the customer authorizes
The customer is redirected to the PSE page, picks their bank and person type, logs into online banking and confirms the payment there. The session has an expiration date (about seven days in the documented example); the pay-in moves from 100 (INPROGRESS) to 103 (APPROVED) and 200 (Completed) by webhook.
Documented limits
PSE (Pay-in): Up to COP 788,800,000. Per transaction, as published in the documentation; contractual limits may differ.
Refunds and returns
A completed pay-in can be refunded with PATCH /api/payin/{externalId}/refund. Only full refunds are supported; the money goes back to a bank account of the payer and the transaction ends in status 902 (REFUNDED). While a payment is still pending it can be canceled instead.
Integration checklist
Go live with PSE in five steps
The same sequence for every rail. Watch the animated checkout for this country before you build.
Get Stage credentials
Request access, receive sandbox credentials and obtain a JWT with POST /api/token/.
Create the pay-in
POST /api/payin/ with the Localpayment code from the key facts table, ISO-3 country, currency, amount and payer data.
Show the instructions
Render the QR, code, redirect or account details from the response and respect the expiration date.
Verify the webhook
Validate x-Signature (HMAC-SHA256), release the order on status 200 and deduplicate on externalId.
Watch the animated checkout
Every method of this country, screen by screen, in the checkout experiences gallery.
History
From bank redirect to instant keys
Sources: ACH Colombia (PSE); Banco de la República, Bre-B technical document, Feb 2026.
PSE is created
ACH Colombia launches Pagos Seguros en Línea so shoppers can pay online by logging into their own bank and authorizing a debit.
The default for e-commerce
PSE becomes the standard account-to-account checkout in Colombia, used by individuals and companies for retail, bills and taxes.
Instant-payments regulation
Banco de la República publishes its instant-payments strategy and the rules for low-value payment systems (SPBVI) that will interoperate.
Bre-B goes live alongside PSE
The central bank’s interoperable key-based system starts; PSE continues as the browser-based bank redirect for e-commerce.
Why Localpayment
Why use PSE with Localpayment
One API for pay-ins and payouts
PSE runs on the same API as every other method: POST /api/payin/ to collect, POST /api/payout/ to pay out, and new markets by configuration.
Webhook status on every transaction
Every status change is pushed to your endpoint, signed with HMAC-SHA256, so you can verify and automate.
Reconciliation in the Business Portal
Match every transaction through your externalId and our internalId, with Business Portal reports and balance APIs.
Keep exploring
Pay-ins
Collect in local currency with the methods people actually use.
Pay-ins —Colombia
Methods, rails, currencies and licenses in Colombia.
Colombia —Bre-B
Rails, limits and flow, step by step.
Bre-B —TransfiYa
Rails, limits and flow, step by step.
TransfiYa —Methods by country
The full directory of documented pay-ins and payout rails.
Methods by country —
FAQ
PSE: frequently asked questions
How does a PSE payment work?
The customer picks PSE at your checkout, is redirected to their bank, signs in to online banking and approves. Confirmation is asynchronous: the final status reaches you by signed webhook, so build your order flow around it.
What is the PSE limit?
The documented limit is up to COP 788,800,000 per transaction. See the key facts table above and confirm your limit with your account manager.
Does PSE use a QR code?
No. PSE is a bank redirect: the payer approves inside their bank’s online banking. For QR-style instant payments in Colombia, see Bre-B.
What does status 103 (APPROVED) mean?
The bank confirmed the debit but the funds are not credited to Localpayment yet. Wait for status 200 (Completed) in the signed webhook before you release goods.
Can a PSE payment be refunded?
Yes, in full, with PATCH /api/payin/{externalId}/refund on a completed transaction; the refund is sent to a bank account of the payer and the pay-in ends in 902 (REFUNDED). Partial refunds are not supported.
Why was my pay-in rejected with 811?
Code 811 means the amount is above or below the allowed range for the method. Check the key facts table and your contract limits.
Does PSE work for companies as well as individuals?
PSE supports natural and legal persons; the customer selects the person type on the PSE page and signs in to the matching bank profile.
Add PSE to your payments
Tell us your markets and volumes. We start you on Stage (sandbox) credentials and guide you to go-live.

Bank redirect