PSE (Colombia)

Localpayment facilitates PSE transactions, offering a seamless integration flow for merchants.

PSE (Pagos Seguros en Línea) is Colombia’s national online bank transfer platform that enables individuals and businesses to make payments directly from their bank accounts in real-time. Supported by ACH Colombia, PSE allows secure payments without the use of cards, offering a reliable, fast, and widely adopted solution across the country.

With Localpayment’s integration, merchants can initiate a payment via PSE, redirect customers to their bank’s portal to authorize the transfer, and automatically receive a webhook notification when the transaction is completed.

How It Works

The typical payment flow using PSE is as follows:

  1. The merchant sends a POST request to the Create Payin endpoint with payment, merchant, and payer details.

  2. Localpayment returns a redirectUrl in the response.

  3. The merchant redirects the customer to this URL.

  4. The customer is taken directly to their selected bank.

  5. The customer authorizes the payment directly from their bank account.

  6. Localpayment sends a webhook notification once the transaction is completed or cancelled.

By default, payments have a 7-day expiration period.

Available Banks

PSE supports the following financial institutions:

Bank List
  • BANCO DE BOGOTA

  • BANCO POPULAR

  • BANCO ITAU

  • BANCOLOMBIA

  • CITIBANK

  • BANCO GNB SUDAMERIS

  • BANCO BBVA COLOMBIA S.A.

  • SCOTIABANK COLPATRIA

  • BANCO DE OCCIDENTE

  • BANCO CAJA SOCIAL

  • BANCO AGRARIO

  • BANCO MUNDO MUJER

  • BANCO DAVIVIENDA

  • BANCO AV VILLAS

  • BANCAMIA S.A.

  • BANCO PICHINCHA S.A.

  • BANCOOMEVA S.A.

  • BANCO FALABELLA

  • BANCO FINANDINA S.A. BIC

  • BANCO SANTANDER COLOMBIA

  • BANCO COOPERATIVO COOPCENTRAL

  • BANCO SERFINANZA

  • LULO BANK

  • J.P. MORGAN COLOMBIA S.A

  • DALE

  • CFA COOPERATIVA FINANCIERA

  • JFK COOPERATIVA FINANCIERA

  • COTRAFA CONFIAR COOPERATIVA FINANCIERA

  • BANCO UNION antes GIROS COLTEFINANCIERA

  • NEQUI

  • AVIPLATA

  • BAN100

  • IRIS

  • MOVII S.A.

  • UALÁ

  • NU

  • RAPPIPAY

  • ALIANZA FIDUCIARIA S.A.

  • CREZCAMOS

  • BOLD CF

  • DING

Standard Flow

PSE (Pagos Seguros en Línea in spanish) is an electronic payment system in Colombia that allows users to conduct financial transactions securely and efficiently over the Internet. It was developed by ACH Colombia.

PSE functions as an intermediary between the user and the bank. When a user wishes to make a transaction, the PSE system redirects them to their bank's website, where they can authorize the transaction. Once authorized, PSE notifies the merchant, and the transaction is completed.

2 Step Flow

The objective of the "Two-Step PSE" process is to redirect the user to a screen to select their financial institution before proceeding to PSE.

To use this flow, the bank code LP-2S-FLOW LP must be used. Upon receiving this bank code, the user will be redirected to a front-end interface to select the financial institution through which the transaction will be conducted. Once the bank code is captured, the payin is confirmed, and the flow is redirected to PSE to complete the transaction.

PSE

POST https://api.stage.localpayment.com/api/payin

Headers

Name
Type
Description

Authorization*

String

Mandatory. JWT token in format Bearer eyJ0... . For more information about authentication, please refer to Authentication.

Request Body

Name
Type
Description

Bank*

Object

Mandatory. Party object.Payer account data.

Bank.Code*

String

Mandatory. Bank code, according to Localpayment bank code list. For 2 Step Flow always LP-2S-FLOW

Payer*

Object

Mandatory. Party Object. Information related to the payer.

Payer.name*

String

Mandatory. Individual frist name/ company name.

Payer.type*

String

Mandatory. Possible values: COMPANY or INDIVIDUAL

Payer.lastname*

String

Mandatory for individuals / Ignored for companies.

document*

Object

Mandatory. Object.Party Object. Validate indentity document.

Document.Type*

String

Mandatory. Document types: NIT,CC,PASS,CE, IT

Document.Id*

String

Mandatory. Identity document Id, Usually numbers or combination of number qand letters

PaymentMethod*

Object

Mandatory. Payment method details

PaymentMethod.type*

String

Mandatory. BankTransfer

Payment.code*

String

Mandatory. Select among the codes available in each country for a payin BankTransfer payment type.

NOTE: payment method code might affect the collection currency in bimonetary countries. For more info, see the side note on currency field.

Payment.Flow*

String

Mandatory. The payment Method data is collected through an additional form or plugin (REDIRECT). Currently, only REDIRECT flow is allowed.

externalId*

String

Mandatory. An ID that is meaningful to you and your system. It must be unique and alphanumeric, no characters allowed.

country*

String

Mandatory. "COL" Colombia in ISOCode3 format

amount*

number

Mandatory. Amount to charge to your end user. For COP, use 2 decimal places separated by a dot.

currency*

String

Mandatory. The currency in which the amount is expressed. It could be A) the local currency of the selected country or B) the account's currency. If A), the amount will be charged to the customer's cash payment method. If B) and it differs from the local currency, the amount specified will be credited to your account and Localpayment will perform a Foreign Exchange operation to collect the amount expressed in local currency. In bimonetary countries, paymentMethod.code resolves possible ambiguity: the payment will be executed in the currency of that specific payment method network.

accountnumber*

String

Mandatory. Your Localpayment account number in which the amount will be credited.

comment

String

Optional. A comment related to the transaction. It should be something meaningful to your business.

conceptcode*

String

Mandatory. Choose the suitable concept code from our Concept Code List. Based on our experience, the most usual are 0039 (remittances) and 0040 (corporate payments).

Payer.email

String

Optional

phone*

Object

Mandatory.Party Object. Contact phone number

phone.countrycode*

String

Mandatory

phone.number*

String

Mandatory

address

Object

Optional. Party Object Contact address

address.street

String

Optional

address.number

String

Optional

address.city

String

Optional

adress.state

String

Optional

address.country

String

Optional

address.zipcode

String

Optional

address.comment

String

Optional

merchant*

Object

Mandatory. Party Object

merchant.name

String

Mandatory. Individual first name / company name

merchant.type*

String

Mandatory. Values: COMPANY or INDIVIDUAL

externalId*

String

Mandatory. An Id that is meaningful to you and your system. Must be unique

conceptcode*

String

Mandatory. Choose the suitable concept code from our Concept Code List. Based on our experience, the most usual are 0039 (remittances) and 0040 (corporate payments).

{
    "paymentMethod": {
        "type": "BankTransfer",
        "code": "1936",
        "flow": "REDIRECT"
    },
    "externalId": "2dfaf9e8-25e1-4bbb-aa24-ff36aa89601f",
    "country": "COL",
    "amount": 10000,
    "currency": "COP",
    "accountNumber": "170.170.00000011",
    "conceptCode": "0003",
    "comment": "Add any relevant information related to the transaction",
    "merchant": {
        "type": "INDIVIDUAL",
        "name": "John",
        "lastname": "Doe",
        "document": {
            "type": "NIT",
            "id": "2037993831"
        },
        "email": "[email protected]"
    },
    "payer": {
        "type": "INDIVIDUAL",
        "name": "Alicia",
        "lastname": "Doe",
        "document": {
            "type": "CC",
            "id": "9012754183"
        },
        "phone": {
            "areaCode": "57",
            "countryCode": "57",
            "number": "311234567"
        },
        "email": "[email protected]",
        "address": {
            "country": "COL",
            "number": "",
            "state": "BA",
            "city": "BA",
            "street": "Street 12",
            "comment": ""
        },
        "bank": {
            "name": "Bank name",
            "code": "1007"
        }
    },
    "bank": {
        "name": "John Doe",
        "code": "1022"
    },
    "account": {
        "type": "C",
        "number": "130123456"
    },
    "intermediaries": []
}

Redirecting the Customer

The customer should be redirected to the redirectUrl provided in the response. If a valid bank.code was included, the customer will land directly on their bank’s login screen.

At this stage, the transaction will remain in the INPROGRESS status until the payment is completed, manually cancelled, or the transaction expires.

PSE Redirection screen
Bancolombia Login page

PSE is also available through Localpayment’s Payment Links. When a customer selects PSE as the payment method, they will be prompted to enter their personal details and select their bank from the list of supported institutions. Once the bank is selected, the customer will be automatically redirected to their online banking portal to complete the payment.

This integration provides a seamless user experience, allowing merchants to offer PSE payments without requiring a direct API implementation.

For more information, see the Payment Links documentation.

Last updated

Was this helpful?