<!-- Source: https://docs.infraio.xyz/en/get-started/introduction -->
<!-- Last updated: 2026-10-04 -->

# Introduction

## The shape of a payment

A merchant integrating InfraIO Pay deals with four moving parts:

### Checkout session

You create a session server-side with line items and totals. The
response carries a `session_key` (`cst_…`) and a `checkout_url`.
Sessions are time-limited (default 30 minutes) and single-use.

### Hosted checkout page

You load our browser SDK and open the session — popup, redirect, or
embedded iframe. The buyer picks a chain × asset (USDT on Polygon,
ETH on Base, …), sees a generated per-order deposit address (CREATE2) + QR, and sends
funds from their wallet.

### Payment confirmation

InfraIO Pay watches the relevant network for inbound transfers
matching the session's deposit address. Once cleared for the
configured confirmation count (e.g. 12 on Ethereum mainnet, 5 on
Polygon — see [Chains & assets](https://docs.infraio.xyz/en/concepts/chains)), the
underlying PaymentIntent moves to `SETTLED` and the parent Order
moves to `PAID`.

On TRON, Solana and TON there is no deposit address. The buyer's wallet pays your treasury wallet directly (TronLink, a Solana Pay QR, or TON Connect) and InfraIO Pay recognizes that payment. See [Chains & assets](https://docs.infraio.xyz/en/concepts/chains).

> Payments go straight to your treasury wallets — InfraIO Pay never holds your funds.

### Webhook

We POST a signed `payment.settled` event to your registered webhook
URL. Your server verifies the signature, looks up the order, and fulfills it.

## The data model in one diagram

```
CheckoutSession  ←  1:1  →  Order  ←  1:N  →  PaymentIntent
   (time-limited)                (permanent)        (one per pay attempt)
```

You think about **Orders** for fulfillment, you create **Sessions**
to take payment, and the system manages **PaymentIntents** behind
the scenes for retries and network selection.

## What we handle vs. what you handle

| InfraIO Pay handles | You handle |
| --- | --- |
| Hosted checkout UI (deposit address, QR, asset picker) | Catalog + Order creation in your DB |
| Chain monitoring + confirmation logic across 8 EVM chains plus TRON, Solana and TON (coming soon) | Webhook receiver + signature verification |
| Multi-asset stablecoin checkout (USDT, USDC per network) | Mapping our `order_id` ↔ your order ID via `external_ref` |
| Refund accounting (state machine, dashboard, API) | Signing + broadcasting the on-chain refund tx |
| Test-mode keys + isolated test webhooks | Funding testnet wallets from faucets |

> **Note:**
>
> We don't hold custody of merchant funds. Buyer-to-merchant
> transfers happen **directly** on-chain; we're the indexer +
> reconciliation layer that tells you when the transfer cleared.

## Test mode vs live mode

Every account starts in **test mode**. Test keys are prefixed
`pk_test_` / `sk_test_`. Live keys (`pk_live_` / `sk_live_`) are
available after you complete account verification and add a treasury
wallet for each network you want to receive on (you sign a message to
prove you control it).

The same API base URL serves both — environment is determined by
the key prefix, not the URL. Test mode runs against **real testnets**
(Sepolia, Base Sepolia, BSC Testnet, etc.) — there is no mock
chain. To trigger a test payment you need actual testnet funds from
a faucet.

## Contact / support

Questions or need help? Email [contact@lartech.xyz](mailto:contact@lartech.xyz).

## What InfraIO Pay is not

- **Not a custodian.** Funds move from the buyer to your treasury wallet on-chain
  directly. We never hold your balance.
- **Not a wallet requirement.**
  Customers pay from their own wallet (the hosted checkout has a
  built-in WalletConnect option). [InfraIO Wallet](https://docs.infraio.xyz/en/wallet/overview)
  is a separate, non-custodial passkey wallet and is not required.
- **Not a fiat ramp.** Buyers pay in the crypto asset they have;
  we don't convert.
- **Not a Bitcoin gateway.** Stablecoins on 8 EVM networks plus TRON, Solana and TON (coming soon); no Bitcoin or Lightning. See [Chains & assets](https://docs.infraio.xyz/en/concepts/chains) for the live matrix.

## What's next

- [Quickstart](https://docs.infraio.xyz/en/get-started/quickstart) — copy-paste your first
  integration in ~10 minutes.
- [Concepts → Sessions](https://docs.infraio.xyz/en/concepts/sessions) — the data model in
  depth.
- [SDK → JavaScript](https://docs.infraio.xyz/en/sdks/javascript) — the only published SDK
  today.
- [Pricing & fees](https://docs.infraio.xyz/en/concepts/pricing) — volume tiers and discounts.
- [Merchant app](https://docs.infraio.xyz/en/get-started/merchant-app) — manage your business from your phone.
