Display name of the ledger account at walletAddress. Null when the
wallet has no ledger_account row.
accountId, else walletAddress.
Currency amount, including fees, that were eventually debited from/credited to the account
OptionalbankOptionalbankDisplay name of the bank at bankId: the bank row's name, else the slug
title-cased in SQL ("green_dot" reads "Green Dot"). Null without a bankId.
OptionalbankOptionalcardCard for VIRTUAL_CARD, undefined otherwise.
"Jane D. ••1234" on a card row, or methodDescription without a cardholder; null off cards.
OptionalcounterpartyThe other side of the transaction, as far as it resolves; absent when none
of it does. customer is the customer whose ledger account is the other
leg. address is a postal address; walletAddress is the other side's
wallet, in full. identityId and organizationId are external ids.
The to/from text a table cell shows, written by each view arm: "From John
Doe", "To Platform", "{short} SOL", "Fee from {payer}", "Phone transfer to
{phone}", "Return {id}", "Not available". Null on a row read from
b2b.transaction, which has no such column.
The counterparty's name, and only a name: its identity, then its
organization, then (within one customer) its ledger account, then its
customer, then the payment instrument's beneficiary, then the sender a
deposit's rail reported. Never a wallet address, a phone or a merchant;
those are counterparty.walletAddress, counterparty.phone and
card.merchantName. A FEE debit carries the name of the customer that
collected the fee, and no instrument's beneficiary. Null when the other
side has no name, and on a withdrawal's RETURN credit.
ISO currency code
Display name of the customer (CFX customer) at customerId, or
customerId when it has none. Resolved in SQL from customer.name.
The record this row was built from — one value per *_transaction_view
arm, each its view name minus the suffix. What distinguishes the arms now
that Transaction.method names only the rail and five rails run both
ways. Internal: transaction-api never exposes it.
The leg's fixed label: "Deposit", "Withdrawal", "Transfer", "Phone transfer", "Fee", "Platform", "Return", "Card payment", "Currency exchange", "Blockchain transfer", "Reward claim payout". A reward account's own movement carries its stored note instead, or "Reward".
OptionaldeviceApproximate user device location (IP-derived) at the time the originating
quote was created. Populated for deposits and withdrawals that captured a
deviceLocation on the creating request; undefined for all other
transaction types.
Email of the entity if it's an IDENTITY. Null for organizations and for
unresolved entities.
Display name of the entity (identity or organization) that owns this row,
or entityId when it has none. Null only when the row has no entity at all.
Discriminator for the entity at entityId — IDENTITY (a specific
person), ORGANIZATION, or null when the entity isn't directly resolvable.
Operator-entered reason recorded when a transaction was manually cancelled
or failed (the latest FAILED / RETURNED / CANCELLED status transition's
data.reason). Only deposit / withdrawal / ledger-transfer rails capture
one; null for every other rail and for transitions with no reason.
OptionalfeesTotal fees taken, in sourceCurrency. Sourced from
product_quote.total_fees. May be undefined for LEGACY product_quote rows
(older transactions where fee breakdowns weren't recoverable).
Not necessarily unique, e.g. transfers will appear as credit and debit transactions with the same ID.
targetAmount ÷ sourceAmount to 4 decimals; null without a positive source and a target.
Unique row identity: concat_ws('-', id, type, subType) — id-type for a
main leg (NULL subType) and id-type-FEE / id-type-CLEARING / etc. for a
sub-row. Unlike Transaction.id this uniquely identifies a single
read-model row — it matches the (id, type, subType) tuple get()
leg-pins on and the admin-dashboard's transactionRowKey. Deliberately
excludes createdAt: it is stable identity, not a cursor.
The rail, with no direction in the name — Transaction.type
carries that. A rail that runs both ways therefore has ONE method:
ACH_DEBIT is a customer's ACH deposit and an ACH debit withdrawal,
FEDWIRE a wire in and a wire out.
The Method column's text: "Fee", "Return" on a returned credit, else methodDescription.
entityId when entityType is ORGANIZATION.
COMPLETED is succeeded; PENDING or PROCESSING is pending; anything else failed.
OptionalpaymentSource payment instrument ID for DEPOSIT_* and target payment instrument ID for WITHDRAW_*.
Undefined otherwise.
entityId when entityType is IDENTITY.
OptionalpostMOVEUSD token balance after the on-chain transaction (from wallet_account_transaction).
OptionalpreMOVEUSD token balance before the on-chain transaction (from wallet_account_transaction).
OptionalproductExternal id (pq_...) of the product_quote audit row that priced this
transaction. Present for deposit/withdrawal/swap; undefined for
card/transfer/blockchainDeposit/redemption/feeTransfer/manualMint.
The rail group Dart's reports file a row under; null off those rails.
On a reward row: a credit, a claim that settled on-chain, or a plain accountDebit.
amount, negated on a DEBIT.
OptionalsourceGross amount the originator put in, in sourceCurrency. Sourced from
product_quote.source_amount. Undefined for non-quoted transaction kinds.
OptionalsourceStored status, passed straight through by every arm (20261028151410).
OptionalsubWhat kind of leg this is within its movement, when the rail alone does not
say. ADJUSTMENT is the card over/under-clearing delta, signed per audience
and matching the row's own cardTransactionType. POINTS is a reward
account's own off-chain movement, which never touches a wallet — the on-chain
payout that settles it is the bare row, since that is ordinary money leaving
a ledger account. Both were CLEARING until 20260919161200, where one name
covered the card delta and a reward payout. DEPOSIT is a deposit-sourced
swap's landing, the credit of what arrived before the swap converts it.
OptionalsubOptionaltargetNet amount the recipient gets, in targetCurrency. Sourced from
product_quote.target_amount_after_fees. Undefined for non-quoted kinds.
OptionaltargetThe primary wallet for transaction
Null for off-chain transaction types that never touch a wallet (e.g.
REWARD, which moves balance on the reward ledger, not on-chain).
External ID (
acc_…) of the ledger account atwalletAddress. Null when the wallet has noledger_accountrow. Stable identifier for downstream integrations; consumers should prefer this overwalletAddresswhen exposing an account reference.