Skip to main content
molnpay

Accept payments · USDC

Accept USD Coin payments.

Invoice in the currency you sell in, and let your customer pay in USD Coin. We give the invoice its own address on the chain they choose, watch it, and send you a signed webhook when the payment is final. Circle's dollar stablecoin, native on most of the chains we support.

USDC on 11 chains.

Your customer picks one at checkout. You choose which of them you are willing to accept.

EthereumERC-20
BNB ChainBEP-20
PolygonERC-20
ArbitrumERC-20
BaseERC-20
OptimismERC-20
AvalancheERC-20
LineaERC-20
zkSyncERC-20
ScrollERC-20
SolanaSPL
USDC on Ethereum
Gas here is the highest of any chain on this list, so a payment has to clear a minimum amount to be worth collecting. The checkout shows that minimum to your payer before they choose Ethereum, and every other chain here is cheaper.
USDC on BNB Chain
USDT and USDC have 18 decimals on BNB Chain, where they have 6 almost everywhere else. Read decimals from the API rather than writing 6 into your code — getting it wrong is a silent error of twelve orders of magnitude.
USDC on Scroll
The USDC on Scroll is the bridged token, because Circle does not issue natively here. It spends the same way; the contract address is just not Circle's own.

Taking a USD Coin payment.

  1. Create the invoice

    One POST with an amount, a pricing currency and your own reference. You get back a checkout URL, one payment address per chain, and a locked amount in every coin you accept.

  2. They pay, at a rate that stays honest

    Your customer is never asked to commit to a chain first — one address serves every EVM chain, so whatever arrives is attributable. Stablecoins are quoted once. A volatile coin is re-quoted every two minutes, and the figure it replaces is still honoured for five, so nobody who did as they were told is told they underpaid.

  3. You get a signed webhook

    HMAC-SHA256, retried for about 46 hours, replayable from the dashboard. The payment is credited to your balance per asset.

POST /v1/invoices
curl https://api.molnpay.com/v1/invoices \
  -H "Authorization: Bearer $MOLNPAY_SECRET_KEY" \
  -H "Idempotency-Key: order_8812" \
  -d amount="49.90" \
  -d currency="USD" \
  -d reference_id="order_8812"

What you do not have to do.

  • Hold a USDC wallet, or guard a seed phrase for one. No address here has a private key.
  • Keep gas on hand. We pay the network fee on every chain USDC settles on.
  • Ask your customer to make an account. The hosted checkout needs nothing from them but a payment.
  • Watch every block yourself, or reconcile a reorg by hand.

Holding USDC for your users instead?

Same API, same keys, same balance — the difference is whether the address belongs to an invoice or to one of your users.

USD Coin deposit addresses

Accept another asset