How do TON payments settle?

There is no deposit address: the buyer's wallet pays your TON treasury wallet directly. The buyer connects with TON Connect (Tonkeeper, Telegram Wallet or MyTonWallet) and approves the Jetton transfer.

Which tokens can I accept on TON?

Tether USD (USDT, Jetton, 6 decimals).

  • USDT contract: EQCxE6mUtQJKFnGfaROTKOt1lZbDiiX1kCixRv7Nw2Id_sDs

What does it cost to accept payments on TON?

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 TON treasury wallet. Add a TON treasury wallet in the dashboard (one wallet per network family).
  3. Enable TON. Turn on TON 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 TON 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
});