Skip to main content
The Payment Gateway is the API you integrate with: get a price, submit a signed payment and track its status. See Supported networks for the chains it serves.

How it works

What happens after you submit a payment is on Atum payment lifecycle. How long the submit call waits, and what each status means, is on After submission. For a payment that is still settling, poll /status or re-submit the same request_id; over x402 or MPP, the payer re-attempts the same purchase. See When a payment is still settling.

Endpoints

New to the API? Build and sign a payment request with the SDK or CLI, then submit it to /v1/payments. Full request and response shapes are rendered from the spec on each endpoint page.

Request fields

You set every field of a payment request. The gateway never changes a field and never fills in a default; only the SDK and CLI fill in defaults, and only for values you leave out (see Prepare a payment). Your signature (sender_auth) authorizes the spend. It covers the source token, the most that may leave your wallet (max_source_amount), the recipient and the request_id. That is why max_source_amount is required on a payment and must equal the amount you signed. A quote request is not signed, so there it is optional. No endpoint builds or signs a request. Build and sign it with the SDK or CLI, then submit it with the HTTP API.

Asset identifiers

Assets use CAIP-19 format — {chain_id}/{asset_namespace}:{asset_reference}. For example, Ethereum USDC is eip155:1/erc20:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48.
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 for the exact identifier on each chain.

Base URLs

See Endpoints for the canonical testnet and mainnet base URLs.