Skip to main content
Accounts are the fundamental building blocks of the Idem Ledger. Every journal line in a transaction targets an account, and each account accumulates a running balance from those entries over time. When you design your ledger structure, you create a chart of accounts that mirrors the economic reality of your payment flows — wallets you hold, liabilities you owe customers, revenue you earn, and costs you incur.

Account types

Idem follows the standard five-type accounting taxonomy. Every account you create must be assigned one of the following types, which determines how its balance is interpreted. Choosing the right type matters for balance reporting and reconciliation: asset and expense accounts have a natural debit balance, while liability, equity, and revenue accounts have a natural credit balance.

Supported currencies

Each account holds a balance in exactly one currency. You cannot mix currencies within a single account. Idem supports the following ISO 4217 fiat currencies: If your operation handles multiple currencies, create one account per currency per role in your chart of accounts (for example, a USD ASSET account for your USDC pool and a BRL ASSET account for your PIX settlement account).

Creating an account

Send a POST request to /api/v1/accounts with a name, an optional description, a currency, and a type. Account names do not need to be unique within your tenant — pick a naming convention that works for your chart of accounts. Request
Response — 201 Created
Store the returned id — you will reference it as accountId in every journal line that targets this account.

Querying balances

Retrieve the current balance of any account with a GET request:
For point-in-time balance queries, pass an asOf timestamp as a query parameter. The ledger replays all entries up to that instant and returns the balance as it stood at that moment — useful for end-of-day reporting, audits, or debugging a historical discrepancy.
The response includes the amount, currency, normalBalance (DEBIT or CREDIT, matching the account’s type), and computedAt — the server timestamp the calculation actually ran at (not an echo of your asOf). If any on-chain (stablecoin) entries have been posted to the account, they’re reported separately in onChainBalances — a net balance per token, across chains, never combined with the fiat amount. See the Get Balance reference for the full field breakdown.

Account statements

For a complete view of all movements in an account over a time window, use the statement endpoint:
The response includes:
Both from and to are required and must be valid ISO 8601 timestamps. For large accounts with many entries, use narrow time windows to keep response sizes manageable.