Crypto payment gateway API: how to accept crypto on your website
A crypto payment gateway API lets your website ask a customer for a crypto payment, give them an address to pay, and know when the money has arrived. You can start with a payment link, send customers to a hosted pay page, or build crypto into your own checkout.
Is accepting crypto right for your business?
It usually pays off when some of your customers already hold crypto, when you sell across borders, or when card fees and chargebacks hurt your margins. Customers abroad can pay you in the same way as customers at home, without a card or a bank transfer.
It matters less if your customers are local and happy with cards. Then crypto is an extra option at checkout rather than a main one. That's a fine way to start: it costs little to offer, and you learn whether customers use it.
Two things to settle early. Volatile coins can change in value between invoice and withdrawal, which is why most merchants price in stablecoins. And crypto income has to be recorded like any other, so ask your accountant how it's treated where you're based.
What a crypto payment gateway API does
Think of it as a cashier that works with blockchains. When a customer chooses to pay in crypto, your site asks the gateway for an invoice. The invoice holds the amount, the coin and a deposit address made for that one payment.
The customer sends the coin from their wallet to that address. The gateway watches the blockchain, matches the transfer to the invoice and marks it paid. Your site then ships the order, and the money sits in your balance until you withdraw it.
Two things make this different from taking cards. You never handle card or bank details, because customers pay from their own wallets. And a confirmed payment can't be charged back by the customer, so a refund is always a new payment from you.
Three ways to start
Payment links
If you sell over chat, email or social media, you don't need a website integration at all. Create an invoice in the FufuPay dashboard, copy its pay link and send it. The customer opens it, scans the QR code and pays, and you see the payment come in.
The hosted pay page
If you have a website but don't want to build a crypto checkout, your site creates the invoice and sends the customer to FufuPay's pay page. It shows the amount, the address and a QR code, counts down to the invoice's expiry, and updates live as the payment arrives. This is the quickest way to add crypto to an existing checkout.
Your own checkout
If you want customers to stay on your site, your developer shows the address, amount and QR code on your own page and reads the payment's status from the API. It takes more work but fits your brand and your flow exactly.
Most businesses start with the hosted pay page and move to their own checkout later, if at all.
What paying looks like for your customer
- At checkout they choose to pay in crypto and pick a coin, such as USDT on Tron.
- They see the amount, the address and a QR code.
- They scan the code with their wallet app, or copy the address, and send the payment.
- The page shows the payment as it's detected and confirmed, then your site shows the order as paid.
The clearer you make step 1, the fewer problems you'll have. Always show the coin and the network together, because the same coin exists on several networks and an address belongs to only one of them.
How long a crypto payment takes
It depends on the network, because each adds new blocks at its own pace:
- Bitcoin adds a block about every 10 minutes on average, with no guaranteed delay.
- Ethereum produces a block every 12 seconds when its validators are online.
- Tron produces a block every 3 seconds.
For everyday checkouts, stablecoins such as USDT on a fast network work best: they are designed to hold their value while the customer pays, and they confirm in seconds. Whatever you accept, tell customers the page updates by itself, so nobody sends the money twice.
Decide these before your first payment
- Offer the coins and networks your customers actually hold. A few well-known stablecoins beat a long list nobody uses.
- Count an order as paid only when your server sees the payment confirmed, never because a customer's browser reached a thank-you page.
- If a customer pays too little, often because their wallet took the network fee out of the amount, the invoice shows as partly paid and they send the rest.
- If they pay too much, the overpayment is recorded and you decide whether to send it back.
- Unpaid invoices expire, and a late customer starts a new one. Never reuse an old address for a new order.
- A refund is a new payment to an address the customer gives you, on the network they paid on.
Tell customers you accept crypto
Customers only use crypto checkout if they notice it and trust it. Show the option clearly at checkout, with the coins you accept. Mention it on your product or pricing pages too. In your own FAQ, say which coins and networks you take, how long confirmation takes, and what to do about a wrong amount. A customer who knows to pick the right network is a customer who doesn't need support.
Keep each invoice's id with its order. Your FufuPay dashboard lists your invoices and their payments, which gives you and your accountant one record for every crypto sale.
Getting paid out
Payments build up in your FufuPay balance, one balance per coin. You can withdraw to your own wallet whenever you choose, and in Indonesia, Malaysia, the Philippines and Cambodia you can be paid out in local currency too.
Before each withdrawal FufuPay shows you a quote: how much the recipient will get after the network fee, and the most you can send right now. Your developer can automate withdrawals through the API in the same way.
What your developer needs to know
The integration is small. Your server creates an invoice with the coin and the amount. It sends the customer to the pay page, or shows the address itself, and checks the invoice's status before fulfilling the order. FufuPay also sends a status update to your server whenever an invoice changes.
// On your server: create the invoice, then send the customer to its pay page
const res = await fetch('https://fufupay.com/api/v1/invoices', {
method: 'POST',
headers: { 'X-Api-Key': process.env.FUFUPAY_API_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({ currency: 'usdt-trc20', amount: '100.5' }),
});
const invoice = await res.json();
const payPage = `https://fufupay.com/pay/${invoice.id}`;
Three habits keep it safe. Keep the API key on your server, never in browser code. Decide an order is paid only from a status your server fetched itself. And make your handling repeat-proof, so the same update arriving twice never ships two orders. The API documentation has every request, field and status, and lets you try requests when you're signed in.
What to look for in a crypto payment gateway API
If you're comparing options, these are the questions that matter once you're live:
- Does it support the coins and networks your customers actually hold, including stablecoins on low-fee networks?
- What happens with partial payments, overpayments and expired invoices?
- Is there a hosted pay page, so you can launch before you build your own checkout?
- Can your server read a payment's status reliably, and does it get updates when something changes?
- Can you withdraw when you want, and see the fee before you do?
- Is the documentation complete enough to build from, with requests you can try?
- Can you read the pricing before you sign up?
Questions
What is a crypto payment gateway API?
It's the set of requests your website uses to take crypto payments through a gateway. Your site asks for an invoice, shows the customer where to pay, and asks again to find out when the payment has arrived.
Do I need a developer to accept crypto?
Not to start. Payment links work straight from the dashboard. To add crypto to a website checkout you need a small integration, and the hosted pay page keeps it to a few lines of code.
Do I need my own crypto wallet or node?
No. FufuPay creates the address for each payment and watches the blockchain for you. You only need a wallet to withdraw to, if you want your funds in crypto.
Can customers pay in their local currency?
In Indonesia, Malaysia, the Philippines and Cambodia, FufuPay can also take local payments, such as QRIS in Indonesia.
What does it cost?
The pricing page shows FufuPay's current pricing. Customers pay their network's fee from their own wallet.
To take your first payment, create a FufuPay account and start with a payment link, or hand your developer the API documentation.
FufuPay