Overview
Venezuela cash-in credits an operative USDT account. Sendamount as a positive decimal string. Do not send a JSON number. Up to 8 fractional digits may be present. montoFiat and tasaCompra are VES metadata. They are not the ledger amount.
This is not a hosted checkout. Create the cash-in with POST /api/v1/ve/transactions/inbound.
Prerequisites
- Bearer API token with access to the USDT account
- Optional payer-bank name from
GET /api/v1/ve/banks(onramp.banks[].name)
Flow
- Call
GET /api/v1/ve/bankswhen you want to set the payer bank POST /api/v1/ve/transactions/inboundwithaccountIdandamount- Poll
GET /api/v1/ve/transactions/{id}/status, or setwebhookUrl— see Receiving webhooks
Request
Required:accountId, amount.
Optional: bancoPago, webhookUrl.
bancoPago must be an exact onramp.banks[].name. It is not the numeric id, and it is not a country.banks[].label. Omit it to leave the payer bank unset. An unknown name or a raw id returns 400 with code: VE_INBOUND_INVALID_BANCO_PAGO.
Example
ONRAMP_BANK_NAME is a placeholder. Copy the exact name from onramp.banks[].name on GET /api/v1/ve/banks.
Success
201 returns id, status: pending, amount (USDT decimal string), and orden_id. montoFiat and tasaCompra are included only when the create response has them.
Status
GET /api/v1/ve/transactions/{id}/status reads cash-in and payout status. amount is a USDT decimal string.
After payment instructions exist, the body may include inbound-only banco and numero_cuenta. Those pay-in fields are never returned for a payout.
See Payouts for pending_kyc, kyc_url, kyc_expires_at, and cancelledReason.
Errors
Account status
The account must beOperativa and USDT. Bloqueada or Cerrada returns 403 with code: ACCOUNT_NOT_OPERATIVE.
