Endpoints
POST /v2/secure-payments— Create a secure paymentGET /v2/secure-payments— Lookup by request IDGET /v2/secure-payments/:token— Get payment metadataGET /v2/secure-payments/:token/pay— Get payment calldataPOST /v2/secure-payments/:token/intent— Record crosschain payment intent
Authentication
| Endpoint | Supported auth |
|---|---|
POST /v2/secure-payments | x-api-key, x-client-id + Origin, or session |
GET /v2/secure-payments | Session only |
GET /v2/secure-payments/:token | x-api-key or x-client-id |
GET /v2/secure-payments/:token/pay | x-api-key or x-client-id |
POST /v2/secure-payments/:token/intent | x-api-key or x-client-id |
POST /v2/secure-payments
Create a secure payment entry and return a hosted payment URL.Request fields
Array of payment requests. One item creates a single payment. Multiple items create a batch payment.
ERC-7828 composite destination ID encoding payee wallet, chain, and token. Format:
{interopAddress}:{tokenAddress}. Optional when the authenticated client ID has a bound payee destination.Human-readable payment amount (e.g.,
"10.50"). Must be greater than 0.Optional fee percentage from
0 to 100 (e.g., "2.5" for 2.5%).Optional fee recipient address. Required when
feePercentage is set.Optional merchant reference for reconciliation (max 255 chars).
Optional payer identifier (max 255 chars).
Error responses
400: invalid body or unsupported secure payment configuration401: unauthorized429: rate limited
GET /v2/secure-payments
Lookup a secure payment by request ID. Requires a SIWE wallet session.Query parameters
The request ID to look up.
Error responses
404: secure payment not found for the given request ID
GET /v2/secure-payments/:token
Retrieve payment metadata and display information. Returns amounts, destination info, status, and optionally crosschain payment options — but not executable transaction calldata. Use/pay for calldata.
Path parameters
Secure payment token returned from
POST /v2/secure-payments.Query parameters
Payer wallet address. When provided, the response includes
paymentOptions with balance information across supported chains. Optional for Tron payments (the API uses a fallback address if omitted).Error responses
403: token expired or not payable404: token not found409: secure payment already completed429: rate limited
GET /v2/secure-payments/:token/pay
Retrieve executable transaction calldata for the secure payment. For crosschain payments, providechain and token query parameters to select the source route.
The
:token in the URL path is the secure payment token (a ULID identifier). The token query parameter is the source currency symbol (USDC or USDT) for crosschain route selection. These are different values.Path parameters
Secure payment token (ULID returned from
POST /v2/secure-payments).Query parameters
Payer wallet address. Used for approval and balance checks. Optional for Tron payments (the API uses a fallback address if omitted).
Source chain for crosschain payments. Values:
BASE, OPTIMISM, ARBITRUM, ETHEREUM. Must be provided together with the token query parameter.Source currency for crosschain payments. Values:
USDC, USDT. Must be provided together with chain.Error responses
400: invalid calldata request or unsupported crosschain configuration403: token expired or not payable404: token not found409: secure payment already completed429: rate limited
POST /v2/secure-payments/:token/intent
Record a crosschain payment intent after the payer broadcasts the source-chain LiFi transaction. This allows the system to track the bridge execution and trigger payment detection on the destination chain.Path parameters
Secure payment token.
Request fields
The source-chain transaction hash (66 characters:
0x + 64 hex chars).The source chain. Values:
BASE, OPTIMISM, ARBITRUM, ETHEREUM.The source token. Values:
USDC, USDT.Error responses
400: invalid or unsupported crosschain payload403: token expired or not payable404: token not found409: secure payment already completed429: rate limited