Coinstash API
The Coinstash GraphQL API gives you programmatic access to the platform — market data, quotes, your accounts and balances, orders, deposits and withdrawals.
Endpoint
All requests go to a single GraphQL endpoint:
POST https://graph.coinstash.com.au/graphql
Authentication
Public market-data operations (coins, quotes, charts) work without authentication. Everything that touches your account requires a Bearer token:
Authorization: Bearer <your-api-token>
Create one under API Keys in your account settings.
A new key can read your account by default. Two further permissions are opt-in when you create it, and cannot be added afterwards — make a new key if you need them:
- Trade — buying, selling, swapping and placing orders.
- Withdraw — AUD and crypto withdrawals.
An operation fails with 403 if your key is missing the permission it needs.
Rate limits
Requests are rate-limited per client. If you receive 429, back off and retry with exponential delay.
API Endpoints
https://graph.coinstash.com.au/graphql
Queries
accountBalances
Description
Returns the balances currently held in an account, broken down by coin and by fiat currency, including any reward balances.
Response
Returns an AccountBalancesResponse
Arguments
| Name | Description |
|---|---|
accountId - ID!
|
Identifier of the account whose balances to return. Required. |
Example
Query
query accountBalances($accountId: ID!) {
accountBalances(accountId: $accountId) {
data {
...AccountBalancesFragment
}
errorCode
errorMessage
errors
idempotentId
isSuccessful
}
}
Variables
{"accountId": "4"}
Response
{
"data": {
"accountBalances": {
"data": AccountBalances,
"errorCode": "xyz789",
"errorMessage": "abc123",
"errors": {},
"idempotentId": "abc123",
"isSuccessful": true
}
}
}
accountOrders
Description
Searches an account's orders, where each order groups its underlying transactions, with paging, sorting and optional filters by type, category, coin, status and date range.
Response
Returns a SearchOrderResultSearchResponseBase
Arguments
| Name | Description |
|---|---|
accountId - ID!
|
Identifier of the account whose orders to search. Required. |
searchAccountOrdersPayloadInput - SearchAccountOrdersPayloadInput
|
Filters, paging and sorting for an order search. |
Example
Query
query accountOrders(
$accountId: ID!,
$searchAccountOrdersPayloadInput: SearchAccountOrdersPayloadInput
) {
accountOrders(
accountId: $accountId,
searchAccountOrdersPayloadInput: $searchAccountOrdersPayloadInput
) {
errorMessage
isSuccessful
pageIndex
pageSize
result {
...SearchOrderResultFragment
}
totalRecordsFound
}
}
Variables
{
"accountId": 4,
"searchAccountOrdersPayloadInput": SearchAccountOrdersPayloadInput
}
Response
{
"data": {
"accountOrders": {
"errorMessage": "xyz789",
"isSuccessful": false,
"pageIndex": 123,
"pageSize": 123,
"result": [SearchOrderResult],
"totalRecordsFound": {}
}
}
}
accountTransactions
Description
Searches an account's individual transactions — trades, deposits, withdrawals, transfers and rewards — with paging, sorting and optional filters by type, category, coin and date range.
Response
Arguments
| Name | Description |
|---|---|
accountId - ID!
|
Identifier of the account whose transactions to search. Required. |
searchAccountTransactionsPayloadInput - SearchAccountTransactionsPayloadInput
|
Filters, paging and sorting for a transaction search. |
Example
Query
query accountTransactions(
$accountId: ID!,
$searchAccountTransactionsPayloadInput: SearchAccountTransactionsPayloadInput
) {
accountTransactions(
accountId: $accountId,
searchAccountTransactionsPayloadInput: $searchAccountTransactionsPayloadInput
) {
errorMessage
isSuccessful
pageIndex
pageSize
result {
...SearchTransactionResultFragment
}
totalRecordsFound
}
}
Variables
{
"accountId": 4,
"searchAccountTransactionsPayloadInput": SearchAccountTransactionsPayloadInput
}
Response
{
"data": {
"accountTransactions": {
"errorMessage": "abc123",
"isSuccessful": false,
"pageIndex": 123,
"pageSize": 987,
"result": [SearchTransactionResult],
"totalRecordsFound": {}
}
}
}
estimateDefiTrade
Description
Quotes a buy or sell of a coin against the customer's local currency at the best available price. Returns a short-lived quoteId with the amounts and fees; execute the trade with it before the quote expires. No funds move at this stage.
Response
Returns an EstimateDefiTradeResponse
Arguments
| Name | Description |
|---|---|
amount - String
|
How much to trade, as a decimal number: for a buy this is the amount of currencyCode to spend; for a sell it is the number of coins to sell. Must be greater than zero and within the coin's minimum and maximum trade limits. |
coinId - String
|
Id of the coin to trade, as used across the Coinstash API. The coin must be available for the chosen side. Required. |
currencyCode - CurrencyCode
|
Currency to price the trade in. Defaults to AUD. |
limitOrderId - ID
|
Optional id of an existing limit order this quote is being generated for. Leave unset for a normal trade. |
side - Side
|
Direction of the trade: Buy or Sell. |
slippage - Float
|
Price-movement tolerance for the trade, as a decimal fraction (for example 0.01 for 1%). |
userId - ID
|
The id of the account to trade for. Omit to use the customer's own account; supply it only to trade on another account you have access to. |
Example
Query
query estimateDefiTrade(
$amount: String,
$coinId: String,
$currencyCode: CurrencyCode,
$limitOrderId: ID,
$side: Side,
$slippage: Float,
$userId: ID
) {
estimateDefiTrade(
amount: $amount,
coinId: $coinId,
currencyCode: $currencyCode,
limitOrderId: $limitOrderId,
side: $side,
slippage: $slippage,
userId: $userId
) {
errorCode
errorMessage
isSuccessful
recommendedEstimation {
...EstimatedDefiTradeFragment
}
}
}
Variables
{
"amount": "abc123",
"coinId": "abc123",
"currencyCode": "AUD",
"limitOrderId": "4",
"side": "BUY",
"slippage": 987.65,
"userId": 4
}
Response
{
"data": {
"estimateDefiTrade": {
"errorCode": "abc123",
"errorMessage": "xyz789",
"isSuccessful": false,
"recommendedEstimation": EstimatedDefiTrade
}
}
}
getAccountInfo
Description
Returns the profile for a single account: its type, verification tier, loyalty membership tier, and whether it has ever traded or deposited. Returns not found if the account does not exist.
Response
Returns a GetAccountInfoResponse
Arguments
| Name | Description |
|---|---|
accountId - ID!
|
Identifier of the account to look up. Required. |
Example
Query
query getAccountInfo($accountId: ID!) {
getAccountInfo(accountId: $accountId) {
accountId
accountType
createdOn
didDeposit
didTrade
email
errorMessage
isDisabled
isSuccessful
membershipTier
tier
updatedOn
userId
}
}
Variables
{"accountId": "4"}
Response
{
"data": {
"getAccountInfo": {
"accountId": "4",
"accountType": "TRADING",
"createdOn": "xyz789",
"didDeposit": true,
"didTrade": false,
"email": "abc123",
"errorMessage": "xyz789",
"isDisabled": true,
"isSuccessful": false,
"membershipTier": "xyz789",
"tier": "TIER0",
"updatedOn": "xyz789",
"userId": "4"
}
}
}
getAccountOrder
Description
Returns a single order together with all the transactions that make it up. Accepts either the order id or a transaction id belonging to the order.
Response
Returns a GetAccountOrderResult
Example
Query
query getAccountOrder(
$accountId: ID!,
$orderId: ID!
) {
getAccountOrder(
accountId: $accountId,
orderId: $orderId
) {
errorCode
errorMessage
isSuccessful
order {
...SearchOrderResultFragment
}
}
}
Variables
{"accountId": "4", "orderId": 4}
Response
{
"data": {
"getAccountOrder": {
"errorCode": "abc123",
"errorMessage": "xyz789",
"isSuccessful": false,
"order": SearchOrderResult
}
}
}
getActivity
Description
Returns the full details of a single account activity by its ID.
Response
Returns a GetActivityResponse
Arguments
| Name | Description |
|---|---|
activityId - ID!
|
The ID of the activity to fetch. Required. |
Example
Query
query getActivity($activityId: ID!) {
getActivity(activityId: $activityId) {
accountId
activityId
cancellable
content
createdOn
errorMessage
memo
status
type
updatedOn
}
}
Variables
{"activityId": "4"}
Response
{
"data": {
"getActivity": {
"accountId": 4,
"activityId": 4,
"cancellable": false,
"content": {},
"createdOn": "abc123",
"errorMessage": "abc123",
"memo": "xyz789",
"status": "PENDING",
"type": "WITHDRAWFIAT",
"updatedOn": "xyz789"
}
}
}
getAssetDepositAddress
Description
Returns the customer's deposit address for an asset so they can fund their Coinstash account. The same address is returned every time; one is created automatically the first time you ask. The customer must have completed identity verification. For assets that live on more than one blockchain, pass the blockchain so the correct address is returned.
Response
Returns an AssetAddressResult
Arguments
| Name | Description |
|---|---|
accountId - ID
|
The customer account to return the address for. Omit to use your own account; supply it only when reading an account you have access to. |
blockchain - String
|
The blockchain network to receive the deposit on, e.g. Ethereum or Solana. Required for assets that exist on more than one network; for single-network assets it can be omitted. |
symbol - String!
|
Ticker symbol of the asset to deposit, e.g. BTC or USDC. Must be an asset Coinstash accepts for deposit. |
Example
Query
query getAssetDepositAddress(
$accountId: ID,
$blockchain: String,
$symbol: String!
) {
getAssetDepositAddress(
accountId: $accountId,
blockchain: $blockchain,
symbol: $symbol
) {
accountId
address
addressId
blockchain
errorMessage
isSuccessful
label
symbol
tag
}
}
Variables
{
"accountId": 4,
"blockchain": "xyz789",
"symbol": "abc123"
}
Response
{
"data": {
"getAssetDepositAddress": {
"accountId": "4",
"address": "xyz789",
"addressId": "abc123",
"blockchain": "abc123",
"errorMessage": "xyz789",
"isSuccessful": false,
"label": "xyz789",
"symbol": "xyz789",
"tag": "abc123"
}
}
}
getBundle
Description
Retrieves a single bundle by its id, including its coins, allocations, image, and the minimum amount needed to buy it.
Response
Returns a BundleResponse
Arguments
| Name | Description |
|---|---|
bundleId - String!
|
Unique identifier of the bundle to retrieve. Required. |
Example
Query
query getBundle($bundleId: String!) {
getBundle(bundleId: $bundleId) {
abstract
bundleId
bundleImageUrl
category
coins {
...PopulatedBundleCoinFragment
}
description
minimumTradingAmounts
name
priority
slug
version
}
}
Variables
{"bundleId": "xyz789"}
Response
{
"data": {
"getBundle": {
"abstract": "xyz789",
"bundleId": "abc123",
"bundleImageUrl": "xyz789",
"category": "abc123",
"coins": [PopulatedBundleCoin],
"description": "xyz789",
"minimumTradingAmounts": {},
"name": "abc123",
"priority": 987,
"slug": "xyz789",
"version": 123
}
}
}
getBundleBySlug
Description
Retrieves a single bundle by its URL-friendly slug, returning the same details as fetching it by id.
Response
Returns a BundleResponse
Arguments
| Name | Description |
|---|---|
slug - String!
|
URL-friendly identifier of the bundle to retrieve. Required. Matching ignores case and surrounding whitespace. |
Example
Query
query getBundleBySlug($slug: String!) {
getBundleBySlug(slug: $slug) {
abstract
bundleId
bundleImageUrl
category
coins {
...PopulatedBundleCoinFragment
}
description
minimumTradingAmounts
name
priority
slug
version
}
}
Variables
{"slug": "xyz789"}
Response
{
"data": {
"getBundleBySlug": {
"abstract": "xyz789",
"bundleId": "xyz789",
"bundleImageUrl": "xyz789",
"category": "abc123",
"coins": [PopulatedBundleCoin],
"description": "xyz789",
"minimumTradingAmounts": {},
"name": "abc123",
"priority": 987,
"slug": "abc123",
"version": 987
}
}
}
getChain
Description
Retrieves the details of a single supported blockchain by its identifier. Returns a not-found response if no supported chain matches the given identifier.
Response
Returns a GetChainResponse
Arguments
| Name | Description |
|---|---|
chainId - String!
|
Identifier of the chain to retrieve, as returned by the list-chains request. Required. |
Example
Query
query getChain($chainId: String!) {
getChain(chainId: $chainId) {
chain {
...ChainResponseItemFragment
}
errorMessage
isSuccessful
}
}
Variables
{"chainId": "xyz789"}
Response
{
"data": {
"getChain": {
"chain": ChainResponseItem,
"errorMessage": "abc123",
"isSuccessful": true
}
}
}
getCoin
Description
Retrieves a single coin's full profile by its unique identifier. Returns 404 if no coin matches the identifier.
Response
Returns a GetCoinResponse
Example
Query
query getCoin(
$coinId: String!,
$userId: ID
) {
getCoin(
coinId: $coinId,
userId: $userId
) {
active {
...ActiveFragment
}
blockchainSettings {
...BlockchainSettingResponseFragment
}
blockchains
categories
category
coinId
coinUrl
defaultWithdrawalFee
defi {
...DefiFragment
}
defiAddresses {
...DefiAddressFragment
}
description
displaySymbol
features {
...CoinFeaturesFragment
}
links {
...CoinLinkFragment
}
maximumTradeAmount
maximumTradeQuantity
membershipBuyTradeFee
membershipSellTradeFee
minimumBuyAmounts
minimumDepositAmount
minimumSellAmounts
minimumTradingAmounts
minimumWithdrawAmount
name
notices {
...CoinNoticeFragment
}
rewardsConversionFee
rfqTrigger
symbol
tradeFee
tradeNetworkFee
withdrawDecimals
withdrawalFees
}
}
Variables
{
"coinId": "xyz789",
"userId": "4"
}
Response
{
"data": {
"getCoin": {
"active": Active,
"blockchainSettings": [BlockchainSettingResponse],
"blockchains": ["abc123"],
"categories": ["abc123"],
"category": "xyz789",
"coinId": "abc123",
"coinUrl": "abc123",
"defaultWithdrawalFee": 987.65,
"defi": Defi,
"defiAddresses": [DefiAddress],
"description": "xyz789",
"displaySymbol": "abc123",
"features": CoinFeatures,
"links": [CoinLink],
"maximumTradeAmount": 987.65,
"maximumTradeQuantity": 987.65,
"membershipBuyTradeFee": 987.65,
"membershipSellTradeFee": 987.65,
"minimumBuyAmounts": {},
"minimumDepositAmount": 987.65,
"minimumSellAmounts": {},
"minimumTradingAmounts": {},
"minimumWithdrawAmount": 123.45,
"name": "xyz789",
"notices": [CoinNotice],
"rewardsConversionFee": 987.65,
"rfqTrigger": 987.65,
"symbol": "xyz789",
"tradeFee": 123.45,
"tradeNetworkFee": 987.65,
"withdrawDecimals": 123,
"withdrawalFees": {}
}
}
}
getCoinBySymbol
Description
Retrieves a single coin's full profile by its trading symbol (for example, BTC). Returns 404 if no coin matches the symbol.
Response
Returns a GetCoinResponse
Arguments
| Name | Description |
|---|---|
symbol - String!
|
The coin's trading symbol, such as BTC or ETH. Case-insensitive. |
userId - ID
|
Optional account holder to personalise the response for. When supplied, membership-tier trading fees and reward rates are calculated for that account. Leave unset for standard rates. |
Example
Query
query getCoinBySymbol(
$symbol: String!,
$userId: ID
) {
getCoinBySymbol(
symbol: $symbol,
userId: $userId
) {
active {
...ActiveFragment
}
blockchainSettings {
...BlockchainSettingResponseFragment
}
blockchains
categories
category
coinId
coinUrl
defaultWithdrawalFee
defi {
...DefiFragment
}
defiAddresses {
...DefiAddressFragment
}
description
displaySymbol
features {
...CoinFeaturesFragment
}
links {
...CoinLinkFragment
}
maximumTradeAmount
maximumTradeQuantity
membershipBuyTradeFee
membershipSellTradeFee
minimumBuyAmounts
minimumDepositAmount
minimumSellAmounts
minimumTradingAmounts
minimumWithdrawAmount
name
notices {
...CoinNoticeFragment
}
rewardsConversionFee
rfqTrigger
symbol
tradeFee
tradeNetworkFee
withdrawDecimals
withdrawalFees
}
}
Variables
{
"symbol": "abc123",
"userId": "4"
}
Response
{
"data": {
"getCoinBySymbol": {
"active": Active,
"blockchainSettings": [BlockchainSettingResponse],
"blockchains": ["abc123"],
"categories": ["abc123"],
"category": "xyz789",
"coinId": "xyz789",
"coinUrl": "xyz789",
"defaultWithdrawalFee": 123.45,
"defi": Defi,
"defiAddresses": [DefiAddress],
"description": "abc123",
"displaySymbol": "xyz789",
"features": CoinFeatures,
"links": [CoinLink],
"maximumTradeAmount": 123.45,
"maximumTradeQuantity": 987.65,
"membershipBuyTradeFee": 987.65,
"membershipSellTradeFee": 987.65,
"minimumBuyAmounts": {},
"minimumDepositAmount": 123.45,
"minimumSellAmounts": {},
"minimumTradingAmounts": {},
"minimumWithdrawAmount": 123.45,
"name": "xyz789",
"notices": [CoinNotice],
"rewardsConversionFee": 123.45,
"rfqTrigger": 123.45,
"symbol": "abc123",
"tradeFee": 123.45,
"tradeNetworkFee": 123.45,
"withdrawDecimals": 123,
"withdrawalFees": {}
}
}
}
getDefiOrder
Description
Get the status and details of one of your DeFi orders by its identifier.
Response
Returns a GetDefiOrderResponse
Arguments
| Name | Description |
|---|---|
orderId - ID!
|
The identifier of the DeFi order to retrieve. |
Example
Query
query getDefiOrder($orderId: ID!) {
getDefiOrder(orderId: $orderId) {
assetAmount
currencyAmount
currencyCode
defiOrderStatus
isSuccessful
networkFee
orderId
scannerTxUrl
side
symbol
tradeFee
}
}
Variables
{"orderId": 4}
Response
{
"data": {
"getDefiOrder": {
"assetAmount": 123.45,
"currencyAmount": 123.45,
"currencyCode": "AUD",
"defiOrderStatus": "PENDING",
"isSuccessful": false,
"networkFee": 987.65,
"orderId": 4,
"scannerTxUrl": "xyz789",
"side": "BUY",
"symbol": "abc123",
"tradeFee": 987.65
}
}
}
getFiatDepositAddress
Description
Returns the customer's personal Australian bank-transfer details (BSB, account number and PayID) for adding funds to their Coinstash balance. If the customer does not have deposit details yet, they are created automatically. Returns null only when details cannot be generated.
Response
Returns a FiatAddressResult
Arguments
| Name | Description |
|---|---|
accountId - ID
|
Set only to read the deposit details of another account you have access to; omit to use the customer's own account. |
Example
Query
query getFiatDepositAddress($accountId: ID) {
getFiatDepositAddress(accountId: $accountId) {
accountId
accountName
accountNumber
addressId
addressStatus
bankName
bsbNumber
currencyCode
label
note
payId
}
}
Variables
{"accountId": "4"}
Response
{
"data": {
"getFiatDepositAddress": {
"accountId": 4,
"accountName": "xyz789",
"accountNumber": "xyz789",
"addressId": "abc123",
"addressStatus": "NOTVERIFIED",
"bankName": "abc123",
"bsbNumber": "abc123",
"currencyCode": "AUD",
"label": "xyz789",
"note": "xyz789",
"payId": "abc123"
}
}
}
getLast
Description
Get the latest quote
Response
Returns a QuoteResponse
Arguments
| Name | Description |
|---|---|
asList - Boolean
|
|
targetCurrency - TargetCurrency!
|
Example
Query
query getLast(
$asList: Boolean,
$targetCurrency: TargetCurrency!
) {
getLast(
asList: $asList,
targetCurrency: $targetCurrency
) {
issuedOn
prices
pricesList {
...QuotePriceResponseFragment
}
quoteId
targetCurrency
}
}
Variables
{"asList": true, "targetCurrency": "AUD"}
Response
{
"data": {
"getLast": {
"issuedOn": "abc123",
"prices": {},
"pricesList": [QuotePriceResponse],
"quoteId": "xyz789",
"targetCurrency": "AUD"
}
}
}
getLimitOrder
Description
Returns the full details of a single limit order or price alert on the account by its order ID.
Response
Returns a GetLimitOrderResponse
Example
Query
query getLimitOrder(
$accountId: ID!,
$orderId: ID!
) {
getLimitOrder(
accountId: $accountId,
orderId: $orderId
) {
errorCode
errorMessage
isSuccessful
order {
...LimitOrderFragment
}
}
}
Variables
{"accountId": "4", "orderId": 4}
Response
{
"data": {
"getLimitOrder": {
"errorCode": "abc123",
"errorMessage": "abc123",
"isSuccessful": true,
"order": LimitOrder
}
}
}
getPortfolio
Description
Get a summary of your reward balances, totalled in AUD.
Response
Returns a PortfolioResponse
Example
Query
query getPortfolio(
$fromDate: String,
$userId: ID!
) {
getPortfolio(
fromDate: $fromDate,
userId: $userId
) {
fromDate
isSuccessful
toDate
totalRewardsGainedFiat
}
}
Variables
{
"fromDate": "xyz789",
"userId": "4"
}
Response
{
"data": {
"getPortfolio": {
"fromDate": "xyz789",
"isSuccessful": false,
"toDate": "xyz789",
"totalRewardsGainedFiat": 123.45
}
}
}
getPortfolioBalances
Description
Get your current holdings across all accounts, broken down by coin and by fiat currency.
Response
Returns an AccountBalancesResponse
Arguments
| Name | Description |
|---|---|
userId - ID!
|
The account holder whose balances you are requesting. |
Example
Query
query getPortfolioBalances($userId: ID!) {
getPortfolioBalances(userId: $userId) {
data {
...AccountBalancesFragment
}
errorCode
errorMessage
errors
idempotentId
isSuccessful
}
}
Variables
{"userId": "4"}
Response
{
"data": {
"getPortfolioBalances": {
"data": AccountBalances,
"errorCode": "abc123",
"errorMessage": "abc123",
"errors": {},
"idempotentId": "xyz789",
"isSuccessful": true
}
}
}
getPortfolioChart
Description
Get your total portfolio value over time as a series of daily data points, ready to plot on a chart. Defaults to the last 7 days when no date range is given.
Response
Returns a GetPortfolioChartResponse
Arguments
| Name | Description |
|---|---|
fromDate - String
|
Optional start of the date range (UTC). If neither date is supplied, the last 7 days are returned. |
toDate - String
|
Optional end of the date range (UTC). If neither date is supplied, the last 7 days are returned. |
userId - ID!
|
The account holder whose value history you are requesting. |
Example
Query
query getPortfolioChart(
$fromDate: String,
$toDate: String,
$userId: ID!
) {
getPortfolioChart(
fromDate: $fromDate,
toDate: $toDate,
userId: $userId
) {
fromDate
results {
...PortfolioStatementFragment
}
toDate
totalRecordsFound
}
}
Variables
{
"fromDate": "abc123",
"toDate": "abc123",
"userId": "4"
}
Response
{
"data": {
"getPortfolioChart": {
"fromDate": "xyz789",
"results": [PortfolioStatement],
"toDate": "xyz789",
"totalRecordsFound": {}
}
}
}
getReport
Description
Downloads a single previously generated report as a file, identified by its report id.
Response
Returns an Upload
Arguments
| Name | Description |
|---|---|
protect - Boolean
|
The downloaded PDF is encrypted so viewers refuse to edit it. Printing and copying text stay available. Defaults to true; pass protect=false for an editable PDF. |
reportId - ID!
|
The identifier of the report to download, as returned when the report was generated. |
Example
Query
query getReport(
$protect: Boolean,
$reportId: ID!
) {
getReport(
protect: $protect,
reportId: $reportId
)
}
Variables
{"protect": false, "reportId": "4"}
Response
{"data": {"getReport": Upload}}
getReportsArchive
Description
Downloads all of your reports for a given financial year as a single archive file.
Response
Returns an Upload
Example
Query
query getReportsArchive(
$fromDate: String,
$userId: ID,
$year: String
) {
getReportsArchive(
fromDate: $fromDate,
userId: $userId,
year: $year
)
}
Variables
{
"fromDate": "xyz789",
"userId": 4,
"year": "xyz789"
}
Response
{"data": {"getReportsArchive": Upload}}
getUserAccounts
Description
Lists all accounts belonging to a user, such as their trading and savings accounts, each with its profile.
Response
Returns a GetAccountsResponse
Arguments
| Name | Description |
|---|---|
userId - ID!
|
Identifier of the user whose accounts to list. Required. |
Example
Query
query getUserAccounts($userId: ID!) {
getUserAccounts(userId: $userId) {
accounts {
...GetAccountInfoResponseFragment
}
}
}
Variables
{"userId": 4}
Response
{
"data": {
"getUserAccounts": {
"accounts": [GetAccountInfoResponse]
}
}
}
listAssetAddresses
Description
Lists the withdrawal addresses saved in the customer's address book, one page at a time. Add a symbol to show only the addresses for that asset. Addresses are ordered by their label, then asset, then when they were added. Deposit addresses are not included here.
Response
Returns an AssetAddressResultSearchResponseBase
Arguments
| Name | Description |
|---|---|
accountId - ID
|
The customer account whose saved addresses to list. Omit to use your own account; supply it only when reading an account you have access to. |
pageIndex - Int
|
Zero-based page number to return. Defaults to 0 (the first page). |
pageSize - Int
|
Maximum number of items per page. Defaults to 10. |
sortDirection - SortDirection
|
|
sortField - String
|
|
symbol - String!
|
Ticker symbol to limit the results to, e.g. BTC. Omit to list saved addresses for every asset. |
Example
Query
query listAssetAddresses(
$accountId: ID,
$pageIndex: Int,
$pageSize: Int,
$sortDirection: SortDirection,
$sortField: String,
$symbol: String!
) {
listAssetAddresses(
accountId: $accountId,
pageIndex: $pageIndex,
pageSize: $pageSize,
sortDirection: $sortDirection,
sortField: $sortField,
symbol: $symbol
) {
errorMessage
isSuccessful
pageIndex
pageSize
result {
...AssetAddressResultFragment
}
totalRecordsFound
}
}
Variables
{
"accountId": 4,
"pageIndex": 987,
"pageSize": 987,
"sortDirection": "ASCENDING",
"sortField": "xyz789",
"symbol": "xyz789"
}
Response
{
"data": {
"listAssetAddresses": {
"errorMessage": "abc123",
"isSuccessful": true,
"pageIndex": 987,
"pageSize": 123,
"result": [AssetAddressResult],
"totalRecordsFound": {}
}
}
}
listBundles
Description
Lists bundles, with optional filtering by coin symbol, category, or keyword search. Results are paged.
Response
Returns a BundleResponseSearchResponseBase
Arguments
| Name | Description |
|---|---|
categories - [String]
|
Return only bundles in any of these categories. Optional; matching ignores case, and a bundle matches if it belongs to any listed category. |
keyword - String
|
Free-text search across bundle content, for example a name or theme. Optional; matching ignores case. |
pageIndex - Int
|
Zero-based page number to return. Defaults to 0 (the first page). |
pageSize - Int
|
Maximum number of items per page. Defaults to 10. |
sortDirection - SortDirection
|
|
sortField - String
|
|
symbol - String
|
Return only bundles that contain this coin symbol, for example "BTC". Optional; matching is exact. |
Example
Query
query listBundles(
$categories: [String],
$keyword: String,
$pageIndex: Int,
$pageSize: Int,
$sortDirection: SortDirection,
$sortField: String,
$symbol: String
) {
listBundles(
categories: $categories,
keyword: $keyword,
pageIndex: $pageIndex,
pageSize: $pageSize,
sortDirection: $sortDirection,
sortField: $sortField,
symbol: $symbol
) {
errorMessage
isSuccessful
pageIndex
pageSize
result {
...BundleResponseFragment
}
totalRecordsFound
}
}
Variables
{
"categories": ["abc123"],
"keyword": "xyz789",
"pageIndex": 123,
"pageSize": 987,
"sortDirection": "ASCENDING",
"sortField": "xyz789",
"symbol": "xyz789"
}
Response
{
"data": {
"listBundles": {
"errorMessage": "abc123",
"isSuccessful": false,
"pageIndex": 987,
"pageSize": 123,
"result": [BundleResponse],
"totalRecordsFound": {}
}
}
}
listCategories
Description
Lists the distinct categories across all tradable coins, for use as filter values on the coin listing.
Response
Returns a ListCategoriesResponse
Example
Query
query listCategories {
listCategories {
categories
}
}
Response
{
"data": {
"listCategories": {
"categories": ["abc123"]
}
}
}
listCoins
Description
Lists coins with live market data (price, market cap, 24h/7d/30d change, and volume) in the target currency (AUD). Supports filtering by symbol, category, active status, DeFi availability, and price or market-cap ranges, plus text search, sorting, and paging. Works without authentication; supply a user to personalise fees or filter by watchlist or balances.
Response
Returns a ListCoinsResponse
Arguments
| Name | Description |
|---|---|
active - Boolean
|
When true, return only coins that support at least one operation (trade, buy, sell, swap, or send); when false, return only fully inactive coins. Leave unset to include both. |
categories - [String]
|
Restrict results to these categories (for example, "Stablecoin"). Leave unset to include all categories. |
defi - Boolean
|
Set to false to exclude DeFi coins from the results. Leave unset (or true) to include them. |
isBalances - Boolean
|
When true, return only coins the account holder currently holds a balance in, and include those balances. Requires an authenticated user. |
isWatchlist - Boolean
|
When true, restrict results to the coins in the account holder's default watchlist. Requires a user. |
marketCapFilterFrom - Float
|
Lower bound (inclusive). Leave unset for no lower bound. |
marketCapFilterTo - Float
|
Upper bound (inclusive). Leave unset for no upper bound. |
pageIndex - Int
|
Zero-based page number to return. Defaults to 0. |
pageSize - Int
|
Number of coins per page. Defaults to a large value so all coins are returned unless you page. |
priceFilterFrom - Float
|
Lower bound (inclusive). Leave unset for no lower bound. |
priceFilterTo - Float
|
Upper bound (inclusive). Leave unset for no upper bound. |
searchQuery - String
|
Free-text search matched against coin name, trading symbol, and display symbol. Leave unset for no text filter. |
sortDirection - SortDirection
|
|
sortField - SortField
|
|
symbols - [String]
|
Restrict results to these trading symbols (for example, BTC, ETH). Case-insensitive; matches either the trading symbol or display symbol. Leave unset to include all coins. |
userId - ID
|
Optional account holder to personalise the response for. When supplied, membership-tier fees and reward rates are calculated for that account, and it enables watchlist/balance filtering for that account. |
watchlistId - String
|
Restrict results to the coins in a specific watchlist. Requires a user to be supplied. Leave unset to not filter by watchlist. |
withdrawalFees - Boolean
|
When true (default), include each coin's withdrawal fees in the results. |
Example
Query
query listCoins(
$active: Boolean,
$categories: [String],
$defi: Boolean,
$isBalances: Boolean,
$isWatchlist: Boolean,
$marketCapFilterFrom: Float,
$marketCapFilterTo: Float,
$pageIndex: Int,
$pageSize: Int,
$priceFilterFrom: Float,
$priceFilterTo: Float,
$searchQuery: String,
$sortDirection: SortDirection,
$sortField: SortField,
$symbols: [String],
$userId: ID,
$watchlistId: String,
$withdrawalFees: Boolean
) {
listCoins(
active: $active,
categories: $categories,
defi: $defi,
isBalances: $isBalances,
isWatchlist: $isWatchlist,
marketCapFilterFrom: $marketCapFilterFrom,
marketCapFilterTo: $marketCapFilterTo,
pageIndex: $pageIndex,
pageSize: $pageSize,
priceFilterFrom: $priceFilterFrom,
priceFilterTo: $priceFilterTo,
searchQuery: $searchQuery,
sortDirection: $sortDirection,
sortField: $sortField,
symbols: $symbols,
userId: $userId,
watchlistId: $watchlistId,
withdrawalFees: $withdrawalFees
) {
errorMessage
isSuccessful
pageIndex
pageSize
result {
...ListCoinsResultFragment
}
totalDefiCoins
totalRecordsFound
}
}
Variables
{
"active": true,
"categories": ["xyz789"],
"defi": false,
"isBalances": false,
"isWatchlist": true,
"marketCapFilterFrom": 123.45,
"marketCapFilterTo": 123.45,
"pageIndex": 123,
"pageSize": 987,
"priceFilterFrom": 987.65,
"priceFilterTo": 987.65,
"searchQuery": "abc123",
"sortDirection": "ASCENDING",
"sortField": "NAME",
"symbols": ["abc123"],
"userId": 4,
"watchlistId": "xyz789",
"withdrawalFees": true
}
Response
{
"data": {
"listCoins": {
"errorMessage": "xyz789",
"isSuccessful": false,
"pageIndex": 123,
"pageSize": 987,
"result": [ListCoinsResult],
"totalDefiCoins": 987,
"totalRecordsFound": 987
}
}
}
listFiatAddresses
Description
Returns the customer's saved bank-account withdrawal destinations, sorted by label. Results are paginated — pass pageIndex and pageSize. Set accountId only to read the addresses of another account you have access to.
Response
Returns a FiatAddressResultSearchResponseBase
Arguments
| Name | Description |
|---|---|
accountId - ID
|
Set only to list the addresses of another account you have access to; omit to use the customer's own account. |
pageIndex - Int
|
Zero-based page number to return. Defaults to 0 (the first page). |
pageSize - Int
|
Maximum number of items per page. Defaults to 10. |
sortDirection - SortDirection
|
|
sortField - String
|
Example
Query
query listFiatAddresses(
$accountId: ID,
$pageIndex: Int,
$pageSize: Int,
$sortDirection: SortDirection,
$sortField: String
) {
listFiatAddresses(
accountId: $accountId,
pageIndex: $pageIndex,
pageSize: $pageSize,
sortDirection: $sortDirection,
sortField: $sortField
) {
errorMessage
isSuccessful
pageIndex
pageSize
result {
...FiatAddressResultFragment
}
totalRecordsFound
}
}
Variables
{
"accountId": "4",
"pageIndex": 987,
"pageSize": 987,
"sortDirection": "ASCENDING",
"sortField": "xyz789"
}
Response
{
"data": {
"listFiatAddresses": {
"errorMessage": "abc123",
"isSuccessful": false,
"pageIndex": 123,
"pageSize": 123,
"result": [FiatAddressResult],
"totalRecordsFound": {}
}
}
}
listReports
Description
Lists the reports that have been generated for your account, with optional filtering by report type and paging.
Response
Returns a ListReportsResponse
Arguments
| Name | Description |
|---|---|
limit - Int
|
The maximum number of reports to return. Defaults to 50. |
reportType - String
|
Optional. Only return reports of this type. |
skip - Int
|
The number of reports to skip for paging. Defaults to 0. |
userId - ID
|
Optional. The account owner whose reports to list; defaults to the authenticated user. |
Example
Query
query listReports(
$limit: Int,
$reportType: String,
$skip: Int,
$userId: ID
) {
listReports(
limit: $limit,
reportType: $reportType,
skip: $skip,
userId: $userId
) {
errorMessage
isSuccessful
reports {
...ReportFragment
}
}
}
Variables
{
"limit": 987,
"reportType": "abc123",
"skip": 987,
"userId": 4
}
Response
{
"data": {
"listReports": {
"errorMessage": "xyz789",
"isSuccessful": true,
"reports": [Report]
}
}
}
searchLimitOrders
Description
Returns a paginated list of the account's limit orders and price alerts, newest first. Filter by one or more statuses, coin symbols, or order type.
Response
Returns a LimitOrderSearchResponseBase
Arguments
| Name | Description |
|---|---|
accountId - String!
|
|
searchLimitOrdersInput - SearchLimitOrdersInput
|
Filters for listing an account's limit orders and price alerts. Combine with the paging and sort fields from the base request. All filters are optional. |
Example
Query
query searchLimitOrders(
$accountId: String!,
$searchLimitOrdersInput: SearchLimitOrdersInput
) {
searchLimitOrders(
accountId: $accountId,
searchLimitOrdersInput: $searchLimitOrdersInput
) {
errorMessage
isSuccessful
pageIndex
pageSize
result {
...LimitOrderFragment
}
totalRecordsFound
}
}
Variables
{
"accountId": "xyz789",
"searchLimitOrdersInput": SearchLimitOrdersInput
}
Response
{
"data": {
"searchLimitOrders": {
"errorMessage": "abc123",
"isSuccessful": true,
"pageIndex": 987,
"pageSize": 123,
"result": [LimitOrder],
"totalRecordsFound": {}
}
}
}
searchStatement
Description
Returns a paginated list of an account's daily portfolio-value statements, ordered oldest first. Filter by date range; when no dates are given, the last seven days are returned.
Response
Returns a StatementResponseSearchResponseBase
Arguments
| Name | Description |
|---|---|
accountId - ID!
|
The account whose statements to return. |
pageIndex - Int
|
Zero-based page number to return. Defaults to 0 (the first page). |
pageSize - Int
|
Maximum number of items per page. Defaults to 10. |
searchStatementPayloadInput - SearchStatementPayloadInput
|
The date range for a statement search. Omit both dates to get the last seven days. |
sortDirection - SortDirection
|
|
sortField - String
|
Example
Query
query searchStatement(
$accountId: ID!,
$pageIndex: Int,
$pageSize: Int,
$searchStatementPayloadInput: SearchStatementPayloadInput,
$sortDirection: SortDirection,
$sortField: String
) {
searchStatement(
accountId: $accountId,
pageIndex: $pageIndex,
pageSize: $pageSize,
searchStatementPayloadInput: $searchStatementPayloadInput,
sortDirection: $sortDirection,
sortField: $sortField
) {
errorMessage
isSuccessful
pageIndex
pageSize
result {
...StatementResponseFragment
}
totalRecordsFound
}
}
Variables
{
"accountId": 4,
"pageIndex": 123,
"pageSize": 123,
"searchStatementPayloadInput": SearchStatementPayloadInput,
"sortDirection": "ASCENDING",
"sortField": "xyz789"
}
Response
{
"data": {
"searchStatement": {
"errorMessage": "abc123",
"isSuccessful": true,
"pageIndex": 123,
"pageSize": 123,
"result": [StatementResponse],
"totalRecordsFound": {}
}
}
}
userProfile
Description
Returns the profile of the authenticated user — identity, contact details, verification status, membership tier, and linked sign-in providers.
Response
Returns a UserProfileResponse
Arguments
| Name | Description |
|---|---|
userId - ID
|
Optional. Defaults to the authenticated user; may only resolve another user when you hold a delegation over them. |
Example
Query
query userProfile($userId: ID) {
userProfile(userId: $userId) {
accountType
avatarUrl
createdOn
displayName
email
firstName
isEmailVerified
isIdentityVerified
isPhoneNumberVerified
isPrivate
lastName
legalName
loyaltyDeactivated
memberhipTierExpiry
membershipTier
middleName
phoneNumber
registeredOn
rewardsActivated
stashbackEnabled
status
subaccount
termsAndConditionsVersion
timezone
timezoneIana
twoFactorEnabled
userId
}
}
Variables
{"userId": 4}
Response
{
"data": {
"userProfile": {
"accountType": "TRADING",
"avatarUrl": "abc123",
"createdOn": "xyz789",
"displayName": "abc123",
"email": "xyz789",
"firstName": "xyz789",
"isEmailVerified": true,
"isIdentityVerified": false,
"isPhoneNumberVerified": false,
"isPrivate": true,
"lastName": "xyz789",
"legalName": "xyz789",
"loyaltyDeactivated": false,
"memberhipTierExpiry": "abc123",
"membershipTier": "xyz789",
"middleName": "abc123",
"phoneNumber": "xyz789",
"registeredOn": "xyz789",
"rewardsActivated": false,
"stashbackEnabled": true,
"status": "ACTIVE",
"subaccount": true,
"termsAndConditionsVersion": 123,
"timezone": "abc123",
"timezoneIana": "abc123",
"twoFactorEnabled": true,
"userId": 4
}
}
}
Mutations
buyBundle
Description
Buys a curated bundle of coins in a single order, splitting the amount you spend across each coin in the bundle according to its target allocation. The amount is charged from your AUD balance.
Response
Returns a TradeExecutedResponse
Arguments
| Name | Description |
|---|---|
buyBundleInput - BuyBundleInput
|
Details of the bundle purchase: which bundle to buy and how much AUD to spend across it. |
Example
Query
mutation buyBundle($buyBundleInput: BuyBundleInput) {
buyBundle(buyBundleInput: $buyBundleInput) {
assetAmount
assetAmountPrecise
data {
...TradeExecutedFragment
}
errorCode
errorMessage
errors
fiatAmount
fiatAmountPrecise
idempotentId
isSuccessful
}
}
Variables
{"buyBundleInput": BuyBundleInput}
Response
{
"data": {
"buyBundle": {
"assetAmount": 987.65,
"assetAmountPrecise": "abc123",
"data": TradeExecuted,
"errorCode": "abc123",
"errorMessage": "xyz789",
"errors": {},
"fiatAmount": 987.65,
"fiatAmountPrecise": "abc123",
"idempotentId": "xyz789",
"isSuccessful": true
}
}
}
cancelLimitOrder
Description
Cancels a pending limit order or price alert on the account. Any funds that were held to back the order are released. Only orders that are still pending can be cancelled.
Response
Returns a CancelLimitOrderResponse
Arguments
| Name | Description |
|---|---|
accountId - ID!
|
The trading account that owns the order. |
cancelLimitOrderPayloadInput - CancelLimitOrderPayloadInput
|
Optional details supplied when cancelling an order. |
orderId - ID!
|
The ID of the order to cancel. Required. |
Example
Query
mutation cancelLimitOrder(
$accountId: ID!,
$cancelLimitOrderPayloadInput: CancelLimitOrderPayloadInput,
$orderId: ID!
) {
cancelLimitOrder(
accountId: $accountId,
cancelLimitOrderPayloadInput: $cancelLimitOrderPayloadInput,
orderId: $orderId
) {
errorCode
errorMessage
isSuccessful
}
}
Variables
{
"accountId": "4",
"cancelLimitOrderPayloadInput": CancelLimitOrderPayloadInput,
"orderId": 4
}
Response
{
"data": {
"cancelLimitOrder": {
"errorCode": "xyz789",
"errorMessage": "xyz789",
"isSuccessful": true
}
}
}
createAssetAddress
Description
Saves a crypto address to the customer's address book so you can send withdrawals to it later. Saving is protected by a one-time security code. Call this once without a code and a code is sent to the customer, and the response comes back with errorCode NoTwoFaCode; call again with that code (and the same idempotentId) to finish saving the address.
Response
Returns a CreateAssetAddressResponse
Arguments
| Name | Description |
|---|---|
createAssetAddressInput - CreateAssetAddressInput
|
Details of the crypto address to save to the customer's address book for future withdrawals. |
Example
Query
mutation createAssetAddress($createAssetAddressInput: CreateAssetAddressInput) {
createAssetAddress(createAssetAddressInput: $createAssetAddressInput) {
addressId
errorCode
errorMessage
isSuccessful
}
}
Variables
{"createAssetAddressInput": CreateAssetAddressInput}
Response
{
"data": {
"createAssetAddress": {
"addressId": "abc123",
"errorCode": "abc123",
"errorMessage": "xyz789",
"isSuccessful": true
}
}
}
createLimitOrder
Description
Places a new limit order on a trading account: buy or sell a coin automatically once its price reaches a level you set, or create a price alert that only notifies you. Returns whether the order was accepted.
Response
Returns a CreateLimitOrderResponse
Arguments
| Name | Description |
|---|---|
accountId - ID!
|
The trading account the order is placed on. |
createLimitOrderPayloadInput - CreateLimitOrderPayloadInput
|
The parameters that define a limit order or price alert. |
Example
Query
mutation createLimitOrder(
$accountId: ID!,
$createLimitOrderPayloadInput: CreateLimitOrderPayloadInput
) {
createLimitOrder(
accountId: $accountId,
createLimitOrderPayloadInput: $createLimitOrderPayloadInput
) {
errorCode
errorMessage
isSuccessful
}
}
Variables
{
"accountId": "4",
"createLimitOrderPayloadInput": CreateLimitOrderPayloadInput
}
Response
{
"data": {
"createLimitOrder": {
"errorCode": "abc123",
"errorMessage": "abc123",
"isSuccessful": false
}
}
}
createReport
Description
Generates a new report (for example a transaction history or end-of-financial-year tax report) for your account. Returns an identifier you can use to list or download the report once it is ready.
Response
Returns a CreateReportResponse
Arguments
| Name | Description |
|---|---|
createReportPayloadInput - CreateReportPayloadInput
|
Parameters describing the report to generate. |
Example
Query
mutation createReport($createReportPayloadInput: CreateReportPayloadInput) {
createReport(createReportPayloadInput: $createReportPayloadInput) {
errorMessage
isSuccessful
reportId
}
}
Variables
{"createReportPayloadInput": CreateReportPayloadInput}
Response
{
"data": {
"createReport": {
"errorMessage": "xyz789",
"isSuccessful": false,
"reportId": "abc123"
}
}
}
deleteAssetAddress
Description
Permanently removes a saved withdrawal address from the customer's address book. Deposit addresses cannot be removed.
Response
Returns a String
Arguments
| Name | Description |
|---|---|
addressId - String!
|
The id of the saved address to remove (from listAssetAddresses). Must be an address on the customer's account or an account you have access to. |
Example
Query
mutation deleteAssetAddress($addressId: String!) {
deleteAssetAddress(addressId: $addressId)
}
Variables
{"addressId": "xyz789"}
Response
{"data": {"deleteAssetAddress": "xyz789"}}
executeDefiTrade
Description
Completes a DeFi trade once the coins you sent have arrived on-chain, converting that incoming transfer into a settled buy or sell order on your account.
Response
Returns an ExecuteDefiTradeResponse
Arguments
| Name | Description |
|---|---|
executeDefiTradeInput - ExecuteDefiTradeInput
|
Identifies the on-chain transfer to settle into a DeFi trade. |
Example
Query
mutation executeDefiTrade($executeDefiTradeInput: ExecuteDefiTradeInput) {
executeDefiTrade(executeDefiTradeInput: $executeDefiTradeInput) {
errorCode
errorMessage
isSuccessful
orderId
}
}
Variables
{"executeDefiTradeInput": ExecuteDefiTradeInput}
Response
{
"data": {
"executeDefiTrade": {
"errorCode": "xyz789",
"errorMessage": "abc123",
"isSuccessful": false,
"orderId": "4"
}
}
}
getSwapQuote
Description
Returns a price quote for swapping one coin directly into another, including the amount of the target coin you would receive, the combined fee and when the quote expires.
Response
Returns a GetSwapQuoteResponse
Arguments
| Name | Description |
|---|---|
getSwapQuoteInput - GetSwapQuoteInput
|
Describes the coin-to-coin swap you want priced: the coin to swap from, the coin to swap to, and how much of the source coin to swap. |
Example
Query
mutation getSwapQuote($getSwapQuoteInput: GetSwapQuoteInput) {
getSwapQuote(getSwapQuoteInput: $getSwapQuoteInput) {
errorMessage
isSuccessful
quote {
...CefiSwapQuoteResponseFragment
}
serverTime
stashBack
}
}
Variables
{"getSwapQuoteInput": GetSwapQuoteInput}
Response
{
"data": {
"getSwapQuote": {
"errorMessage": "xyz789",
"isSuccessful": true,
"quote": CefiSwapQuoteResponse,
"serverTime": "abc123",
"stashBack": "abc123"
}
}
}
getTradeQuote
Description
Returns a price quote for buying or selling a single coin, including the amount you would receive, the fee and any rewards earned. Save the quote to execute it later, or request an estimate only.
Response
Returns a GetTradeQuoteResponse
Arguments
| Name | Description |
|---|---|
getTradeQuoteInput - GetTradeQuoteInput
|
Describes the buy or sell you want priced: which coin, which side, and the amount as either a coin quantity or a cash value. |
Example
Query
mutation getTradeQuote($getTradeQuoteInput: GetTradeQuoteInput) {
getTradeQuote(getTradeQuoteInput: $getTradeQuoteInput) {
errorMessage
isSuccessful
quote {
...CefiTradeQuoteResponseFragment
}
serverTime
}
}
Variables
{"getTradeQuoteInput": GetTradeQuoteInput}
Response
{
"data": {
"getTradeQuote": {
"errorMessage": "xyz789",
"isSuccessful": true,
"quote": CefiTradeQuoteResponse,
"serverTime": "xyz789"
}
}
}
listChains
Description
Lists the blockchains and networks Coinstash supports, each with its native fee token, preferred stablecoin, block explorer link, and typical withdrawal time. Use this to discover which networks you can deposit, withdraw, and trade on.
Response
Returns a ListChainsResponse
Arguments
| Name | Description |
|---|---|
listChainsPayloadInput - ListChainsPayloadInput
|
Optional filters applied when listing supported chains. |
Example
Query
mutation listChains($listChainsPayloadInput: ListChainsPayloadInput) {
listChains(listChainsPayloadInput: $listChainsPayloadInput) {
chains {
...ChainResponseItemFragment
}
isSuccessful
}
}
Variables
{"listChainsPayloadInput": ListChainsPayloadInput}
Response
{
"data": {
"listChains": {
"chains": [ChainResponseItem],
"isSuccessful": true
}
}
}
swapRFQ
Description
Executes a coin-to-coin swap using a quote you obtained from get-swap-quote. The quote must still be valid and belong to your account; the source coin is sold and the target coin credited.
Response
Returns a TradeResponse
Arguments
| Name | Description |
|---|---|
swapRFQInput - SwapRFQInput
|
Identifies the swap quote to execute. |
Example
Query
mutation swapRFQ($swapRFQInput: SwapRFQInput) {
swapRFQ(swapRFQInput: $swapRFQInput) {
errorMessage
isSuccessful
}
}
Variables
{"swapRFQInput": SwapRFQInput}
Response
{
"data": {
"swapRFQ": {
"errorMessage": "abc123",
"isSuccessful": true
}
}
}
trade
Description
Executes a buy or sell using a quote you obtained from get-quote. The quote must still be valid and belong to your account; the coins or cash are settled once the order is placed.
Response
Returns a TradeResponse
Arguments
| Name | Description |
|---|---|
tradeInput - TradeInput
|
Identifies the buy or sell quote to execute. |
Example
Query
mutation trade($tradeInput: TradeInput) {
trade(tradeInput: $tradeInput) {
errorMessage
isSuccessful
}
}
Variables
{"tradeInput": TradeInput}
Response
{
"data": {
"trade": {
"errorMessage": "xyz789",
"isSuccessful": false
}
}
}
updateLimitOrder
Description
Changes the trigger price and/or expiry of a pending limit order on the account. Only orders that are still pending can be updated; other fields cannot be changed after placement.
Response
Returns an UpdateLimitOrderResponse
Arguments
| Name | Description |
|---|---|
accountId - ID!
|
The trading account that owns the order. |
orderId - ID!
|
The ID of the order to update. Required. |
updateLimitOrderPayloadInput - UpdateLimitOrderPayloadInput
|
The fields that can be changed on a pending order. Omit a field to leave it unchanged. |
Example
Query
mutation updateLimitOrder(
$accountId: ID!,
$orderId: ID!,
$updateLimitOrderPayloadInput: UpdateLimitOrderPayloadInput
) {
updateLimitOrder(
accountId: $accountId,
orderId: $orderId,
updateLimitOrderPayloadInput: $updateLimitOrderPayloadInput
) {
errorCode
errorMessage
isSuccessful
}
}
Variables
{
"accountId": "4",
"orderId": "4",
"updateLimitOrderPayloadInput": UpdateLimitOrderPayloadInput
}
Response
{
"data": {
"updateLimitOrder": {
"errorCode": "abc123",
"errorMessage": "abc123",
"isSuccessful": false
}
}
}
withdrawAsset
Description
Withdraws a crypto asset from a trading account to an external wallet address. The response returns the id of the withdrawal activity created for tracking. Some destinations require declaring recipient details.
Response
Returns an ActivityUpdatedResponse
Arguments
| Name | Description |
|---|---|
accountId - ID!
|
Identifier of the account to withdraw from. Required. |
withdrawAssetPayloadInput - WithdrawAssetPayloadInput
|
Details of a crypto withdrawal. |
Example
Query
mutation withdrawAsset(
$accountId: ID!,
$withdrawAssetPayloadInput: WithdrawAssetPayloadInput
) {
withdrawAsset(
accountId: $accountId,
withdrawAssetPayloadInput: $withdrawAssetPayloadInput
) {
data {
...ActivityUpdatedFragment
}
errorCode
errorMessage
errors
idempotentId
isSuccessful
}
}
Variables
{
"accountId": 4,
"withdrawAssetPayloadInput": WithdrawAssetPayloadInput
}
Response
{
"data": {
"withdrawAsset": {
"data": ActivityUpdated,
"errorCode": "abc123",
"errorMessage": "xyz789",
"errors": {},
"idempotentId": "abc123",
"isSuccessful": false
}
}
}
withdrawFiat
Description
Withdraws fiat (AUD) from a trading account to a nominated bank account. The response returns the id of the withdrawal activity created for tracking.
Response
Returns an ActivityUpdatedResponse
Arguments
| Name | Description |
|---|---|
accountId - ID!
|
Identifier of the account to withdraw from. Required. |
withdrawFiatPayloadInput - WithdrawFiatPayloadInput
|
Details of a fiat withdrawal. |
Example
Query
mutation withdrawFiat(
$accountId: ID!,
$withdrawFiatPayloadInput: WithdrawFiatPayloadInput
) {
withdrawFiat(
accountId: $accountId,
withdrawFiatPayloadInput: $withdrawFiatPayloadInput
) {
data {
...ActivityUpdatedFragment
}
errorCode
errorMessage
errors
idempotentId
isSuccessful
}
}
Variables
{
"accountId": "4",
"withdrawFiatPayloadInput": WithdrawFiatPayloadInput
}
Response
{
"data": {
"withdrawFiat": {
"data": ActivityUpdated,
"errorCode": "abc123",
"errorMessage": "abc123",
"errors": {},
"idempotentId": "xyz789",
"isSuccessful": false
}
}
}
Subscriptions
activityUpdated
balanceChanged
notificationReceived
Types
AccountBalanceItem
Description
A single cash or coin balance entry, suitable for display.
Example
{
"balance": "abc123",
"displaySymbol": "abc123",
"symbol": "xyz789"
}
AccountBalances
Description
A snapshot of an account's holdings, including cash and coin balances, their value, any reward balances, and the account's current limits.
Fields
| Field Name | Description |
|---|---|
accountId - ID
|
The unique identifier of the account these balances belong to. |
accountType - AccountType
|
|
assetAutoInvestEnabled - JSON
|
Indicates, per coin symbol, whether automatic recurring investment is switched on for that coin. |
assetBalanceBtc - Float
|
The total value of all coin holdings, expressed in BTC. |
assetBalanceFiat - Float
|
The total value of all coin holdings, in AUD. |
assetBalances - JSON
|
Coin balances keyed by coin symbol (for example "BTC"), with each amount expressed in coin units. |
assetBalancesList - [AccountBalanceItem]
|
The coin balances as a list, convenient for display. |
assetBalancesPrecise - JSON
|
Coin balances keyed by coin symbol, given as full-precision text values to avoid rounding. |
fiatBalances - JSON
|
Cash balances keyed by currency code (for example "AUD"), with each amount expressed in that currency. |
fiatBalancesList - [AccountBalanceItem]
|
The cash balances as a list, convenient for display. |
fiatBalancesPrecise - JSON
|
Cash balances keyed by currency code, given as full-precision text values to avoid rounding. |
lastStatementTotalFiatValue - Float
|
The cash (fiat) balance, in AUD, as of the most recent statement. This is the cash portion only — it does not include the value of any coin holdings. |
stash - Float
|
The account's STASH rewards balance. |
tierLimits - TierLimits
|
The deposit and withdrawal limits for an account, along with how much of each limit has already been used. |
userId - ID
|
The unique identifier of the account owner. Only populated on the portfolio balance responses; accountBalances leaves it empty, so use accountId to identify the account there. |
Example
{
"accountId": 4,
"accountType": "TRADING",
"assetAutoInvestEnabled": {},
"assetBalanceBtc": 123.45,
"assetBalanceFiat": 123.45,
"assetBalances": {},
"assetBalancesList": [AccountBalanceItem],
"assetBalancesPrecise": {},
"fiatBalances": {},
"fiatBalancesList": [AccountBalanceItem],
"fiatBalancesPrecise": {},
"lastStatementTotalFiatValue": 123.45,
"stash": 987.65,
"tierLimits": TierLimits,
"userId": "4"
}
AccountBalancesResponse
Description
The result of a balances request. When the request succeeds the account's balance details are returned; otherwise it carries the reason it could not be completed.
Example
{
"data": AccountBalances,
"errorCode": "xyz789",
"errorMessage": "abc123",
"errors": {},
"idempotentId": "xyz789",
"isSuccessful": false
}
AccountType
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"TRADING"
Active
ActivityUpdated
Description
Confirms that a requested action was accepted and identifies the resulting activity so you can track its progress.
Fields
| Field Name | Description |
|---|---|
activityId - ID
|
The unique identifier of the activity created or updated by the request. Use it to look up the activity's current status. |
Example
{"activityId": "4"}
ActivityUpdatedResponse
Description
The result of an action such as a withdrawal, tier-change request, or cancellation. When successful it returns the affected activity; otherwise it carries the reason the request could not be completed.
Example
{
"data": ActivityUpdated,
"errorCode": "abc123",
"errorMessage": "xyz789",
"errors": {},
"idempotentId": "abc123",
"isSuccessful": false
}
AddressStatus
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"NOTVERIFIED"
AmountType
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"ASSET"
AssetAddressResult
Description
A saved crypto address belonging to an account: either a deposit address issued by Coinstash or a withdrawal address the user saved to their address book.
Fields
| Field Name | Description |
|---|---|
accountId - ID
|
The Coinstash account the address belongs to. |
address - String
|
The on-chain address string. |
addressId - String
|
Unique identifier of the saved address; pass it to deleteAssetAddress or removeSavedTravelRule. |
blockchain - String
|
Name of the blockchain network the address lives on (e.g. Bitcoin, Ethereum, Solana). |
errorMessage - String
|
Human-readable reason the request failed (e.g. "Account is not verified"); null when isSuccessful is true. |
isSuccessful - Boolean
|
True when the address was found or generated; false when errorMessage explains why it was not. |
label - String
|
Display name for the address; user-chosen for saved withdrawal addresses, system-generated for deposit addresses. |
symbol - String
|
Ticker symbol of the asset the address is used for (e.g. BTC, USDC), always uppercase. |
tag - String
|
Destination tag or memo for networks that require one (e.g. XRP, XLM); empty when not applicable. |
Example
{
"accountId": "4",
"address": "abc123",
"addressId": "abc123",
"blockchain": "xyz789",
"errorMessage": "abc123",
"isSuccessful": true,
"label": "xyz789",
"symbol": "abc123",
"tag": "abc123"
}
AssetAddressResultSearchResponseBase
Description
Standard envelope for paginated list/search results. result holds the items for the requested page; the remaining fields describe the page and total, and report failure.
Fields
| Field Name | Description |
|---|---|
errorMessage - String
|
Human-readable error detail when isSuccessful is false; otherwise null. |
isSuccessful - Boolean
|
True when the search completed successfully; false if it failed (see errorMessage). |
pageIndex - Int
|
Zero-based index of the page these results belong to (echoes the request). |
pageSize - Int
|
Number of items per page used for this response (echoes the request). |
result - [AssetAddressResult]
|
The items on the current page. Empty when there are no matches for the query. |
totalRecordsFound - BigInt
|
Total number of items matching the query across all pages, for computing page count. |
Example
{
"errorMessage": "xyz789",
"isSuccessful": false,
"pageIndex": 123,
"pageSize": 123,
"result": [AssetAddressResult],
"totalRecordsFound": {}
}
AwardCategory
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"REFERRAL"
AwardEvent
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"NONE"
BigInt
Description
The BigInt scalar type represents non-fractional signed whole numeric values.
Example
{}
BlockchainSettingResponse
Description
Per-network settings for a coin, such as the fee charged when moving it on a particular blockchain.
Fields
| Field Name | Description |
|---|---|
blockchain - String
|
Name of the blockchain network these settings apply to (for example, Ethereum or Bitcoin). |
networkFee - Float
|
Network (miner) fee charged for a withdrawal on this blockchain, expressed in units of the coin. Null when no fixed fee is configured for this network. |
Example
{
"blockchain": "xyz789",
"networkFee": 987.65
}
Boolean
Description
The Boolean scalar type represents true or false.
Example
true
BundleResponse
Description
A bundle: a curated basket of coins with a fixed percentage allocation across its members, letting you buy a themed group of assets in a single trade.
Fields
| Field Name | Description |
|---|---|
abstract - String
|
Short one-line summary of the bundle, suitable for cards or list views. May be empty. |
bundleId - String
|
Unique identifier of the bundle. Use this to look the bundle up again or to place a bundle trade. |
bundleImageUrl - String
|
URL of the bundle's display image. May be empty if no image has been set. |
category - String
|
Category the bundle belongs to, for example "Trending" or "Sector". May be empty. |
coins - [PopulatedBundleCoin]
|
The coins that make up the bundle, each with its symbol and percentage allocation. |
description - String
|
Longer description explaining the bundle's theme and what it contains. May be empty. |
minimumTradingAmounts - JSON
|
The smallest amount you can spend to buy the whole bundle, keyed by lower-case currency code (for example "aud" or "usd"). Each amount is expressed in that currency. May be empty if no minimum is configured. |
name - String
|
Display name of the bundle, for example "Top 10" or "DeFi". |
priority - Int
|
Ordering weight used to sort bundles for display; lower values appear first. |
slug - String
|
URL-friendly identifier for the bundle, suitable for use in a web address. You can fetch the bundle by this value instead of its id. |
version - Int
|
Version number of the bundle's coin composition, incremented whenever its members or allocations change. |
Example
{
"abstract": "xyz789",
"bundleId": "abc123",
"bundleImageUrl": "xyz789",
"category": "xyz789",
"coins": [PopulatedBundleCoin],
"description": "xyz789",
"minimumTradingAmounts": {},
"name": "abc123",
"priority": 123,
"slug": "xyz789",
"version": 987
}
BundleResponseSearchResponseBase
Description
Standard envelope for paginated list/search results. result holds the items for the requested page; the remaining fields describe the page and total, and report failure.
Fields
| Field Name | Description |
|---|---|
errorMessage - String
|
Human-readable error detail when isSuccessful is false; otherwise null. |
isSuccessful - Boolean
|
True when the search completed successfully; false if it failed (see errorMessage). |
pageIndex - Int
|
Zero-based index of the page these results belong to (echoes the request). |
pageSize - Int
|
Number of items per page used for this response (echoes the request). |
result - [BundleResponse]
|
The items on the current page. Empty when there are no matches for the query. |
totalRecordsFound - BigInt
|
Total number of items matching the query across all pages, for computing page count. |
Example
{
"errorMessage": "xyz789",
"isSuccessful": false,
"pageIndex": 987,
"pageSize": 123,
"result": [BundleResponse],
"totalRecordsFound": {}
}
BuyBundleInput
Description
Details of the bundle purchase: which bundle to buy and how much AUD to spend across it.
Fields
| Input Field | Description |
|---|---|
amount - Float
|
Total amount to spend, in AUD, split across the bundle's coins by their target allocation. |
bundleId - String
|
Identifier of the bundle to buy. Required. |
idempotentId - ID
|
A unique identifier you generate for this request so it can be safely retried without placing a duplicate order. |
preciseAmount - String
|
The same spend amount as a string for full decimal precision, in AUD. When supplied, it overrides Amount. |
quoteId - String
|
No longer used; retained only for backwards compatibility and can be omitted. |
userId - ID
|
The account to buy for. Supply your own account id, or the id of an account you have delegated access to. Required — the request fails if it is omitted. |
Example
{
"amount": 987.65,
"bundleId": "abc123",
"idempotentId": "4",
"preciseAmount": "xyz789",
"quoteId": "abc123",
"userId": 4
}
CancelLimitOrderPayloadInput
Description
Optional details supplied when cancelling an order.
Example
{
"idempotentId": "4",
"reason": "abc123"
}
CancelLimitOrderResponse
Description
The outcome of cancelling a limit order.
Fields
| Field Name | Description |
|---|---|
errorCode - String
|
A short machine-readable reason when the cancellation failed; otherwise null. |
errorMessage - String
|
A human-readable explanation when the cancellation failed; otherwise null. |
isSuccessful - Boolean
|
True if the order was cancelled; false if it could not be (e.g. not found or not pending). |
Example
{
"errorCode": "abc123",
"errorMessage": "xyz789",
"isSuccessful": true
}
CategoriesListItem
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"DEPOSIT"
Category
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"DEPOSIT"
Category2
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"DEPOSIT"
CefiSwapQuoteResponse
Description
A firm swap quote you can execute, describing the amounts, fee, rate and expiry.
Fields
| Field Name | Description |
|---|---|
expiresOn - String
|
When this quote expires, in UTC. Execute the swap before this time. |
fiatAmount - String
|
Cash value of the swap, in AUD. |
fromAmount - String
|
Quantity of the source coin that will be sold, in the source coin's own units. |
fromCoinId - String
|
Internal identifier of the coin being swapped from. |
fromDisplaySymbol - String
|
Display symbol of the source coin, suitable for showing to users. |
fromSymbol - String
|
Symbol of the coin being swapped from. |
id - ID
|
Unique identifier of this quote; pass it to swap-rfq to execute the swap at this price. |
rate - String
|
Exchange rate applied, expressed as target coin per one source coin. Null when not applicable. |
requestedAssetAmount - String
|
The source-coin amount you originally asked to swap, in the source coin's own units. Null when not applicable. |
reversedRate - String
|
The inverse exchange rate, expressed as source coin per one target coin. Null when not applicable. |
stashback - String
|
STASH rewards you would earn on this swap. Null when not applicable. |
toAmount - String
|
Quantity of the target coin you will receive, in the target coin's own units. |
toCoinId - String
|
Internal identifier of the coin being swapped to. |
toDisplaySymbol - String
|
Display symbol of the target coin, suitable for showing to users. |
toSymbol - String
|
Symbol of the coin being swapped to. |
tradeFee - String
|
Total fee for the swap, in AUD. |
userId - ID
|
Account the quote was issued for. Null when not applicable. |
Example
{
"expiresOn": "abc123",
"fiatAmount": "xyz789",
"fromAmount": "abc123",
"fromCoinId": "xyz789",
"fromDisplaySymbol": "abc123",
"fromSymbol": "xyz789",
"id": 4,
"rate": "xyz789",
"requestedAssetAmount": "xyz789",
"reversedRate": "abc123",
"stashback": "abc123",
"toAmount": "abc123",
"toCoinId": "xyz789",
"toDisplaySymbol": "xyz789",
"toSymbol": "abc123",
"tradeFee": "abc123",
"userId": "4"
}
CefiTradeQuoteResponse
Fields
| Field Name | Description |
|---|---|
assetAmount - String
|
|
coinId - String
|
|
coinTradeFeePercent - String
|
|
currencyCode - CurrencyCode2
|
|
direction - Direction2
|
|
displaySymbol - String
|
|
expiresOn - String
|
|
fiatAmount - String
|
|
id - ID
|
|
isRfq - Boolean
|
|
rate - String
|
|
requestedAssetAmount - String
|
|
requestedFiatAmount - String
|
|
requestedStashAmount - String
|
|
reversedRate - String
|
|
side - Side
|
|
stashAmount - String
|
|
stashback - String
|
|
symbol - String
|
|
tradeFee - String
|
|
tradeFeePercent - String
|
|
userId - ID
|
Example
{
"assetAmount": "abc123",
"coinId": "xyz789",
"coinTradeFeePercent": "abc123",
"currencyCode": "AUD",
"direction": "BUYEXACTFIATAMOUNT",
"displaySymbol": "xyz789",
"expiresOn": "xyz789",
"fiatAmount": "xyz789",
"id": "4",
"isRfq": false,
"rate": "xyz789",
"requestedAssetAmount": "xyz789",
"requestedFiatAmount": "xyz789",
"requestedStashAmount": "abc123",
"reversedRate": "abc123",
"side": "BUY",
"stashAmount": "abc123",
"stashback": "abc123",
"symbol": "abc123",
"tradeFee": "abc123",
"tradeFeePercent": "xyz789",
"userId": "4"
}
Chain
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"ETHEREUM"
ChainResponseItem
Description
A single blockchain or network supported by Coinstash, including the details you need to display it and to work with deposits, withdrawals, and on-chain data for it.
Fields
| Field Name | Description |
|---|---|
chainId - String
|
Unique identifier for this chain. Use it to reference the chain in other requests. |
coingeckoId - String
|
Identifier for this chain on CoinGecko, useful for cross-referencing external market data. May be empty. |
defaultNetworkFee - Float
|
Typical network (gas) fee for a transaction on this chain, in Australian dollars (AUD). May be null when no default fee is configured. |
defiChain - DefiChain
|
The DeFi network this chain maps to when on-chain (decentralized) trading is available, such as ETHEREUM, BSC, POLYGON, OPTIMISM, ARBITRUM, AVALANCE, SOLANA, LINEA, BASE, or SONIC. Null when the chain does not support DeFi trading. |
estimatedWithdrawalTimeSeconds - Float
|
Approximate time, in seconds, for a withdrawal on this chain to complete. |
evmChainId - String
|
The EVM chain ID as a string (for example, "1" for Ethereum). Empty for non-EVM networks. |
gasSymbol - String
|
Symbol of the native token used to pay network fees, such as "ETH" or "SOL". |
geckoTerminalId - String
|
Identifier for this chain on GeckoTerminal (decentralized-exchange data). Distinct from the CoinGecko identifier. May be empty. |
img - String
|
URL of the chain's logo image. |
name - String
|
Human-readable name of the network, such as "Ethereum" or "Solana". |
scanUrl - String
|
Base URL of the chain's block explorer, where transactions and addresses can be viewed. May be null. |
stableCoinSymbol - String
|
Symbol of the preferred stablecoin on this chain, such as "USDC". |
Example
{
"chainId": "xyz789",
"coingeckoId": "abc123",
"defaultNetworkFee": 987.65,
"defiChain": "ETHEREUM",
"estimatedWithdrawalTimeSeconds": 987.65,
"evmChainId": "xyz789",
"gasSymbol": "xyz789",
"geckoTerminalId": "abc123",
"img": "abc123",
"name": "abc123",
"scanUrl": "xyz789",
"stableCoinSymbol": "abc123"
}
CoinFeatures
CoinLink
Fields
| Field Name | Description |
|---|---|
coinLinkPlatform - CoinLinkPlatform
|
|
coinLinkType - CoinLinkType
|
|
url - String
|
Example
{
"coinLinkPlatform": "OTHER",
"coinLinkType": "OTHER",
"url": "xyz789"
}
CoinLinkPlatform
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"OTHER"
CoinLinkType
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"OTHER"
CoinNotice
CounterpartyRelation
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"SELF"
CounterpartyType
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"VASP"
CreateAssetAddressInput
Description
Details of the crypto address to save to the customer's address book for future withdrawals.
Fields
| Input Field | Description |
|---|---|
accountId - ID
|
The customer account to save the address on. Omit to use your own account; supply it only when saving to another account you have access to. |
address - String
|
The crypto address to save. The same address cannot be saved twice for the same asset. |
blockchain - String
|
The blockchain network the address is on, e.g. Ethereum or Solana. Include it for assets that exist on more than one network. |
code - String
|
The one-time security code sent to the customer. Leave empty on the first call to trigger the code, then send it here to finish saving. |
idempotentId - String
|
A unique id you generate for this save. Send the same value on the first call and the follow-up call with the code so the two are recognised as one request. |
label - String
|
A name the customer gives the address so they can recognise it later (e.g. "My Ledger"). Required. |
symbol - String
|
Ticker symbol of the asset this address is for, e.g. BTC or USDC. Required, and must be an asset Coinstash supports. |
tag - String
|
Destination tag or memo for networks that require one (e.g. XRP, XLM). Leave empty for assets that do not use one. |
Example
{
"accountId": "4",
"address": "abc123",
"blockchain": "xyz789",
"code": "xyz789",
"idempotentId": "abc123",
"label": "xyz789",
"symbol": "xyz789",
"tag": "abc123"
}
CreateAssetAddressResponse
Description
Outcome of saving a withdrawal address to the account's address book.
Fields
| Field Name | Description |
|---|---|
addressId - String
|
Identifier of the newly saved withdrawal address; null when the save failed. |
errorCode - String
|
Machine-readable failure code: NoTwoFaCode (a one-time code was sent, retry with it), WrongTwoFa, BadAddress (the address cannot be saved), or EmailNotVerified. Null on success. |
errorMessage - String
|
Human-readable description of the failure; null on success. |
isSuccessful - Boolean
|
True when the address was saved; false when errorCode explains the failure. |
Example
{
"addressId": "abc123",
"errorCode": "abc123",
"errorMessage": "abc123",
"isSuccessful": false
}
CreateLimitOrderPayloadInput
Description
The parameters that define a limit order or price alert.
Fields
| Input Field | Description |
|---|---|
amount - String
|
The order size, as a decimal string. For buy strategies this is the amount to spend in the quote currency; for sell strategies it is the quantity of the coin to sell. Required and must be greater than zero unless limitOrderType is Notification, where it is ignored. |
autoTransferFromSavingAccount - Boolean
|
When true, tops up the trading balance from the linked savings account if needed. |
currencyCode - CurrencyCode
|
|
expirationDate - String
|
Optional date and time (UTC) when the order automatically expires if not yet triggered. Must be in the future. When omitted, the order does not expire. |
idempotentId - ID
|
A unique identifier you generate for this order. Reusing an ID is rejected as a duplicate, so it is safe to retry. This value becomes the order's ID. Required. |
limitOrderType - LimitOrderType
|
|
price - String
|
The price that triggers the order, as a decimal string in the quote currency. Required and must be greater than zero. |
strategy - Strategy
|
|
symbol - String
|
The coin's ticker symbol, e.g. "BTC". Required. |
Example
{
"amount": "xyz789",
"autoTransferFromSavingAccount": false,
"currencyCode": "AUD",
"expirationDate": "xyz789",
"idempotentId": 4,
"limitOrderType": "LOCKINGLIMITORDER",
"price": "xyz789",
"strategy": "STOPLOSS",
"symbol": "abc123"
}
CreateLimitOrderResponse
Description
The outcome of placing a limit order.
Fields
| Field Name | Description |
|---|---|
errorCode - String
|
A short machine-readable reason when the order was rejected; otherwise null. |
errorMessage - String
|
A human-readable explanation when the order was rejected; otherwise null. |
isSuccessful - Boolean
|
True if the order was placed successfully; false if it was rejected. |
Example
{
"errorCode": "xyz789",
"errorMessage": "xyz789",
"isSuccessful": true
}
CreateReportPayloadInput
Description
Parameters describing the report to generate.
Fields
| Input Field | Description |
|---|---|
accountType - AccountType
|
|
fromDate - String
|
The start of the period the report should cover. |
reportType - String
|
The kind of report to generate — for example a transaction history or an end-of-financial-year tax report. |
userId - ID
|
Optional. The account owner the report is for; defaults to the authenticated user. |
year - String
|
The financial year the report applies to, for example "2025". |
Example
{
"accountType": "TRADING",
"fromDate": "xyz789",
"reportType": "abc123",
"userId": "4",
"year": "xyz789"
}
CreateReportResponse
Description
The result of a report-generation request.
Example
{
"errorMessage": "abc123",
"isSuccessful": true,
"reportId": "xyz789"
}
CurrencyCode
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"AUD"
CurrencyCode2
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"AUD"
Defi
Example
{
"active": false,
"maxSlippage": 123.45,
"minSlippage": 123.45,
"payGasFeesWithCoin": false,
"slippage": 987.65,
"transferSlippage": 123.45,
"transferTax": 987.65
}
DefiAddress
DefiChain
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"ETHEREUM"
DefiOrderStatus
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"PENDING"
Direction
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"ASCENDING"
Direction2
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"BUYEXACTFIATAMOUNT"
EstimateDefiTradeResponse
Description
Result of a DeFi trade estimate: a short-lived quote in recommendedEstimation on success, or an error explaining why no quote could be produced.
Fields
| Field Name | Description |
|---|---|
errorCode - String
|
Machine-readable failure code: Unauthorised, AmountIsZero, NotFound, NotAvailable, MinimumTradingAmounts or MaximumTradingAmounts. Null on success, or when the failure came from pricing the trade (see errorMessage). |
errorMessage - String
|
Human-readable reason the estimate failed, suitable for showing the customer. Null on success. |
isSuccessful - Boolean
|
True when a tradeable quote was produced; false when it failed, with the reason in errorCode and errorMessage. |
recommendedEstimation - EstimatedDefiTrade
|
A time-limited DeFi trade quote. All amounts are decimal numbers serialised as strings; fiat values are denominated in currencyCode. |
Example
{
"errorCode": "xyz789",
"errorMessage": "abc123",
"isSuccessful": false,
"recommendedEstimation": EstimatedDefiTrade
}
EstimatedDefiTrade
Description
A time-limited DeFi trade quote. All amounts are decimal numbers serialised as strings; fiat values are denominated in currencyCode.
Fields
| Field Name | Description |
|---|---|
coinId - String
|
Identifier of the coin being traded, as used across the Coinstash API. |
currencyCode - CurrencyCode
|
|
currentDate - String
|
Server UTC time when the quote was generated; compare with expirationDate to know the quote's remaining lifetime. |
expirationDate - String
|
UTC time the quote expires; the trade must be executed before this moment or a new estimate is required. |
fromAmount - String
|
Amount being spent, as a decimal string: fiat for buys, units of the coin for sells. |
fromAmountFiat - String
|
Fiat value of fromAmount at the quoted price, as a decimal string. |
networkFee - String
|
Total estimated network (gas) fees for the trade in fiat, as a decimal string. |
quoteId - String
|
Identifier of the stored quote; pass it when executing the trade, and use it with getDefiMultiTransfer to track progress. |
side - Side
|
|
stashback - Float
|
Stashback reward amount earned on this trade; null when the trade earns none. |
symbol - String
|
Ticker symbol of the coin being traded (for example "PEPE"). |
toAmount - String
|
Amount expected to be received after network fees, as a decimal string: units of the coin for buys, fiat for sells. |
toAmountBeforeSlippage - String
|
Amount quoted before the slippage and transfer-tax allowance is deducted, as a decimal string. An estimate, not a floor: toAmount is the amount guaranteed. Null when the provider did not report one. |
toAmountFiat - String
|
Fiat value of the received amount at the quoted price, as a decimal string. |
toChainId - String
|
Id of the blockchain the aggregator selected to execute the trade on. |
tradeFee - String
|
Coinstash trade fee included in the quote, as a decimal string. |
Example
{
"coinId": "xyz789",
"currencyCode": "AUD",
"currentDate": "abc123",
"expirationDate": "abc123",
"fromAmount": "xyz789",
"fromAmountFiat": "xyz789",
"networkFee": "abc123",
"quoteId": "xyz789",
"side": "BUY",
"stashback": 987.65,
"symbol": "xyz789",
"toAmount": "abc123",
"toAmountBeforeSlippage": "xyz789",
"toAmountFiat": "xyz789",
"toChainId": "abc123",
"tradeFee": "xyz789"
}
ExecuteDefiTradeInput
Description
Identifies the on-chain transfer to settle into a DeFi trade.
Fields
| Input Field | Description |
|---|---|
idempotentId - ID
|
A client-supplied correlation id. Accepted but not currently used to de-duplicate: a retry is guarded by the transferId and its quote, not by this value. |
limitOrderId - ID
|
Optional identifier of the limit order this trade fulfils, when the transfer is settling one. |
transferId - ID
|
Identifier of the completed on-chain transfer to convert into a trade. Required. |
userId - ID
|
Optional account to trade on behalf of when you have delegated access; defaults to your own account. |
Example
{
"idempotentId": "4",
"limitOrderId": "4",
"transferId": 4,
"userId": "4"
}
ExecuteDefiTradeResponse
Description
The outcome of settling a DeFi trade.
Fields
| Field Name | Description |
|---|---|
errorCode - String
|
A short code identifying why the trade failed; null when successful. |
errorMessage - String
|
A human-readable explanation of why the trade failed; null when successful. |
isSuccessful - Boolean
|
Whether the trade was settled successfully. |
orderId - ID
|
Unique identifier of the order created by the trade. |
Example
{
"errorCode": "xyz789",
"errorMessage": "xyz789",
"isSuccessful": false,
"orderId": 4
}
ExecutionType
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"SPOT"
FiatAddressResult
Description
A saved fiat (AUD) bank-account address — either a withdrawal destination the customer added, or the customer's personal deposit account used to fund their Coinstash balance by bank transfer.
Fields
| Field Name | Description |
|---|---|
accountId - ID
|
Identifier of the Coinstash account this bank-account address belongs to. |
accountName - String
|
Name of the bank account holder as recorded with the bank. |
accountNumber - String
|
Bank account number at the branch identified by bsbNumber. |
addressId - String
|
Unique identifier of this saved bank-account address. Use it to verify (verifyFiatAddress) or remove (deleteFiatAddress) the address. |
addressStatus - AddressStatus
|
|
bankName - String
|
Name or code of the bank the BSB resolves to, when known. |
bsbNumber - String
|
Australian BSB (Bank-State-Branch) number identifying the bank branch, e.g. "257-190". |
currencyCode - CurrencyCode
|
|
label - String
|
Optional customer-chosen nickname for the address, e.g. "My CBA savings". |
note - String
|
Additional payment reference stored against the address, when present. |
payId - String
|
PayID assigned to a deposit address for inbound payments; null for withdrawal addresses or when PayID registration has not completed. |
Example
{
"accountId": "4",
"accountName": "xyz789",
"accountNumber": "xyz789",
"addressId": "abc123",
"addressStatus": "NOTVERIFIED",
"bankName": "abc123",
"bsbNumber": "abc123",
"currencyCode": "AUD",
"label": "abc123",
"note": "xyz789",
"payId": "abc123"
}
FiatAddressResultSearchResponseBase
Description
Standard envelope for paginated list/search results. result holds the items for the requested page; the remaining fields describe the page and total, and report failure.
Fields
| Field Name | Description |
|---|---|
errorMessage - String
|
Human-readable error detail when isSuccessful is false; otherwise null. |
isSuccessful - Boolean
|
True when the search completed successfully; false if it failed (see errorMessage). |
pageIndex - Int
|
Zero-based index of the page these results belong to (echoes the request). |
pageSize - Int
|
Number of items per page used for this response (echoes the request). |
result - [FiatAddressResult]
|
The items on the current page. Empty when there are no matches for the query. |
totalRecordsFound - BigInt
|
Total number of items matching the query across all pages, for computing page count. |
Example
{
"errorMessage": "abc123",
"isSuccessful": true,
"pageIndex": 123,
"pageSize": 987,
"result": [FiatAddressResult],
"totalRecordsFound": {}
}
Float
Description
The Float scalar type represents signed double-precision fractional values as specified by IEEE 754.
Example
987.65
GetAccountInfoResponse
Description
Profile details for a single account.
Fields
| Field Name | Description |
|---|---|
accountId - ID
|
Unique identifier of the account. |
accountType - AccountType
|
|
createdOn - String
|
When the account was created (UTC). |
didDeposit - Boolean
|
True if the account has made at least one deposit. Only populated by getAccountInfo; always false when the account is returned by getUserAccounts. |
didTrade - Boolean
|
True if the account has completed at least one trade. Only populated by getAccountInfo; always false when the account is returned by getUserAccounts. |
email - String
|
Email address associated with the account. |
errorMessage - String
|
Human-readable error message when the request was not successful; otherwise null. |
isDisabled - Boolean
|
True if the account is disabled and cannot trade or withdraw. |
isSuccessful - Boolean
|
True if the request succeeded. |
membershipTier - String
|
The account's loyalty membership tier; null if none. |
tier - Tier
|
|
updatedOn - String
|
When the account was last updated (UTC); null if it has never been updated. |
userId - ID
|
Identifier of the user who owns the account. |
Example
{
"accountId": "4",
"accountType": "TRADING",
"createdOn": "abc123",
"didDeposit": false,
"didTrade": true,
"email": "abc123",
"errorMessage": "xyz789",
"isDisabled": false,
"isSuccessful": false,
"membershipTier": "abc123",
"tier": "TIER0",
"updatedOn": "xyz789",
"userId": "4"
}
GetAccountOrderResult
Description
The requested order and its transactions.
Fields
| Field Name | Description |
|---|---|
errorCode - String
|
Machine-readable error code when the request was not successful; otherwise null. |
errorMessage - String
|
Human-readable error message when the request was not successful; otherwise null. |
isSuccessful - Boolean
|
True if the order was found and returned. |
order - SearchOrderResult
|
An order, grouping the individual transactions that make it up. |
Example
{
"errorCode": "abc123",
"errorMessage": "abc123",
"isSuccessful": true,
"order": SearchOrderResult
}
GetAccountsResponse
Description
The accounts belonging to a user.
Fields
| Field Name | Description |
|---|---|
accounts - [GetAccountInfoResponse]
|
The user's accounts, each with its profile. |
Example
{"accounts": [GetAccountInfoResponse]}
GetActivityResponse
Description
The full details of a single account activity.
Fields
| Field Name | Description |
|---|---|
accountId - ID
|
The account the activity belongs to. |
activityId - ID
|
The activity's unique identifier. |
cancellable - Boolean
|
True if the activity can currently be cancelled; null if not applicable. |
content - JSON
|
Type-specific details of the activity as a set of key/value fields. The exact keys depend on the activity type (for example a withdrawal's amount, coin, and destination). |
createdOn - String
|
When the activity was created (UTC). |
errorMessage - String
|
An error message describing why the activity failed, when applicable. |
memo - String
|
An optional free-text note attached to the activity. |
status - Status2
|
|
type - Type3
|
|
updatedOn - String
|
When the activity was last updated (UTC); null if it has never changed. |
Example
{
"accountId": "4",
"activityId": 4,
"cancellable": false,
"content": {},
"createdOn": "xyz789",
"errorMessage": "xyz789",
"memo": "abc123",
"status": "PENDING",
"type": "WITHDRAWFIAT",
"updatedOn": "abc123"
}
GetChainResponse
Description
The details of a single requested chain.
Fields
| Field Name | Description |
|---|---|
chain - ChainResponseItem
|
A single blockchain or network supported by Coinstash, including the details you need to display it and to work with deposits, withdrawals, and on-chain data for it. |
errorMessage - String
|
Describes why the request did not succeed, when applicable. Null on success. |
isSuccessful - Boolean
|
True when a matching chain was found and returned. |
Example
{
"chain": ChainResponseItem,
"errorMessage": "xyz789",
"isSuccessful": false
}
GetCoinResponse
Description
Full profile for a single coin, covering identity, the operations you can perform on it, trading fees and limits, supported blockchains, and reward details. Some detailed sub-objects are only populated for privileged callers and are otherwise null.
Fields
| Field Name | Description |
|---|---|
active - Active
|
|
blockchainSettings - [BlockchainSettingResponse]
|
Per-network settings for the coin, including each network's withdrawal fee. |
blockchains - [String]
|
Blockchain networks this coin can be deposited or withdrawn on. Empty when none are configured. |
categories - [String]
|
All categories the coin is tagged with. May be null. |
category - String
|
Primary category the coin belongs to, such as "Layer 1" or "Stablecoin". May be null. |
coinId - String
|
The coin's unique identifier. |
coinUrl - String
|
Slug or URL fragment identifying the coin's page. May be null. |
defaultWithdrawalFee - Float
|
Withdrawal fee used when no network-specific fee applies, in units of the coin. Null when not set. |
defi - Defi
|
|
defiAddresses - [DefiAddress]
|
On-chain contract addresses for this coin per DeFi chain. May be null or empty. |
description - String
|
Descriptive text about the coin, in Markdown. May be null. |
displaySymbol - String
|
Symbol to show in a user interface. Falls back to the trading symbol when no separate display symbol is set. |
features - CoinFeatures
|
|
links - [CoinLink]
|
Official links for the coin, such as its website, social channels, and source repository. May be null. |
maximumTradeAmount - Float
|
Largest value allowed in a single trade, in the quote currency. Null when uncapped. |
maximumTradeQuantity - Float
|
Largest quantity of the coin allowed in a single trade, in units of the coin. Null when uncapped. |
membershipBuyTradeFee - Float
|
Buy trading fee after any discount from the account's membership tier, as a decimal fraction. Equals the standard fee when no discount applies. |
membershipSellTradeFee - Float
|
Sell trading fee after any discount from the account's membership tier, as a decimal fraction. Equals the standard fee when no discount applies. |
minimumBuyAmounts - JSON
|
Minimum buy amount per fiat/quote currency, keyed by lower-case currency code. May be null. |
minimumDepositAmount - Float
|
Smallest amount of the coin that can be deposited, in units of the coin. Null when not set. |
minimumSellAmounts - JSON
|
Minimum sell amount per fiat/quote currency, keyed by lower-case currency code. May be null. |
minimumTradingAmounts - JSON
|
Minimum trade amount per fiat/quote currency, keyed by lower-case currency code (for example, "aud"). May be null. |
minimumWithdrawAmount - Float
|
Smallest amount of the coin that can be withdrawn, in units of the coin. Null when not set. |
name - String
|
Full display name of the coin, such as "Bitcoin". |
notices - [CoinNotice]
|
Active notices or alerts about the coin (for example, network maintenance), each with a title, message, severity, and optional link. May be null. |
rewardsConversionFee - Float
|
Fee charged when converting rewards into the underlying coin, as a decimal fraction. Null when not set. |
rfqTrigger - Float
|
Order value at or above which the trade is routed through a request-for-quote flow rather than an instant quote. Null when not set. |
symbol - String
|
The coin's trading symbol, such as BTC. |
tradeFee - Float
|
Standard trading fee as a decimal fraction (for example, 0.01 = 1%). Null when not set. |
tradeNetworkFee - Float
|
Network fee applied when withdrawing this coin, expressed in units of the coin. Null when not set. |
withdrawDecimals - Int
|
Number of decimal places withdrawal amounts are rounded to. Null when not set. |
withdrawalFees - JSON
|
Withdrawal fee per blockchain network, keyed by network name, in units of the coin. May be null. |
Example
{
"active": Active,
"blockchainSettings": [BlockchainSettingResponse],
"blockchains": ["abc123"],
"categories": ["xyz789"],
"category": "abc123",
"coinId": "abc123",
"coinUrl": "xyz789",
"defaultWithdrawalFee": 123.45,
"defi": Defi,
"defiAddresses": [DefiAddress],
"description": "abc123",
"displaySymbol": "abc123",
"features": CoinFeatures,
"links": [CoinLink],
"maximumTradeAmount": 123.45,
"maximumTradeQuantity": 123.45,
"membershipBuyTradeFee": 987.65,
"membershipSellTradeFee": 123.45,
"minimumBuyAmounts": {},
"minimumDepositAmount": 987.65,
"minimumSellAmounts": {},
"minimumTradingAmounts": {},
"minimumWithdrawAmount": 123.45,
"name": "abc123",
"notices": [CoinNotice],
"rewardsConversionFee": 123.45,
"rfqTrigger": 123.45,
"symbol": "xyz789",
"tradeFee": 123.45,
"tradeNetworkFee": 123.45,
"withdrawDecimals": 123,
"withdrawalFees": {}
}
GetDefiOrderResponse
Description
The status and details of a DeFi order.
Fields
| Field Name | Description |
|---|---|
assetAmount - Float
|
The amount of the coin, in that coin's units. |
currencyAmount - Float
|
The value of the order in the quote currency. |
currencyCode - CurrencyCode2
|
|
defiOrderStatus - DefiOrderStatus
|
|
isSuccessful - Boolean
|
Whether the order was found and belongs to you. When false, no order details are returned. |
networkFee - Float
|
The blockchain network fee charged, in the coin's units. |
orderId - ID
|
The order's identifier. |
scannerTxUrl - String
|
A link to view the transaction on a blockchain explorer. |
side - Side
|
|
symbol - String
|
The coin symbol being traded (for example BTC). |
tradeFee - Float
|
The trading fee charged, in the coin's units. |
Example
{
"assetAmount": 987.65,
"currencyAmount": 987.65,
"currencyCode": "AUD",
"defiOrderStatus": "PENDING",
"isSuccessful": false,
"networkFee": 123.45,
"orderId": "4",
"scannerTxUrl": "xyz789",
"side": "BUY",
"symbol": "xyz789",
"tradeFee": 123.45
}
GetLimitOrderResponse
Description
The result of fetching a single limit order.
Fields
| Field Name | Description |
|---|---|
errorCode - String
|
A short machine-readable reason when the order could not be returned; otherwise null. |
errorMessage - String
|
A human-readable explanation when the order could not be returned; otherwise null. |
isSuccessful - Boolean
|
True if the order was found and returned; false otherwise. |
order - LimitOrder
|
Example
{
"errorCode": "xyz789",
"errorMessage": "xyz789",
"isSuccessful": false,
"order": LimitOrder
}
GetPortfolioChartResponse
Description
Your portfolio value over time, as a series of daily data points ready to plot.
Fields
| Field Name | Description |
|---|---|
fromDate - String
|
The effective start of the returned range (UTC). Nullable. |
results - [PortfolioStatement]
|
The daily value data points, ordered oldest to newest. |
toDate - String
|
The effective end of the returned range (UTC). Nullable. |
totalRecordsFound - BigInt
|
The number of data points returned. |
Example
{
"fromDate": "xyz789",
"results": [PortfolioStatement],
"toDate": "abc123",
"totalRecordsFound": {}
}
GetSwapQuoteInput
Description
Describes the coin-to-coin swap you want priced: the coin to swap from, the coin to swap to, and how much of the source coin to swap.
Fields
| Input Field | Description |
|---|---|
currencyCode - CurrencyCode2
|
|
estimationOnly - Boolean
|
When true, returns an estimate only and does not store an executable quote. Defaults to false. |
fromSymbol - String
|
Symbol of the coin you want to swap from, e.g. "BTC". Required. |
idempotentId - ID
|
A unique identifier you generate for this request so it can be safely retried. |
preciseAmount - String
|
Quantity of the source coin to swap, as a full-precision string, in the source coin's own units. |
toSymbol - String
|
Symbol of the coin you want to swap to, e.g. "ETH". Required. |
ttlSeconds - Int
|
How long the quote remains valid, in seconds. |
useRfq - Boolean
|
When true, requests a firm locked-in price, typically used for larger swaps. |
userId - ID
|
Optional account to quote for when you have delegated access; defaults to your own account. |
Example
{
"currencyCode": "AUD",
"estimationOnly": false,
"fromSymbol": "abc123",
"idempotentId": 4,
"preciseAmount": "xyz789",
"toSymbol": "xyz789",
"ttlSeconds": 987,
"useRfq": false,
"userId": 4
}
GetSwapQuoteResponse
Description
The result of requesting a swap quote, including the quote itself when one could be produced.
Fields
| Field Name | Description |
|---|---|
errorMessage - String
|
Explanation of why a quote could not be produced; null on success. |
isSuccessful - Boolean
|
Whether a quote could be produced. |
quote - CefiSwapQuoteResponse
|
A firm swap quote you can execute, describing the amounts, fee, rate and expiry. |
serverTime - String
|
The server time when the quote was generated, in UTC. Omitted when not set. |
stashBack - String
|
STASH rewards you would earn on this swap. Null when not applicable. |
Example
{
"errorMessage": "xyz789",
"isSuccessful": false,
"quote": CefiSwapQuoteResponse,
"serverTime": "abc123",
"stashBack": "abc123"
}
GetTradeQuoteInput
Description
Describes the buy or sell you want priced: which coin, which side, and the amount as either a coin quantity or a cash value.
Fields
| Input Field | Description |
|---|---|
assetAmount - String
|
Quantity to trade, in the coin's own units. Supply either this or FiatAmount. |
currencyCode - CurrencyCode2
|
|
estimationOnly - Boolean
|
When true, returns an estimate only and does not store an executable quote. Defaults to false. |
fiatAmount - String
|
Cash value to trade, in the quote currency (AUD by default). Supply either this or AssetAmount. |
idempotentId - ID
|
A unique identifier you generate for this request so it can be safely retried. |
oracleQuoteId - String
|
Optional reference to a specific price snapshot to quote against. |
side - Side
|
|
stashAmount - String
|
Optional amount of STASH rewards to apply toward the trade. |
symbol - String
|
Symbol of the coin to buy or sell, e.g. "BTC". Required. |
ttlSeconds - Int
|
How long the quote remains valid, in seconds. |
useRfq - Boolean
|
When true, requests a firm locked-in price, typically used for larger trades. |
userId - ID
|
Optional account to quote for when you have delegated access; defaults to your own account. |
Example
{
"assetAmount": "abc123",
"currencyCode": "AUD",
"estimationOnly": false,
"fiatAmount": "xyz789",
"idempotentId": "4",
"oracleQuoteId": "xyz789",
"side": "BUY",
"stashAmount": "abc123",
"symbol": "abc123",
"ttlSeconds": 987,
"useRfq": false,
"userId": "4"
}
GetTradeQuoteResponse
Fields
| Field Name | Description |
|---|---|
errorMessage - String
|
|
isSuccessful - Boolean
|
|
quote - CefiTradeQuoteResponse
|
|
serverTime - String
|
Example
{
"errorMessage": "abc123",
"isSuccessful": false,
"quote": CefiTradeQuoteResponse,
"serverTime": "xyz789"
}
ID
Description
The ID scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as "4") or integer (such as 4) input value will be accepted as an ID.
Example
"4"
Int
Description
The Int scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.
Example
123
JSON
Example
{}
LimitOrder
Fields
| Field Name | Description |
|---|---|
accountId - ID
|
|
assetAmount - Float
|
|
createdOn - String
|
|
currencyCode - CurrencyCode2
|
|
defiTransferId - ID
|
|
errorMessage - String
|
|
expiresOn - String
|
|
fiatAmount - Float
|
|
limitOrderStatus - LimitOrderStatus
|
|
limitOrderStrategy - LimitOrderStrategy
|
|
limitOrderType - LimitOrderType
|
|
maxNetworkFee - Float
|
|
maxSlippage - Float
|
|
networkFee - Float
|
|
orderId - ID
|
|
quoteBuyPrice - Float
|
|
quoteSellPrice - Float
|
|
side - Side
|
|
slippage - Float
|
|
stashback - Float
|
|
successId - ID
|
|
symbol - String
|
|
tradeFee - Float
|
|
triggerPrice - Float
|
|
updatedOn - String
|
Example
{
"accountId": 4,
"assetAmount": 987.65,
"createdOn": "abc123",
"currencyCode": "AUD",
"defiTransferId": "4",
"errorMessage": "abc123",
"expiresOn": "xyz789",
"fiatAmount": 123.45,
"limitOrderStatus": "PENDING",
"limitOrderStrategy": "STOPLOSS",
"limitOrderType": "LOCKINGLIMITORDER",
"maxNetworkFee": 123.45,
"maxSlippage": 987.65,
"networkFee": 987.65,
"orderId": "4",
"quoteBuyPrice": 123.45,
"quoteSellPrice": 123.45,
"side": "BUY",
"slippage": 987.65,
"stashback": 987.65,
"successId": 4,
"symbol": "xyz789",
"tradeFee": 123.45,
"triggerPrice": 987.65,
"updatedOn": "abc123"
}
LimitOrderSearchResponseBase
Description
Standard envelope for paginated list/search results. result holds the items for the requested page; the remaining fields describe the page and total, and report failure.
Fields
| Field Name | Description |
|---|---|
errorMessage - String
|
Human-readable error detail when isSuccessful is false; otherwise null. |
isSuccessful - Boolean
|
True when the search completed successfully; false if it failed (see errorMessage). |
pageIndex - Int
|
Zero-based index of the page these results belong to (echoes the request). |
pageSize - Int
|
Number of items per page used for this response (echoes the request). |
result - [LimitOrder]
|
The items on the current page. Empty when there are no matches for the query. |
totalRecordsFound - BigInt
|
Total number of items matching the query across all pages, for computing page count. |
Example
{
"errorMessage": "xyz789",
"isSuccessful": false,
"pageIndex": 987,
"pageSize": 987,
"result": [LimitOrder],
"totalRecordsFound": {}
}
LimitOrderStatus
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"PENDING"
LimitOrderStrategy
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"STOPLOSS"
LimitOrderType
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"LOCKINGLIMITORDER"
ListCategoriesResponse
Description
The set of coin categories available for filtering.
Fields
| Field Name | Description |
|---|---|
categories - [String]
|
Distinct category names in use across tradable coins (for example, "Layer 1", "Stablecoin"). |
Example
{"categories": ["xyz789"]}
ListChainsPayloadInput
Description
Optional filters applied when listing supported chains.
Fields
| Input Field | Description |
|---|---|
searchQuery - String
|
Text used to match chains by name. Leave empty or null to return every supported chain. |
Example
{"searchQuery": "xyz789"}
ListChainsResponse
Description
The list of blockchains and networks Coinstash supports.
Fields
| Field Name | Description |
|---|---|
chains - [ChainResponseItem]
|
The supported chains. Empty if none match the request. |
isSuccessful - Boolean
|
True when the request was processed successfully. |
Example
{"chains": [ChainResponseItem], "isSuccessful": false}
ListCoinsResponse
Description
A page of coins matching a listing request, plus paging totals.
Fields
| Field Name | Description |
|---|---|
errorMessage - String
|
Explanation when the request did not succeed. Null on success. |
isSuccessful - Boolean
|
Whether the request succeeded. False, with an error message, when a balances request is made without authentication. |
pageIndex - Int
|
Zero-based index of the page returned. |
pageSize - Int
|
Number of coins per page used for this response. |
result - [ListCoinsResult]
|
The coins on this page. Empty when nothing matched or the request was not authorised for a balances/watchlist filter. |
totalDefiCoins - Int
|
Number of matching coins that are DeFi coins currently enabled for trading. |
totalRecordsFound - Int
|
Total number of coins matching the filters across all pages. |
Example
{
"errorMessage": "xyz789",
"isSuccessful": false,
"pageIndex": 123,
"pageSize": 123,
"result": [ListCoinsResult],
"totalDefiCoins": 123,
"totalRecordsFound": 123
}
ListCoinsResult
Description
A single coin in a list result: a lighter summary than the full coin profile, carrying identity, live market data, and headline trading and reward details.
Fields
| Field Name | Description |
|---|---|
active - Active
|
|
balance - String
|
The account holder's balance of this coin, in units of the coin. Only set when balances were requested; otherwise null. |
balanceInAud - String
|
The account holder's balance of this coin valued in AUD. Only set when balances were requested; otherwise null. |
blockchains - [String]
|
Blockchain networks this coin can be deposited or withdrawn on. Empty when none are configured. |
categories - [String]
|
All categories the coin is tagged with. May be null. |
category - String
|
Primary category the coin belongs to. May be null. |
coinId - String
|
The coin's unique identifier. |
coinUrl - String
|
Slug or URL fragment identifying the coin's page. May be null. |
createdOn - String
|
When the coin was first added. May be null. |
defaultWithdrawalFee - Float
|
Withdrawal fee used when no network-specific fee applies, in units of the coin. Null when not set. |
defi - Defi
|
|
defiAddresses - [DefiAddress]
|
On-chain contract addresses for this coin per DeFi chain. May be null or empty. |
displaySymbol - String
|
Symbol to show in a user interface. Falls back to the trading symbol when no separate display symbol is set. |
features - CoinFeatures
|
|
imageAvailable - Boolean
|
Whether a logo image is available for the coin. |
marketCap - Float
|
Market capitalisation in the target currency (AUD). Null when unavailable. |
marketCapPosition - Int
|
The coin's rank by market cap, where 1 is the largest. Null when unavailable. |
maximumTradeAmount - Float
|
Largest value allowed in a single trade, in the quote currency. Null when uncapped. |
maximumTradeQuantity - Float
|
Largest quantity of the coin allowed in a single trade, in units of the coin. Null when uncapped. |
membershipBuyTradeFee - Float
|
Buy trading fee after any discount from the account's membership tier, as a decimal fraction. Equals the standard fee when no discount applies. |
membershipSellTradeFee - Float
|
Sell trading fee after any discount from the account's membership tier, as a decimal fraction. Equals the standard fee when no discount applies. |
minimumDepositAmount - Float
|
Smallest amount of the coin that can be deposited, in units of the coin. Null when not set. |
minimumTradingAmounts - JSON
|
Minimum trade amount per fiat/quote currency, keyed by lower-case currency code (for example, "aud"). May be null. |
minimumWithdrawAmount - Float
|
Smallest amount of the coin that can be withdrawn, in units of the coin. Null when not set. |
name - String
|
Full display name of the coin, such as "Bitcoin". |
percentage24H - Float
|
Price change over the last 24 hours, in percent. Null when unavailable. |
percentage30D - Float
|
Price change over the last 30 days, in percent. Null when unavailable. |
percentage7D - Float
|
Price change over the last 7 days, in percent. Null when unavailable. |
rfqTrigger - Float
|
Order value at or above which the trade is routed through a request-for-quote flow. Null when not set. |
symbol - String
|
The coin's trading symbol, such as BTC. |
tickerPrice - Float
|
Current price of the coin in the target currency (AUD). Null when no price is available. |
tradeFee - Float
|
Standard trading fee as a decimal fraction (for example, 0.01 = 1%). Null when not set. |
tradeNetworkFee - Float
|
Network fee applied when withdrawing this coin, expressed in units of the coin. Null when not set. |
volume - Float
|
Trading volume over the last 24 hours, in the target currency (AUD). Null when unavailable. |
withdrawalFees - JSON
|
Withdrawal fee per blockchain network, keyed by network name, in units of the coin. May be null. |
Example
{
"active": Active,
"balance": "xyz789",
"balanceInAud": "abc123",
"blockchains": ["abc123"],
"categories": ["xyz789"],
"category": "abc123",
"coinId": "abc123",
"coinUrl": "xyz789",
"createdOn": "xyz789",
"defaultWithdrawalFee": 987.65,
"defi": Defi,
"defiAddresses": [DefiAddress],
"displaySymbol": "abc123",
"features": CoinFeatures,
"imageAvailable": false,
"marketCap": 987.65,
"marketCapPosition": 987,
"maximumTradeAmount": 987.65,
"maximumTradeQuantity": 123.45,
"membershipBuyTradeFee": 987.65,
"membershipSellTradeFee": 123.45,
"minimumDepositAmount": 123.45,
"minimumTradingAmounts": {},
"minimumWithdrawAmount": 123.45,
"name": "abc123",
"percentage24H": 123.45,
"percentage30D": 987.65,
"percentage7D": 123.45,
"rfqTrigger": 123.45,
"symbol": "abc123",
"tickerPrice": 123.45,
"tradeFee": 987.65,
"tradeNetworkFee": 123.45,
"volume": 123.45,
"withdrawalFees": {}
}
ListReportsResponse
Description
A page of generated reports.
Example
{
"errorMessage": "xyz789",
"isSuccessful": false,
"reports": [Report]
}
OrderType
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"SELL"
PopulatedBundleCoin
Description
One coin in a bundle, with the share of the bundle it makes up.
Fields
| Field Name | Description |
|---|---|
allocation - Float
|
This coin's weight in the bundle, in percentage points (for example, 25 = 25% of the bundle). The allocations of a bundle's coins always add up to 100. |
coinUrl - String
|
Slug or URL fragment for the coin's page. May be null. |
symbol - String
|
The coin's trading symbol, such as BTC. |
Example
{
"allocation": 987.65,
"coinUrl": "xyz789",
"symbol": "xyz789"
}
PortfolioResponse
Description
A summary of your reward balances.
Fields
| Field Name | Description |
|---|---|
fromDate - String
|
Start of the period the summary covers (UTC). Nullable. |
isSuccessful - Boolean
|
Whether the request completed successfully. |
toDate - String
|
End of the period the summary covers (UTC). Nullable. |
totalRewardsGainedFiat - Float
|
Total value of rewards you received over the period, in AUD. |
Example
{
"fromDate": "xyz789",
"isSuccessful": false,
"toDate": "xyz789",
"totalRewardsGainedFiat": 987.65
}
PortfolioStatement
Description
A single daily snapshot of your total portfolio value.
Fields
| Field Name | Description |
|---|---|
accountId - ID
|
The account this snapshot belongs to. |
currencyCode - CurrencyCode2
|
|
statementDate - String
|
The date this snapshot represents (UTC). |
totalFiatDelta1D - Float
|
Change in total value versus the previous day, in the quote currency (AUD). |
totalFiatDeltaPercentage1D - Float
|
Change in total value versus the previous day, as a percentage. |
totalValueBtc - Float
|
Total portfolio value on this date, expressed in BTC. |
totalValueFiat - Float
|
Total portfolio value on this date, in the quote currency (AUD). |
Example
{
"accountId": 4,
"currencyCode": "AUD",
"statementDate": "abc123",
"totalFiatDelta1D": 987.65,
"totalFiatDeltaPercentage1D": 987.65,
"totalValueBtc": 987.65,
"totalValueFiat": 987.65
}
QuotePriceResponse
Fields
| Field Name | Description |
|---|---|
buyPrice - Float
|
|
buyPricePrecise - String
|
|
circulatingSupply - BigInt
|
|
coinId - String
|
|
coinUrl - String
|
|
marketCap - BigInt
|
|
percentage1H - Float
|
|
percentage24H - Float
|
|
percentage30D - Float
|
|
percentage7D - Float
|
|
sellPrice - Float
|
|
sellPricePrecise - String
|
|
symbol - String
|
|
tickerPrice - Float
|
|
tickerPricePrecise - String
|
|
tradingVolume24H - BigInt
|
Example
{
"buyPrice": 123.45,
"buyPricePrecise": "xyz789",
"circulatingSupply": {},
"coinId": "abc123",
"coinUrl": "abc123",
"marketCap": {},
"percentage1H": 123.45,
"percentage24H": 987.65,
"percentage30D": 987.65,
"percentage7D": 987.65,
"sellPrice": 987.65,
"sellPricePrecise": "xyz789",
"symbol": "xyz789",
"tickerPrice": 123.45,
"tickerPricePrecise": "xyz789",
"tradingVolume24H": {}
}
QuoteResponse
Fields
| Field Name | Description |
|---|---|
issuedOn - String
|
|
prices - JSON
|
|
pricesList - [QuotePriceResponse]
|
|
quoteId - String
|
|
targetCurrency - TargetCurrency
|
Example
{
"issuedOn": "xyz789",
"prices": {},
"pricesList": [QuotePriceResponse],
"quoteId": "abc123",
"targetCurrency": "AUD"
}
Report
Description
A report that has been generated for an account, such as a transaction history or tax report.
Fields
| Field Name | Description |
|---|---|
accountId - ID
|
The account the report was generated for, when scoped to a single account. |
createdOn - String
|
|
date - String
|
When the report was generated. |
filename - String
|
The file name of the generated report. |
html - String
|
The rendered report content as HTML. |
id - String
|
The unique identifier of the report, used to download it. |
reportType - String
|
The kind of report, for example a transaction history or an end-of-financial-year tax report. |
updatedOn - String
|
|
userId - ID
|
The owner the report belongs to. |
yearOfReport - String
|
The financial year the report covers, for example "2025". |
Example
{
"accountId": "4",
"createdOn": "abc123",
"date": "xyz789",
"filename": "abc123",
"html": "xyz789",
"id": "abc123",
"reportType": "xyz789",
"updatedOn": "abc123",
"userId": 4,
"yearOfReport": "xyz789"
}
SearchAccountOrdersPayloadInput
Description
Filters, paging and sorting for an order search.
Fields
| Input Field | Description |
|---|---|
category - Category
|
|
dateFrom - String
|
Only include orders from this date onward (UTC); omit for no lower bound. |
dateTo - String
|
Only include orders up to this date (UTC); omit for no upper bound. |
excludeLoyaltyAwardCategory - Boolean
|
When true, exclude reward orders. Defaults to false. |
excludeRedemptionAwardCategory - Boolean
|
When true, exclude reward-redemption orders. Defaults to false. |
includeAllAccounts - Boolean
|
When true, include orders across all of the user's accounts rather than just this one. Defaults to false. |
includeRedemptionAwardCategory - Boolean
|
When true, return non-STASH orders plus redemption and stashback orders, for a transactions view. Defaults to false. |
includeRedemptionAwardCategoryForStash - Boolean
|
When true, return STASH orders plus redemption orders, for a rewards view. Defaults to false. |
includeStash - Boolean
|
When true, include STASH reward orders, which are excluded by default. Defaults to false. |
orderType - OrderType
|
|
pageIndex - Int
|
Zero-based page number to return. Defaults to 0. |
pageSize - Int
|
Number of orders per page. Defaults to 10. |
sort - SearchSorterInput
|
|
symbol - String
|
Only return orders involving this coin or currency symbol; omit for all. |
transactionStatus - TransactionStatus2
|
Example
{
"category": "DEPOSIT",
"dateFrom": "xyz789",
"dateTo": "xyz789",
"excludeLoyaltyAwardCategory": false,
"excludeRedemptionAwardCategory": true,
"includeAllAccounts": true,
"includeRedemptionAwardCategory": false,
"includeRedemptionAwardCategoryForStash": false,
"includeStash": true,
"orderType": "SELL",
"pageIndex": 123,
"pageSize": 123,
"sort": SearchSorterInput,
"symbol": "abc123",
"transactionStatus": "PENDING"
}
SearchAccountTransactionsPayloadInput
Description
Filters, paging and sorting for a transaction search.
Fields
| Input Field | Description |
|---|---|
category - Category
|
|
fromDate - Int
|
Only include transactions from this time onward, as a Unix timestamp in seconds; omit for no lower bound. |
orderType - OrderType
|
|
pageIndex - Int
|
Zero-based page number to return. Defaults to 0. |
pageSize - Int
|
Number of transactions per page. Defaults to 10. |
sort - SearchSorterInput
|
|
symbol - String
|
Only return transactions for this coin or currency symbol; omit for all. |
toDate - Int
|
Only include transactions up to this time, as a Unix timestamp in seconds; omit for no upper bound. |
transactionType - TransactionType
|
Example
{
"category": "DEPOSIT",
"fromDate": 123,
"orderType": "SELL",
"pageIndex": 123,
"pageSize": 123,
"sort": SearchSorterInput,
"symbol": "xyz789",
"toDate": 123,
"transactionType": "DEBIT"
}
SearchLimitOrdersInput
Description
Filters for listing an account's limit orders and price alerts. Combine with the paging and sort fields from the base request. All filters are optional.
Fields
| Input Field | Description |
|---|---|
accountId - ID
|
The trading account whose orders to return. |
pageIndex - Int
|
Zero-based page number to return. Defaults to 0 (the first page). |
pageSize - Int
|
Maximum number of items per page. Defaults to 10. |
sort - SearchSorterInput
|
|
status - Status3
|
|
statuses - [Statuses2ListItem]
|
Return only orders in any of these statuses. Combine with, or use instead of, status. |
symbols - [String]
|
Return only orders for these coin symbols, e.g. ["BTC", "ETH"]. |
type - Type4
|
Example
{
"accountId": "4",
"pageIndex": 987,
"pageSize": 987,
"sort": SearchSorterInput,
"status": "PENDING",
"statuses": ["PENDING"],
"symbols": ["abc123"],
"type": "LOCKINGLIMITORDER"
}
SearchOrderResult
Description
An order, grouping the individual transactions that make it up.
Fields
| Field Name | Description |
|---|---|
aggregationId - ID
|
Identifier the order is grouped under (the order id, or the transaction id when there is no order). |
categories - [CategoriesListItem]
|
The categories of the transactions in the order, such as Trade, Deposit or Withdrawal. |
orderType - OrderType
|
|
transactedOn - String
|
When the order was transacted (UTC). |
transactions - [TransactionResult]
|
The individual transactions that make up the order. |
Example
{
"aggregationId": 4,
"categories": ["DEPOSIT"],
"orderType": "SELL",
"transactedOn": "xyz789",
"transactions": [TransactionResult]
}
SearchOrderResultSearchResponseBase
Description
Standard envelope for paginated list/search results. result holds the items for the requested page; the remaining fields describe the page and total, and report failure.
Fields
| Field Name | Description |
|---|---|
errorMessage - String
|
Human-readable error detail when isSuccessful is false; otherwise null. |
isSuccessful - Boolean
|
True when the search completed successfully; false if it failed (see errorMessage). |
pageIndex - Int
|
Zero-based index of the page these results belong to (echoes the request). |
pageSize - Int
|
Number of items per page used for this response (echoes the request). |
result - [SearchOrderResult]
|
The items on the current page. Empty when there are no matches for the query. |
totalRecordsFound - BigInt
|
Total number of items matching the query across all pages, for computing page count. |
Example
{
"errorMessage": "abc123",
"isSuccessful": true,
"pageIndex": 987,
"pageSize": 987,
"result": [SearchOrderResult],
"totalRecordsFound": {}
}
SearchSorterInput
SearchStatementPayloadInput
Description
The date range for a statement search. Omit both dates to get the last seven days.
Example
{
"fromDate": "xyz789",
"toDate": "xyz789"
}
SearchTransactionResult
Description
A single transaction returned by a transaction search.
Fields
| Field Name | Description |
|---|---|
accountId - ID
|
Identifier of the account the transaction belongs to. |
amount - Float
|
The transaction amount, in units of the symbol. |
amountType - AmountType
|
|
assetSymbol - String
|
For reward transactions, the underlying asset the reward relates to; otherwise null. |
awardCategory - AwardCategory
|
|
awardEvent - AwardEvent
|
|
category - Category2
|
|
chain - String
|
The blockchain network of an on-chain transfer; null if not applicable. |
description - String
|
Human-readable description of the transaction. |
executionType - ExecutionType
|
|
externalTxId - String
|
The on-chain transaction hash of an external transfer; null if not applicable. |
networkFee - Float
|
The blockchain network fee, in units of the symbol; null if not applicable. |
orderId - ID
|
Identifier of the order this transaction is part of; null if it has no order. |
orderType - OrderType
|
|
quoteBuyPrice - Float
|
The buy price used for the transaction, in AUD; null if not applicable. |
quoteSellPrice - Float
|
The sell price used for the transaction, in AUD; null if not applicable. |
referenceTxId - ID
|
Identifier of a related transaction, such as the original transaction being reversed; null if none. |
scanUrl - String
|
A single block-explorer link for the transaction; null if not applicable. |
scanUrls - [String]
|
Block-explorer links for any on-chain transfers; null or empty if none. |
subcategory - Subcategory
|
|
symbol - String
|
The coin or currency symbol the transaction is denominated in. |
transactedOn - String
|
When the transaction was transacted (UTC). |
transactionId - ID
|
Unique identifier of the transaction. |
transactionStatus - TransactionStatus
|
|
type - Type
|
Example
{
"accountId": 4,
"amount": 123.45,
"amountType": "ASSET",
"assetSymbol": "abc123",
"awardCategory": "REFERRAL",
"awardEvent": "NONE",
"category": "DEPOSIT",
"chain": "xyz789",
"description": "abc123",
"executionType": "SPOT",
"externalTxId": "xyz789",
"networkFee": 987.65,
"orderId": 4,
"orderType": "SELL",
"quoteBuyPrice": 123.45,
"quoteSellPrice": 987.65,
"referenceTxId": 4,
"scanUrl": "abc123",
"scanUrls": ["abc123"],
"subcategory": "OTC",
"symbol": "xyz789",
"transactedOn": "abc123",
"transactionId": "4",
"transactionStatus": "PENDING",
"type": "DEBIT"
}
SearchTransactionResultSearchResponseBase
Description
Standard envelope for paginated list/search results. result holds the items for the requested page; the remaining fields describe the page and total, and report failure.
Fields
| Field Name | Description |
|---|---|
errorMessage - String
|
Human-readable error detail when isSuccessful is false; otherwise null. |
isSuccessful - Boolean
|
True when the search completed successfully; false if it failed (see errorMessage). |
pageIndex - Int
|
Zero-based index of the page these results belong to (echoes the request). |
pageSize - Int
|
Number of items per page used for this response (echoes the request). |
result - [SearchTransactionResult]
|
The items on the current page. Empty when there are no matches for the query. |
totalRecordsFound - BigInt
|
Total number of items matching the query across all pages, for computing page count. |
Example
{
"errorMessage": "xyz789",
"isSuccessful": true,
"pageIndex": 987,
"pageSize": 123,
"result": [SearchTransactionResult],
"totalRecordsFound": {}
}
Severity
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"LOW"
Side
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"BUY"
Side2
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"BUY"
SortDirection
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"ASCENDING"
SortField
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"NAME"
StatementResponse
Description
A single daily statement snapshot of an account's total portfolio value.
Fields
| Field Name | Description |
|---|---|
accountId - ID
|
The account this statement belongs to. |
currencyCode - CurrencyCode2
|
|
statementDate - String
|
The calendar date (UTC) the statement snapshot was taken. |
totalFiatDelta1D - Float
|
The change in total fiat value versus the previous day, in the statement currency. |
totalFiatDeltaPercentage1D - Float
|
The change in total fiat value versus the previous day, as a percentage. |
totalValueBtc - Float
|
The total value of the account's holdings on this date, expressed in BTC. |
totalValueFiat - Float
|
The total value of the account's holdings on this date, in the statement currency. |
Example
{
"accountId": "4",
"currencyCode": "AUD",
"statementDate": "abc123",
"totalFiatDelta1D": 123.45,
"totalFiatDeltaPercentage1D": 123.45,
"totalValueBtc": 123.45,
"totalValueFiat": 987.65
}
StatementResponseSearchResponseBase
Description
Standard envelope for paginated list/search results. result holds the items for the requested page; the remaining fields describe the page and total, and report failure.
Fields
| Field Name | Description |
|---|---|
errorMessage - String
|
Human-readable error detail when isSuccessful is false; otherwise null. |
isSuccessful - Boolean
|
True when the search completed successfully; false if it failed (see errorMessage). |
pageIndex - Int
|
Zero-based index of the page these results belong to (echoes the request). |
pageSize - Int
|
Number of items per page used for this response (echoes the request). |
result - [StatementResponse]
|
The items on the current page. Empty when there are no matches for the query. |
totalRecordsFound - BigInt
|
Total number of items matching the query across all pages, for computing page count. |
Example
{
"errorMessage": "xyz789",
"isSuccessful": true,
"pageIndex": 123,
"pageSize": 987,
"result": [StatementResponse],
"totalRecordsFound": {}
}
Status
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"ACTIVE"
Status2
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"PENDING"
Status3
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"PENDING"
Statuses2ListItem
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"PENDING"
Strategy
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"STOPLOSS"
String
Description
The String scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.
Example
"xyz789"
Subcategory
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"OTC"
SwapRFQInput
Description
Identifies the swap quote to execute.
Example
{
"quoteId": "4",
"userId": "4"
}
TargetCurrency
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"AUD"
Tier
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"TIER0"
TierLimits
Description
The deposit and withdrawal limits for an account, along with how much of each limit has already been used.
Fields
| Field Name | Description |
|---|---|
assetWithdrawal - Float
|
The maximum coin withdrawal allowed for the current period, valued in AUD. |
assetWithdrawalCounter - Float
|
The amount of the coin withdrawal limit already used in the current period, valued in AUD. |
fiatDeposit - Float
|
The maximum cash deposit allowed for the current period, in AUD. |
fiatDepositCounter - Float
|
The amount of the cash deposit limit already used in the current period, in AUD. |
fiatWithdrawal - Float
|
The maximum cash withdrawal allowed for the current period, in AUD. |
fiatWithdrawalCounter - Float
|
The amount of the cash withdrawal limit already used in the current period, in AUD. |
tier - Tier
|
Example
{
"assetWithdrawal": 987.65,
"assetWithdrawalCounter": 987.65,
"fiatDeposit": 987.65,
"fiatDepositCounter": 987.65,
"fiatWithdrawal": 987.65,
"fiatWithdrawalCounter": 123.45,
"tier": "TIER0"
}
TradeExecuted
Description
The order created by a successful trade.
Fields
| Field Name | Description |
|---|---|
orderId - ID
|
Unique identifier of the order that was placed. |
Example
{"orderId": 4}
TradeExecutedResponse
Description
The outcome of a trade, including the order placed and the amounts settled.
Fields
| Field Name | Description |
|---|---|
assetAmount - Float
|
Quantity of the coin bought or sold, in the coin's own units. Null when not applicable. |
assetAmountPrecise - String
|
The coin quantity as a full-precision string, in the coin's own units. Null when not applicable. |
data - TradeExecuted
|
The order created by a successful trade. |
errorCode - String
|
|
errorMessage - String
|
|
errors - JSON
|
|
fiatAmount - Float
|
Cash value of the trade, in AUD. Null when not applicable. |
fiatAmountPrecise - String
|
The cash value as a full-precision string, in AUD. Null when not applicable. |
idempotentId - String
|
|
isSuccessful - Boolean
|
Example
{
"assetAmount": 123.45,
"assetAmountPrecise": "xyz789",
"data": TradeExecuted,
"errorCode": "xyz789",
"errorMessage": "abc123",
"errors": {},
"fiatAmount": 123.45,
"fiatAmountPrecise": "abc123",
"idempotentId": "abc123",
"isSuccessful": false
}
TradeInput
Description
Identifies the buy or sell quote to execute.
Example
{"quoteId": "4", "side": "BUY", "userId": 4}
TradeResponse
TransactionResult
Description
A single transaction, such as one leg of a trade, a deposit, a withdrawal or a reward.
Fields
| Field Name | Description |
|---|---|
accountId - ID
|
Identifier of the account the transaction belongs to. |
amount - Float
|
The transaction amount, in units of the symbol. |
amountType - AmountType
|
|
awardCategory - AwardCategory
|
|
category - Category2
|
|
description - String
|
Human-readable description of the transaction. |
networkFee - Float
|
The blockchain network fee, in units of the symbol; null if not applicable. |
orderId - ID
|
Identifier of the order this transaction is part of; null if it has no order. |
quoteBuyPrice - Float
|
The buy price used for the transaction, in AUD; null if not applicable. |
quoteSellPrice - Float
|
The sell price used for the transaction, in AUD; null if not applicable. |
scanUrls - [String]
|
Block-explorer links for any on-chain transfers; null or empty if none. |
subcategory - Subcategory
|
|
symbol - String
|
The coin or currency symbol the transaction is denominated in. |
transactedOn - String
|
When the transaction was transacted (UTC). |
transactionId - ID
|
Unique identifier of the transaction. |
transactionStatus - TransactionStatus
|
|
type - Type
|
Example
{
"accountId": 4,
"amount": 987.65,
"amountType": "ASSET",
"awardCategory": "REFERRAL",
"category": "DEPOSIT",
"description": "xyz789",
"networkFee": 123.45,
"orderId": 4,
"quoteBuyPrice": 987.65,
"quoteSellPrice": 123.45,
"scanUrls": ["abc123"],
"subcategory": "OTC",
"symbol": "xyz789",
"transactedOn": "abc123",
"transactionId": 4,
"transactionStatus": "PENDING",
"type": "DEBIT"
}
TransactionStatus
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"PENDING"
TransactionStatus2
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"PENDING"
TransactionType
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"DEBIT"
Type
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"DEBIT"
Type3
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"WITHDRAWFIAT"
Type4
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"LOCKINGLIMITORDER"
UpdateLimitOrderPayloadInput
Description
The fields that can be changed on a pending order. Omit a field to leave it unchanged.
Example
{
"expirationDate": "abc123",
"triggerPrice": 123.45
}
UpdateLimitOrderResponse
Description
The outcome of updating a limit order.
Fields
| Field Name | Description |
|---|---|
errorCode - String
|
A short machine-readable reason when the update failed; otherwise null. |
errorMessage - String
|
A human-readable explanation when the update failed; otherwise null. |
isSuccessful - Boolean
|
True if the order was updated; false if it could not be (e.g. not found or not pending). |
Example
{
"errorCode": "xyz789",
"errorMessage": "xyz789",
"isSuccessful": false
}
Upload
Description
The Upload scalar type represents a file upload.
Example
Upload
UserProfileResponse
Description
The authenticated user's profile: identity, contact details, verification status, membership, and linked sign-in providers.
Fields
| Field Name | Description |
|---|---|
accountType - AccountType
|
|
avatarUrl - String
|
URL of the user's avatar image, if set. |
createdOn - String
|
When the account was created. |
displayName - String
|
The user's chosen display name. |
email - String
|
The user's email address. |
firstName - String
|
The user's first name. |
isEmailVerified - Boolean
|
Whether the user's email address has been verified. |
isIdentityVerified - Boolean
|
Whether the user's identity (KYC) has been verified. |
isPhoneNumberVerified - Boolean
|
Whether the user's phone number has been verified. |
isPrivate - Boolean
|
Whether the user's profile is marked private. |
lastName - String
|
The user's last name. |
legalName - String
|
The user's full legal name as used for verification. |
loyaltyDeactivated - Boolean
|
Whether the user has opted out of the loyalty program. |
memberhipTierExpiry - String
|
When the current membership tier expires, if it is time-limited. |
membershipTier - String
|
The user's current membership tier. |
middleName - String
|
The user's middle name, if provided. |
phoneNumber - String
|
The user's phone number, in international format. |
registeredOn - String
|
When the user completed registration, if applicable. |
rewardsActivated - Boolean
|
Whether the user has activated rewards. |
stashbackEnabled - Boolean
|
Whether Stashback is enabled for the user. |
status - Status
|
|
subaccount - Boolean
|
True when this profile is a sub-account of another user. |
termsAndConditionsVersion - Int
|
The version of the terms and conditions the user has accepted. |
timezone - String
|
The user's time zone in Windows format. |
timezoneIana - String
|
The user's time zone in IANA format (for example "Australia/Sydney"). |
twoFactorEnabled - Boolean
|
Whether two-factor authentication is enabled on the account. |
userId - ID
|
The user's unique identifier. |
Example
{
"accountType": "TRADING",
"avatarUrl": "xyz789",
"createdOn": "xyz789",
"displayName": "xyz789",
"email": "xyz789",
"firstName": "abc123",
"isEmailVerified": true,
"isIdentityVerified": true,
"isPhoneNumberVerified": false,
"isPrivate": true,
"lastName": "xyz789",
"legalName": "xyz789",
"loyaltyDeactivated": false,
"memberhipTierExpiry": "abc123",
"membershipTier": "abc123",
"middleName": "abc123",
"phoneNumber": "xyz789",
"registeredOn": "xyz789",
"rewardsActivated": false,
"stashbackEnabled": true,
"status": "ACTIVE",
"subaccount": true,
"termsAndConditionsVersion": 123,
"timezone": "abc123",
"timezoneIana": "xyz789",
"twoFactorEnabled": false,
"userId": 4
}
WithdrawAssetPayloadInput
Description
Details of a crypto withdrawal.
Fields
| Input Field | Description |
|---|---|
address - String
|
Destination wallet address. Required. |
amount - Float
|
The amount to withdraw, in units of the coin. Ignored when PreciseAmount is supplied. |
autoTransferFromSavingAccount - Boolean
|
When true, top up the trading balance from the savings account if needed to cover the withdrawal. Defaults to false. |
blockchain - String
|
The blockchain network to send on, for coins available on more than one network. |
code - String
|
Two-factor authentication code, required when the amount is at or above the account's two-factor threshold. |
counterpartyCountry - String
|
Country of the recipient. |
counterpartyFullName - String
|
Full name of the person or entity that will receive the funds. |
counterpartyIsCompany - Boolean
|
True if the recipient is a company or trust rather than an individual. |
counterpartyRelation - CounterpartyRelation
|
|
counterpartyTown - String
|
Town or city of the recipient. |
counterpartyType - CounterpartyType
|
|
counterpartyVaspId - String
|
Identifier of the destination provider chosen from the supported directory, when the destination is a listed exchange. |
counterpartyVaspName - String
|
Name of the destination exchange; required when the provider is not in the directory. |
counterpartyVaspNotListed - Boolean
|
Set to true when the destination exchange is not in the supported directory (an "Other" provider). Absent or null is treated as listed. |
idempotentId - ID
|
A unique client-supplied identifier that makes the request safe to retry without withdrawing twice. Required. |
preciseAmount - String
|
The amount to withdraw as a full-precision decimal string, in units of the coin; takes precedence over Amount. |
purposeOfTransfer - String
|
The purpose-of-transfer code for the withdrawal; required for withdrawals subject to the travel rule. |
quoteId - ID
|
Identifier of a fee estimate quote to lock in the network fee; obtain it from the withdrawal fee estimate. |
reference - String
|
Your reference for the withdrawal. Required. |
symbol - String
|
Symbol of the coin to withdraw. Required. |
tag - String
|
Destination tag, memo or destination ID, for coins that require one (such as XRP or XLM); otherwise leave empty. |
Example
{
"address": "xyz789",
"amount": 987.65,
"autoTransferFromSavingAccount": true,
"blockchain": "xyz789",
"code": "abc123",
"counterpartyCountry": "abc123",
"counterpartyFullName": "abc123",
"counterpartyIsCompany": true,
"counterpartyRelation": "SELF",
"counterpartyTown": "xyz789",
"counterpartyType": "VASP",
"counterpartyVaspId": "xyz789",
"counterpartyVaspName": "abc123",
"counterpartyVaspNotListed": true,
"idempotentId": "4",
"preciseAmount": "abc123",
"purposeOfTransfer": "abc123",
"quoteId": "4",
"reference": "abc123",
"symbol": "abc123",
"tag": "abc123"
}
WithdrawFiatPayloadInput
Description
Details of a fiat withdrawal.
Fields
| Input Field | Description |
|---|---|
accountName - String
|
Name on the destination bank account, when not using a saved bank account. |
accountNumber - String
|
Account number of the destination bank account, when not using a saved bank account. |
amount - Float
|
The amount to withdraw, in the chosen currency. Required; must be greater than zero and meet the minimum withdrawal amount. |
bsbNumber - String
|
BSB of the destination bank account, when not using a saved bank account. |
code - String
|
Two-factor authentication code, required when the amount is at or above the account's two-factor threshold. |
currencyCode - CurrencyCode
|
|
fiatAddressId - String
|
Identifier of a saved bank account to withdraw to; supply this instead of the individual bank fields. |
idempotentId - ID
|
A unique client-supplied identifier that makes the request safe to retry without withdrawing twice. Required. |
reference - String
|
Your reference for the withdrawal. Required. |
Example
{
"accountName": "xyz789",
"accountNumber": "abc123",
"amount": 987.65,
"bsbNumber": "xyz789",
"code": "xyz789",
"currencyCode": "AUD",
"fiatAddressId": "xyz789",
"idempotentId": "4",
"reference": "xyz789"
}