Axiomatic

Treasury

Track cash and liquid assets across bank accounts, crypto wallets, and custodians.

Overview

The Treasury module provides a unified view of your cash and liquid assets across bank accounts, crypto wallets, exchanges, and custodians. It tracks balances in each account's native currency and converts to your entity's functional currency for aggregation and reporting.

Operating wallet (USDC on Base)

Each entity can have one operating wallet for customer invoice payments and outbound USDC on Base. Create it under Accounting → Treasury → Operating wallet. Invoices with Accept USDC on Base (per invoice or as a default in Invoicing → Settings) include a pay link and wallet address for customers. Incoming USDC can be matched to open invoices when amount and payment reference align.

Bank deposits (ACH / wire → USDC)

Where available, you can enable a virtual deposit account so ACH and wire payments settle to your operating wallet as USDC on Base. Set this up from Admin → Receiving accounts or Treasury → Operating wallet → Receive. Deposit instructions can appear on invoices and fundraising materials. Ask payers to include the invoice number in the wire memo when possible.

You need a complete business address on Admin → Entity profile before bank deposit instructions can be issued.

Receiving accounts (remittance)

Admin → Receiving accounts lists all payment rails customers see on invoices and fundraising:

RailPurpose
USDC (operating wallet)On-chain pay link and address (per-invoice opt-in)
ACH / wire (virtual account)Fiat instructions; settles to operating wallet
Wire & checkManual bank instructions you maintain (e.g. Mercury)

Wire/check accounts support invoice and fundraising defaults. USDC and bank-deposit instructions are managed automatically once enabled; you choose which account is the invoice default for printed remittance.

Account Types

Treasury supports several types of linked financial accounts:

TypeExamples
DepositoryChecking accounts, savings accounts (SVB, Chase, Mercury)
WalletMetaMask, Ledger, Safe multisig
CustodianFireblocks, Anchorage, BitGo
InvestmentBrokerage accounts, retirement accounts

Credit cards and loans are also linked through the same connection flow but appear on the Finance > Liabilities page instead of Treasury.

Connecting Accounts

Link your external financial accounts via Plaid or add them manually:

  1. Navigate to Settings > Linked Accounts
  2. Click Connect Account and authorize via Plaid, or create a manual account
  3. Accounts are automatically categorized by type and routed to the appropriate view
  4. Balances sync automatically after linking

Each account stores a native currency and can optionally link to a ledger account in your chart of accounts for reconciliation.

Cash Position

The cash position is a point-in-time snapshot that aggregates the latest balance for each active treasury account. Balances are grouped by currency type:

  • Fiat — USD, EUR, GBP, etc.
  • Stablecoin — USDC, USDT, DAI, etc. (treated at 1:1 peg to their base fiat currency)
  • Crypto — BTC, ETH, SOL, etc. (volatile assets)

All totals are expressed in your entity's functional currency.

Currency Handling

Currency TypeDescription
NativeThe denomination of the account itself (e.g. EUR, BTC, USDC)
FunctionalYour entity's primary operating currency (e.g. USD)

Each balance is stored in the native currency and automatically translated to the functional currency using exchange rates. Stablecoins pegged to the functional currency (e.g. USDC when functional currency is USD) are treated at 1:1.

Recording Balances

Balances can be updated through several methods:

  • Automatic sync — Plaid-connected accounts sync balances automatically
  • Manual entry — record a balance snapshot for any account with an as-of date
  • On-chain — blockchain wallet balances can be synced from on-chain data

Each balance record captures the native balance, available balance (if different), and the translated functional-currency amount.

Movements

The Movements tab shows fund transfers between accounts. These represent real-world movements — wire transfers, on-chain sends, exchange withdrawals — that were ingested via bank import, on-chain data, or manual event creation. Transfers are read-only in Treasury; they occur externally and are recorded through the event pipeline.

API Reference

Reading Data

ViewEndpointDescription
AccountsGET /api/treasury?entityId=...&view=accountsAll treasury accounts with latest balance
Cash positionGET /api/treasury?entityId=...&view=cash_position&asOfDate=...Aggregated position in functional currency
LiquidityGET /api/treasury?entityId=...&view=liquidityComposition breakdown (fiat / stablecoin / crypto)
MovementsGET /api/treasury?entityId=...&view=movementsRecent transfer events
Balance historyGET /api/treasury?entityId=...&view=balances&accountId=...Historical balances for one account

Writing Data

ActionDescription
create_accountCreate a new treasury account
update_accountUpdate account details
record_balanceRecord a balance snapshot with as-of date
delete_accountRemove an account (preserves accounting history)

All write operations use POST /api/treasury with an action field.

Removing Accounts

Soft Delete (delete_account): Removes the linked account and balances but preserves all imported transactions and their downstream accounting records (events, journal entries).

Hard Delete / Purge (purge_account): Removes the linked account and all associated data — staged transactions, events, journal entries, journal lines, execution traces, match history, and canonical settlements. Use this when an account was linked by mistake. Blocked by hard-closed accounting periods.

On this page