Create an account
Authorizations
Same flow; ledger:write is required for any mutation.
Body
Caller-chosen string. Stable; cannot be renamed. Unique
within your tenant. Convention: <purpose>:<scope> (e.g.
accounts_receivable:acme).
^[a-zA-Z0-9_:.\-]+$"accounts_receivable:acme"
"Acme payable"
asset, liability, revenue, expense, equity "liability"
ISO 4217 fiat ticker, crypto/token symbol, or any string of
your own (POINTS, GIFT_CARD). Pinned per account; cannot
be changed. Normalized to uppercase when ticker-shaped.
"USDC"
allowed lets the account go to any balance; none rejects
postings that would drive available below -overdraft_limit.
Default allowed for backward compatibility.
allowed, none Maximum negative-balance allowance, in minor units. Stored
as numeric(38, 0). Returned as a JSON string for amounts
beyond JavaScript's safe-integer range.
"0"
Optional funds-segregation grouping. Defaults to neutral
when omitted, or inherits the account's template value.
client_held, operator, neutral Optional custody-system identifier. Paired with
custody_external_id: both or neither.
"fireblocks"
Provider-specific identifier; paired with custody_provider.
"vault_42"
Response
Created
Discriminator naming the shape of this resource (e.g. account, transaction).
account "account"
"accounts_receivable:acme"
asset, liability, revenue, expense, equity "liability"
"USDC"
"Acme payable"
6 for USDC, 8 for BTC, 18 for ETH; null for unknown.
6
fiat, crypto, stablecoin, null "stablecoin"
True if currency isn't in our metadata registry. The ledger still works.
false
allowed, none "allowed"
Numeric string. Always nonneg.
"0"
restricted is set by the platform on accounts created via
POST /v1/reserves. Customers can also pass it explicitly
to model reserves they build by hand.
standard, restricted Opaque, customer-defined identifier of the counterparty a
reserve account is held against. Set automatically by
POST /v1/reserves; ignored on non-reserve accounts.
"acme"
Customer-set grouping for funds segregation reporting.
The platform does not interpret this beyond grouping
accounts in GET /v1/reports/fund_segregation. Inherited
from the account's template when omitted on create.
client_held, operator, neutral Opaque custody-system identifier (e.g. fireblocks,
anchorage). Paired with custody_external_id: both
set or both null.
"fireblocks"
Provider-specific identifier (vault id, account id, etc.).
Paired with custody_provider.
"vault_42"
"2026-05-14T10:23:45.123456Z"