Developer guide
VEXPay siteAPI reference
Browse documentation

Withdraw your balance

Send available bolívares to your own verified Pago Móvil account, or USDT and USDC to a wallet — from the portal or the API — and follow each payout to the end.

What you will do

Only the available part of a balance can leave. New live credits are held for 24 hours first (see Read balance & holds). Each destination is verified once before the first withdrawal.

  • Bolívares: your own Pago Móvil (cédula/RIF, phone, bank).
  • USDT/USDC: a wallet your business controls, and business verification approved on Live.

Steps: bolívares to your Pago Móvil

  1. Save your payout account

    Portal → Payouts → Tenant instant credit account, or PUT /v1/tenant/payout-account.

  2. Verify it

    Start verification (POST /v1/tenant/payout-account/verify/start), read the two small deposits on your statement, and confirm them within 2 days (POST /v1/tenant/payout-account/verify with amount1 and amount2). After changing the destination later, it waits 1 business day before it can be used.

  3. Withdraw

    Portal → Payouts → Withdraw to Pago Móvil, or POST /v1/payouts/instant with monto (taken from your available balance), concepto and a unique externalRef. The response shows the fee and the net your bank receives.

  4. Follow it

    Wait for payout.completed or payout.failed, or read GET /v1/payouts/by-ref/:externalRef.

curlbash
curl --request POST "${API_URL}/v1/payouts/instant" \
  --header "content-type: application/json" \
  --header "x-api-key: ${VEXPAY_API_KEY}" \
  --data '{ "monto": "5000.00", "concepto": "Weekly withdrawal", "externalRef": "wd-2026-w44" }'

Steps: USDT or USDC to a wallet

  1. Portal: save your payout wallet

    Portal → USDT → Payout wallet: network, address, tag if the network needs one, and a label. Confirm the wallet belongs to your business. It can be used 24 hours after you save or change it.

  2. Portal: withdraw

    Withdraw USDT, enter the amount, check "Network fee" and "Wallet receives", and confirm. Larger amounts wait for a VEXPay review.

  3. API: check the network

    GET /v1/crypto/networks?currency=USDT&amount=… returns the payout fee, the minimum, and whether that amount can be sent now on each network.

  4. API: send

    POST /v1/crypto/payouts with network, address, tag if needed, amount, optional currency and an idempotencyKey. Amount plus fee are taken from that coin's available balance.

curlbash
curl --request POST "${API_URL}/v1/crypto/payouts" \
  --header "content-type: application/json" \
  --header "x-api-key: ${VEXPAY_API_KEY}" \
  --data '{
    "currency": "USDT",
    "network": "TRC20",
    "address": "TXYZ...",
    "amount": "250.00",
    "idempotencyKey": "usdt-wd-0042"
  }'

Check that it worked

  • payout.completed arrived (stablecoins include the txHash).
  • The money shows in your bank or wallet, and the payout appears in Portal → Payouts or USDT.
  • If a payout fails, the amount and its fee return to your available balance at once.

If something goes wrong

SymptomLikely causeWhat to do
422 insufficient_balance with heldVes/heldUsdt and nextReleaseAtPart of the money is still heldWithdraw the available amount now and the rest after nextReleaseAt. Do not retry in a loop.
422 payout_account_not_verified or payout_account_coolingAccount not verified, or changed less than 1 business day agoFinish verification, or wait for payoutEligibleAt.
Status awaiting_approvalIn its first 30 days an account can pay out up to USD 300 in any rolling 24 hours (unless VEXPay set a different limit for you); this payout went over itNo action needed; VEXPay reviews it and sends it or returns the funds.
Bolívar payout stays pendingThe bank has not answered yetDo not create another payout. Wait for payout.completed or payout.failed.
422 destination_cooling / destination_under_review / destination_blockedWallet safety checksWait for the 24 hours to pass, or contact VEXPay.
403 kyb_not_approvedBusiness verification not approved (Live)Finish business verification.
422 network_unavailable or amount_below_minimumThe network cannot send that amount now, or it is under the minimumTry another network or a larger amount.
409 external_ref_conflict / idempotency_key_reusedThe same reference was reused with different dataUse a new reference for a new payout.

Fees: Pricing. Related: Balances & holds · Merchants & payouts · USDT & USDC