Payment Intents
A payment intent represents a single payment from a customer. It tracks the lifecycle from creation through authorization and capture. Settlement happens automatically after the escrow timelock expires. You can also cancel or refund payments.
Payment intent lifecycle
Create a payment intent
POST
/payments/intents💡
API key only
Creating payment intents requires a secret API key. JWT authentication is not supported for this endpoint.
Request body
| Parameter | Type | Required | Description |
|---|---|---|---|
amount | string | Yes | Payment amount (decimal string, e.g. "99.99") |
currency | string | No | Fiat currency code (default: "USD") |
customerAccountId | string | No | Existing customer UUID |
externalId | string | No | Your system's order or reference ID (max 255) |
allowedChains | "ALL" | number[] | No | Allowed blockchain chain IDs |
allowedTokens | "ALL" | string[] | No | Allowed token identifiers |
captureMode | "AUTOMATIC" | "MANUAL" | No | Whether to capture immediately or hold in escrow |
successUrl | string | No | Redirect URL after payment |
cancelUrl | string | No | Redirect URL on cancel |
idempotencyKey | string | No | Prevent duplicate intents (max 255) |
metadata | object | No | Arbitrary key-value metadata |
List payment intents
GET
/payments/intentsQuery parameters
| Parameter | Type | Description |
|---|---|---|
appId | string | Filter by app UUID |
status | string | Filter by status |
page | number | Page number (default: 1) |
pageSize | number | Items per page (max 100) |
Retrieve a payment intent
GET
/payments/intents/:idCancel a payment intent
POST
/payments/intents/:id/cancelCancels a payment intent that hasn't been captured yet.
Refund a payment
POST
/payments/intents/:id/refund| Parameter | Type | Required | Description |
|---|---|---|---|
reason | string | Yes | Refund reason (1–500 chars) |
Response object
All responses are wrapped in { "success": true, "data": ... }. List endpoints add pagination with total, page, pageSize, and totalPages.
PaymentIntent fields
idstringUnique payment intent UUIDappIdstringApp this payment belongs tocustomerAccountIdstring | nullLinked customer UUIDexternalIdstring | nullYour system's order or reference IDamountstringPayment amount as a decimal stringcurrencystringFiat currency code (e.g. USD)allowedChains'ALL' | number[]Permitted blockchain chain IDsallowedTokens'ALL' | string[]Permitted token identifierscaptureModestringAUTOMATIC or MANUALtimelockDurationnumberEscrow lock duration in secondsdisputeStartDurationnumberWindow (seconds) after capture during which a dispute can startstatusstringCREATED, AUTHORIZED, CAPTURED, SETTLED, CANCELLED, REFUND_PENDING, REFUNDED, or FAILEDauthorizationMethodstring | nullDIRECT, PERMIT, or APPROVALauthorizationChainIdnumber | nullChain ID used for paymentauthorizationTokenKeystring | nullToken key used for paymentauthorizationWalletAddressstring | nullPayer wallet addressauthorizationTxHashstring | nullOn-chain authorization tx hashauthorizationSignaturestring | nullEIP-2612 permit signature, if applicableauthorizedAtstring | nullISO 8601 timestamp of authorizationcryptoAmountstring | nullToken amount paid (raw units)cryptoTokenKeystring | nullToken key of the payment tokencryptoTokenDecimalsnumber | nullDecimal precision of the payment tokenexchangeRatestring | nullUSD-to-token exchange rate at time of paymentcaptureTxHashstring | nullOn-chain capture tx hashcapturedAtstring | nullISO 8601 capture timestampcaptureAttemptsnumberNumber of capture attemptstimelockEndsAtstring | nullISO 8601 timestamp when the escrow timelock expiressettledAtstring | nullISO 8601 settlement timestamprefundedAtstring | nullISO 8601 refund timestamprefundTxHashstring | nullOn-chain refund tx hashrefundReasonstring | nullReason for refundplatformFeeBpsnumberPlatform fee in basis pointsexpiresAtstring | nullISO 8601 expiration timestampsourceTypestring | nullOrigin: CHECKOUT, PAYMENT_LINK, INVOICE, or SUBSCRIPTIONsourceIdstring | nullID of the originating resourcesuccessUrlstring | nullRedirect URL after paymentcancelUrlstring | nullRedirect URL on cancelmetadataobjectArbitrary key-value pairsidempotencyKeystring | nullDeduplication keycreatedAtstringISO 8601 creation timestampupdatedAtstringISO 8601 last-update timestamp💡
Retrieve and list include relations
The retrieve endpoint adds nested
transactions (Transaction[]), dispute (Dispute | null), and customerAccount (CustomerAccount | null). The list endpoint includes transactions only.Refund response
The refund endpoint returns a custom object, not a full PaymentIntent: