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 name | Data type | Description |
|---|---|---|
| financial_event_id | String | Unique key identifying a single ACH transaction event |
| transaction_id | String | Unique ID of the parent ACH transaction. Transaction-level |
| product_id | String | Unique ID of the product associated with the transaction. Transaction-level |
| product_name_snapshot | String | Snapshot of the product name at the time the event was processed. Transaction-level |
| financial_account_id | String | Unique ID of the Highnote financial account on the transaction. Transaction-level |
| from_financial_account_id | String | Source financial account (money-flow origin). Populated for originated transfers only. Transaction-level |
| to_financial_account_id | String | Destination financial account (money-flow target). Populated for originated transfers only. Transaction-level |
| originating_type_code | String | O = 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 |
| purpose | String | Purpose 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 |
| status | String | Current 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_code | String | Code 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_type | String | Direction of the transfer, derived from the NACHA transaction code — PUSH (credit) or PULL (debit). Transaction-level |
| same_day_ind | Boolean | Indicates whether the transaction was processed as Same-Day ACH. Transaction-level |
| trace_number | String | The 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_signed | Integer | Amount 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_code | String | ISO 4217 code representing the currency of the transaction amount. Transaction-level |
| reject_ind | Boolean | Indicates whether the transaction was rejected by Highnote before submission to the network. Transaction-level |
| status_failure_reason | String | Failure 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_timestamp | DateTime (ISO 8601: YYYY-MM-DDTHH:MM:SSZ) | UTC timestamp when the transaction settled. Transaction-level |
| return_timestamp | DateTime (ISO 8601: YYYY-MM-DDTHH:MM:SSZ) | UTC timestamp when the transaction was returned, if applicable. Transaction-level |
| platform_date | Date | Date 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_timestamp | DateTime (ISO 8601: YYYY-MM-DDTHH:MM:SSZ) | UTC timestamp when the record was created |
| update_timestamp | DateTime (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 name | Data type | Description |
|---|---|---|
| transaction_event_id | String | Unique key identifying a single RTP transaction event |
| financial_event_id | String | ID 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_id | String | Unique ID of the parent RTP transaction. Transaction-level |
| product_id | String | Unique ID of the product associated with the transaction. Transaction-level |
| product_name_snapshot | String | Snapshot of the product name at the time the event was processed. Transaction-level |
| financial_account_id | String | Unique ID of the Highnote financial account on the transaction. Transaction-level |
| originating_type_code | String | O = 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_reason | String | Failure 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_signed | Integer | Amount 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_code | String | ISO 4217 code representing the currency of the transaction amount. Transaction-level |
| status | String | Overall transaction status. Values: INITIATED, RECEIVED, PENDING, PROCESSING, COMPLETED, FAILED, HOLD, CANCELLED (HOLD and CANCELLED have not yet occurred in production). Event-level |
| transfer_status | String | Status of this event's underlying transfer. Values: PENDING, COMPLETE, FAIL; null on a small number of rows. Event-level |
| transfer_step_type | String | Step 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_reason | String | Failure reason on the underlying transfer, present when it failed. Values: TRANSFER_NOT_SUPPORTED_ON_PRODUCT, INSUFFICIENT_FUNDS. Very sparsely populated in practice |
| platform_date | Date | Date 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_timestamp | DateTime (ISO 8601: YYYY-MM-DDTHH:MM:SSZ) | UTC timestamp when the record was created |
| update_timestamp | DateTime (ISO 8601: YYYY-MM-DDTHH:MM:SSZ) | UTC timestamp when the record was last updated |