A capture of a payout executed end to end against the paying bank’s test
environment. Bs 1,100.00 went out via pago móvil and Bs 1,871.60 via bank
transfer, to different Venezuelan banks, and the money was deducted from the
balance. The bodies are the ones that went over the wire, with only the
identifiers replaced by their test equivalents; the latencies are those of that
run.
These are ten calls in the order a connected fintech makes them: look up
banks, quote, pay out, check at the bank, retry without paying twice, quote in
foreign currency, pay out through another method, look up the payment, list
the day and check the balance.
The request and response bodies are shown exactly as they traveled, so some
API messages inside them are in Spanish.
Real trace·10 calls·3393 ms wall clock
Pago móvil
Bs 1,100.00 submitted
Bank transfer
Bs 1,871.60 submitted
Closing balance
Bs 499,996,998.50
Captured
September 1, 2026 at 4:18 PM UTC
Step 1 of 10
GET/v1/payouts/banks?method=pago_movil342 ms
1. Look up the banks the method accepts
Returns 31 banks for pago móvil. The first four are shown below; the rest come in the same list.
Response
{
"method": "pago_movil",
"data": [
{
"code": "0001",
"name": "Banco Central de Venezuela",
"shortName": "BCV"
},
{
"code": "0102",
"name": "Banco de Venezuela S.A.C.A. Banco Universal",
"shortName": "Banco de Venezuela"
},
{
"code": "0104",
"name": "Venezolano de Crédito, S.A. Banco Universal",
"shortName": "Venezolano de Crédito"
},
{
"code": "0105",
"name": "Banco Mercantil, C.A. Banco Universal",
"shortName": "Mercantil"
}
]
}
The bank transfer list is shorter. That is why `method` is required.
POST/v1/quotes9 ms
2. Quote an exact amount in bolívares
You fix `deliver` and the beneficiary receives exactly that amount; the fee is added on top in `spend`. With no conversion, `rate` comes back null.
{
"id": "71103d0a-4e59-4a9a-b3c1-de6917b8bbc1",
"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": "110000",
"feeAmount": "1100",
"totalDebited": "111100",
"method": "pago_movil",
"methodRequested": "pago_movil",
"methodChanged": false,
"beneficiaryId": "c8be416d-ceb1-4529-873c-74bce8606894",
"beneficiary": {
"fullName": "Maria Rodriguez",
"nationalId": "V12345678",
"bankCode": "0102",
"instrument": "pago_movil"
}
}
The status is `submitted`, not `settled`: the bank accepted the order and delivers afterwards.
GEThttps://api.disperador/api/v1/transactions/{externalId}210 ms
4. The transaction exists at the bank
Looked up in the paying bank's API by OUR reference. It is the only check in the walkthrough that does not go through our code.
{
"id": "71103d0a-4e59-4a9a-b3c1-de6917b8bbc1",
"asset": "BS",
"amount": "110000",
"method": "pago_movil",
"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.",
"feeAmount": "1100",
"beneficiary": {
"bankCode": "0102",
"fullName": "Maria Rodriguez",
"instrument": "pago_movil",
"nationalId": "V12345678"
},
"totalDebited": "111100",
"bankReference": null,
"beneficiaryId": "c8be416d-ceb1-4529-873c-74bce8606894",
"methodChanged": false,
"methodRequested": "pago_movil"
}
Same `id` as the first call.
POST/v1/quotes9 ms
6. Or quote in dollars, if your balance is in foreign currency
Here you fix `spend` and we return what arrives. SAME response shape as above: only which side you fixed (`fixed`) changes, and `rate` is now filled in.
To pay out bolívares it is usually better to fix `deliver`: with this one the delivered amount comes from the rate, you do not choose it.
POST/v1/payouts1477 ms
7. Pay out via bank transfer
Same endpoint, different method. What identifies the beneficiary changes: a 20-digit account instead of a phone number, although the phone is still required.
{
"id": "a4f320a2-5964-49aa-8628-97a6aa418bd2",
"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": "187160",
"feeAmount": "1890",
"totalDebited": "189050",
"method": "transferencia",
"methodRequested": "transferencia",
"methodChanged": false,
"beneficiaryId": "ae3c8182-d543-46e9-aad0-873da3eeb196",
"beneficiary": {
"fullName": "Juan Perez",
"nationalId": "V23456789",
"bankCode": "0108",
"instrument": "transferencia"
}
}
GET/v1/payments/71103d0a-4e59-4a9a-b3c1-de6917b8bbc15 ms
8. Look up a specific payment
With its status history. `bank_reference` is the receipt the beneficiary asks for, and it appears on settlement.
Accepts `from`, `to`, `status` and `beneficiaryId`. The date range measures SETTLEMENT, not creation: a payment in flight is not part of today's close.
Step 3 returns submitted, not settled. That is the normal outcome on
the payment network. Step 4 confirms it from the paying bank’s API, where the
status is “in progress”. See payment states.
Step 5 repeats the POST /v1/payouts with the same Idempotency-Key and
returns the original payment, with the same id, in 4 ms. See
idempotency.
Steps 2 and 6 are the two ways to quote and return the same shape.
Step 2 fixes deliver; step 6 fixes spend. Between the two bodies, fixed
changes and in step 6 rate is filled in; the field names do not change. See
quote in bolívares.
The only reference for the transfer is bank_reference, the receipt
the beneficiary sees at their bank.