---
title: "getAccountBalance"
method: POST
path: "/account/balance"
tags: ["Cardano - Rosetta"]
---

# getAccountBalance

`POST /account/balance`

Get an array of all AccountBalances for an AccountIdentifier and the
BlockIdentifier at which the balance lookup was performed. The BlockIdentifier
must always be returned because some consumers of account balance data need
to know specifically at which block the balance was calculated to
compare balances they compute from operations with the balance returned
by the node.

It is important to note that making a balance request for an account
without populating the SubAccountIdentifier should not result in the
balance of all possible SubAccountIdentifiers being returned. Rather,
it should result in the balance pertaining to no SubAccountIdentifiers
being returned (sometimes called the liquid balance). To get all
balances associated with an account, it may be necessary to
perform multiple balance requests with unique AccountIdentifiers.

It is also possible to perform a historical balance lookup (if the server
supports it) by passing in an optional BlockIdentifier.

## Request body

- AccountBalanceRequest — An AccountBalanceRequest is utilized to make a balance request on the /account/balance endpoint. If the block_identifier is populated, a historical balance query should be performed.
  - `network_identifier` NetworkIdentifier, required — The network_identifier specifies which network a particular object is associated with.
    - `blockchain` string, required
    - `network` string, required — If a blockchain has a specific chain-id or network identifier, it should go in this field. It is up to the client to determine which network-specific identifier is mainnet or testnet.
    - `sub_network_identifier` SubNetworkIdentifier — In blockchains with sharded state, the SubNetworkIdentifier is required to query some object on a specific shard. This identifier is optional for all non-sharded blockchains.
      - `network` string, required
      - `metadata` object
  - `account_identifier` AccountIdentifier, required — The account_identifier uniquely identifies an account within a network. All fields in the account_identifier are utilized to determine this uniqueness (including the metadata field, if populated).
    - `address` string, required — The address may be a cryptographic public key (or some encoding of it) or a provided username.
    - `sub_account` SubAccountIdentifier — An account may have state specific to a contract address (ERC-20 token) and/or a stake (delegated balance). The sub_account_identifier should specify which state (if applicable) an account instantiation refers to.
      - `address` string, required — The SubAccount address may be a cryptographic value or some other identifier (ex: bonded) that uniquely specifies a SubAccount.
      - `metadata` object — If the SubAccount address is not sufficient to uniquely specify a SubAccount, any other identifying information can be stored here. It is important to note that two SubAccounts with identical addresses but differing metadata will not be considered equal by clients.
    - `metadata` object — Blockchains that utilize a username model (where the address is not a derivative of a cryptographic public key) should specify the public key(s) owned by the address in metadata.
  - `block_identifier` PartialBlockIdentifier — When fetching data by BlockIdentifier, it may be possible to only specify the index or hash. If neither property is specified, it is assumed that the client is making a request at the current block.
    - `index` integer
    - `hash` string
  - `currencies` RpcCurrency[] — In some cases, the caller may not want to retrieve all available balances for an AccountIdentifier. If the currencies field is populated, only balances for the specified currencies will be returned. If not populated, all available balances will be returned.
    - `symbol` string, required — Canonical symbol associated with a currency.
    - `decimals` integer, required — Number of decimal places in the standard unit representation of the amount. For example, BTC has 8 decimals. Note that it is not possible to represent the value of some currency in atomic units that is not base 10.
    - `metadata` object — Any additional information related to the currency itself. For example, it would be useful to populate this object with the contract address of an ERC-20 token.

## Response `200`

Expected response to a valid request

- AccountBalanceResponse — An AccountBalanceResponse is returned on the /account/balance endpoint. If an account has a balance for each AccountIdentifier describing it (ex: an ERC-20 token balance on a few smart contracts), an account balance request must be made with each AccountIdentifier. The `coins` field was removed and replaced by by `/account/coins` in `v1.4.7`.
  - `block_identifier` BlockIdentifier, required — The block_identifier uniquely identifies a block in a particular network.
    - `index` integer, required — This is also known as the block height.
    - `hash` string, required — This should be normalized according to the case specified in the block_hash_case network options.
  - `balances` Amount[], required — A single account may have a balance in multiple currencies.
    - `value` string, required — Value of the transaction in atomic units represented as an arbitrary-sized signed integer. For example, 1 BTC would be represented by a value of 100000000.
    - `currency` RpcCurrency, required — Currency is composed of a canonical Symbol and Decimals. This Decimals value is used to convert an Amount.Value from atomic units (Satoshis) to standard units (Bitcoins).
      - `symbol` string, required — Canonical symbol associated with a currency.
      - `decimals` integer, required — Number of decimal places in the standard unit representation of the amount. For example, BTC has 8 decimals. Note that it is not possible to represent the value of some currency in atomic units that is not base 10.
      - `metadata` object — Any additional information related to the currency itself. For example, it would be useful to populate this object with the contract address of an ERC-20 token.
    - `metadata` object
  - `metadata` object — Account-based blockchains that utilize a nonce or sequence number should include that number in the metadata. This number could be unique to the identifier or global across the account address.

## Other responses

- `500` — unexpected error

---

[API](https://skmtc.net/tatum/apis/blockchain-data.md) · [All operations](https://skmtc.net/tatum/apis/blockchain-data/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/tatum/blockchain-data/versions/8622ee4b8fae/schema)
