Each row names what produced it
sourceType names what produced the leg and sourceId identifies that object.
When the leg belongs to a canonical Payment,
paymentId carries it and financialLegKind says which leg this row is: collection, send_execution, settlement, fee_payout, refund or adjustment. One Payment therefore produces several rows, which is what lets a finance team tie gross, fee and net against each other.
List an account’s transactions
Rows come back newest first. There is no date-range filter: the list is paged, not queried by period, and Statements covers what to do about that. The cursor is opaque and ordering is stable, so paging a history twice returns the same sequence. Do not construct a cursor or read meaning out of one.
posted is a status a row can hold, but it is not accepted by the status filter. Filter on the other four, or read every page and select in your own code.Only pending is non-terminal
reversed is an accounting correction, not an on-chain clawback. The underlying funds have usually already moved, so do not tell a customer money is coming back.
Direction belongs to the reader
A transfer between two accounts is one row both sides can read. Readperspective.direction, which reports sent, received, self or related for the account in the path, with perspective.counterpartyAccountId when the other side is known. The same value is repeated at the top level as direction.
amount is stated from that perspective too. On a send, the sender sees the gross source debit and the recipient sees the net destination amount actually settled, so both sides reconcile without doing the arithmetic.
What a record contains
Always present:id, accountId, status, amount, description, sourceType, sourceId.
Off-ramp detail
A payout row carriesofframpDetails, frozen at quote time and safe to print on a receipt. Account numbers appear as their last four characters only, and any field the provider did not return is null rather than absent.
Account numbers appear as their last four characters only, and any field the provider did not return is
null rather than absent.
fiatAmount.amountAtomic can be null. When known at snapshot time, it is an exact integer string scaled by the supplied decimals; otherwise it is null. A collect_exact bank payout, for example, records confirmed crypto collection before the final fiat amount exists. assetCode and decimals are present either way. Show null as unavailable, never as zero. Preserve the reported precision: exact-input US bank payout evidence can contain six decimal places of USD.
A completed collection or settlement row describes the crypto leg only. It does not mean the bank payout succeeded, and the frozen snapshot can keep an unknown amount after the payment moves on. For the payout result, read the row’s paymentId through GET /v2/payments/{paymentId}.
Read one transaction for its ledger entries
ledgerEntries: id, direction (debit or credit), amount and createdAt. They are scoped to the account you asked about, so they are that account’s side of the entry rather than the full balanced set. createdAt on a ledger entry is the one dated field the contract publishes against a movement.
Balances are reporting, not custody
GET /v2/accounts/{accountId}/balances returns an accounting projection over the same recorded activity. It reports balanceType: "recorded_activity_projection" and custodyScope: "not_a_custody_balance", and those two fields exist to stop one specific bug.
activityTotals carries one entry per asset, always per chain and asset rather than one cross-chain figure:
netRecordedFlowAtomicis a signed cumulative net. It can be negative when a wallet or Vault funded outside Stableyard’s view makes a verified payment, and it can stay positive after value has settled out to a customer’s own wallet. Your parser must accept a leading minus sign.reservedForVaultPaymentsAtomicis context about Vault payments in flight. It is presented alongside the net, never subtracted from it.observedAtis when the projection last changed, not a heartbeat.
Next: Statements
Turn these rows into a periodic statement for a customer.