> ## Documentation Index
> Fetch the complete documentation index at: https://docs.atum.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Overview

> Secure, cross-chain payments with built-in escrow protection and settlement verification

The Atum Payment Gateway routes payments across a growing list of chains — including many EVM's, Solana, and Tron — with
built-in escrow protection and settlement verification, guaranteeing atomicity across
chains and assets. See [Supported networks](/get-started/reference/supported-networks)
for the full list of chains, tokens, and addresses.

## How it works

When you submit a payment, the gateway:

1. **Validates** the request and signatures
2. **Finds** optimal settlement routes across chains and assets
3. **Secures** funds in escrow
4. **Coordinates** with settlement agents for execution
5. **Returns** the result synchronously if it completes within \~30 seconds; otherwise a `payment_id` with pending status

For a direct integration (SDK, CLI, or raw HTTP), two ways work and you can mix them: poll `GET /v1/payments/{id}/status` with your `payment_id` — cheapest once you hold one, and what the [CLI's `--wait`](/get-started/start-building/using-the-cli) and the [SDK quickstart](/get-started/start-building/build-with-the-sdk) both do — or re-submit the same `request_id`, which is idempotent and returns the payment's current state (useful when the first attempt failed before you learned a `payment_id`). If instead you're a merchant mediating someone else's HTTP request ([x402](/payment-protocols/x402/overview) / [MPP](/payment-protocols/mpp/overview)), prefer having the payer [re-attempt the same purchase](/payment-protocols/idempotency) over polling inside that request — polling holds the connection open for the whole settlement window, and the payer's own retry doesn't.

## Endpoints

| Method | Path                                                                                                | Purpose                                                    |
| ------ | --------------------------------------------------------------------------------------------------- | ---------------------------------------------------------- |
| `POST` | [/v1/payments](/api-reference/payment-gateway/submit-payment)                                       | Submit a signed payment request.                           |
| `GET`  | [/v1/payments/{paymentId}/status](/api-reference/payment-gateway/get-payment-status)                | Poll payment status.                                       |
| `GET`  | [/v1/payments/resolve](/api-reference/payment-gateway/resolve-payment)                              | Look a payment up by the `request_id` you submitted.       |
| `GET`  | [/v1/payments/{paymentId}/timeline](/api-reference/payment-gateway/payment-timeline)                | Step-by-step record of a payment, for reconciliation.      |
| `POST` | [/v1/payments/quote-requests](/api-reference/payment-gateway/create-quote-request)                  | Open a quote-request batch (its own idempotency key).      |
| `GET`  | [/v1/payments/quote-requests/{quoteRequestId}](/api-reference/payment-gateway/quote-request-status) | Read a batch and the quotes collected for it.              |
| `GET`  | [/v1/defaults](/api-reference/payment-gateway/chain-defaults)                                       | Contract addresses per chain, and which chains are served. |

New to the API? Build and sign a payment request with the [SDK or CLI](/get-started/start-building/build-with-the-sdk),
then submit it to [/v1/payments](/api-reference/payment-gateway/submit-payment). Full request and
response shapes are rendered from the spec on each endpoint page.

## Asset identifiers

Assets use [CAIP-19](https://chainagnostic.org/CAIPs/caip-19) format —
`{chain_id}/{asset_namespace}:{asset_reference}`. For example, Ethereum USDC is
`eip155:1/erc20:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48`.

<Warning>
  A ticker is not a unique identifier. The same symbol maps to different tokens on
  different chains, and a single chain can host multiple versions of the "same" asset —
  native vs. bridged or wrapped (e.g. Polygon's native `USDC` and bridged `USDC.e` are
  distinct tokens). Always identify an asset by its full CAIP-19 string, never by ticker.
  See [Supported assets](/get-started/reference/supported-assets) for the exact identifier
  on each chain.
</Warning>

## Base URLs

See [Endpoints](/get-started/reference/endpoints) for the canonical testnet and mainnet base URLs.
