Skip to main content

Money Movement Data Dictionary

Overview​

The Highnote Money Movement Data Dictionary provides all the data available for querying your ACH and RTP (real-time payments) transaction activity. Fedwire (wire transfer) data will be added to this page in a future update.

Data tables and fields​

This section lists the data tables and associated fields available to query your Highnote data.

Table: ACH transaction event​

The ach_transaction_event table is mutable and always displays the current state.

Grain: one row per transaction event, not one row per transaction — a single ACH transaction typically has multiple event rows (up to 7 observed). Fields describing the transfer itself (amount, origination, routing, reject/failure state, platform_date, settlement_timestamp, return_timestamp) are stamped identically on every event row of the same transaction; only status, hold_status_code, create_timestamp, and update_timestamp reliably change from one event row to the next (purpose is usually constant too, but not guaranteed — see below). Summing or counting rows without first deduplicating on the transaction-level fields will overcount — each field below is marked Transaction-level or Event-level accordingly.

Use the following fields to query your ACH transaction activity.

Field nameData typeDescription
financial_event_idStringUnique key identifying a single ACH transaction event
transaction_idStringUnique ID of the parent ACH transaction. Transaction-level
product_idStringUnique ID of the product associated with the transaction. Transaction-level
product_name_snapshotStringSnapshot of the product name at the time the event was processed. Transaction-level
financial_account_idStringUnique ID of the Highnote financial account on the transaction. Transaction-level
from_financial_account_idStringSource financial account (money-flow origin). Populated for originated transfers only. Transaction-level
to_financial_account_idStringDestination financial account (money-flow target). Populated for originated transfers only. Transaction-level
originating_type_codeStringO = originated (a debit pull or a push initiated by Highnote), N = non-originated (an inbound credit not initiated by Highnote). Not yet registered in code_enum_lookup — decoded here directly. Transaction-level
purposeStringPurpose of the ACH transfer — matches the public API AchTransfer.purpose (not to be confused with transfer_type, this table's own PUSH/PULL direction field, or the API's type field). Values: DEPOSIT, WITHDRAWAL, SECURED_DEPOSIT, REPAYMENT, PAYROLL, MERCHANT_PAYOUT, MERCHANT_DISBURSEMENT, MERCHANT_PUSH_PAYMENT_FUNDING, INTRA_BANK_ACH_TRANSFER, BOOK_TRANSFER, ACCOUNT_RECEIVABLE. Usually transaction-level, but a small number of transactions carry more than one value across their event rows
statusStringCurrent status of the transaction event. Values: INITIATED, RECEIVED, PENDING, PROCESSING, PROCESSED, FAILED, CANCELED, RETURNED (the exact value depends on whether the transfer is originated or non-originated). Event-level — this is the field that actually changes as a transaction event progresses
hold_status_codeStringCode of the hold status. NH = no holds, OH = on hold, HR = hold removed. Not yet registered in code_enum_lookup — decoded here directly. Null on a small fraction of rows. Event-level
transfer_typeStringDirection of the transfer, derived from the NACHA transaction code — PUSH (credit) or PULL (debit). Transaction-level
same_day_indBooleanIndicates whether the transaction was processed as Same-Day ACH. Transaction-level
trace_numberStringThe numeric ACH trace sequence; null when absent. Leading zeros are not preserved (inherited from the source column, and intentionally aligned with the public API's representation) — most rows carry only the 7-digit sequence portion, a small number carry the full 15-digit NACHA trace (8-digit routing prefix + 7-digit sequence), and nothing in the column distinguishes which is which. Zero-pad before matching against a NACHA file. Transaction-level
amount_signedIntegerAmount of the transaction, in micro-dollars (1,000,000 = $1.00) — not minor units. Signed relative to the Highnote financial account: positive = money into the account, negative = money out. This is not the same axis as transfer_type's credit/debit framing above — origination flips it, since an originated PULL brings money in (positive) while an originated PUSH sends money out (negative). Transaction-level — the same value repeats on every event row of a transaction (see Grain above); deduplicate by transaction_id before summing this column
amount_currency_codeStringISO 4217 code representing the currency of the transaction amount. Transaction-level
reject_indBooleanIndicates whether the transaction was rejected by Highnote before submission to the network. Transaction-level
status_failure_reasonStringFailure reason. Distinguishes the Highnote-side vs external-side account — e.g. INSUFFICIENT_FUNDS_IN_HIGHNOTE_ACCOUNT / INSUFFICIENT_FUNDS_IN_EXTERNAL_ACCOUNT, HIGHNOTE_ACCOUNT_CLOSED / EXTERNAL_ACCOUNT_CLOSED. Transaction-level — present on every event row of a transaction that ultimately failed or was returned, not only on the terminal FAILED/RETURNED event
settlement_timestampDateTime (ISO 8601: YYYY-MM-DDTHH:MM:SSZ)UTC timestamp when the transaction settled. Transaction-level
return_timestampDateTime (ISO 8601: YYYY-MM-DDTHH:MM:SSZ)UTC timestamp when the transaction was returned, if applicable. Transaction-level
platform_dateDateDate the platform recorded the transaction event, with a cutoff time of 5 PM Pacific Time (8 PM Eastern Time). Populated on every event, including events that never settle. Transaction-level
create_timestampDateTime (ISO 8601: YYYY-MM-DDTHH:MM:SSZ)UTC timestamp when the record was created
update_timestampDateTime (ISO 8601: YYYY-MM-DDTHH:MM:SSZ)UTC timestamp when the record was last updated

Table: RTP transaction event​

The rtp_transaction_event table is mutable and always displays the current state.

Grain: one row per transaction event, not one row per transaction — a single RTP transaction typically has multiple event rows (up to 6 observed). As with ACH, transfer-level fields (amount, origination, failure reason) repeat on every event row of the same transaction; only status, transfer_status, and transfer_step_type change from one event row to the next. financial_event_id on this table is a further wrinkle: it identifies the underlying transfer, not the event, so it also repeats — use transaction_event_id as the row's unique key.

Use the following fields to query your real-time payment (RTP) transaction activity.

Field nameData typeDescription
transaction_event_idStringUnique key identifying a single RTP transaction event
financial_event_idStringID of the underlying transfer. Transfer-grain — repeats across every event of the same transfer; use transaction_event_id, not this field, as the row's unique key
transaction_idStringUnique ID of the parent RTP transaction. Transaction-level
product_idStringUnique ID of the product associated with the transaction. Transaction-level
product_name_snapshotStringSnapshot of the product name at the time the event was processed. Transaction-level
financial_account_idStringUnique ID of the Highnote financial account on the transaction. Transaction-level
originating_type_codeStringO = originated (a push initiated by Highnote), N = non-originated (an inbound payment not initiated by Highnote). Not yet registered in code_enum_lookup — decoded here directly. Transaction-level
failure_reasonStringFailure reason. Values: NETWORK_NOT_SUPPORTED, ACCOUNT_NOT_FOUND, DESTINATION_BANK_NOT_ACTIVE, INSUFFICIENT_FUNDS, TRANSFER_NOT_PERMITTED, INVALID_AMOUNT, RISK_DECLINE (the full public API enum — some values, like RISK_DECLINE, have not yet occurred in production). Transaction-level — present on every event row of a transaction that ultimately failed, not only on the terminal FAILED event
amount_signedIntegerAmount of the transaction, in micro-dollars (1,000,000 = $1.00) — not minor units. Signed relative to the Highnote financial account: positive = money into the account, negative = money out. Transaction-level — deduplicate by transaction_id before summing this column
amount_currency_codeStringISO 4217 code representing the currency of the transaction amount. Transaction-level
statusStringOverall transaction status. Values: INITIATED, RECEIVED, PENDING, PROCESSING, COMPLETED, FAILED, HOLD, CANCELLED (HOLD and CANCELLED have not yet occurred in production). Event-level
transfer_statusStringStatus of this event's underlying transfer. Values: PENDING, COMPLETE, FAIL; null on a small number of rows. Event-level
transfer_step_typeStringStep of the transfer lifecycle this event represents. Values: PENDING, COMPLETED, PENDING_REVERSED. PENDING_REVERSED marks a reversal attempt, not necessarily a completed reversal — check transfer_status on the same transaction. Null when the event has no ledgering leg. Event-level
transfer_failure_reasonStringFailure reason on the underlying transfer, present when it failed. Values: TRANSFER_NOT_SUPPORTED_ON_PRODUCT, INSUFFICIENT_FUNDS. Very sparsely populated in practice
platform_dateDateDate the platform recorded the transaction event, with a cutoff time of 5 PM Pacific Time (8 PM Eastern Time). Populated on every event, including events that never settle. Transaction-level
create_timestampDateTime (ISO 8601: YYYY-MM-DDTHH:MM:SSZ)UTC timestamp when the record was created
update_timestampDateTime (ISO 8601: YYYY-MM-DDTHH:MM:SSZ)UTC timestamp when the record was last updated