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.

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.

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

Arguments
Name Description
accountId - ID! Identifier of the account the order belongs to. Required.
orderId - ID! Identifier of the order to return; a transaction id belonging to the order also works. Required.

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

Arguments
Name Description
coinId - String! The coin's unique identifier.
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 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

Arguments
Name Description
accountId - ID! The trading account that owns the order.
orderId - ID! The ID of the order to fetch. Required.

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

Arguments
Name Description
fromDate - String Optional. Count only rewards earned on or after this date (UTC). Defaults to your entire history.
userId - ID! The account holder whose rewards summary you are requesting.

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

Arguments
Name Description
fromDate - String The start of the period the archived reports should cover.
userId - ID Optional. The account owner whose reports to archive; defaults to the authenticated user.
year - String The financial year to archive, for example "2025".

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.

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.

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.

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.

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

Response

Returns a JSON

Arguments
Name Description
userId - String

Example

Query
subscription activityUpdated($userId: String) {
  activityUpdated(userId: $userId)
}
Variables
{"userId": "abc123"}
Response
{"data": {"activityUpdated": {}}}

balanceChanged

Response

Returns a JSON

Arguments
Name Description
userId - String

Example

Query
subscription balanceChanged($userId: String) {
  balanceChanged(userId: $userId)
}
Variables
{"userId": "abc123"}
Response
{"data": {"balanceChanged": {}}}

notificationReceived

Response

Returns a JSON

Arguments
Name Description
userId - String

Example

Query
subscription notificationReceived($userId: String) {
  notificationReceived(userId: $userId)
}
Variables
{"userId": "abc123"}
Response
{"data": {"notificationReceived": {}}}

Types

AccountBalanceItem

Description

A single cash or coin balance entry, suitable for display.

Fields
Field Name Description
balance - String The balance amount as a full-precision text value, in the currency or coin units.
displaySymbol - String The symbol formatted for display to users.
symbol - String The currency or coin symbol (for example "AUD" or "BTC").
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.

Fields
Field Name Description
data - AccountBalances A snapshot of an account's holdings, including cash and coin balances, their value, any reward balances, and the account's current limits.
errorCode - String
errorMessage - String
errors - JSON
idempotentId - String
isSuccessful - Boolean
Example
{
  "data": AccountBalances,
  "errorCode": "xyz789",
  "errorMessage": "abc123",
  "errors": {},
  "idempotentId": "xyz789",
  "isSuccessful": false
}

AccountType

Values
Enum Value Description

TRADING

SAVING

INDIVIDUAL

COMPANY

SMSF

TRUST

BUSINESS

Example
"TRADING"

Active

Fields
Field Name Description
anyActive - Boolean
buy - Boolean
receive - Boolean
sell - Boolean
send - Boolean
swap - Boolean
trade - Boolean
Example
{
  "anyActive": true,
  "buy": false,
  "receive": false,
  "sell": false,
  "send": true,
  "swap": false,
  "trade": true
}

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.

Fields
Field Name Description
data - ActivityUpdated Confirms that a requested action was accepted and identifies the resulting activity so you can track its progress.
errorCode - String
errorMessage - String
errors - JSON
idempotentId - String
isSuccessful - Boolean
Example
{
  "data": ActivityUpdated,
  "errorCode": "abc123",
  "errorMessage": "xyz789",
  "errors": {},
  "idempotentId": "abc123",
  "isSuccessful": false
}

AddressStatus

Values
Enum Value Description

NOTVERIFIED

PENDINGVERIFICATION

REJECTED

VERIFIED

Example
"NOTVERIFIED"

AmountType

Values
Enum Value Description

ASSET

FIAT

STASH

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

REFERRAL

COMPETITION

BONUS

REDEMPTION

Example
"REFERRAL"

AwardEvent

Values
Enum Value Description

NONE

KYC

TRADE

FIATDEPOSIT

MEMBERSHIPTIERREACHED

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.

Fields
Input Field Description
idempotentId - ID An optional unique identifier you generate to make the cancellation safe to retry.
reason - String An optional free-text reason for cancelling, stored with the 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

DEPOSIT

WITHDRAW

TRADE

TRADEFEE

COMMISSION

TRANSFER

ADJUSTMENT

AWARD

REDEMPTION

REDEMPTIONFEE

SWAP

SWAPFEE

TRADENETWORKFEE

TOPUPSTASH

STASHADJUSTMENT

DEPOSITFEE

Example
"DEPOSIT"

Category

Values
Enum Value Description

DEPOSIT

WITHDRAW

TRADE

TRADEFEE

COMMISSION

TRANSFER

ADJUSTMENT

AWARD

REDEMPTION

REDEMPTIONFEE

SWAP

SWAPFEE

TRADENETWORKFEE

TOPUPSTASH

STASHADJUSTMENT

DEPOSITFEE

Example
"DEPOSIT"

Category2

Values
Enum Value Description

DEPOSIT

WITHDRAW

TRADE

TRADEFEE

COMMISSION

TRANSFER

ADJUSTMENT

AWARD

REDEMPTION

REDEMPTIONFEE

SWAP

SWAPFEE

TRADENETWORKFEE

TOPUPSTASH

STASHADJUSTMENT

DEPOSITFEE

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

ETHEREUM

OPTIMISM

BSC

GNOSIS

POLYGON

SONIC

FANTOM

BASE

SOLANA

ARBITRUM

AVALANCE

LINEA

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

Fields
Field Name Description
cmcId - String
coinGeckoId - String
hasTagSupport - Boolean
Example
{
  "cmcId": "abc123",
  "coinGeckoId": "abc123",
  "hasTagSupport": true
}

CoinLinkPlatform

Values
Enum Value Description

OTHER

TWITTER

TELEGRAM

MEDIUM

REDDIT

DISCORD

FACEBOOK

LINKEDIN

GITHUB

Example
"OTHER"

CoinLinkType

Values
Enum Value Description

OTHER

WEBSITE

CHAT

BLOG

REPOSITORY

Example
"OTHER"

CoinNotice

Fields
Field Name Description
date - String
link - String
section - [String]
severity - Severity
text - String
title - String
Example
{
  "date": "abc123",
  "link": "xyz789",
  "section": ["abc123"],
  "severity": "LOW",
  "text": "abc123",
  "title": "abc123"
}

CounterpartyRelation

Values
Enum Value Description

SELF

SOMEONEELSE

Example
"SELF"

CounterpartyType

Values
Enum Value Description

VASP

SELFHOSTED

UNKNOWN

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.

Fields
Field Name Description
errorMessage - String A human-readable reason the report could not be generated; null on success.
isSuccessful - Boolean Whether the report was generated successfully.
reportId - String The identifier of the newly generated report, used to list or download it.
Example
{
  "errorMessage": "abc123",
  "isSuccessful": true,
  "reportId": "xyz789"
}

CurrencyCode

Values
Enum Value Description

AUD

USD

INR

EUR

Example
"AUD"

CurrencyCode2

Values
Enum Value Description

AUD

USD

INR

EUR

Example
"AUD"

Defi

Fields
Field Name Description
active - Boolean
maxSlippage - Float
minSlippage - Float
payGasFeesWithCoin - Boolean
slippage - Float
transferSlippage - Float
transferTax - Float
Example
{
  "active": false,
  "maxSlippage": 123.45,
  "minSlippage": 123.45,
  "payGasFeesWithCoin": false,
  "slippage": 987.65,
  "transferSlippage": 123.45,
  "transferTax": 987.65
}

DefiAddress

Fields
Field Name Description
address - String
chain - Chain
decimals - Int
solanaTokenAccount - String
Example
{
  "address": "xyz789",
  "chain": "ETHEREUM",
  "decimals": 987,
  "solanaTokenAccount": "abc123"
}

DefiChain

Values
Enum Value Description

ETHEREUM

OPTIMISM

BSC

GNOSIS

POLYGON

SONIC

FANTOM

BASE

SOLANA

ARBITRUM

AVALANCE

LINEA

Example
"ETHEREUM"

DefiOrderStatus

Values
Enum Value Description

PENDING

PENDINGALLOWANCE

PROCESSING

FAILED

COMPLETED

NOTPROCESSED

Example
"PENDING"

Direction

Values
Enum Value Description

ASCENDING

DESCENDING

Example
"ASCENDING"

Direction2

Values
Enum Value Description

BUYEXACTFIATAMOUNT

SELLEXACTFIATAMOUNT

BUYEXACTASSETAMOUNT

SELLEXACTASSETAMOUNT

SWAP

STASHCONVERSION

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

SPOT

LIMIT

OTC

RFQ

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

PENDING

FAILED

COMPLETED

CANCELLED

INPROGRESS

Example
"PENDING"

LimitOrderStrategy

Values
Enum Value Description

STOPLOSS

TAKEPROFIT

BUYLIMIT

BUYSTOP

Example
"STOPLOSS"

LimitOrderType

Values
Enum Value Description

LOCKINGLIMITORDER

NONLOCKINGLIMITORDER

NOTIFICATION

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.

Fields
Field Name Description
errorMessage - String A human-readable reason the reports could not be retrieved; null on success.
isSuccessful - Boolean Whether the reports were retrieved successfully.
reports - [Report] The reports matching the request.
Example
{
  "errorMessage": "xyz789",
  "isSuccessful": false,
  "reports": [Report]
}

OrderType

Values
Enum Value Description

SELL

BUY

TRANSFER

REDEMPTION

SWAP

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

Fields
Input Field Description
direction - Direction
field - String
Example
{
  "direction": "ASCENDING",
  "field": "xyz789"
}

SearchStatementPayloadInput

Description

The date range for a statement search. Omit both dates to get the last seven days.

Fields
Input Field Description
fromDate - String Only include statements on or after this date. Optional.
toDate - String Only include statements on or before this date. Optional.
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

LOW

MEDIUM

HIGH

Example
"LOW"

Side

Values
Enum Value Description

BUY

SELL

Example
"BUY"

Side2

Values
Enum Value Description

BUY

SELL

Example
"BUY"

SortDirection

Values
Enum Value Description

ASCENDING

DESCENDING

Example
"ASCENDING"

SortField

Values
Enum Value Description

NAME

TICKERPRICE

PERCENTAGE_24H

PERCENTAGE_7D

PERCENTAGE_30D

MARKETCAP

VOLUME

CREATEDON

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

ACTIVE

DEACTIVATED

PROBLEM

ACKNOWLEDGED

NOTSTARTED

PENDING

INPROGRESS

FAILED

AWAITINGAPPROVAL

AWAITINGTRANSFER

COMPLETED

PARTIALLYCOMPLETED

AWAITINGSWAP

APPROVED

REJECTED

CANCELLED

VOIDED

PROCESSING

PREPARING

LOCKED

EXPIRED

Example
"ACTIVE"

Status2

Values
Enum Value Description

PENDING

ACCEPTED

REJECTED

CANCELLED

NOTVERIFIED

PENDINGVERIFICATION

VERIFIED

APPROVED

VOIDED

PROCESSING

PREPARING

LOCKED

EXPIRED

Example
"PENDING"

Status3

Values
Enum Value Description

PENDING

FAILED

COMPLETED

SUBMITTED

CANCELLED

REJECTED

INPROGRESS

Example
"PENDING"

Statuses2ListItem

Values
Enum Value Description

PENDING

FAILED

COMPLETED

CANCELLED

INPROGRESS

Example
"PENDING"

Strategy

Values
Enum Value Description

STOPLOSS

TAKEPROFIT

BUYLIMIT

BUYSTOP

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

OTC

MIGRATION

STASHCONVERSION

PLATFORM

MANUAL

INTERNAL

SWAP

TOPUP

STASHBACK

BIRTHDAYGIFT

PAYID

BANKTRANSFER

CARD

PAYPAL

Example
"OTC"

SwapRFQInput

Description

Identifies the swap quote to execute.

Fields
Input Field Description
quoteId - ID Identifier of the swap quote (from get-swap-quote) to execute. Required.
userId - ID Optional account to trade on behalf of when you have delegated access; defaults to your own account.
Example
{
  "quoteId": "4",
  "userId": "4"
}

TargetCurrency

Values
Enum Value Description

AUD

USD

INR

EUR

Example
"AUD"

Tier

Values
Enum Value Description

TIER0

TIER1

TIER2

TIER3

TIER4

TIER5

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.

Fields
Input Field Description
quoteId - ID Identifier of the buy or sell quote (from get-quote) to execute. Required.
side - Side2
userId - ID Optional account to trade on behalf of when you have delegated access; defaults to your own account.
Example
{"quoteId": "4", "side": "BUY", "userId": 4}

TradeResponse

Description

The outcome of executing a trade quote.

Fields
Field Name Description
errorMessage - String Explanation of why the order was rejected; null on success.
isSuccessful - Boolean Whether the order was placed successfully.
Example
{
  "errorMessage": "xyz789",
  "isSuccessful": true
}

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

PENDING

FAILED

COMPLETED

SUBMITTED

CANCELLED

REJECTED

Example
"PENDING"

TransactionStatus2

Values
Enum Value Description

PENDING

FAILED

COMPLETED

SUBMITTED

CANCELLED

REJECTED

Example
"PENDING"

TransactionType

Values
Enum Value Description

DEBIT

CREDIT

Example
"DEBIT"

Type

Values
Enum Value Description

DEBIT

CREDIT

Example
"DEBIT"

Type3

Values
Enum Value Description

WITHDRAWFIAT

WITHDRAWASSET

TIERUPGRADE

DEPOSITFIAT

KYC

FIATWITHDRAWALADDRESS

DEPOSITASSET

DEPOSITFIATPENDING

FIATDEPOSITADDRESS

Example
"WITHDRAWFIAT"

Type4

Values
Enum Value Description

LOCKINGLIMITORDER

NONLOCKINGLIMITORDER

NOTIFICATION

Example
"LOCKINGLIMITORDER"

UpdateLimitOrderPayloadInput

Description

The fields that can be changed on a pending order. Omit a field to leave it unchanged.

Fields
Input Field Description
expirationDate - String The new date and time (UTC) when the order expires if not yet triggered.
triggerPrice - Float The new price that triggers the order, in the order's quote currency.
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"
}