Skip to content

Accounts and balances

An organization keeps a balance in each currency it holds. Money arrives by bank transfer into a receiving account, or as crypto to a deposit address. This guide shows how to set those up, show them to your client’s payers, and follow the money that comes and goes.

  • List the currencies an organization can hold, receive, send and convert.
  • Ask for receiving bank accounts in more currencies.
  • Show the bank details and crypto addresses payers send money to.
  • Read balances.
  • List transactions.
  • Export transactions and balance statements as files.

1. See which currencies the organization can use

Section titled “1. See which currencies the organization can use”

listOrganizationCurrencies returns one entry per currency:

Terminal window
curl -s "$ELE_API_BASE/api/v1/organizations/$ORGANIZATION_ID/currencies" \
-H "Authorization: Bearer $ELE_TOKEN"
Field Meaning
hold The organization can keep a balance in it.
receive A payer can send it to the organization today.
send The organization can pay out in it. A currency it can only pay out in has hold set to false.
convert It can be swapped to or from another currency.
balance_opened The organization has a balance in it already.
active It is in use: it can be received today, or its balance is not zero.

A receiving account is a bank account in the organization’s name that payers send a currency to. listOrganizationMultiCurrencyAccounts shows the state of each currency the organization may hold:

Terminal window
curl -s "$ELE_API_BASE/api/v1/organizations/$ORGANIZATION_ID/multi-currency-accounts" \
-H "Authorization: Bearer $ELE_TOKEN"

To ask for more, an owner or admin calls requestOrganizationMultiCurrencyAccounts with up to 20 currency codes. Check that requests_enabled is true first.

Terminal window
curl -s "$ELE_API_BASE/api/v1/organizations/$ORGANIZATION_ID/multi-currency-accounts" \
-H "Authorization: Bearer $ELE_TOKEN" \
-H "Idempotency-Key: $KEY" \
-H 'Content-Type: application/json' \
-d '{"currencies": ["EUR", "GBP"]}'

The response has every currency’s state in data, and one outcomes entry per currency you asked for: requested, already_active, already_processing, failed, or provider_unavailable (Ele could not reach its banking partner, and will try again by itself).

New accounts open in the background. If Ele’s banking partner has not yet set up the organization, which follows its business checks (see Onboarding), Ele saves the request and sends it on once the partner is ready.

Bank transfers. listFiatDepositAccounts lists every bank account the organization can receive money into, with the details a payer needs: beneficiary_name, bank_name, account_number or iban, routing_numbers, and any deposit_instructions_memo. Show these to the payer as Ele returns them.

Terminal window
curl -s "$ELE_API_BASE/api/v1/organizations/$ORGANIZATION_ID/fiat-deposit-accounts" \
-H "Authorization: Bearer $ELE_TOKEN"

At least one of account_number and iban is present; check each one on its own. supported_payment_rails lists the bank networks the account accepts, and each entry in routing_numbers names the network or code type it is for.

To show the same accounts grouped by currency, use listFiatDepositAccountsByCurrency. An account that takes several currencies appears under each. listVirtualAccounts returns only the accounts Ele set up for the organization itself; prefer listFiatDepositAccounts, which includes those as well as accounts from Ele’s banking partners.

Crypto. listDepositAddresses returns the organization’s wallet addresses, one per coin and network:

Terminal window
curl -s "$ELE_API_BASE/api/v1/organizations/$ORGANIZATION_ID/deposit-addresses" \
-H "Authorization: Bearer $ELE_TOKEN"

Always show the coin.network with the address: a deposit sent on the wrong network can be lost. Ele assigns addresses when the organization becomes able to receive crypto. A coin without an address is missing from the list. Crypto deposits are credited to the organization in US dollars (see Money).

Some crypto deposits are held until the organization says who sent them. The transaction has needs_sender_travel_rule set to true, and submitDepositSenderTravelRule supplies the details.

getOrganizationBalance returns balances, one entry per currency the organization holds:

Terminal window
curl -s "$ELE_API_BASE/api/v1/organizations/$ORGANIZATION_ID/balance" \
-H "Authorization: Bearer $ELE_TOKEN"
Field Meaning
posted Money that has settled.
pending The net of money still on its way in and out.
available What can be spent now: posted, less any money on its way out. Money on its way in is not counted until it settles.

Show available as the spendable balance. The top-level balance and currency give one currency only; read balances for all of them.

For one total across currencies, use getOrganizationBalanceValuation. It converts at mid-market rates, so it is an estimate for display, not a price you can trade at.

listTransactions returns the organization’s transactions, newest first, a page at a time:

Terminal window
curl -s "$ELE_API_BASE/api/v1/organizations/$ORGANIZATION_ID/transactions?limit=100&date_start=2026-10-01" \
-H "Authorization: Bearer $ELE_TOKEN"

Each transaction has a type, such as fiat_incoming, fiat_outgoing, crypto_incoming, card_transaction, fiat_swap or fee, and its fields depend on the type. Handle a type you do not know. You can filter by categories, currencies, a date range, a card, or a payment batch. Fetch one transaction with getTransaction.

Owners and admins see every transaction. A member sees only their own.

See Pagination for paging, and Staying in sync for catching changes to transactions you already have.

createExport builds a file and returns a link to download it. type is transactions, balance_statement or expenses:

Terminal window
curl -s "$ELE_API_BASE/api/v1/organizations/$ORGANIZATION_ID/exports" \
-H "Authorization: Bearer $ELE_TOKEN" \
-H "Idempotency-Key: $KEY" \
-H 'Content-Type: application/json' \
-d '{"type": "balance_statement", "currency": "USD", "from": "2026-09-01", "to": "2026-09-30"}'
{
"id": "0199…",
"type": "balance_statement",
"status": "completed",
"filename": "…",
"download_url": "https://…",
"expires_at": "2026-10-09T11:00:00Z",
"inserted_at": "2026-10-09T10:00:00Z"
}

Ele builds the file during the call. The link works until expires_at. For a fresh link later, call getExport. Only the person who created an export can fetch it again.

Transaction and balance-statement exports need an owner or admin. Any member can export their own expenses.

A receiving account’s state, from listOrganizationMultiCurrencyAccounts:

state Meaning What you do
available It can be requested. Request it, if requests_enabled is true.
processing A request is waiting for the business checks, or the account is being opened. Wait. Check again later.
active A payer can send this currency today. Show the deposit details.
failed The last request failed, or the partner does not open this currency for this business. Contact Ele support.

None of the calls in this guide needs step-up or an approval.

Operation Roles
listOrganizationCurrencies, listOrganizationMultiCurrencyAccounts, getOrganizationBalance Owner, admin
requestOrganizationMultiCurrencyAccounts Owner, admin
listFiatDepositAccounts, listFiatDepositAccountsByCurrency, listVirtualAccounts Owner, admin, member
listDepositAddresses Owner, admin
listTransactions Owner and admin see all; a member sees their own
Status type When What to do
403 forbidden The person’s role does not allow the call, for example a member reading balances. Use an owner or admin.
422 entity_rejected Requesting accounts for an organization whose business checks were rejected. Contact Ele support.
502 provider_unavailable Ele could not reach its banking partner while requesting accounts. Check the account states, then retry with a new key.
502 export_storage_failed Ele could not store or sign the export file. Retry with a new key.

For other types, see Errors.