Skip to main content

Colombia Transactions

PSE

PSE is a payment method that allows the customer to make almost instant payments in Colombia, directly from their bank account. Since the PSE has the payer information attached, some contact information fields will be needed and validated from the subject_id. You can check it in Required information for registration (Person) which information we ask for PSE payments.

Apart from the URL, other information related to the payment will also be present among the transaction data. You can use it to keep your customer informed of the payment information and references.

The whole process takes place on the same page. After sending the payload you will receive a URL with the payment link for the customer to pay with PSE. The steps for the payment after entering the link are listed below:

  1. In your checkout page, when the customer is trying to make a payment, a list of bank codes and names is retrieved and listed to the customer;
  2. The customer selects his bank code, and you'll send the payload for the PSE transaction to us. When the transaction is created, in the response a bank payment URL is presented;
  3. You'll share this URL with the customer, and he will be redirected to his/her bank website to make the payment; The link will work only once, for 21 minutes. If the customer visits and closes the window before completing the payment, another payment will need to be generated.
  4. The customer will authenticate the payment in their bank and proceed with the payment.
  5. Once the payment is made and confirmed by the customer, he will be automatically redirected to the specified URL in the transaction payload (your checkout page from the beginning). In up to 3 minutes, the identified webhook will also be received.

[You can also check this flow in this PDF Guide](/sample_docs/PSE Checkout Guide.pdf)

curl -X POST "https://api.facilitapay.com/api/v1/transactions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9...." \
-d '{
"transaction": {
"currency": "COP",
"exchange_currency": "USD",
"value": "850000.00",
"from_pse": {
"financial_institution_code": "1077",
"redirect_url": "your website callback page",
"payment_description": "Some description"
},
"to_bank_account_id": "COP/USD cash-in internal account id",
"subject_id": "Customer id"
}
}'
{
"data": {
"value": "850000.00",
"to_bank_account": {
"routing_number": null,
"pix_info": null,
"owner_name": "REARDEN STEEL CO.",
"owner_document_number": "2348909854385",
"owner_company": {
"social_name": "POWER HOME THEATER",
"id": "f64e512c-1a81-42d9-9ac9-05f369bc98e3",
"document_type": "tax_id",
"document_number": "2348909854385"
},
"nickname": null,
"internal": true,
"intermediary_bank_account": null,
"id": "1ae24ce1-0a08-4c70-8aaa-c86d89ab32fa",
"iban": null,
"flow_type": "cash_in",
"currency": "USD",
"branch_number": null,
"branch_country": "COL",
"bank": {
"swift": null,
"name": "Internal",
"ispb": null,
"id": "6facab8d-573e-44d0-a4bd-ce2600368263",
"country": "COL",
"code": "999"
},
"account_type": "conta-corrente",
"account_number": null,
"aba": null
},
"subject_is_receiver": false,
"subject_id": "b40e39db-9e7e-4156-88b9-9f8035c3083f",
"subject": {
"updated_at": "2024-10-11T19:16:27.662717",
"status": "approved",
"social_name": "Samuel Giraldo",
"rfc_pf": null,
"required_clearance_level": 2,
"references": [],
"phone_number": "38547284",
"net_monthly_average_income": "0.00",
"inserted_at": "2023-09-21T12:27:34.464365",
"id": "b40e39db-9e7e-4156-88b9-9f8035c3083f",
"fiscal_country": "Colombia",
"email": "[email protected]",
"document_type": "cc",
"document_number": "1037633285",
"clearance_level": 2,
"birth_date": null,
"address_street": "Cr 19",
"address_state": "Armenia",
"address_postal_code": "63001",
"address_number": "1N",
"address_neighborhood": "Cali Bajo",
"address_country": "Colombia",
"address_complement": "L 14",
"address_city": "Armenia"
},
"status": "pending",
"source_name": "Samuel Giraldo",
"source_document_type": "cc",
"source_document_number": "1037633285",
"from_pse": {
"bank_name": "BANKA",
"creation_date": "2024-10-11",
"payment_description": "Some description",
"payment_url": "https://registro.desarrollo.pse.com.co/PSENF/index.html?enc=qjv4QWD38K9atOF4VWIlw2%2bJNppHqvIffA%2fOFpqf5Tk%3d",
"ticket_id": 10014,
"trazability_code": "4358727"
},
"meta": {},
"inserted_at": "2024-10-11T19:16:27.644009",
"id": "261750da-68af-4566-b143-6d19846b9541",
"from_credit_card": null,
"from_bank_account": {
"routing_number": null,
"pix_info": null,
"owner_name": null,
"owner_document_number": null,
"nickname": null,
"intermediary_bank_account_id": null,
"id": "00000000-0000-0000-0000-000000000025",
"iban": null,
"currency": "COP",
"branch_number": "5",
"branch_country": null,
"bank": {
"swift": null,
"name": "BANCOLOMBIA QA",
"ispb": null,
"id": "cb45e068-2010-44e0-a12b-91dd40f56ef7",
"country": "COL",
"code": "1007"
},
"account_type": "conta-corrente",
"account_number": "6789",
"aba": null
},
"for_exchange": true,
"exchange_under_request": false,
"exchange_currency": "USD",
"estimated_value_until_exchange": false,
"currency": "COP",
"cleared": true,
"bank_transaction": null
}
}

HTTP Request

POST /transactions

Body Parameters

ParameterDescriptionTypeRequired
transactionAn object containing all the required valuesobjecttrue
currencySource currency for the transaction (ISO 4217 format)stringtrue
exchange_currencyCurrency to be exchanged (ISO 4217 format)stringtrue
valueValue to be exchanged (in the source currency)stringtrue
from_pseAn object, containing the following parameters:objecttrue
from_pse.financial_institution_codeBank code obtained using the PSE banks endpoint. More info on this in the next sectionstringtrue
from_pse.redirect_urlThe URL from your website/platform in which the customer will be redirected upon finishing paymentstringtrue
from_pse.payment_descriptionAny description with up to 80 characters related to the payment. Will be displayed on the confirmation page and recorded among the transaction informationstringfalse
to_bank_account_idID of the account you will send the funds after the PSE is paidstringtrue
subject_idID of your customerstringtrue

This subject must have the following attributes filled: address_street, address_number, phone_area_code, phone_number and email *

Field Requirements

FieldRequirements
social_nameMaximum length of 64 characters
address_street + address_number + address_complement + address_cityMaximum length of 64 characters
emailMaximum length of 120 characters. Notice that this e-mail will receive receipts and OTP codes even in sandbox mode, so provide a valid e-mail address when testing
phone_area_codeMaximum length of 3 characters
phone_numberMaximum length of 7 characters

PSE Error Handling

When a PSE transaction cannot be processed, the transaction is returned with status: "canceled" and a canceled_reason field describing the issue. Below are the possible error messages:

canceled_reasonDescription
Transaction amount exceeds maximum allowed for PSEThe value exceeds the maximum limit allowed by PSE for a single transaction.
The transaction amount is in an invalid format or is zero. Expected format: up to 12 integer digits with exactly 2 decimal places (14 total significant digits; e.g. 50000.00). Please verify the value and try again.The transaction value is zero or could not be processed. Ensure the value field is a valid positive number.
The bank entity cannot be contacted to initiate this transaction. Choose another one or try again later.The selected bank is temporarily unavailable. The customer should select a different bank or retry later.
Unable to create the PSE. Try again later or contact the support.A generic error occurred during PSE creation. Retry the transaction or contact Attrus support.

PSE banks

This endpoint is used to get the list of supported bank institutions for PSE in Colombia. You'll need to request it once a week, as it is updated on this frequency, and you'll use the results to populate a dropdown list in the same order they are returned. Note that the list returned in the production environment may have slight differences from the one returned in the sandbox environment.

The first result in the list is always A continuación seleccione su banco, which is the only item that is not a bank. It should be used as a placeholder in your dropdown list.

curl -X GET "https://api.facilitapay.com/api/v1/bank_accounts/pse" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9...."
200OK
{
"data": [
{
"name": "A continuación seleccione su banco",
"code": "0"
},
{
"name": "ALIANZA FIDUCIARIA",
"code": "1815"
},
{
"name": "BAN100",
"code": "1558"
}
]
}

HTTP Request

GET /bank_accounts/pse

Payout (COP)

After registering your customer bank account with us, you will be able to pay them locally using the following endpoint. We will use the Bank details you registered with us.

The payout transactions can be initiated within your foreign currency cash-out account or your Colombian cash-out account.

*If you prefer to do a payout with the full value already in local currency, please refer to section Reverse Exchange of this documentation.

curl -X POST "https://api.facilitapay.com/api/v1/transactions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9...." \
-d '{
"transaction": {
"currency": "USD or COP",
"exchange_currency": "COP",
"value": "500.00",
"from_bank_account_id": "your USD/COP cash-out internal account id",
"to_bank_account_id": "the id of your customer bank account",
"subject_id": "your customer id"
}
}'
200OK
{
"data": {
"value": "500.00",
"to_bank_account": {
"routing_number": null,
"pix_info": null,
"owner_name": "Carlos Jose",
"owner_document_type": "cc",
"owner_document_number": "8001972684",
"owner_company": {
"social_name": "Carlos Jose Alvarenga Custodio",
"id": "5bb4748b-ac59-41a3-8a22-751d49f0f525",
"document_type": "cc",
"document_number": "8001972684"
},
"nickname": null,
"intermediary_bank_account": null,
"id": "50d45ba5-2dc4-4784-b35b-65443ce9caac",
"iban": null,
"currency": "COP",
"branch_number": "123",
"branch_country": "COL",
"bank": {
"swift": null,
"name": "Banco Colombia",
"ispb": null,
"id": "69185e6c-9a0c-49a4-bc9c-38d0a5ebff05",
"country": "COL",
"code": "123"
},
"account_type": "conta-corrente",
"account_number": "1234567890",
"aba": null
},
"subject_is_receiver": true,
"subject_id": "5bb4748b-ac59-41a3-8a22-751d49f0f525",
"subject": {
"updated_at": "2025-07-10T19:16:14.252158",
"status": "approved",
"social_name": "Carlos Jose Alvarenga Custodio",
"rfc_pf": null,
"required_clearance_level": 1,
"references": [],
"phone_number": "9991456",
"phone_country_code": "57",
"phone_area_code": "601",
"net_monthly_average_income": "2000.00",
"inserted_at": "2025-07-10T19:14:35.558870",
"id": "5bb4748b-ac59-41a3-8a22-751d49f0f525",
"fiscal_country": "Colombia",
"email": "[email protected]",
"document_type": "cc",
"document_number": "8001972684",
"clearance_level": 1,
"birth_date": "1996-12-06",
"address_street": "Rua Moralez Guedes",
"address_state": null,
"address_postal_code": "110010",
"address_number": "125",
"address_neighborhood": "Center",
"address_country": "Colombia",
"address_complement": null,
"address_city": "Bogota"
},
"status": "identified",
"source_name": "Carlos Jose Alvarenga Custodio",
"source_document_type": "cc",
"source_document_number": "8001972684",
"meta": null,
"inserted_at": "2025-07-10T19:19:01.919767",
"id": "0340d8b4-b86b-4fe3-a137-5416d212107e",
"from_credit_card": null,
"from_bank_account": {
"routing_number": null,
"pix_info": null,
"owner_name": "Biriweb Serviços de Internet Ltd",
"owner_document_type": null,
"owner_document_number": "21958642819",
"nickname": null,
"internal": true,
"intermediary_bank_account_id": null,
"id": "6b1d3acf-42b7-4f5a-8d9b-1da2766e040b",
"iban": null,
"flow_type": "cash_out",
"currency": "USD",
"branch_number": null,
"branch_country": null,
"bank": {
"swift": null,
"name": "Internal",
"ispb": null,
"id": "6facab8d-573e-44d0-a4bd-ce2600368263",
"country": "BRA",
"code": "999"
},
"account_type": "conta-corrente",
"account_number": null,
"aba": null
},
"for_exchange": true,
"exchange_under_request": false,
"exchange_currency": "COP",
"estimated_value_until_exchange": false,
"currency": "USD",
"cleared": true,
"bank_transaction": {
"wire_id": null,
"value": "500.0",
"spei_reference": null,
"spei_concepto_de_pago": null,
"source_type": "TED-PRE",
"source_name": "Carlos Jose Alvarenga Custodio",
"source_id": "0340d8b4-b86b-4fe3-a137-5416d212107e",
"source_document_type": "cc",
"source_document_number": "8001972684",
"source_description": "CREDITO POR TED ANTECIPADO",
"source_branch": null,
"source_bank_ispb": null,
"source_bank": null,
"source_account": null,
"movement_date": "2025-07-10",
"iof_value": null,
"inserted_at": "2025-07-10T19:19:01.940236",
"id": "82611bf1-9542-483c-8c7c-7289e8888d3d",
"exchanged_value": null,
"exchange_rate_spot": null,
"exchange_rate": null,
"exchange_id": null,
"exchange_currency": "COP",
"exchange_approved": false,
"currency": "USD"
}
}
}

HTTP Request

POST /transactions

Body Parameters

ParameterDescriptionTypeRequired
transactionAn object containing all the required valuesobjecttrue
currencyCurrency of your internal bank accountstringtrue
exchange_currencyFor PSE, always use COPstringtrue
valueAmount to be sent to Attrus or deducted from an internal bank account balancestringtrue
from_bank_account_idUUID of your internal bank account. Its currency must match the currency informed on the currency attributestringtrue
to_bank_account_idDestination bank account UUID. This bank account must be from your Colombian customerstringtrue
subject_idUUID of your customer, i.e. the owner of the to_bank_account_idstringtrue

Payout Banks (COP)

This endpoint is used to get the list of supported bank institutions for payout COP in Colombia.

curl -X GET "https://api.facilitapay.com/api/v1/banks/cop" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9...."
200OK
{
"data": [
{
"name": "BANCO DE BOGOTA",
"code": "1001",
"ach": true
},
{
"name": "BANCO POPULAR",
"code": "1002",
"ach": true
},
{
"name": "ITAU",
"code": "1006",
"ach": true
},
{
"name": "BANCOLOMBIA",
"code": "1007",
"ach": true
},
{
"name": "CITIBANK",
"code": "1009",
"ach": true
},
{
"name": "BANCO GNB SUDAMERIS",
"code": "1012",
"ach": true
},
{
"name": "BBVA COLOMBIA",
"code": "1013",
"ach": true
},
{
"name": "SCOTIABANK COLPATRIA S.A",
"code": "1019",
"ach": true
},
{
"name": "BANCO DE OCCIDENTE",
"code": "1023",
"ach": true
},
{
"name": "BANCO CAJA SOCIAL BCSC SA",
"code": "1032",
"ach": true
},
{
"name": "BANCO AGRARIO",
"code": "1040",
"ach": true
},
{
"name": "BANCO MUNDO MUJER",
"code": "1047",
"ach": true
},
{
"name": "BANCO DAVIVIENDA SA",
"code": "1051",
"ach": true
},
{
"name": "BANCO AV VILLAS",
"code": "1052",
"ach": true
},
{
"name": "BANCO W",
"code": "1053",
"ach": true
},
{
"name": "BANCO DE LAS MICROFINANZAS",
"code": "1059",
"ach": true
},
{
"name": "BANCO PICHINCHA",
"code": "1060",
"ach": true
},
{
"name": "BANCOOMEVA",
"code": "1061",
"ach": true
},
{
"name": "BANCO FALABELLA S.A.",
"code": "1062",
"ach": true
},
{
"name": "BANCO FINANDINA S.A.",
"code": "1063",
"ach": true
},
{
"name": "BANCO SANTANDER DE NEGOCIOS COLOMBIA S.A",
"code": "1065",
"ach": true
},
{
"name": "BANCO COOPERATIVO COOPCENTRAL",
"code": "1066",
"ach": true
},
{
"name": "MIBANCO S.A.",
"code": "1067",
"ach": true
},
{
"name": "BANCO SERFINANZA S.A",
"code": "1069",
"ach": true
},
{
"name": "LULO BANK S.A.",
"code": "1070",
"ach": true
},
{
"name": "BANCO J.P. MORGAN COLOMBIA S.A.",
"code": "1071",
"ach": true
},
{
"name": "Dale",
"code": "1097",
"ach": false
},
{
"name": "FINANCIERA JURISCOOP S.A. COMPAÑIA DE FINANCIAMIENTO",
"code": "1121",
"ach": true
},
{
"name": "COOPERATIVA FINANCIERA DE ANTIOQUIA",
"code": "1283",
"ach": true
},
{
"name": "JFK COOPERATIVA FINANCIERA",
"code": "1286",
"ach": true
},
{
"name": "COOTRAFA COOPERATIVA FINANCIERA",
"code": "1289",
"ach": true
},
{
"name": "CONFIAR COOPERATIVA FINANCIERA",
"code": "1292",
"ach": true
},
{
"name": "BANCO UNION S.A",
"code": "1303",
"ach": true
},
{
"name": "COLTEFINANCIERA S.A",
"code": "1370",
"ach": true
},
{
"name": "NEQUI",
"code": "1507",
"ach": true
},
{
"name": "DAVIPLATA",
"code": "1551",
"ach": true
},
{
"name": "BAN100 S.A",
"code": "1558",
"ach": true
},
{
"name": "IRIS",
"code": "1637",
"ach": true
},
{
"name": "MOVII",
"code": "1801",
"ach": true
},
{
"name": "DING TECNIPAGOS SA",
"code": "1802",
"ach": true
},
{
"name": "POWWI",
"code": "1803",
"ach": true
},
{
"name": "UALA",
"code": "1804",
"ach": true
},
{
"name": "BANCO BTG PACTUAL",
"code": "1805",
"ach": true
},
{
"name": "BOLD CF",
"code": "1808",
"ach": true
},
{
"name": "NU COLOMBIA",
"code": "1809",
"ach": true
},
{
"name": "RAPPIPAY",
"code": "1811",
"ach": true
},
{
"name": "COINK",
"code": "1812",
"ach": true
},
{
"name": "GLOBAL66",
"code": "1814",
"ach": true
},
{
"name": "Alianza fiduciaria",
"code": "1815",
"ach": false
},
{
"name": "Crezcamos",
"code": "1816",
"ach": false
}
]
}

HTTP Request

GET /banks/cop