PSE

PSE is an online bank transfer system in Colombia that allows customers to pay directly from their bank accounts securely. Bamboo supports two payment flows depending on the merchant integration model.


Payment Flow


  1. (Optional – Merchant-managed flow)
    If the merchant sends the bank code and customer type, Bamboo skips the PSE selection screen and redirects directly to the PSE flow.
  2. The payer accesses the PSE page to confirm their email and identify as a Natural or Legal person.
  3. PSE redirects the payer to their selected bank’s website to log in and authorize the payment.
  4. The bank processes the transaction through the PSE network and displays a payment confirmation screen.
  5. Bamboo redirects the payer to the merchant’s result URL (APPROVED, REJECTED, or PENDING) and sends the final status asynchronously to the configured Webhook URL.
💡

When the merchant does not send the bank code, Bamboo handles the redirection to the PSE interface automatically. If the bank code is included, the customer is taken directly to their selected bank’s login page.


↩️

Redirect Flow for PSE

This payment method uses a Redirect flow.
The API response includes an Action and the purchase remains in Pending status until the customer completes the payment in the Internet Banking.


Request parameters

The following parameters are required specifically for this payment method.
Refer to the Purchase operation guide for standard fields and authentication requirements.

PropertyTypeMandatory?Description
PaymentMethodstringYesUse PSE as the payment method code. Find the value in the table Payment Method
TargetCountryISOstringYesDestination country, must be CO.
CustomerEmailstringYesCustomer’s email.
CustomerFirstNamestringYesCustomer’s first name.
CustomerLastNamestringYesCustomer’s last name.
CustomerDocumentTypestringYesCustomer’s document type. See Document types.
CustomerDocumentNumberstringYesCustomer’s document number.
CustomerPhoneNumberstringYesCustomer’s phone number.
CustomerAddressCountrystringNoCountry ISO code (CO).
CustomerAddressStatestringNoDepartment or state of residence.
CustomerAddressCitystringNoCity of residence.
CustomerAddressAddressDetailstringYesStreet address and number.
CustomerAddressPostalCodestringNoPostal or ZIP code.
MetaDataInfinancialInstitutionCodestringConditionalBank code from the Bank List Endpoint. If not sent, Bamboo handles bank selection.
MetaDataInpersonTypestringConditionalType of person performing the transaction:
1 = Natural Person,
2 = Legal Entity.
MetaDataInidentificationTypestringConditionalIdentification type for the transaction. RegistroCivilDeNacimiento, TarjetaDeIdentidad, CedulaDeCiudadania, TarjetaDeExtranjeria, CedulaDeExtranjeria, Pasaporte, DocumentoDeIdentificacionExtranjero, NIT.
RedirectionUrl_ApprovedstringNoURL to redirect when the payment is Approved.
RedirectionUrl_RejectedstringNoURL to redirect when the payment is Rejected.
RedirectionUrl_CanceledstringNoURL to redirect when the payment is Canceled.
RedirectionUrl_PendingstringNoURL to redirect when the payment is Pending.
ℹ️

If the financialInstitutionCode is not provided, Bamboo displays the bank list automatically during redirection.
The default expiration time for PSE transactions is 21 minutes and cannot be modified.


Request example

To test this endpoint, use the API Reference or the Postman Collection

{
  "PaymentMethod": "PSE",
  "Order": "CO-PSE-001",
  "Amount": 250000,
  "Currency": "COP",
  "Description": "Online purchase via PSE",
  "TargetCountryISO": "CO",
  "Customer": {
    "FirstName": "María",
    "LastName": "López",
    "Email": "[email protected]",
    "DocumentType": "CC.CO",
    "DocumentNumber": "10203040",
    "PhoneNumber": "3001234567",
    "Address": {
      "AddressDetail": "Calle 123 #45-67",
      "City": "Bogotá D.C",
      "State": "Bogota D.C",
      "Country": "CO"
    }
  },
  "MetaDataIn": {
    "financialInstitutionCode": "1051",
    "personType": "1",
    "identificationType": "CedulaDeCiudadania"
  },
  "Redirection": {
    "Url_Approved": "https://merchant.com/checkout/success",
    "Url_Rejected": "https://merchant.com/checkout/failure",
    "Url_Pending": "https://merchant.com/checkout/pending"
  }
}

Response parameters

The API returns the purchase with status PENDING and an Action object that indicates a redirection is required. Depending on the integration flow:

  • If the bank code was included (financialInstitutionCode), the customer is redirected directly to the selected bank.
  • If no bank code was provided, Bamboo displays the PSE selection screen (step 1) where the customer can choose their bank.
PropertyTypeDescription
ActionURLstringURL where the payer is redirected to complete the payment. This can be either the selected bank’s login page or the PSE bank selection interface.
ActionReasonstringReturns REDIRECTION_NEEDED_EXTERNAL_SERVICE to indicate that user action is required on an external site.
StatusstringCurrent purchase status. For PSE payments, it is returned as PENDING until the bank confirms the transaction.
MetadataOutPaymentExpirationDatedateExpiration date and time of the transaction. The default validity is 21 minutes and cannot be changed.
TransactionIdstringUnique identifier of the transaction generated by Bamboo.
PaymentMethodBrandstringReturns PSE. Identifies the payment method used.
PaymentMethodTypestringIndicates the payment method type. For PSE, the value is BankTransfer.
ℹ️

The payer will be redirected to one of the URLs defined in the Redirection object based on the final transaction result (Approved, Rejected, Canceled, or Pending).
Bamboo also sends an asynchronous notification to the Webhook URL configured in the request or merchant account.


Example response

{
    "TransactionId": "79632697147789184",
    "Result": "ACTION_REQUIRED",
    "Status": "PENDING",
    "ErrorCode": null,
    "ErrorDescription": null,
    "Created": "2024-08-07T17:51:54.620",
    "AuthorizationDate": null,
    "AuthorizationCode": null,
    "Amount": 100000,
    "Currency": "COP",
    "TaxableAmount": null,
    "Tip": null,
    "Url": "https://api.stage.bamboopayment.com/Purchase/79632697147789184",
    "MetadataOut":null,
    "Action": {
        "SessionId": "CA_cc155768-74d9-4efd-8e55-42411b4dd3cf",
        "URL": "https://redirect.stage.bamboopayment.com/CA_cc155768-74d9-4efd-8e55-42411b4dd3cf",
        "Reason": "REDIRECTION_NEEDED_EXTERNAL_SERVICE"
    },
     "PaymentMethod": {
        "Brand": "PseAvanza",
        "CardOwner": null,
        "Bin": null,
        "IssuerBank": null,
        "Type": "BankTransfer",
        "Expiration": null,
        "Last4": null
    }
}



Bank List Endpoint

Merchants can retrieve the list of available banks for PSE payments using this endpoint.
The result includes each bank’s code and name, which must be used in the MetaDataInfinancialInstitutionCode field when the merchant handles bank selection manually.

EnvironmentURL
Staginghttps://pse.stage.bamboopayment.com/api/Bank/GetBanks
Productionhttps://pse.prod.bamboopayment.com/api/Bank/GetBanks

Response parameters

PropertyTypeDescription
bankCodestringBank identification code used in the MetaDataIn.financialInstitutionCode field.
bankNamestringOfficial name of the bank.
statusstringIndicates whether the bank is currently available (ACTIVE) or temporarily disabled (INACTIVE).

Example response

{
  "banks": [
    {
      "bankCode": "1051",
      "bankName": "Banco de Bogotá",
      "status": "ACTIVE"
    },
    {
      "bankCode": "1052",
      "bankName": "Bancolombia",
      "status": "ACTIVE"
    },
    {
      "bankCode": "1061",
      "bankName": "Davivienda",
      "status": "ACTIVE"
    }
  ]
}

ℹ️

Use the bankCode value to redirect the payer directly to their selected bank by including it in the
MetaDataInfinancialInstitutionCode field of the purchase request.



Discover the API

Once you’re familiar with how to create a purchase, you can test your integration using our API Reference