How does a USDC payment on BNB Chain work?

Each checkout gets its own deposit address on BNB Chain, created ahead of time. Once the buyer's payment reaches 5 confirmations, it is forwarded automatically to your EVM treasury wallet. Funds are never pooled in an InfraIO Pay balance.

The buyer chooses BNB Chain and USDC on the hosted checkout, so there is no per-network code on your side. Your server learns the outcome from a signed webhook (payment.settled), which is the authoritative signal to fulfil an order.

What does it cost to accept USDC on BNB Chain?

There is no setup fee, no monthly minimum and no charge on failed, expired or cancelled payments. A platform fee applies only when a payment settles, and it is recalculated automatically from your settled volume over the last 30 days: 0.5% under $50,000, 0.4% from $50,000 to $250,000, and 0.3% from $250,000.

For example, on a $1,000 payment the fee is $5 at 0.5%, $4 at 0.4%, $3 at 0.3%. Above the public floor, custom rates are available by contact.

Does USDC on BNB Chain use different decimals?

Yes. USDC on BNB Chain is registered with 18 decimals, not the 6 used on most other networks. The SDK and API amount fields handle this; it only matters if you compute raw token amounts yourself.

How do I set it up?

  1. Create a merchant account. Sign up at app.infraio.xyz and verify your email.
  2. Connect a EVM treasury wallet. Add an EVM treasury wallet once; it covers every EVM network.
  3. Enable BNB Chain. Turn on BNB Chain in Settings → Networks of the merchant dashboard so buyers can choose it at checkout.
  4. Create a payment link or checkout session. Issue a no-code payment link from the dashboard, or create a session from your server and open it with the SDK.
  5. Fulfil on the webhook. Verify the HMAC signature on the payment.settled webhook, then release the goods or service.

Open a hosted checkout where buyers can pay USDC on BNB Chain

import { loadInfraIo } from "@lartech/infraio-checkout-js";

// 1. On your server: POST /b2b/v1/checkout-sessions/quick (HMAC-signed with
//    your secret key) returns { session_key, checkout_url }.
// 2. In the browser, open the hosted checkout with those two values:
const sdk = await loadInfraIo("pk_live_yourkeyhere");

sdk.checkout({
  sessionId: session_key,
  checkoutUrl: checkout_url,
  mode: "popup", // or "redirect" / "embed"
  onSuccess: () => showThanks(), // UX only: fulfil from the webhook
});