API reference View as Markdown

Supported coins

The coins that can be paid right now, the network each is sent on, and the lowest price a charge in each can have. Read it from the API rather than hard-coding it: coins are added, and a minimum moves with the market.

The coins on offer

In live mode, with prices in USD at the moment this page was loaded.

Asset Coin Network Confirmations Lowest price
BTC Bitcoin Bitcoin 2, about 20 minutes $0.01
LTC Litecoin Litecoin 3, about 8 minutes $0.01
DOGE Dogecoin Dogecoin 10, about 10 minutes $0.01
BCH Bitcoin Cash Bitcoin Cash 2, about 20 minutes $0.01
ETH Ether Ethereum 6, about a minute $0.01
SOL Solana Solana 32, under a minute $0.01
BNB BNB BNB Chain 15, under a minute $0.01
USDT Tether USD Ethereum (ERC-20) 6, about a minute $10.00
USDC USD Coin Ethereum (ERC-20) 6, about a minute $10.02
USDT_BSC Tether USD BNB Chain (BEP-20) 15, under a minute $0.01
USDC_BSC USD Coin BNB Chain (BEP-20) 15, under a minute $0.01

The asset object

Field Description
id string What the API calls the coin: pass it as asset when you create a charge. The same coin on another network is another asset, so USDT is Tether on Ethereum and USDT_BSC is Tether on BNB Chain.
object "asset" The kind of object.
name, ticker string The coin's name and symbol. Assets of the same coin share them, and a price.
network string The network the customer has to send it on. In test mode, the test network.
contract_address string|null The token's contract on that network, or null for a network's own coin.
decimals integer The decimal places the coin has on its network.
required_confirmations, confirmation_wait integer, string How many confirmations a payment needs before it counts, and about how long that takes, in words.
accepted boolean Whether your account takes it right now, which needs a payout address for that network. These are the coins listed under meta.accepted_assets on GET /v1/account.
currency string The currency exchange_rate and minimum_price are in: ?currency= when you pass it, otherwise your account's default.
exchange_rate string|null What one unit of the coin is worth in that currency right now, or null while no rate is available. A charge locks the rate when it is created.
minimum_amount string|null The least a charge in it can come to, in the coin itself, or null when the coin has no minimum of its own.
minimum_price string|null The lowest price a charge in it can have right now, in that currency: 0.01 for a coin with no minimum of its own, or null while a coin with one has no rate.

Endpoints

  • GET /v1/assets List every coin that can be paid in the key's mode. Pass ?currency= to choose the currency of the prices; an unknown one answers 422. The list is not paged.
curl "https://api.velirapay.com/v1/assets?currency=EUR" \
  -H "Authorization: Bearer vp_live_…"

{
  "data": [
    {
      "id": "BTC", "object": "asset", "name": "Bitcoin", "ticker": "BTC", "network": "Bitcoin",
      "contract_address": null, "decimals": 8,
      "required_confirmations": 2, "confirmation_wait": "about 20 minutes",
      "accepted": true, "currency": "EUR", "exchange_rate": "68527.48",
      "minimum_amount": null, "minimum_price": "0.01"
    },
    {
      "id": "USDT", "object": "asset", "name": "Tether USD", "ticker": "USDT", "network": "Ethereum (ERC-20)",
      "contract_address": "0xdAC17F958D2ee523a2206206994597C13D831ec7", "decimals": 6,
      "required_confirmations": 6, "confirmation_wait": "about a minute",
      "accepted": false, "currency": "EUR", "exchange_rate": "0.8709",
      "minimum_amount": "10", "minimum_price": "8.71"
    }
  ],
  "meta": { "mode": "live", "currencies": ["USD", "EUR", "GBP", "CAD", "AUD", "CHF", "TRY"] }
}

Minimums

USDT and USDC on Ethereum start at 10 of the token, because paying one out costs enough in gas that a smaller payment would leave you with little. Any other coin can be charged from 0.01 of your currency.

A minimum is in the coin, so minimum_price moves a little with the market: leave some room rather than pricing right on it. It applies to what the customer pays, after any coupon.

POST /v1/charges below a coin's minimum answers 422 under errors.asset. A payment link or an invoice whose price cannot reach it simply does not offer that coin at checkout.

Test mode

With a vp_test_ key, the list holds the coins that can be paid on the test networks, and network names the test network. BNB Chain has no test mode, so its coins are only listed in live mode.

See how to charge a customer →