Skip to main content

Overview

Venezuela cash-in credits an operative USDT account. Send amount 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

  1. Call GET /api/v1/ve/banks when you want to set the payer bank
  2. POST /api/v1/ve/transactions/inbound with accountId and amount
  3. Poll GET /api/v1/ve/transactions/{id}/status, or set webhookUrl — 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 be Operativa and USDT. Bloqueada or Cerrada returns 403 with code: ACCOUNT_NOT_OPERATIVE.