The core object representing one customer-facing payment intent.
| Field | Type | Notes |
|---|
id | string | pi_... |
amount | integer | Smallest unit |
currency | string | USDT, USDC, ETH, SOL |
network | string | POLYGON, ETHEREUM, SOLANA |
status | enum | pending, processing, succeeded, failed, expired, canceled |
pay_address | string | Address customer should send funds to |
expires_at | timestamp | After this, status → expired if unpaid |
settlement | object | See Settlement below |
metadata | object | Arbitrary key/value (max 50 keys, 500 chars/value) |
pending ──────► processing ──────► succeeded
├──► canceled ├──► refunded (via Refund)
└──► expired └──► failed (chargeback / reversal)
A hosted payment page session. cs_....
An in-store / POS QR-code-based payment. qrs_....
A full reversal of a succeeded Payment. re_.... v1 supports full refunds only.
A delivery record of a server-side event. evt_.... See Webhooks → Event types.
A merchant-registered URL receiving event deliveries. we_....
Each error response carries a code field. The catalog below lists codes by error.type.
| Code | Meaning |
|---|
api_key_missing | No Authorization header was sent |
api_key_invalid | The API key is malformed or has been revoked |
api_key_expired | The API key has been rotated and the old key is no longer accepted |
| Code | Meaning |
|---|
publishable_key_not_allowed | A pk_* key was used for an endpoint that requires a secret key (e.g., refunds, list operations) |
livemode_mismatch | A test-mode key was used against live-mode resources, or vice versa |
| Code | Meaning |
|---|
parameter_missing | A required parameter is absent |
parameter_invalid | A parameter has the wrong type or format |
amount_too_small | amount is below the minimum for the chosen currency |
network_unsupported | network is not one of POLYGON, ETHEREUM, SOLANA |
currency_unsupported | currency is not one of USDT, USDC, ETH, SOL |
currency_network_mismatch | The token does not exist on the chosen network (e.g., SOL on POLYGON) |
settlement_invalid | settlement.mode is invalid, or splits percentages do not sum to 100 |
| Code | Meaning |
|---|
resource_not_found | The object referenced by id does not exist (Payment, Checkout Session, QR Session, Refund, Webhook Endpoint) |
| Code | Meaning |
|---|
idempotency_key_in_use | The Idempotency-Key was previously used with a different request body |
payment_not_cancelable | The Payment is in a terminal state (succeeded, failed, expired, canceled) and cannot be canceled |
payment_already_refunded | The Payment has already been refunded |
| Code | Meaning |
|---|
rate_limit_exceeded | More than 100 req/sec on this API key — see Rate Limits |
| Code | Meaning |
|---|
insufficient_balance | Refund cannot proceed because the account’s balance in the source token is too low |
network_rejected | On-chain transaction was rejected (gas, nonce, etc.) |
| Code | Meaning |
|---|
rpc_unavailable | Blockchain RPC is unreachable. Retry with an Idempotency-Key. |
rpc_timeout | Blockchain RPC did not respond within the deadline. Retry. |
| Code | Meaning |
|---|
internal_error | Unhandled ParaSta server error. Report with request_id. |