Crypto payments,straight to your wallet
TrezorPay is a non-custodial payment API. Create an address, your customer pays, and the funds are forwarded to your own wallet minus 1.25%. No account, no API key.
GET /trc20/usdt/create/ ?callback=https://shop.example/paid &address=TJzX…6yWf { "status": "success", "address_in": "TN7Z…E3q4", "minimum_transaction_coin": "10.00000000" }
GET https://shop.example/paid ?value_coin=250 &value_forwarded_coin=244.39 &fee_coin=2.5 &txid_out=d50e4bbe…0034 &result=sent x-ca-signature: MEUCIQ…
Accept 88 coins on 13 networks
Ethereum
BNB Smart Chain
Polygon
Base
Arbitrum
Optimism
Avalanche
Tron
Bitcoin
Litecoin
Bitcoin Cash
Dogecoin
Solana
Everything you need, nothing you have to trust
A payment gateway that never holds your money, and gets out of the way of your code.
Non-custodial
Payments are forwarded on-chain to your wallets as soon as they confirm. No balance sits with us.
No sign-up, no API key
One GET request with your callback URL and wallet returns a deposit address. That is the whole setup.
Signed callbacks
Every notification is signed with RSA-SHA256 and retried for 3 days until your server answers *ok*.
Split payouts
Send one payment to up to twenty wallets by percentage, in a single address.
Multi-token addresses
Let one address accept every token on its network, and read the coin from the callback.
Prices in 37 currencies
Convert amounts, estimate the network cost and render a payment QR code from the same API.
How a payment moves
From the request your server sends to the callback it receives, in four steps.
- 1
Create an address
Your server calls /create/ with a callback URL and your wallet.
Order 1042 Waiting
address_inTN7Z…E3q4
address_outTJzX…6yWf
minimum10.00
- 2
Your customer pays
We see the payment on-chain and call you with pending=1.
Order 1042 Pending
value_coin250.00
confirmations4 / 19callbackpending - 3
We forward it
Once confirmed, the amount goes to your wallet, minus 1.25%.
Order 1042 Forwarded
to your wallet244.39
fee2.50
network3.11
- 4
You get a signed callback
With txid_in, txid_out and the amounts, signed in x-ca-signature.
Order 1042 Done
resultsenttxid_outd50e…0034
signaturevalid
Try the numbers
Pick a coin and an amount: this is the request you send, and the callback you get back.
GET /trc20/usdt/create/
?callback=https://shop.example/paid?order=1042
&address=TJzXZQhbhJB3dA2TmxmvyPxk2nKsmZ6yWf
&pending=1- Our fee (1.25%)
3.13 USDT
- Network cost (example)
5.20 USDT
- Forwarded to your wallet
241.68
address_in=TN7Zbu4UwtKneYDJyDKXkSorVu95hsE3q4 address_out=TJzXZQhbhJB3dA2TmxmvyPxk2nKsmZ6yWf txid_in=f8c04ed588a78ddc… txid_out=d50e4bbe5c94b4bb… confirmations=19 value_coin=250 value_forwarded_coin=241.675 fee_coin=3.125 coin=trc20_usdt price=1 pending=0 result=sent
- EthereumETHEther
- USDTTether
- USDCUSD Coin
- DAIDai
- mUSDMetaMask USD
- PYUSDPayPal USD
- USD1World Liberty Financial USD
- BNB Smart ChainBNB
- USDTTether
- USDCUSD Coin
- DAIDai
- USD1World Liberty Financial USD
- PolygonPOL
- USDTTether
- USDCUSD Coin
- USDC.eUSD Coin (Bridged)
- BaseETHEther
- USDCUSD Coin
- DAIDai
- USDTTether
- ArbitrumETHEther
- USD₮0
- USDCUSD Coin
- DAIDai
- PYUSDPayPal USD
- USDC.eUSD Coin (Bridged)
- OptimismETHEther
- USDCUSD Coin
- USDC.eUSD Coin (Bridged)
- USDTTether
- USD₮0
- DAIDai
- AvalancheAVAXAvalanche
- USDCUSD Coin
- USDC.eUSD Coin (Bridged)
- USDTTether
- TronTRX
- TUSDTrueUSD
- USDDDecentralized USD
- USDTTether
- BitcoinBTCBitcoin
- LitecoinLTCLitecoin
- Bitcoin CashBCHBitcoin Cash
- DogecoinDOGEDogecoin
- SolanaSOLSolana
- USDCUSD Coin
- USDTTether
- Under $250k1.25%
- $250k – $1M1.1%
- $1M – $2.5M1%
- $2.5M – $5M0.85%
- $5M – $10M0.7%
- $10M – $20M0.5%
- $20M and above0.25%
Minimum 10 USDT · forwarded after 19 confirmations
Supported coins
Stablecoins and native coins on thirteen networks. Payments are forwarded once they reach the confirmations shown.
| Coin | Network | Minimum | Confirmations |
|---|---|---|---|
| 0.0015 ETH | 3 | ||
| 2 USDT | 3 | ||
| 2 USDC | 3 | ||
| 75 1INCH | 3 | ||
| 15 ARB | 3 | ||
| 0.09 BNB | 3 | ||
| 0.00009 cbBTC | 3 | ||
| 15 DAI | 3 | ||
| 0.65 LINK | 3 | ||
| 5 mUSD | 3 | ||
| 10 ONDO | 3 | ||
| 1000000 PEPE | 3 | ||
| 25 POL | 3 | ||
| 2 PYUSD | 3 | ||
| 1000000 SHIB | 3 | ||
| 15 TRX | 3 | ||
| 5 USD1 | 3 | ||
| 6 wXRP | 3 | ||
| 0.0015 XAUt | 3 | ||
| 0.001 BNB | 15 | ||
| 1 USDT | 15 | ||
| 1 USDC | 15 | ||
| 1 1INCH | 15 | ||
| 1 ADA | 15 | ||
| 0.00008 BTCB | 15 | ||
| 0.1 CAKE | 15 | ||
| 1 DAI | 15 | ||
| 10 DOGE | 15 | ||
| 0.00075 ETH | 15 | ||
| 0.002 LTC | 15 | ||
| 40000 SHIB | 15 | ||
| 5 TRX | 15 | ||
| 1 USD1 | 15 | ||
| 2 XRP | 15 | ||
| 0.5 POL | 64 | ||
| 0.5 USDT | 64 | ||
| 0.5 USDC | 64 | ||
| 0.04 AVAX | 64 | ||
| 0.5 USDC.e | 64 | ||
| 0.0005 WETH | 64 | ||
| 0.0003 ETH | 10 | ||
| 3 USDC | 10 | ||
| 0.00003 cbBTC | 10 | ||
| 0.05 cbLTC | 10 | ||
| 3 DAI | 10 | ||
| 3 USDT | 10 | ||
| 0.0001 ETH | 20 | ||
| 1 USD₮0 | 20 | ||
| 1 USDC | 20 | ||
| 0.5 ARB | 20 | ||
| 0.5 DAI | 20 | ||
| 0.05 LINK | 20 | ||
| 100000 PEPE | 20 | ||
| 1 PYUSD | 20 | ||
| 1 USDC.e | 20 | ||
| 0.0001 ETH | 10 | ||
| 1 USDC | 10 | ||
| 1 USDC.e | 10 | ||
| 1 USDT | 10 | ||
| 1 USD₮0 | 10 | ||
| 0.5 DAI | 10 | ||
| 0.05 LINK | 10 | ||
| 0.3 OP | 10 | ||
| 0.01 AVAX | 3 | ||
| 1 USDC | 3 | ||
| 1 USDC.e | 3 | ||
| 1 USDT | 3 | ||
| 0.01 WAVAX | 3 | ||
| 0.001 WETH.e | 3 | ||
| 10 TRX | 19 | ||
| 0.00008 BTC | 19 | ||
| 5 TUSD | 19 | ||
| 5 USDD | 19 | ||
| 10 USDT | 19 | ||
| 0.00008 BTC | 1 | ||
| 0.002 LTC | 2 | ||
| 0.0005 BCH | 1 | ||
| 10 DOGE | 6 | ||
| 0.004 SOL | 1 | ||
| 1 USDC | 1 | ||
| 1 USDT | 1 | ||
| 1 EURC | 1 | ||
| 0.000009 WBTC | 1 | ||
| 0.000009 cbBTC | 1 | ||
| 0.003 WETH | 1 | ||
| 0.05 TRUMP | 1 | ||
| 2.5 HNT | 1 | ||
| 1 wUSDT | 1 |
Simple pricing
One percentage per payment, lower as your volume grows. Nothing else.
- No sign-up or monthly fee
- No setup or withdrawal fee
- Network cost passed on at cost
- Tiers counted per destination wallet
- 1.25%$0
- 1.1%$250k
- 1%$1M
- 0.85%$2.5M
- 0.7%$5M
- 0.5%$10M
- 0.25%$20M+
On a $1,000 payment, the fee is $12.50 and your wallet receives $987.50, before the network cost.
Frequently asked questions
Do I need an account or an API key?
No. Call /create/ with your callback URL and the wallet that should receive the money, and you get a deposit address back. The same callback URL always returns the same address.
Do you ever hold my funds?
Only for the minutes it takes to confirm. As soon as a payment has the confirmations its network requires, it is forwarded on-chain to your wallets. There is no balance to withdraw and nothing to freeze.
Who pays the network fee?
The payment does. For a native coin the gas comes out of the amount forwarded. For a token we send the gas ourselves and recover its cost in the token, at the market price, alongside our fee.
How do callbacks work?
If you ask for it, we call your URL when a payment arrives, then again once it is forwarded, with the transaction ids and amounts. Every request is signed with RSA-SHA256 in x-ca-signature, and retried from 6 minutes for 3 days until your server answers *ok*.
What happens below the minimum?
The payment is recorded and shown in /logs/, but never forwarded: each coin has a minimum so that the network cost can never eat the payment.
Can one address be paid more than once?
Yes. Addresses never expire, and every payment to one is forwarded and reported on its own, so one address per customer works as a permanent deposit address.
Do I need to run a node or hold coins for network fees?
No. We read every chain for you and pay the network cost out of the payment itself; for tokens, the gas is recovered in the token at market price. You only need a wallet address to receive the funds.
Do you handle recurring subscriptions?
We handle the payments; your app keeps the subscription logic, so billing works exactly your way. Give each customer a permanent address: every renewal they send triggers a signed callback, and your app extends the plan, applies grace days or upgrades. Crypto wallets cannot be debited automatically, so send a reminder before each due date.
Accept your first payment in one request
No sign-up. Put in your own wallet and callback URL, send it, and share the address you get back.
curl "https://api.trezorpay.com/trc20/usdt/create/?callback=https://your.shop/paid&address=YOUR_TRON_WALLET"