Bank withdrawals

Withdraw funds to a registered bank account in Colombia in COP or USD.

All endpoints require authentication with Authorization: Bearer [TOKEN] and x-api-key.


Summary by currency

CountryCurrencyMethod
πŸ‡¨πŸ‡΄ ColombiaCOPDirect bank transfer
πŸ‡ΊπŸ‡Έ United StatesUSDDigital payment / manual transfer

πŸ‡¨πŸ‡΄ Withdrawals Colombia (COP)

Complete flow to send money to Colombian bank accounts.

Get bank list

Check available banks.

Get document types

Check valid document types.

Create bank account

Register beneficiary account.

Create withdrawal

Execute transfer.


Step 1: Get bank list

Get bank list

Authorizations

Both x-api-key and Authorization: Bearer <token> headers are required.

Endpoint

GEThttps://dev.backend.colurs.co/list_third_party_banks/

Required Headers

Content-Type: application/jsonAccept: application/jsonx-api-key: [API_KEY]Authorization: Bearer [ACCESS_TOKEN]

Request Body

FieldTypeRequiredDescription
countrystringβœ“Code e.g. CO, US

Response

response.json
[
{ "id": 0, "name":  "Bancolombia"},
{ "id": 1, "name":  "Banco de Bogota"},
{ "id": 2, "name":  "Davivienda"},
{ "id": 3, "name":  "BBVA Colombia"}
]
πŸ’‘
Save bank `id` to use when creating bank account.

Step 2: Get document types

Get document types

Authorizations

Both x-api-key and Authorization: Bearer <token> headers are required.

Endpoint

GEThttps://dev.backend.colurs.co/base/document_type/

Required Headers

Content-Type: application/jsonAccept: application/jsonx-api-key: [API_KEY]Authorization: Bearer [ACCESS_TOKEN]

Response

response.json
[
{ "id": 0, "name":  "CC"},
{ "id": 1, "name":  "CE"},
{ "id": 2, "name":  "NIT"},
{ "id": 3, "name":  "TI"},
{ "id": 4, "name":  "PPT"}
]

Document types

IDCodeDescription
0CCCitizenship ID
1CEForeigner ID
2NITTax identification number
3TIIdentity card
4PPTTemporary protection permit

Step 3: Create bank account

Create bank account

Authorizations

Both x-api-key and Authorization: Bearer <token> headers are required.

Endpoint

POSThttps://dev.backend.colurs.co/create_third_party_banks/

Required Headers

Content-Type: application/jsonAccept: application/jsonx-api-key: [API_KEY]Authorization: Bearer [ACCESS_TOKEN]

Request Body

FieldTypeRequiredDescription
account_holder_namestringβœ“Account holder full name
account_typeintβœ“0 = Savings, 1 = Checking
account_holder_document_typeintβœ“Document type ID
account_holder_documentstringβœ“Document number
account_numberstringβœ“Bank account number
bank_nameintβœ“Bank ID
country_registeredstringβœ“CO for Colombia
nicknamestringβœ•Alias to identify account

cURL Example

curl -X POST "https://dev.backend.colurs.co/create_third_party_banks/" \
-H "Authorization: Bearer [TOKEN]" \
-H "x-api-key: [API_KEY]" \
-H "Content-Type: application/json" \
-d '{
  "account_holder_name": "Sofia Martin",
  "account_type": 0,
  "account_holder_document_type": 0,
  "account_holder_document": "12345678",
  "account_number": "58200011161",
  "bank_name": 0,
  "country_registered": "CO",
  "nickname": "Main Account"
}'

Response

response.json
{
"code_transaction": "OK",
"data": {
  "id": 85,
  "account_holder_name": "Sofia Martin",
  "account_type": 0,
  "account_holder_document_type": 0,
  "account_holder_document": "12345678",
  "account_number": "58200011161",
  "bank_name": 0,
  "country_registered": "CO",
  "wire": null,
  "routing_number": null,
  "address": null,
  "nickname": 
"Main Account"}
}
**Account types:** `0` = Savings, `1` = Checking.
πŸ’Ύ
Save account `id` to use in the next step.

List bank accounts

List bank accounts

Authorizations

Both x-api-key and Authorization: Bearer <token> headers are required.

Endpoint

GEThttps://dev.backend.colurs.co/list_third_party_banks/

Required Headers

Content-Type: application/jsonAccept: application/jsonx-api-key: [API_KEY]Authorization: Bearer [ACCESS_TOKEN]

Request Body

FieldTypeRequiredDescription
countrystringβœ•Filter by country: CO, US

Response

response.json
{
"count": 1,
"next": null,
"previous": null,
"results": [
  {
    "pk": 85,
    "account_holder_name": "Sofia Martin",
    "account_type": 1,
    "account_holder_document_type": 0,
    "account_holder_document": "12345678",
    "account_number": "58200011161",
    "bank_name": 0,
    "state": "Created",
    "country_registered": "CO",
    "wire": null,
    "routing_number": null
  }
]
}

Step 4: Create COP withdrawal

Create COP withdrawal

Authorizations

Both x-api-key and Authorization: Bearer <token> headers are required.

Endpoint

POSThttps://dev.backend.colurs.co/create/third_party_withdraw/

Required Headers

Content-Type: application/jsonAccept: application/jsonx-api-key: [API_KEY]Authorization: Bearer [ACCESS_TOKEN]

Request Body

FieldTypeRequiredDescription
dispersionsarrayβœ“Objects with third_party_bank_id, amount, client_idempotency_key
currencystringβœ“COP or USD
longitudestringβœ•Longitude
latitudestringβœ•Latitude
platformstringβœ•API

Response

response.json
{
"code_transaction": "OK",
"data": {
  "thirdpartywithdraw_id": 102,
  "sales_crypto_id": 0
}
}
πŸ’°
**Quote mode:** Use `is_for_quote: true` to get fee calculation without executing withdrawal. For estimate, use `POST /send/estimate/user/` with send_channel: DALE.

COP withdrawal statuses

StatusCodeDescription
Created0Withdrawal created, pending process
In process1Transfer in progress
Deposited2Funds deposited
Completed3βœ… Withdrawal completed successfully
Rejected4❌ Rejected by bank

πŸ‡ΊπŸ‡Έ United States withdrawals (USD)

Two available methods to send USD to US bank accounts.


⚠️

The endpoint POST /api/digital_payment/ does not exist in OpenAPI (swagger.json). For USD sends, see endpoints documented in USD Wallet and US bank accounts.


Manual USD transfer

Step 1: Create US bank account

Create US bank account

Authorizations

Both x-api-key and Authorization: Bearer <token> headers are required.

Endpoint

POSThttps://dev.backend.colurs.co/create_third_party_banks/

Required Headers

Content-Type: application/jsonAccept: application/jsonx-api-key: [API_KEY]Authorization: Bearer [ACCESS_TOKEN]

Request Body

FieldTypeRequiredDescription
account_holder_namestringβœ“Account holder name
account_typeintβœ“0 = Savings, 1 = Checking
account_holder_document_typeintβœ“Document type ID
account_holder_documentstringβœ“Document number
account_numberstringβœ“Account number
bank_nameintβœ“Bank ID
country_registeredstringβœ“Must be US
routing_numberstringβœ“Bank routing/ABA number
wirestringβœ•Full bank name for SWIFT
addressstringβœ•Bank address
🏦
`routing_number` (ABA) is required for US bank accounts.

Step 2: Create USD withdrawal

Create USD withdrawal

Authorizations

Both x-api-key and Authorization: Bearer <token> headers are required.

Endpoint

POSThttps://dev.backend.colurs.co/create/third_party_withdraw/

Required Headers

Content-Type: application/jsonAccept: application/jsonx-api-key: [API_KEY]Authorization: Bearer [ACCESS_TOKEN]

Request Body

FieldTypeRequiredDescription
amountdecimalβœ“Amount
currencystringβœ“USD
full_namestringβœ“Full name
emailstringβœ“Email
phonestringβœ“Phone
third_party_bank_idintβœ“Account ID
platformstringβœ“API
is_for_quotebooleanβœ•false

Response

response.json
{
"code_transaction": "OK",
"data": {
  "withdraw_id": 789
}
}
πŸ’΅
**Important:** For withdrawals to US banks, only `USD` currency is allowed. If you use another currency, you will receive `InvalidCurrencyForQuoteWithDraw`.

Fee summary

Fees are calculated automatically based on:

  • Profile configuration (CustomFees)
  • System global fees (GlobalFee)

The system calculates:

  • amount: Amount solicitado
  • fee_amount: Colurs commission
  • fee_iva_amount: VAT over commission
  • gmf_amount: GMF (4x1000) si aplica
  • payed_amount: Total deducted from balance

Common errors

CodeErrorDescription
400BalanceInsufficientInsufficient balance for withdrawal
400InvalidCurrencyForQuoteWithDrawInvalid currency for country
400MarketPlaceUserRequiredActive wallet is required
404BankAccountNotFoundBank account not found
422UnsupportedBankNameUnsupported bank
422UnsupportedDocumentTypeInvalid document type