USDC is a dollar your customers can send from any wallet, issued by Circle. CoinsFlow is a USDC payment gateway on BNB Smart Chain and on Ethereum: price the order in dollars and the payment page asks for that many USDC, so $49.99 is 49.99 USDC. It costs 0.5% per payment.
Which network?
| USDC on | BNB Smart Chain (BEP-20) | Ethereum (ERC-20) |
|---|---|---|
| Paid after | about 15 seconds | about 2.5 minutes |
| Withdrawable | about 15 seconds later | about 4 minutes later |
| Confirmations to paid / final | 15 / 30 | 12 / 32 |
| Customer’s network fee | cents or less, paid in BNB | varies, paid in ETH; more than for sending plain ETH |
For the lowest fees, offer BNB Smart Chain. TRON (TRC-20) is paused for now.
One thing your customer must get right
USDC on BNB Smart Chain and USDC on Ethereum are different tokens, with different contracts. The payment page names the network and warns your customer to send on that one only. With a pay-in-any-coin invoice they choose USDC first, then the network.
How it works
- Create an invoice in USDC on BNB Smart Chain (
bsc) or Ethereum (ethereum), priced in dollars or in USDC: one API call from your shop, or a few clicks in the dashboard. - Your customer opens the payment page: a fresh
0x…address, the exact amount, a QR code, and the network, named. - We see the payment in its first block. It is paid at 15 confirmations on BNB Smart Chain, about 15 seconds, or 12 on Ethereum, about 2.5 minutes: your server gets the signed
invoice.paidwebhook, and the money is in your balance. - Once the payment is final, withdraw it to your own wallet on the same network, by hand or automatically. The smallest withdrawal is 1 USDC.
A $100 USDC order, in numbers
| Price | $100.00, asked as exactly 100.00 USDC |
|---|---|
| Payment seen | in its first block, about a second after the customer sends it: invoice.detected |
| Paid | at 15 confirmations, about 15 seconds: invoice.paid |
| Our fee | 0.50 USDC (0.5%), taken when it is credited |
| Customer’s network fee | cents or less, paid in BNB by the customer on top |
| In your balance | 99.50 USDC, withdrawable about 15 seconds later |
On Ethereum the same order asks for the same 100.00 USDC and leaves the same 99.50 in your balance; what changes is the wait, about 2.5 minutes, and the network fee, which your customer pays in ETH and which can come to several dollars when the network is busy.
A USDC payment API in one call
One request makes the invoice, here in cURL, Node.js and Python. There is no SDK to install.
curl https://api.coinsflow.app/v1/invoices \
-H "Authorization: Bearer $COINSFLOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: order-A-1042" \
-d '{"chain":"bsc","asset":"USDC","priceAmount":"100.00","orderId":"A-1042"}'Send your customer to the paymentUrl in the answer, and fulfil the order on the invoice.paid webhook. To try it with no money first, add "test": true to the body and simulate the payment. Every field is in the API docs.