🇺🇸 EnglishAPIsBank Withdrawals

Bank Withdrawals

Endpoints to send money to bank accounts in Colombia and the United States.

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


Summary by Currency

CountryCurrencyMethod
🇨🇴 ColombiaCOPDirect bank transfer
🇺🇸 United StatesUSDDigital Payment / Manual transfer

🇨🇴 Colombia Withdrawals (COP)

Complete flow to send money to Colombian bank accounts.

Get bank list

Query available banks.

Get document types

Query valid document types.

Create bank account

Register beneficiary’s account.

Create withdrawal

Execute the transfer.


Step 1: Get Bank List

Query available Colombian banks for withdrawals.

Endpoint

GET /bank_list_third_party_withdraw/

Headers

Authorization: Bearer [ACCESS_TOKEN]
x-api-key: [API_KEY]
Accept: application/json

Response

200 OK
[
  {
    "id": 0,
    "name": "Bancolombia"
  },
  {
    "id": 1,
    "name": "Banco de Bogota"
  },
  {
    "id": 2,
    "name": "Davivienda"
  },
  {
    "id": 3,
    "name": "BBVA Colombia"
  }
]
💡

Save the bank id to use when creating the bank account.


Step 2: Get Document Types

Query valid identity document types.

Endpoint

GET /base/document_type/

Headers

Authorization: Bearer [ACCESS_TOKEN]
x-api-key: [API_KEY]
Accept: application/json

Response

200 OK
[
  {
    "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
1CEForeign ID
2NITTax ID
3TIIdentity Card
4PPTTemporary Protection Permit

Step 3: Create Bank Account

Register the beneficiary’s bank account.

Endpoint

POST /create_third_party_banks/

Headers

Authorization: Bearer [ACCESS_TOKEN]
Content-Type: application/json
x-api-key: [API_KEY]

Request

FieldTypeRequiredDescription
account_holder_namestringAccount holder’s full name
account_typeint0 = Savings, 1 = Checking
account_holder_document_typeintDocument type ID
account_holder_documentstringDocument number
account_numberstringBank account number
bank_nameintBank ID
country_registeredstringCO for Colombia
nicknamestringAlias to identify the account

Account Types

IDType
0Savings Account
1Checking Account

Response

200 OK
{
  "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"
  }
}
💾

Save the account id to use in the next step.


List Bank Accounts

Query registered bank accounts.

Endpoint

GET /list_third_party_banks/?country=CO

Query Parameters

ParameterTypeDescription
countrystringFilter by country: CO, US

Response

200 OK
{
  "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

Execute the transfer to the Colombian bank account.

Endpoint

POST /create/third_party_withdraw/

Headers

Authorization: Bearer [ACCESS_TOKEN]
Content-Type: application/json
x-api-key: [API_KEY]

Request

FieldTypeRequiredDescription
amountnumberAmount to send in COP
currencystringCOP
third_party_bank_idintBank account ID
full_namestringBeneficiary’s full name
emailstringBeneficiary’s email
phonestringBeneficiary’s phone
platformstringAPI, WEB, MOBILE
is_for_quotebooleanfalse to execute, true quote only
longitudestringGPS longitude
latitudestringGPS latitude
client_callbackstringURL for notifications
💰

Quote Mode: Use is_for_quote: true to get fee calculation without executing the withdrawal.

Response

200 OK
{
  "code_transaction": "OK",
  "data": {
    "thirdpartywithdraw_id": 102,
    "sales_crypto_id": 0
  }
}

COP Withdrawal Statuses

StatusCodeDescription
Created0Withdrawal created, pending processing
Processing1Transfer in progress
Deposited2Funds deposited
Completed3✅ Withdrawal completed successfully
Rejected4❌ Rejected by bank

🇺🇸 United States Withdrawals (USD)

Two methods available to send USD to US bank accounts.


Method 1: Digital Payment

Primary method for fast USD transfers.

Endpoint

POST /api/digital_payment/

Headers

Authorization: Bearer [ACCESS_TOKEN]
Content-Type: application/json
x-api-key: [API_KEY]

Request

request.json
{
  "deposit_option": "RTP,BANK",
  "amount": 100.00,
  "currency": "USD",
  "ip": "192.168.1.100",
  "latitude": "40.7128",
  "longitude": "-74.0060"
}

Fields

FieldTypeRequiredDescription
deposit_optionstringOptions: RTP, RTP_FORCE_BANK, BANK (comma-separated)
amountdecimalAmount in USD
currencystringMust be USD
ipstringClient IP
latitudestringGPS latitude
longitudestringGPS longitude

Deposit Options

OptionDescription
RTPReal-Time Payment (fastest)
RTP_FORCE_BANKRTP with bank fallback
BANKTraditional bank transfer
⚠️

Requirement: User must have an active USD wallet account. If not, they’ll receive MarketPlaceUserRequired error.

Internal Process

Account validation

Verifies user has active USD wallet.

Fee calculation

Automatically calculates fees.

Balance validation

Verifies sufficient USD funds.

Payment creation

Generates the digital payment.

Balance deduction

Deducts amount + fees from balance.

Response

201 CREATED
{
  "check_id": "CHK_abc123xyz",
  "date": "2026-02-03T10:00:00Z",
  "amount": 100.00,
  "withdraw_id": 456
}

Possible Errors

CodeErrorDescription
400MarketPlaceUserRequiredUser doesn’t have USD wallet
400UserHaveInsufficientBalanceInsufficient balance
400InsufficientFundsNo available funds

Method 2: Manual USD Transfer

For sending USD to US bank accounts using traditional transfer.

Step 1: Create USA Bank Account

Endpoint

POST /create_third_party_banks/

Request

request.json
{
  "account_holder_name": "John Doe",
  "account_type": 0,
  "account_holder_document_type": 0,
  "account_holder_document": "123456789",
  "account_number": "1234567890",
  "bank_name": 0,
  "country_registered": "US",
  "routing_number": "021000021",
  "wire": "JPMorgan Chase Bank",
  "address": "270 Park Avenue, New York, NY 10017"
}

Additional Fields for USA

FieldTypeRequiredDescription
country_registeredstringMust be US
routing_numberstringBank routing/ABA number
wirestringFull bank name for SWIFT
addressstringBank address
🏦

The routing_number (ABA) is required for United States bank accounts.

Step 2: Create USD Withdrawal

Endpoint

POST /create/third_party_withdraw/

Request

request.json
{
  "amount": 500.00,
  "currency": "USD",
  "full_name": "John Doe",
  "email": "john@example.com",
  "phone": "+14155551234",
  "third_party_bank_id": 90,
  "platform": "API",
  "is_for_quote": false
}
💵

Important: For USA bank withdrawals only USD currency can be used. If you try with another currency you’ll receive InvalidCurrencyForQuoteWithDraw error.

Response

200 OK
{
  "code_transaction": "OK",
  "data": {
    "withdraw_id": 789
  }
}

Fee Summary

Fees are automatically calculated based on:

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

The system calculates:

  • amount: Requested amount
  • fee_amount: Colurs fee
  • fee_iva_amount: VAT on fee
  • gmf_amount: GMF (4x1000) if applicable
  • payed_amount: Total to deduct from balance

Common Errors

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