Your first payout
Five calls to deliver Bs 50,000.00 via pago móvil, runnable as-is against the test environment.
BASE=http://localhost:3000 # or https://api.your-domain.comKEY=sk_test_... # get it at bolivarconnect.com/en/api-keys-
Confirm which key you are calling with
Section titled “Confirm which key you are calling with”Ventana de terminal curl -s $BASE/v1/tenant/me -H "x-api-key: $KEY"200 OK {"tenantId": "3f1a0c22-9b41-4a77-8f0e-6d2c5b7a1e34", "name": "Fintech Ejemplo","mode": "test","scopes": ["quotes:write", "beneficiaries:write", "beneficiaries:read","payments:write", "payments:read", "treasury:read","events:read", "events:write"],"apiKeyId": "5c9d2b70-1f44-4c8e-9a3b-2e7f0d5a6b18", "isPlatform": false}modetells you whether you are moving real money. See authentication. -
Get the bank catalog for the method you will use
Section titled “Get the bank catalog for the method you will use”Ventana de terminal curl -s "$BASE/v1/payouts/banks?method=pago_movil" -H "x-api-key: $KEY"200 OK (trimmed) {"method": "pago_movil","data": [{ "code": "0102", "name": "Banco de Venezuela S.A.C.A. Banco Universal", "shortName": "Banco de Venezuela" },{ "code": "0105", "name": "Banco Mercantil, C.A. Banco Universal", "shortName": "Mercantil" },{ "code": "0108", "name": "Banco Provincial, S.A. Banco Universal", "shortName": "Banco Provincial - BBVA" },{ "code": "0134", "name": "Banesco Banco Universal S.A.C.A.", "shortName": "Banesco" }]} -
Quote the exact amount in bolívares
Section titled “Quote the exact amount in bolívares”Ventana de terminal curl -s $BASE/v1/quotes \-H "x-api-key: $KEY" -H 'content-type: application/json' \-d '{"deliver":{"asset":"BS","amount":5000000}}'201 Created {"id": "70ec44b5-c1df-45b1-86fe-8f92c3959689", "fixed": "deliver","spend": { "asset": "BS", "amount": "5050000" },"deliver": { "asset": "BS", "amount": "5000000" },"fee": { "asset": "BS", "amount": "50000" },"rate": null, "status": "open","expires_at": "2026-08-31T20:22:36.022Z", "created_at": "2026-08-31T20:21:36.022Z"}deliveris the Bs 50,000.00 the beneficiary receives,feethe Bs 500.00 fee (an example: your fee depends on your commercial agreement and your volume; seeGET /v1/treasury/volume-fee) andspendthe Bs 50,500.00 debited from you. Amounts are in minor units:BShas 2 decimals, so5000000= Bs 50,000.00. See amounts.If you fund in foreign currency, you fix
spendinstead ofdeliverand the response carries the same fields withratefilled in. See quoting. -
Pay out
Section titled “Pay out”Ventana de terminal curl -s $BASE/v1/payouts \-H "x-api-key: $KEY" -H 'content-type: application/json' \-H 'Idempotency-Key: payout-2026-0001' \-d '{"quoteId":"70ec44b5-c1df-45b1-86fe-8f92c3959689","method":"pago_movil","beneficiary":{"fullName":"María Gómez","nationalId":"V12345678","bankCode":"0138","phone":"04141234567"},"sender":{"nationalId":"V18234112","firstName":"Ana","lastName":"Pérez","phone":"04241234567","email":"ana@example.com"}}'201 Created {"id": "89920401-26da-4f69-b57d-bc20e0366ce2", "status": "submitted","message": "La red de pago aceptó el envío y todavía no lo ha liquidado. Se confirmará por webhook (payment.settled); no lo reintentes con otra Idempotency-Key.","bankReference": null, "asset": "BS", "amount": "5000000","feeAmount": "50000", "totalDebited": "5050000","method": "pago_movil", "methodRequested": "pago_movil", "methodChanged": false,"beneficiaryId": "8ade3e33-6f1c-4d0a-9d33-2c6b0a41f7e2","beneficiary": { "fullName": "María Gómez", "nationalId": "V12345678","bankCode": "0138", "instrument": "pago_movil" }}The API’s
messagetexts are in Spanish; program againststatusanderror.code, never against the message.Four fields that break integrations if you overlook them:
Idempotency-Key. A network retry without it pays twice. See idempotency.beneficiary.phone. Required forpago_movil, where it is the destination. Optional fortransferencia.beneficiary.fullName. A first and last name that look real: a placeholder ends upfailed. The test beneficiaries come without an account holder, and the sandbox does not check ownership; production does.sender. Who orders the transfer. If you do not send it, it is derived fromcustomerIdor from your program’s default sender; with neither, the payment fails before it goes out.
-
Receive the outcome
Section titled “Receive the outcome”The result arrives by webhook, once:
POST to your webhookUrl { "id": "40545", "eventType": "payment.settled", "attempt": 1,"payload": { "paymentId": "89920401-26da-4f69-b57d-bc20e0366ce2","asset": "BS", "amount": "5000000", "method": "pago_movil","bankReference": "012345678901" } }Verify the HMAC signature and deduplicate on
id: delivery is at-least-once. See webhooks. You can also look it up:Ventana de terminal curl -s $BASE/v1/payments/89920401-26da-4f69-b57d-bc20e0366ce2 -H "x-api-key: $KEY"200 OK (trimmed) {"id": "89920401-26da-4f69-b57d-bc20e0366ce2", "status": "settled","payout_asset": "BS", "payout_amount": "5000000", "fee_amount": "50000","method": "pago_movil", "bank_reference": "012345678901","settled_at": "2026-08-31T19:06:44.120Z","events": [{ "to_status": "submitted", "reason": "ledger_committed", "actor": "api" },{ "to_status": "submitted", "reason": "payout_accepted_async", "actor": "api" },{ "to_status": "settled", "reason": "resolved_by_reaper", "actor": "reaper" }]}bank_referenceis the receipt the beneficiary sees at their bank.
What to read next
Section titled “What to read next”| If you are going to… | Read |
|---|---|
| see these calls actually executed | The flow, step by step |
| understand which objects the API handles | How it works |
| pay to an account instead of a phone | Register a beneficiary |
| build your user’s screen | Track the payment |
| reconcile the day | Reconcile a day |
| put this into production | Before production |
API conventions
Section titled “API conventions”| Topic | In one line |
|---|---|
| Base URL | https://api.your-domain.com/v1 · testing: http://localhost:3000/v1 |
| Authentication | x-api-key header. sk_test_… keys do not move real money |
| Amounts | Integers in minor units. Bs 50,000.00 is 5000000. Number in the request, string in the response |
| Idempotency | Idempotency-Key on every payout, always |
| Pagination | Cursor-based (limit + cursor), never offset. Maximum 100 |
| Errors | Program against error.code, never against the message |
| Webhooks | Signed with HMAC-SHA256. At-least-once delivery: deduplicate on id |
| Minimum per transaction | ~Bs 925. Details |
| Cap per transaction | Pago móvil: Bs 100,000.00. Bank transfer: Bs 500,000.00 |