API reference
Top-ups
Add funds by card, crypto or wire.
BrowseTop-ups
List your top-ups
GET/
- Access
- API key. Full-access keys only; not reachable by scoped keys.
- Rate limit
- 100 requests per second (the default)
Your 50 most recent top-ups of every method and status.
Response 200
datarequiredobject[]
idrequiredstring (uuid) · data[].id
methodrequiredstring · data[].method
stripe = cardOne ofcrypto,wire,stripe,x402amountUsdrequiredmoney · data[].amountUsd
USD as a decimal string with exactly 6 places, e.g. "0.012500".statusrequiredstring · data[].status
One ofpending,confirmed,rejectedcryptoTokenrequiredstring | null · data[].cryptoToken
cryptoNetworkrequiredstring | null · data[].cryptoNetwork
cryptoTxHashrequiredstring | null · data[].cryptoTxHash
wireReferencerequiredstring | null · data[].wireReference
depositAddressrequiredstring | null · data[].depositAddress
depositMemorequiredstring | null · data[].depositMemo
createdAtrequiredstring (date-time) · data[].createdAt
ISO-8601 timestamp (UTC)confirmedAtrequiredstring (date-time) | null · data[].confirmedAt
ISO-8601 timestamp (UTC)
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Start a card top-up
POST/
- Access
- API key. Scoped keys need
billing:write. - Rate limit
- 100 requests per second (the default)
- Safe retries
- Send
X-Idempotency-Key; a replay within 24 hours returns the first response. - Moves money
- Starts a payment to top up your balance.
Creates a pending top-up and a card payment to confirm client-side with clientSecret and publishableKey. The balance is credited when the card processor confirms the payment. If card payments are not enabled, the pending top-up is returned with a message instead. Requires identity verification when the platform enforces it (403 KYC_REQUIRED), and is subject to account flags and top-up velocity limits.
Parameters
X-Idempotency-Keyheader · string
Any unique string (a UUID is ideal). Replays within 24 hours return the first response instead of acting twice.
Request body (application/json)
amountUsdrequirednumber
5 to 10000
Response 201
datarequiredobject
topupIdrequiredstring (uuid) · data.topupId
amountUsdrequirednumber · data.amountUsd
Echo of the requested amount (JSON number)methodrequiredstring · data.method
One ofstripestatusrequiredstring · data.status
One ofpendingclientSecretstring · data.clientSecret
publishableKeystring | null · data.publishableKey
messagestring · data.message
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support. - Also
KYC_REQUIRED,STRIPE_ERROR
Top up with an x402 USDC payment
POST/
- Access
- API key. Scoped keys need
billing:write. - Rate limit
- 100 requests per second (the default)
- Moves money
- Starts a payment to top up your balance.
Pay-per-request top-up using the x402 protocol. Call once without an X-PAYMENT header to receive a 402 challenge with the payment requirements; retry with a signed X-PAYMENT header to settle and be credited in the same request. A replayed payment returns the original top-up with already: true. It settles real USDC on Base mainnet into your live balance, so test keys are refused with 403 TEST_KEY_NOT_ALLOWED. Requires identity verification when the platform enforces it (403 KYC_REQUIRED), and is subject to account flags and top-up velocity limits.
Request body (application/json)
amountUsdrequirednumber
5 to 50000
Response 200
datarequiredobject
topupIdrequiredstring (uuid) · data.topupId
amountUsdrequirednumber · data.amountUsd
methodrequiredstring · data.method
One ofx402statusrequiredstring · data.status
One ofpending,confirmednetworkstring · data.network
txHashstring · data.txHash
payerstring · data.payer
newBalancenumber · data.newBalance
Balance after crediting (JSON number)alreadyboolean · data.already
messagestring · data.message
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support. - Also
KYC_REQUIRED,TEST_KEY_NOT_ALLOWED
Start a crypto top-up
POST/
- Access
- API key. Scoped keys need
billing:write. - Rate limit
- 10 requests per minute
- Safe retries
- Send
X-Idempotency-Key; a replay within 24 hours returns the first response. - Moves money
- Starts a payment to top up your balance.
Returns where to send funds. When a unique deposit address (or memo) could be allocated, autoCredit is true and the deposit credits automatically on confirmation; otherwise send to the shared address quoting reference and it is credited after manual verification. A memo, when present, is mandatory. Requires identity verification when the platform enforces it (403 KYC_REQUIRED), and is subject to account flags and top-up velocity limits.
Parameters
X-Idempotency-Keyheader · string
Any unique string (a UUID is ideal). Replays within 24 hours return the first response instead of acting twice.
Request body (application/json)
amountUsdrequirednumber
5 to 50000tokenrequiredstring
One ofBTC,ETH,USDT,USDC,SOLnetworkrequiredstring
One ofbitcoin,ethereum,solana,tron,polygon
Response 201
datarequiredobject
topupIdrequiredstring (uuid) · data.topupId
amountUsdrequirednumber · data.amountUsd
tokenrequiredstring · data.token
One ofBTC,ETH,USDT,USDC,SOLnetworkrequiredstring · data.network
One ofbitcoin,ethereum,solana,tron,polygondepositAddressrequiredstring · data.depositAddress
memorequiredstring | null · data.memo
referencerequiredstring · data.reference
autoCreditrequiredboolean · data.autoCredit
statusrequiredstring · data.status
One ofpendingmessagerequiredstring · data.message
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support. - Also
KYC_REQUIRED
Start a wire-transfer top-up
POST/
- Access
- API key. Scoped keys need
billing:write. - Rate limit
- 100 requests per second (the default)
- Safe retries
- Send
X-Idempotency-Key; a replay within 24 hours returns the first response. - Moves money
- Starts a payment to top up your balance.
Returns bank details and a reference you must quote on the transfer. Credited within 1-3 business days of receipt. 503 WIRE_UNAVAILABLE when wire is not offered. Requires identity verification when the platform enforces it (403 KYC_REQUIRED), and is subject to account flags and top-up velocity limits.
Parameters
X-Idempotency-Keyheader · string
Any unique string (a UUID is ideal). Replays within 24 hours return the first response instead of acting twice.
Request body (application/json)
amountUsdrequirednumber
100 to 100000
Response 201
datarequiredobject
topupIdrequiredstring (uuid) · data.topupId
amountUsdrequirednumber · data.amountUsd
wireReferencerequiredstring · data.wireReference
bankDetailsrequiredobject · data.bankDetails
bankNamerequiredstring · data.bankDetails.bankName
accountNamerequiredstring · data.bankDetails.accountName
ibanrequiredstring · data.bankDetails.iban
swiftrequiredstring · data.bankDetails.swift
currencyrequiredstring · data.bankDetails.currency
One ofUSDstatusrequiredstring · data.status
One ofpendingmessagerequiredstring · data.message
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support. - Also
KYC_REQUIRED,WIRE_UNAVAILABLE
List available top-up methods and their limits
GET/
- Access
- API key. Full-access keys only; not reachable by scoped keys.
- Rate limit
- 100 requests per second (the default)
Response 200
datarequiredobject
striperequiredobject · data.stripe
enabledrequiredboolean · data.stripe.enabled
minAmountrequirednumber · data.stripe.minAmount
maxAmountrequirednumber · data.stripe.maxAmount
currencyrequiredstring · data.stripe.currency
processingTimerequiredstring · data.stripe.processingTime
cryptorequiredobject · data.crypto
enabledrequiredboolean · data.crypto.enabled
minAmountrequirednumber · data.crypto.minAmount
maxAmountrequirednumber · data.crypto.maxAmount
tokensrequiredstring[] · data.crypto.tokens
networksrequiredstring[] · data.crypto.networks
processingTimerequiredstring · data.crypto.processingTime
wirerequiredobject · data.wire
enabledrequiredboolean · data.wire.enabled
minAmountrequirednumber · data.wire.minAmount
maxAmountrequirednumber · data.wire.maxAmount
currencyrequiredstring · data.wire.currency
processingTimerequiredstring · data.wire.processingTime
bankDetailsrequiredobject | null · data.wire.bankDetails
bankNamerequiredstring · data.wire.bankDetails.bankName
accountNamerequiredstring · data.wire.bankDetails.accountName
ibanrequiredstring · data.wire.bankDetails.iban
swiftrequiredstring · data.wire.bankDetails.swift
currencyrequiredstring · data.wire.bankDetails.currency
One ofUSD
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Start saving a card for auto-recharge
POST/
- Access
- API key. Full-access keys only; not reachable by scoped keys.
- Rate limit
- 100 requests per second (the default)
- Moves money
- Starts a payment to top up your balance.
Returns a client secret to collect and save a card for later unattended charges. 503 STRIPE_DISABLED when card payments are off.
Response 201
datarequiredobject
clientSecretrequiredstring | null · data.clientSecret
publishableKeyrequiredstring | null · data.publishableKey
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support. - Also
STRIPE_DISABLED,STRIPE_ERROR
List your saved cards
GET/
- Access
- API key. Full-access keys only; not reachable by scoped keys.
- Rate limit
- 100 requests per second (the default)
Brand, last 4 and expiry only. Empty when card payments are off or no card is saved.
Response 200
datarequiredobject[]
idrequiredstring · data[].id
brandrequiredstring · data[].brand
last4requiredstring · data[].last4
expMonthrequiredinteger | null · data[].expMonth
expYearrequiredinteger | null · data[].expYear
isDefaultrequiredboolean · data[].isDefault
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Set your default card
POST/
- Access
- API key. Full-access keys only; not reachable by scoped keys.
- Rate limit
- 100 requests per second (the default)
- Moves money
- Starts a payment to top up your balance.
The default card is the one auto-recharge charges.
Request body (application/json)
paymentMethodIdrequiredstring
Response 200
datarequiredobject
defaultPaymentMethodIdrequiredstring · data.defaultPaymentMethodId
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support. - Also
STRIPE_DISABLED
Remove a saved card
DELETE/
- Access
- API key. Full-access keys only; not reachable by scoped keys.
- Rate limit
- 100 requests per second (the default)
- Moves money
- Starts a payment to top up your balance.
Removing the default card also clears it as default, which stops auto-recharge from charging.
Parameters
idrequiredpath · string
Response 200
datarequiredobject
removedrequiredstring · data.removed
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Get your auto-recharge settings
GET/
- Access
- API key. Full-access keys only; not reachable by scoped keys.
- Rate limit
- 100 requests per second (the default)
Response 200
datarequiredobject
enabledrequiredboolean · data.enabled
thresholdrequiredstring | null · data.threshold
USD, 2-decimal string: recharge when the balance falls below thisamountrequiredstring | null · data.amount
USD, 2-decimal string: how much each recharge addsdailyCaprequiredstring | null · data.dailyCap
USD, 2-decimal string: most that auto-recharge may charge per UTC dayhasDefaultCardrequiredboolean · data.hasDefaultCard
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Update your auto-recharge settings
PUT/
- Access
- API key. Full-access keys only; not reachable by scoped keys.
- Rate limit
- 100 requests per second (the default)
- Moves money
- Starts a payment to top up your balance.
Send only the fields to change; null clears a value. Enabling requires a default card and both a threshold and an amount.
Request body (application/json)
enabledboolean
thresholdnumber | null
0 to 100000amountnumber | null
5 to 10000dailyCapnumber | null
0 to 100000
Response 200
datarequiredobject
Same fields as AutoRecharge, shown earlier on this page.
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
List your pending top-ups with payment instructions
GET/
- Access
- API key. Full-access keys only; not reachable by scoped keys.
- Rate limit
- 100 requests per second (the default)
Pending crypto and wire top-ups with the address or bank details to complete them. Pending top-ups expire after 7 days. amountUsd here is a plain JSON number.
Response 200
datarequiredobject[]
idrequiredstring (uuid) · data[].id
methodrequiredstring · data[].method
One ofcrypto,wire,stripe,x402amountUsdrequirednumber · data[].amountUsd
statusrequiredstring · data[].status
One ofpendingreferencerequiredstring | null · data[].reference
createdAtrequiredstring (date-time) · data[].createdAt
ISO-8601 timestamp (UTC)ageHoursrequiredinteger · data[].ageHours
expiresInDaysrequiredinteger · data[].expiresInDays
tokenstring | null · data[].token
networkstring | null · data[].network
depositAddressstring | null · data[].depositAddress
bankDetailsobject | null · data[].bankDetails
bankNamerequiredstring · data[].bankDetails.bankName
accountNamerequiredstring · data[].bankDetails.accountName
ibanrequiredstring · data[].bankDetails.iban
swiftrequiredstring · data[].bankDetails.swift
currencyrequiredstring · data[].bankDetails.currency
One ofUSDinstructionsrequiredstring · data[].instructions
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.