Minimum and Maximum Transaction Values
All values on this page are defaults and are merchant-configurable. Treat the tables as indicative and read the live figure from GET /stablecoin/transaction/limits before you transact — see Checking limits at runtime.
Fiat to Stablecoin Transactions — Minimum Values
| Currency | Minimum Value |
|---|---|
| EUR | 1 EUR |
| GBP | 1 GBP |
| USD | 1 USD |
| NGN | 1,500 NGN |
Stablecoin to Fiat Transactions — Minimum Values
Off-ramp minimums are set per network, not per payout currency. Ethereum mainnet carries a higher minimum than every other supported chain because of its gas costs.
| Network | Minimum (USD equivalent) |
|---|---|
Ethereum (mainnet) | 10 |
| Polygon, Base, Arbitrum, Optimism, Solana, BSC, Avalanche, Celo, Tron | 1 |
The minimum applies to the value of the stablecoin you send, is the same for every stablecoin on a given network (usdc, usdt, …), and does not change with the payout currency — an off-ramp from Ethereum mainnet to USD, EUR, GBP or NGN is subject to the same 10 USD floor.
OMR and QAR payouts additionally carry a currency-level minimum equivalent to 1 USD, calculated from the exchange rate at transaction time. Where a network minimum and a currency minimum both apply, the higher of the two governs.
Send less than the minimum and the transfer will not complete. You receive a
cryptoToFiatwebhook with subTypeLIMIT_BREACHED. Validate the amount in your UI before the user sends funds — on-chain transfers cannot be reversed. See Webhooks.
Checking limits at runtime
Always confirm limits at runtime rather than hardcoding these tables — they are merchant-configurable and change without a docs release:
curl --request GET \
--url 'https://sandbox.api.bakkt.com/stablecoin/transaction/limits?limit_type=minimums&direction=OFFRAMP&input_chain=mainnet&input_token=usdc&output_currency=USD' \
--header 'Authorization: API-Key YOUR_API_KEY'{ "limit_type": "minimums", "limit_amount": 10 }Note the parameter is limit_type (snake_case). Passing limitType returns 400 with the message limitType expected "minimums", which is misleading — the message names the camelCase form while the API requires snake_case.
For on-ramp, swap the direction and its parameters: direction=ONRAMP with input_currency, output_chain, and output_token.
Crypto to Fiat Transactions — Maximum Values
| Currency | Code | Maximum Amount |
|---|---|---|
| Indian Rupee | INR | 500,000 |
| Turkish Lira | TRY | 65,000 |
| Brazilian Real | BRL | 30,000 |
| Argentine Peso | ARS | 1,200,000 |
| Philippine Peso | PHP | 500,000 |
| Indonesian Rupiah | IDR | 100,000,000 |
| Vietnamese Dong | VND | 50,000,000 |
| Colombian Peso | COP | 8,536,260 |
| Mexican Peso | MXN | 100,000 |
| UAE Dirham | AED | 36,700 |
| Qatari Riyal | QAR | 100,000 |
| Omani Riyal | OMR | No limit |
| Pakistani Rupee | PKR | 1,600,000 |
Updated 19 days ago
