Navigate
Minimums and networks per operation
Which assets and networks each operation accepts today, how much each network requires, and why a small amount is refused.
The three operations and the catalog of each
These are three different operations with three different catalogs. Copying one list into another is the most common mistake: the network we can deliver on is not the same one we can receive on.
| Operation | Endpoint | Catalog in charge | Network field | Binding minimum |
|---|---|---|---|---|
| Buy: PIX → crypto | POST /cashin/charge | GET /cashin/catalog | chain | the network minimum, in the asset |
| Sell: crypto → PIX | POST /cash-outs | GET /catalog | network | R$ 6.00 and, outside the fast rail, 6 units |
| Withdraw custody as crypto | POST /saldo/sacar-cripto | GET /cashin/catalog | chain | same as buying |
The field name differs between products and trips up integrations: buying and withdrawing use chain; selling uses network.
There are two minimums, not one
1. The account minimum, in BRL
It comes from your key's fees and exists only so the fixed fee does not eat the whole amount. It lives in GET /keys/me, field limits.per_operation.cashin.min_brl_cents. It is a low floor — R$ 1.00 on a key with no fixed fee — and it is rarely the one that refuses.
2. The network minimum, in the asset
Every network has its own withdrawal minimum and withdrawal fee at the exchange. To deliver the network minimum we must buy minimum + fee. That number is minBuyAmount in GET /cashin/catalog, denominated in the asset, and it is almost always the one that refuses. It changes on its own whenever the exchange changes its withdrawal fee.
The larger of the two wins. That is why a R$ 10.00 charge can be refused while /keys/me advertises R$ 1.00: the binding floor was the network's.
Buy: PIX → crypto
USDT and USDC are enabled. The table below is the live catalog read from the API itself: the minimum is denominated in the asset, and the BRL column uses the reference rate of R$ 5.29 per USDT with no fees. Your key's fees stack on top — see the calculator.
USDT
| Network | Minimum in the asset | Approx. minimum in BRL | ETA | Note |
|---|---|---|---|---|
bsc | 0.21 USDT | R$ 1.20 | ate 2 min | — |
cfxevm | 1.01 USDT | R$ 5.40 | ate 2 min | — |
arbitrum | 1.05 USDT | R$ 5.60 | ate 2 min | — |
celo | 2.05 USDT | R$ 10.90 | ate 2 min | — |
tron | 2.5 USDT | R$ 13.30 | ate 2 min | — |
klay | 3 USDT | R$ 15.90 | ate 2 min | — |
optimism | 3.0078 USDT | R$ 16.00 | ate 2 min | — |
avalanche | 4.000074 USDT | R$ 21.20 | ate 2 min | — |
polygon | 5.0065 USDT | R$ 26.50 | ate 2 min | — |
ton | 8.017 USDT | R$ 42.50 | ate 2 min | memo/tag required |
eth | 8.094 USDT | R$ 42.90 | ate 5 min | — |
plasma | 10 USDT | R$ 52.90 | ate 2 min | — |
solana | 10.18 USDT | R$ 53.90 | ate 2 min | — |
These networks come back with entregavel: false and are not offered for USDT: aptos, near, polkadot. The exchange supports them, but we cannot validate addresses on those families, and delivering to an address we cannot check loses the customer's money.
USDC
| Network | Minimum in the asset | Approx. minimum in BRL | ETA | Note |
|---|---|---|---|---|
arbitrum | 0.5033 USDC | R$ 2.70 | ate 2 min | — |
polygon | 1.011 USDC | R$ 5.40 | ate 2 min | — |
base | 1.1 USDC | R$ 5.90 | ate 2 min | — |
optimism | 2.016 USDC | R$ 10.70 | ate 2 min | — |
eth | 2.17 USDC | R$ 11.50 | ate 5 min | — |
algo | 3 USDC | R$ 15.90 | ate 5 min | memo/tag required |
seievm | 3 USDC | R$ 15.90 | ate 5 min | — |
avalanche | 5.00021 USDC | R$ 26.50 | ate 2 min | — |
sonic | 5.01 USDC | R$ 26.60 | ate 5 min | — |
bsc | 10 USDC | R$ 53.00 | ate 2 min | — |
solana | 20.18 USDC | R$ 106.90 | ate 2 min | — |
These networks come back with entregavel: false and are not offered for USDC: aptos, arc, polkadot, stark, sui, xdc. The exchange supports them, but we cannot validate addresses on those families, and delivering to an address we cannot check loses the customer's money.
DePix
DePix is delivered on the liquid network from our own wallet, starting at R$ 1.01. 1 DePix = R$ 1.00.
The complete catalog has 1,662 routes across hundreds of other assets. It comes from GET /cashin/catalog with your key.
Sell: crypto → PIX
Fast rail
USDT and USDC on Polygon use the fast rail: the PIX is paid within seconds and there is no crypto floor — only the per-operation minimum of R$ 6.00 applies. That is why 2 and 5 USDT orders on Polygon are accepted normally.
Other networks, through the exchange
On the other networks the crypto goes through the exchange and the catalog enforces a minimum of 6 units and a maximum of 200,000 units per asset. Below that the answer is valor mínimo: 6 USDT — the most common refusal while testing with small amounts.
In BRL the operation runs from R$ 6.00 to R$ 250000.00. The times below are how long the exchange takes to credit your customer's deposit; the PIX goes out after that.
USDT
| Network | Confirmations required | Time until the exchange credits it |
|---|---|---|
aptos | 12 | cerca de 1 min |
plasma | 20 | cerca de 1 min |
solana | 100 | cerca de 1 min |
tron | 20 | cerca de 1 min |
avalanche | 35 | cerca de 2 min |
near | 100 | cerca de 2 min |
cfxevm | 120 | cerca de 2 min |
klay | 120 | cerca de 2 min |
bsc | 61 | cerca de 4 min |
polkadot | 40 | cerca de 4 min |
eth | 96 | cerca de 20 min |
arbitrum | 5000 | cerca de 21 min |
optimism | 1800 | cerca de 1 h |
celo | 2400 | cerca de 3h20 |
USDC
| Network | Confirmations required | Time until the exchange credits it |
|---|---|---|
aptos | 12 | cerca de 1 min |
algo | 10 | cerca de 1 min |
solana | 100 | cerca de 1 min |
sui | 120 | cerca de 1 min |
avalanche | 35 | cerca de 2 min |
sonic | 60 | cerca de 3 min |
bsc | 61 | cerca de 4 min |
polkadot | 40 | cerca de 4 min |
xdc | 100 | cerca de 5 min |
arc | 240 | cerca de 12 min |
seievm | 300 | cerca de 15 min |
eth | 96 | cerca de 20 min |
arbitrum | 5000 | cerca de 21 min |
base | 1000 | cerca de 34 min |
optimism | 1800 | cerca de 1 h |
stark | 9000 | cerca de 7h30 |
DePix
DePix also sells, on its own rail: the customer sends DePix on the liquid network and the PIX goes out in about a minute. From R$ 1.02 to R$ 6000.00 per order, Lunium fee of 1.5% + R$ 1.00. Creating the order requires a Liquid refund_address and, when the PIX key is not a CPF/CNPJ, payee_tax_number.
The binding list is the networks field of GET /catalog. Memo networks stay out of selling even when they show up for buying: a deposit without a memo into a shared address has no owner.
Withdraw custody as crypto
Custody holds reais. At withdrawal you pick the asset and network, and the same catalog and the same minimums as buying apply — the table in section 3 holds here in full. Two differences: the amount goes in amount_cents (BRL to convert, not token quantity) and the balance must cover amount + fees, otherwise the answer is 402 saldo_insuficiente.
Why R$ 10.00 works in USDC and is refused in USDT
This is the most frequent question, and the answer is not the asset: it is the network. On Polygon the exchange requires 5.0065 USDT to withdraw USDT and only 1.011 USDC in USDC. Since the minimum is bought rather than requested, the same BRL amount passes in one asset and fails in the other.
| Asset on Polygon | Network minimum | Approx. minimum in BRL | Does R$ 10.00 pass? |
|---|---|---|---|
USDT | 5.0065 USDT | R$ 26.50 | no |
USDC | 1.011 USDC | R$ 5.40 | yes |
The reverse is also true: a cheap network today can get expensive tomorrow, because the withdrawal fee belongs to the exchange and changes without notice. Read the catalog before quoting, not once at integration time.
Where the API returns the minimum
None of the numbers on this page need to be copied into your code. All of them come back in the call itself:
| Situation | Where to read it |
|---|---|
| Before charging, in the preview | POST /cashin/preview → min_brl_cents (this route's BRL minimum including your fees), network_min and withdraw_fee |
| The preview or the charge refused | 400 with erro: "valor_abaixo_do_minimo", acao: "corrigir" and minimo_estimado_cents — the BRL amount that would pass |
| Before selling | GET /catalog → min and max per asset; the refusal carries limits.min_amount already converted into the order's asset |
| Your key's limits | GET /keys/me → limits.per_operation |
| Without a key, to compare | /catalogo.json in this documentation — the stablecoin slice, refreshed hourly |
curl -s https://api.luniumpay.com/cashin/preview \
-H "X-API-Key: $LUNIUM_API_KEY" -H 'Content-Type: application/json' \
-d '{"amount_cents":10000,"asset":"usdt","chain":"polygon"}'
{ "asset":"usdt", "chain":"polygon", "amount":"...", "network_min":"5",
"withdraw_fee":"0.0065", "min_brl_cents":2650, "eta":"ate 2 min" }
Your own minimum
The table above is the route floor with no fees at all. Your percentage fee and fixed fee stack on top, plus the partner sub fee when there is one. The formula is (floor + fixed fee) ÷ (1 − bps ÷ 10000). Enter yours to see what your key will refuse below.
| Asset | Network | Route floor | Your minimum |
|---|
An approximation, useful for sizing your UI. The value the API accepts is always min_brl_cents from the preview.