Withdraw to Venezuela
Send USD through Pago Móvil or a bank transfer.
POST /withdraw/ve/ supports two modes. For either mode, first call
GET /withdraw/ve/banks/ and send the selected bank's code as bank_code.
Send "USD" as currency_code. The accepted document_type values are "4",
"13", "14", and "15".
List banks
GET https://dev.cobru.co/withdraw/ve/banks/
Authorization: Bearer <access_token>
x-api-key: <api_key>The response contains available banks in banks.data:
{
"success": true,
"banks": {
"status": "Success",
"statusCode": 200,
"message": "Lista de bancos obtenida exitosamente",
"data": [
{
"codigo": "0156",
"nombre": "100% BANCO",
"logo": "https://example.com/bank-logo.png"
}
]
}
}Send codigo as bank_code. Keep it as a string so leading zeroes are not lost.
Get the rate and commission
Before creating the withdrawal, fetch the USD/VES rate and commission. To retrieve only
the base values, send no body and omit amount. This response was verified against
production:
GET https://prod.cobru.co/withdraw/ve/rates/
Authorization: Bearer <access_token>
x-api-key: <api_key>{
"success": true,
"rates": {
"rate": 711.0,
"commission": 1.0
}
}To quote a withdrawal, send the USD amount as a query parameter:
GET https://prod.cobru.co/withdraw/ve/rates/?amount=333
Authorization: Bearer <access_token>
x-api-key: <api_key>{
"success": true,
"rates": {
"rate": 711.0,
"commission": 1.0,
"debit_amount": 334.0,
"ves_amount": 236763.0
}
}| Field | Meaning |
|---|---|
rate | Venezuelan bolívares delivered per USD. |
commission | Commission added to the USD debit. |
debit_amount | Total USD debit; returned only when amount is provided. |
ves_amount | Total VES delivered; returned only when amount is provided. |
In this example, amount=333, debit_amount=334.0, and ves_amount=236763.0. Without
amount, use only rate and commission; debit_amount and ves_amount do not apply.
Case 1: Pago Móvil
POST https://dev.cobru.co/withdraw/ve/
Content-Type: application/json
Authorization: Bearer <access_token>
x-api-key: <api_key>{
"amount": 1,
"is_movil_pay": true,
"document_type": "14",
"document": "15396329",
"phone": "0414249980",
"currency_code": "USD",
"bank_code": "0174"
}Document-type validation
Send the code as a string. Any value other than "4", "13", "14", or "15"
returns 400 Bad Request.
{
"document_type": [
"Tipo de documento no válido para Venezuela. Códigos permitidos: 4, 13, 14, 15."
]
}Case 2: bank transfer
{
"amount": 20.00,
"is_movil_pay": false,
"document_type": "14",
"document": "18184460",
"account_holder_name": "Juan Perez",
"account_number": "01380040500400254789",
"currency_code": "USD",
"description": "Retiro VE prueba",
"callback": "https://example.com/webhooks/withdrawals",
"bank_code": "0138"
}| Field | Pago Móvil | Bank transfer |
|---|---|---|
is_movil_pay | true | false |
phone | required | omitted |
account_holder_name | omitted | required |
account_number | omitted | required |
Both modes send document_type, document, currency_code, bank_code, and amount.
Always use "USD" as currency_code. The available evidence shows description and
callback as optional.
Creation response
The sandbox returned 201 Created:
{
"amount": "8350.08",
"paid_amount": "20.00",
"fee": "7000.00",
"fee_iva": "1330.00",
"gmf": "0.08",
"id": 5055,
"success": true
}Store id and use the callback to reconcile state changes. These values came from one test
and do not represent a fixed exchange rate or fee.