Skip to main content
Every wallet’s holdings are reported as a triple, plus the ETH the wallet holds for gas: Both rails are 1:1 with USD in the sandbox, so total reads as a dollar figure.

Reading balances

Confidential balances and wallet type

The cAROUSD contract stores balances as encrypted handles. Whether AroPay can show you the plaintext depends on who controls the key:

Custodial wallets

The sandbox holds the wallet key, so it can sign the decryption request and return the plaintext amount. confidential.amount is a decimal string and encrypted is false.

External wallets

The sandbox cannot decrypt a balance it doesn’t own. confidential.amount is null, encrypted is true, and only the raw handle is reported; total.amount is null too.
A zero confidential balance is detectable without decryption (the handle is the zero handle), so brand-new wallets show "amount": "0" immediately.

Gas balances

Confidential reads are comparatively heavy; they involve FHE decryption through the relayer. When all you need is gas visibility (dashboards, health checks, alerts), use the dedicated endpoint instead of /balances:
GET /gas performs no token or FHE reads, making it safe to poll; it’s what backs the dashboard’s gas indicator and Gas Station page. If a wallet’s RPC read fails, its balance is reported as zero rather than failing the whole request.
You rarely need to manage gas yourself: faucet funding tops up ETH automatically alongside stablecoin.

Amount format

Everywhere in the API, amounts are decimal strings in human units: "125.50" means 125.5 tokens (or ETH). You never deal in wei or base units, with one exception: GET /gas also returns a wei string for precision- sensitive tooling.