Base URL
Authentication
Endpoints use Bearer token authentication with your API key:| Credential | Format | Use |
|---|---|---|
| API key | UUID | Server-side. Create sessions, retrieve full details. |
| Client secret | UUID | Client-side, per-session. Set payment method, check status. |
Error format
All errors return a JSON body:| Field | Type | Description |
|---|---|---|
type | string | Error category (see below) |
code | string | Machine-readable error code |
message | string | Human-readable description |
param | string? | The parameter that caused the error, if applicable |
Error types
| Type | Description |
|---|---|
authentication_error | Missing or invalid credentials |
validation_error | Invalid request body or parameters |
invalid_request_error | Valid request but cannot be processed (e.g. resource not found) |
api_error | Internal server error |
HTTP status codes
| Code | Meaning |
|---|---|
200 | Success |
201 | Created |
400 | Bad request, validation error |
401 | Unauthorized, missing or invalid API key |
404 | Not found, session does not exist |
500 | Internal server error |
Session object
The full session object (returned with API key authentication):metadata and clientSecret are omitted.
SessionStatus
| Value | Description |
|---|---|
requires_payment_method | Waiting for user to choose how to deposit |
waiting_payment | Payment method set, waiting for deposit transaction |
processing | Deposit detected, routing funds to destination |
succeeded | Funds delivered to destination |
bounced | Delivery failed, funds returned to refund address |
expired | Session timed out |
PaymentMethod
Three variants based on the source chain: EVM:source field is populated once the user’s deposit transaction is detected. Before that, only type, receiverAddress (for EVM/Tron), and createdAt are present.
EVM and Tron are receiver-address flows. Solana is a sign-and-send flow: instead of a receiverAddress, the response returns a transaction payload for the wallet to execute in one click.
Create payment method response
When creating a payment method, chain-specific fields are returned alongside the session:- Tron:
tron.receiverAddress(the Tron USDT address to send to) andtron.expiresAt - Solana:
solana.serializedTx(hex-encoded serialized transaction for the wallet to sign and submit) - EVM: no additional fields; the deposit address is the session’s EVM deposit address