How do Ethereum payments settle?

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

Which tokens can I accept on Ethereum?

USD Coin (USDC, ERC-20, 6 decimals); Tether USD (USDT, ERC-20, 6 decimals). On EVM networks you can also list a verified ERC-20 of your own from the dashboard.

  • USDC contract: 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48
  • USDT contract: 0xdAC17F958D2ee523a2206206994597C13D831ec7

What does it cost to accept payments on Ethereum?

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.

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 Ethereum. Turn on Ethereum in Settings → Networks so buyers can choose it.
  4. Share a payment link or open a checkout. Create a payment link in the dashboard or open a session with the SDK.

Open a hosted checkout; buyers choose Ethereum there

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
});