Lithic Reporting Suite
Overview
Lithic Reporting Suite are daily flat files delivered via SFTP. They are generated from Lithic's settlement data and contain transaction-level detail, network summaries, ACH activity, ledger balances, and more. Banks use these for internal accounting, ledger posting, and regulatory reporting.
Access: Lithic Reporting Suite are included for banks where Lithic acts as Program Manager. For other program types, this is available as a paid add-on. Contact support.lithic.com to discuss access and configuration.
Report types
The following reports are available as part of the Bank Reporting Suite. Not all report types are enabled by default — your configuration determines which reports are generated for your program.
| Report | File naming convention | Description |
|---|---|---|
| Daily Card Network Settlement Summary | YYYYMMDD_lithic_daily_network_settlement_summary | Daily totals for settled card transactions, interchange, disputes, and misc fees. Use this to reconcile daily wires from the card networks (VISA, MASTERCARD & AMEX). |
| Card Network Settlement Detail | YYYYMMDD_lithic_settlement_detail | Transaction-level breakdown of daily settlement activity including interchange, disputes, and fees. |
| Card Transactions | YYYYMMDD_lithic_card_transactions | All card transaction events at the event level, including authorizations and clearing. |
| Cards | YYYYMMDD_lithic_cards | All existing cards, their states, and characteristics. |
| Accounts | YYYYMMDD_lithic_accounts | Cardholder identifying information (sometimes referred to as an AML report). |
| ACH Entries | YYYYMMDD_lithic_ach_entries | Daily ACH entries. |
| Transfers | YYYYMMDD_lithic_transfers | Daily book transfers and management operations. |
| External Payments | YYYYMMDD_lithic_external_payments | Daily external payment activity recorded in the Lithic ledger, at the event level. |
| Wires | YYYYMMDD_lithic_wires | Daily settled wire activity — inbound and outbound wires and reversals, at the event level. |
| Intrabank Transfers | YYYYMMDD_lithic_intrabank_transfers | Daily transfers your bank makes between Lithic's settlement account and your core, outside the Fed. Bank level only. |
| Ledger Accounts | YYYYMMDD_lithic_ledger_accounts | Unified mapping file that consolidates account IDs for joining across reports. |
| Ledger Program Balances | YYYYMMDD_lithic_ledger_program_balances | Daily ledger balances at the program level. |
| Ledger End User Balances | YYYYMMDD_lithic_ledger_end_user_balances | Daily ledger balances at the most granular level — account, card, end user, etc. |
| Statement Detail | YYYYMMDD_lithic_statement_detail | Statements created or updated since the previous file. Credit programs only. |
| Loan Tape Detail | YYYYMMDD_lithic_loan_tape_detail | Daily per-account snapshot of credit balances, limits, and delinquency, sent when written or restated. Credit programs only. |
PAN availability
Several reports contain card number data. By default, files are delivered without the full PAN. If your institution is PCI compliant, Lithic can be configured to include the full PAN in the Cards and Card Transactions reports.
How the reports relate
The reports are designed to be joined to each other using shared keys. The relationships below show the primary join paths.
Daily Network Settlement Summary
└── joins to Settlement Detail on report_date + institution_id
Settlement Detail
├── joins to Card Transactions on transaction_id
│ (or transaction_event_id via transaction_event_ids array)
├── joins to Accounts via account_id
├── joins to Cards via card_id
└── joins to Ledger Accounts via account_id → ledger_account_id
Card Transactions
├── joins to Cards via card_id
├── joins to Accounts via account_id
└── joins to Ledger Accounts via account_id → ledger_account_id
Ledger Accounts (universal join key: ledger_account_id)
├── joins to Card Transactions via account_id
├── joins to Settlement Detail via account_id
├── joins to Accounts via account_id
├── joins to ACH Entries via ledger_account_id
├── joins to External Payments via financial_account_id
├── joins to Ledger End User Balances via financial_account_id
├── joins to Ledger Program Balances via program_id
├── joins to Statement Detail via ledger_account_id
├── joins to Loan Tape Detail via ledger_account_id
└── self-joins via parent_ledger_account_id and business_account_id
Loan Tape Detail (credit programs only)
├── joins to Statement Detail on previous_statement_id → statement_id
└── joins to Ledger Accounts via ledger_account_id
Statement Detail (credit programs only)
└── joins to Ledger Accounts via ledger_account_idLedger Accounts is the central join file. It consolidates multiple ID types — account_id, program_id, financial_account_id — into a single ledger_account_id column, enabling consistent joins across all reports using the same method. See the Ledger Accounts section for query examples.
Delivery timing
Typical availability: ~11:00 PM ET
Deadline: 12:01 AM ET
Bank Reports are generated after settlement processing is complete for the day. If settlement processing is delayed due to late network file delivery, Bank Report delivery will be delayed accordingly. In most cases this does not affect the 12:01 AM ET deadline, but significant upstream delays can push delivery past target.
Field references
Daily Network Settlement Summary
Daily totals for settled card transactions, interchange, disputes, and miscellaneous fees. Use this report to reconcile daily wires from the networks. Distinct on institution_id and report_date. Can be joined to Settlement Detail on those same fields.
| Field | Data type | Nullable | Description |
|---|---|---|---|
report_date | DATE | No | Date the report was generated by the Card Network |
collection_date | DATE | No | Date of the funds movement being reconciled |
network | VARCHAR(10) | No | Network wire being reconciled |
institution_id | VARCHAR(10) | No | Numeric identifier the network settles with (e.g., ICA for Mastercard, FTSRE for Visa) |
currency | VARCHAR(3) | No | ISO 4217 alpha-3 currency code for the settlement |
transaction_amount | INTEGER | No | Total amount of settlement-impacting transactions in smallest denomination (e.g., pennies for USD) |
disputes_amount | INTEGER | No | Total gross amount of dispute settlements in smallest denomination |
interchange_amount | INTEGER | No | Total gross amount of interchange in smallest denomination |
fees_amount | INTEGER | No | Total gross amount of other fees outside of interchange in smallest denomination |
net_amount | INTEGER | No | Total net amount settled in smallest denomination |
acquiring_network | VARCHAR(10) | No | Acquiring network for the transaction |
Spec last updated: January 5, 2026
Settlement Detail
Transaction-level breakdown of daily settlement activity including interchange, disputes, and fees. Distinct on settlement_id. Can be joined to Daily Network Settlement Summary on report_date and institution_id, to Card Transactions on transaction_id (or via individual transaction_event_ids in the transaction_event_ids array), and to Ledger Accounts via account_id.
| Field | Data type | Nullable | Description |
|---|---|---|---|
settlement_id | VARCHAR(36) | No | UUID assigned to each settlement event |
program_id | VARCHAR(36) | Yes | UUID assigned to each program |
program_name | VARCHAR(100) | Yes | Friendly name for the program |
organization_id | VARCHAR(36) | Yes | UUID assigned to each organization |
organization_name | VARCHAR(100) | Yes | Friendly name for the organization |
institution_id | VARCHAR(10) | No | The most granular ID the network settles with (e.g., ICA for Mastercard, FTSRE for Visa) |
account_id | VARCHAR(36) | Yes | UUID of the account the card is associated with |
card_id | VARCHAR(36) | Yes | UUID assigned to each card |
transaction_event_ids | VARCHAR(1000) | No | Array of transaction event UUIDs associated with the network settlement event |
transaction_id | VARCHAR(36) | Yes | UUID of the aggregate transaction that associates all related events |
transaction_currency_code | VARCHAR(3) | No | ISO 4217 alpha-3 currency code for the settlement |
network | VARCHAR(10) | No | Network used to process the transaction (e.g., MASTERCARD, VISA) |
acquiring_network | VARCHAR(10) | No | Acquiring network for the transaction |
transactions_gross_amount | INTEGER | No | Gross settled amount. Positive = debit (e.g., clearing); negative = credit (e.g., refund). In currency's smallest unit. |
disputes_gross_amount | INTEGER | No | Gross amount of dispute settlements |
interchange_gross_amount | INTEGER | No | Gross interchange amount associated with this settlement event |
interchange_gross_amount_extended_precision | VARCHAR(20) | No | Gross interchange amount in six-digit extended precision (e.g., $0.101 = 101000) |
other_fees_gross_amount | INTEGER | No | Total amount of other fees outside of interchange |
net_amount | INTEGER | No | Net amount of this record |
settlement_record_type | VARCHAR(20) | No | Type of record (e.g., CLEARING, CHARGEBACK, ADJUSTMENT, FEE) |
settlement_date | DATE | No | Date money movement is triggered for this settlement event |
report_date | DATE | No | Date the report was generated by the Card Network |
Spec last updated: October 3, 2026
Card Transactions
All card transaction events at the event level. Distinct on transaction_event_id. One row per transaction event — a single transaction (e.g., an authorization followed by clearing) produces multiple rows linked by transaction_id.
PAN availability: By default the
panfield is omitted. PCI-compliant institutions can request PAN delivery — see PAN availability.
| Field | Data type | Nullable | Description |
|---|---|---|---|
transaction_event_id | VARCHAR(36) | No | UUID assigned to each transaction event |
program_id | VARCHAR(36) | No | UUID assigned to each program |
program_name | VARCHAR(100) | No | Friendly name for the program |
organization_id | VARCHAR(36) | No | UUID assigned to each organization |
organization_name | VARCHAR(100) | Yes | Friendly name for the organization |
account_id | VARCHAR(36) | No | UUID of the account the transaction event is associated with |
authorized | BOOLEAN | No | Flag for whether the transaction is authorized or declined |
authorization_code | VARCHAR(6) | Yes | System-generated authorization code given at time of purchase (6-digit SVCAP auth code) |
is_financial | BOOLEAN | No | Flag for whether the transaction has financial impact |
card_id | VARCHAR(36) | No | UUID assigned to each card |
pan | VARCHAR(16) | No | Full card Primary Account Number — present only for PCI-compliant recipients |
last_four | VARCHAR(4) | No | Last four digits of the PAN |
network | VARCHAR(10) | No | Parent network used to process the transaction (e.g., MASTERCARD, VISA) |
acquiring_network | VARCHAR(10) | No | Specific network used to process the transaction (e.g., VISA, MASTERCARD, INTERLINK, MAESTRO) |
card_issuing_network | VARCHAR(10) | No | Network the issued card belongs to according to BIN |
response_code | VARCHAR(3) | No | ISO response code generated by the authorization system and sent to the network |
response_description | VARCHAR(60) | No | Description of the response code |
customer_response_description | VARCHAR(21) | Yes | Description of the response the client sends to Lithic (ASA clients only) |
message_type_id | VARCHAR(3) | No | ISO message type identifier code (e.g., 0200 Financial) |
message_type_id_description | VARCHAR(29) | No | Description of the message type code |
processing_code | VARCHAR(2) | No | ISO processing code (00 = purchase, 50 = bill_payment, 01 = withdrawal, etc.) |
processing_code_description | VARCHAR(25) | No | Description of the processing code |
transaction_code | INTEGER | No | Lithic-specific transaction code for the type of transaction |
transaction_code_description | VARCHAR(35) | No | Description of the Lithic transaction code |
international_transaction_indicator | BOOLEAN | No | Indicates the transaction is international |
amount | INTEGER | No | Amount of the request in USD pennies |
settled_amount | INTEGER | Yes | Amount of the settled transaction in USD pennies. Null for non-financial events. |
transaction_sign | INTEGER | No | 1 for a debit, -1 for a credit, and 0 where the amount is zero, as on a zero-amount authorization |
transaction_currency_code | VARCHAR(3) | No | ISO 4217 alpha-3 currency code for the settlement |
point_of_service_terminal_type | VARCHAR(13) | Yes | Point of sale terminal type |
point_of_service_entry_mode | VARCHAR(17) | Yes | Point of sale entry mode indicator |
settlement_date | DATE | Yes | Settlement date the network assigns to the message. Always populated on financial events. Empty on non-financial American Express events, such as authorizations and authorization advices. |
transaction_event_time | TIMESTAMP_NTZ | No | Timestamp of when the transaction occurred (UTC) |
post_time | DATE | Yes | Date the event posts to the relevant account in Lithic's ledger. Matches settlement_date whenever populated. Always populated on financial events; usually empty on non-financial events, though some carry a date. |
transaction_id | VARCHAR(36) | No | UUID of the aggregate transaction that associates all related events |
merchant_name | VARCHAR(25) | Yes | Merchant name provided in the network message |
card_acceptor_id | VARCHAR(15) | Yes | Identifier for the merchant |
merchant_city | VARCHAR(100) | Yes | City of the merchant |
merchant_state | VARCHAR(3) | Yes | State of the merchant (2-character abbreviation) |
merchant_country_code | VARCHAR(3) | Yes | ISO alpha-3 country code |
merchant_country | VARCHAR(52) | Yes | Country of the merchant |
merchant_category_code | VARCHAR(4) | Yes | Four-digit industry standard merchant category code |
merchant_category | VARCHAR(160) | Yes | Description of the merchant category code |
bin | VARCHAR(9) | No | First 6 or 8 digits of the PAN |
address_verification_response | VARCHAR(14) | Yes | Response message if address verification was used |
acquirer_reference_number | VARCHAR(23) | Yes | Acquirer reference number from the ISO stream |
retrieval_reference_number | VARCHAR(12) | Yes | Retrieval reference number from the ISO stream |
Fields to know:
transaction_id vs. transaction_event_id — transaction_id groups all events belonging to the same transaction lifecycle (authorization, clearing, settlement). transaction_event_id identifies each individual event. Use transaction_id to join across the lifecycle or to link to Settlement Detail.
is_financial — filter on is_financial = true to work only with events that affect balances. Authorizations appear in the file with is_financial = false.
amount vs. settled_amount — amount is the requested amount at authorization time. settled_amount is the final settled amount and may differ due to partial settlements, reversals, or tip adjustments. Will be null for non-financial events.
network vs. acquiring_network vs. card_issuing_network — network is the parent network (e.g., VISA). acquiring_network is the specific network that processed the transaction (e.g., INTERLINK). card_issuing_network is the network the card belongs to according to its BIN.
Spec last updated: October 20, 2026
Cards
All existing cards, their states, and characteristics. Distinct on card_id. Can be joined to Card Transactions, Settlement Detail, and Accounts via card_id and account_id.
PAN availability: By default the
panfield is omitted. PCI-compliant institutions can request PAN delivery — see PAN availability.
| Field | Data type | Nullable | Description |
|---|---|---|---|
card_id | VARCHAR(36) | No | UUID assigned to each card |
program_id | VARCHAR(36) | No | UUID assigned to each program |
program_name | VARCHAR(100) | No | Friendly name for the program |
organization_id | VARCHAR(36) | No | UUID assigned to each organization |
organization_name | VARCHAR(100) | Yes | Friendly name for the organization |
account_id | VARCHAR(36) | No | UUID of the account the card is associated with |
card_created_at | TIMESTAMP_NTZ | No | Time the card was created |
card_updated_at | TIMESTAMP_NTZ | No | Time the card was last updated |
pan | VARCHAR(19) | No | Full card Primary Account Number — present only for PCI-compliant recipients |
last_four | VARCHAR(4) | No | Last four digits of the PAN |
card_state | VARCHAR(39) | No | Current state of the card |
expiration_date | DATE | No | Date the card expires (YYYY-MM-DD) |
embossed_name | VARCHAR(26) | Yes | Embossed name on the card. Only present for physical cards. |
bin | VARCHAR(9) | No | First 6 or 8 digits of the PAN |
card_closed_at | DATE | Yes | Time the card was closed |
reloadable_indicator | BOOLEAN | No | Indicates whether the card is reloadable |
memo | VARCHAR | Yes | Friendly name to identify the card, set by the client. Not included in the file by default; available on request |
Spec last updated: October 27, 2026
Accounts
Cardholder identifying information. Sometimes referred to as an AML report. Distinct on account_id. Can be joined to Settlement Detail, Card Transactions, and Cards via account_id.
Note: This report contains sensitive PII including government IDs, dates of birth, and addresses. Access is restricted to authorized recipients only.
| Field | Data type | Nullable | Description |
|---|---|---|---|
account_id | VARCHAR(36) | No | UUID of the account |
organization_id | VARCHAR(36) | No | UUID assigned to each organization |
organization_name | VARCHAR(100) | Yes | Friendly name for the organization |
account_holder_type | VARCHAR(17) | Yes | Type of account holder (e.g., individual vs. business) |
is_sub_account | BOOLEAN | No | Child account / authorized user indicator |
account_status | VARCHAR(24) | No | Account status (e.g., active, closed) |
created_at | TIMESTAMP_NTZ | No | Time the account was created |
updated_at | TIMESTAMP_NTZ | No | Time the account was last updated |
account_holder_first_name | VARCHAR(100) | Yes | Account holder's first name. May be empty for sub-accounts under KYB_DELEGATED or KYC_EXEMPT programs |
account_holder_last_name | VARCHAR(100) | Yes | Account holder's last name. May be empty for sub-accounts under KYB_DELEGATED or KYC_EXEMPT programs |
business_name | VARCHAR(100) | Yes | Name of registered business |
account_holder_government_id | VARCHAR(11) | Yes | US social security number or ITIN |
account_holder_dob | DATE | Yes | Account holder's date of birth |
account_holder_address_1 | VARCHAR(130) | Yes | Street number and street name |
account_holder_address_2 | VARCHAR(130) | Yes | Unit or apartment number (if applicable) |
account_holder_city | VARCHAR(100) | Yes | City of residence |
account_holder_state | VARCHAR(15) | Yes | State of residence. Uppercase ISO 3166-2 two-character abbreviation (e.g., "CA") |
account_holder_zipcode | VARCHAR(12) | Yes | Zip code. 5 or 10 characters (ZIP or ZIP+4). May be empty for sub-accounts under KYB_DELEGATED or KYC_EXEMPT programs |
account_holder_country | VARCHAR(3) | Yes | Country of residence |
account_holder_phone | VARCHAR(25) | Yes | Primary phone number |
account_holder_email | VARCHAR(254) | Yes | Email address. May be empty for sub-accounts under KYB_DELEGATED or KYC_EXEMPT programs |
kyc_date | DATE | Yes | Date KYC/KYB was performed |
kyc_status | VARCHAR(24) | Yes | Status of KYC/KYB check |
control_person_first_name | VARCHAR(100) | Yes | Control person's first name |
control_person_last_name | VARCHAR(100) | Yes | Control person's last name |
control_person_dob | DATE | Yes | Control person's date of birth |
control_person_government_id | VARCHAR(11) | Yes | Control person's government ID |
control_person_address_1 | VARCHAR(130) | Yes | Control person's street number and street name |
control_person_address_2 | VARCHAR(130) | Yes | Control person's unit or apartment number |
control_person_city | VARCHAR(100) | Yes | Control person's city of residence |
control_person_state | VARCHAR(2) | Yes | Control person's state of residence |
control_person_zipcode | VARCHAR(10) | Yes | Control person's zip code |
control_person_country | VARCHAR(3) | Yes | Control person's country of residence, as an ISO alpha-3 country code |
control_person_phone | VARCHAR(25) | Yes | Control person's primary phone number |
beneficial_owner_individuals | VARCHAR | Yes | List of beneficial owner individuals. Fields follow the same validation rules as Control Person fields. |
external_id | VARCHAR | Yes | External identifier for the account, set by the client. Not included in the file by default; available on request |
Spec last updated: October 27, 2026
ACH Entries
Daily ACH entries. Distinct on financial_transaction_id, as well as entry_trace_number and settlement_date. Can be joined to Ledger Accounts using ledger_account_id.
| Field | Data type | Nullable | Description |
|---|---|---|---|
processed_at | TIMESTAMP_NTZ | No | Processing timestamp of the ACH entry |
financial_transaction_id | VARCHAR(36) | No | Unique identifier assigned to each financial transaction |
entry_trace_number | VARCHAR(15) | No | Unique identifier Lithic or the originating bank assigns to an ACH transaction |
transaction_code | INTEGER | No | Lithic-specific transaction code for the type of event |
transaction_code_description | VARCHAR(35) | No | Event type for the ACH entry (e.g., ACH_ORIGINATION_PROCESSED) |
return_reason_code | VARCHAR(3) | Yes | Return reason code (e.g., R01) |
program_id | VARCHAR(36) | Yes | Unique program identifier |
program_name | VARCHAR(100) | Yes | Program name |
organization_id | VARCHAR(36) | Yes | Unique organization identifier |
organization_name | VARCHAR(100) | Yes | Organization name |
originator_id | VARCHAR(10) | No | NACHA company ID for the ACH entry |
external_bank_account_owner | VARCHAR(100) | Yes | Counterparty to the ACH entry. Not typically present for receipts. |
description | VARCHAR(100) | No | ACH description |
currency | VARCHAR(3) | No | ISO 4217 alpha-3 currency code |
amount | INTEGER | No | Amount of the ACH transaction |
sign | VARCHAR(6) | No | credit or debit |
settled_date | DATE | No | Date the ACH settled |
status | VARCHAR(50) | No | ACH status |
result | VARCHAR(8) | No | ACH result |
initiated_date | DATE | No | Date of ACH initiation |
ledger_account_id | VARCHAR(36) | No | Unique identifier of the Lithic ledger account the ACH impacts |
sec_code | VARCHAR(3) | Yes | NACHA Standard Entry Class (e.g., PPD, CCD, WEB) |
activity_date | DATE | Yes | Date the file was generated. Not always present for receipts or returns. |
Spec last updated: October 3, 2026
Transfers
Event-level data for book transfers and management operations. Captures internal fund movements, fee assessments, rewards, adjustments, and other operational activities that affect account balances.
Bank-level transfers, such as network settlement funding, belong to no program, so their program and organization fields are empty.
| Field | Data type | Nullable | Description |
|---|---|---|---|
event_id | VARCHAR(36) | No | Unique identifier for each individual transfer event |
transaction_id | VARCHAR(36) | No | Groups related events that are part of the same transaction |
credit_ledger_account_id | VARCHAR(36) | No | Ledger account receiving funds (being credited) |
debit_ledger_account_id | VARCHAR(36) | No | Ledger account from which funds are taken (being debited) |
program_id | VARCHAR(36) | Yes | Unique identifier for the program |
program_name | VARCHAR(100) | Yes | Human-readable name of the program |
organization_id | VARCHAR(36) | Yes | Unique identifier for the organization |
organization_name | VARCHAR(100) | Yes | Name of the organization |
event_at | TIMESTAMP_NTZ | No | When the transfer event occurred in the system |
posted_at | TIMESTAMP_NTZ | No | When the transfer was officially posted to the ledger |
currency | VARCHAR(3) | No | Currency of the transfer amount |
amount_cents | INTEGER | No | Transfer amount in the smallest currency unit (cents for USD) |
transaction_code | INTEGER | No | Standardized code identifying the type of transfer operation |
transaction_type | VARCHAR(160) | No | Constructed identifier combining event family, category, and type |
event_family | VARCHAR(50) | No | High-level categorization of the event type |
event_category | VARCHAR(50) | No | Mid-level categorization within the event family |
event_type | VARCHAR(50) | No | Specific type of operation within the category |
event_subtype | VARCHAR(50) | Yes | Additional specification of the event type when applicable |
memo | VARCHAR(200) | No | Descriptive text providing context about the transfer |
user_defined_id | VARCHAR(100) | Yes | User-defined identifier for the transfer |
Spec last updated: October 20, 2026
External Payments
Event-level data for external payments: funds movements a program processes outside Lithic, such as ACH or wires through another provider, and records in the Lithic ledger through the External Payments API. Lithic records these payments but does not originate or settle them.
One row per payment event per ledger account moved. Distinct on event_id and financial_account_id. A single payment produces multiple events over its lifecycle (e.g., settled and then released), linked by transaction_id. See External Payments Lifecycle.
Rows are limited to accounts whose balances the sponsor bank is responsible for:
- Accounts holding funds on behalf of an owner, as reported in Ledger End User Balances
- Receivables, such as
ISSUING_ACCOUNT_RECEIVABLEon credit programs - Lithic's settlement account at the sponsor bank
Movements on Lithic's internal clearing accounts are excluded, so a payment that moves only clearing accounts does not appear. Events that do not change a balance are also excluded.
Amounts are signed, in the smallest currency unit, using the same convention as the ledger balance reports: adding total_amount to the account's total_balance gives the balance after the event. total_amount equals pending_amount + available_amount.
Report period: each file contains events posted on the day before the report date and recorded in the ledger before 19:00 UTC on the report date. Programs supply the effective date of a payment, so an event can be recorded after that cutoff. That event is included in the next file, with a posted_at earlier than the report period. Each event appears in exactly one file.
Can be joined to Ledger Accounts and Ledger End User Balances using financial_account_id. transaction_id is the external payment token in the Lithic API.
| Field | Data type | Nullable | Description |
|---|---|---|---|
event_id | VARCHAR(36) | No | Unique identifier for the payment event |
transaction_id | VARCHAR(36) | No | External payment token. Groups all events belonging to the same payment |
financial_account_id | VARCHAR(36) | No | Ledger account the event moved |
bank_name | VARCHAR(50) | No | Sponsor bank of the ledger account |
account_type | VARCHAR(27) | No | Type of the ledger account (e.g., ISSUING_ACCOUNT_RECEIVABLE) |
account_level | VARCHAR(16) | Yes | Level of the ledger account: CARD, ACCOUNT, BUSINESS_ACCOUNT or INSTANCE. Empty for bank-level accounts |
program_id | VARCHAR(36) | Yes | Unique identifier of the program that made the payment |
program_name | VARCHAR(100) | Yes | Name of the program that made the payment |
organization_id | VARCHAR(36) | Yes | Unique identifier of the program's organization |
organization_name | VARCHAR(100) | Yes | Name of the program's organization |
business_account_id | VARCHAR(36) | Yes | Business account that owns the ledger account, when owned at that level |
account_id | VARCHAR(36) | Yes | Account that owns the ledger account, when owned at that level |
event_at | TIMESTAMP_NTZ | No | When the event was recorded in Lithic's ledger |
posted_at | TIMESTAMP_NTZ | No | When the event took effect, from the effective date the program supplied. Report periods are based on this field |
currency | VARCHAR(3) | No | ISO 4217 alpha-3 currency code |
amount_cents | INTEGER | No | Payment amount on the event in the smallest currency unit (cents for USD), unsigned. 0 on reversal events, whose balance impact is in total_amount |
pending_amount | INTEGER | No | Change to the account's pending balance |
available_amount | INTEGER | No | Change to the account's available balance |
total_amount | INTEGER | No | Change to the account's total balance; pending_amount + available_amount |
transaction_code | INTEGER | Yes | Lithic-specific transaction code for the event, in the 701 range. Empty only for an event type introduced before it has been assigned a code |
transaction_type | VARCHAR(62) | No | Constructed identifier combining event family, category and type |
event_family | VARCHAR(17) | No | Always EXTERNAL_PAYMENTS |
event_category | VARCHAR(17) | No | Payment rail reported by the program: EXTERNAL_ACH, EXTERNAL_WIRE, EXTERNAL_CHECK, EXTERNAL_TRANSFER, EXTERNAL_FEDNOW or EXTERNAL_RTP |
event_type | VARCHAR(27) | No | Lifecycle event: {category}_INITIATED, _SETTLED, _RELEASED, _CANCELED or _REVERSED |
event_subtype | VARCHAR | Yes | Additional specification of the event type, when applicable |
result | VARCHAR(8) | No | Always APPROVED |
payment_type | VARCHAR(10) | No | DEPOSIT (funds received) or WITHDRAWAL (funds sent) |
is_reversal | BOOLEAN | No | Whether the event reverses a prior event on the payment |
decline_reason | VARCHAR | Yes | Always empty |
return_reason | VARCHAR | Yes | Return reason supplied for the event, when present |
memo | VARCHAR(200) | Yes | Descriptive text supplied by the program |
user_defined_id | VARCHAR(100) | Yes | Program-supplied identifier for the payment |
Spec last updated: October 22, 2026
Wires
Event-level data for settled wire activity, covering inbound and outbound wires and reversals. One row per wire event — a single wire can produce multiple rows (e.g., a settlement and a later reversal) linked by transaction_id. Only settled events are included.
| Field | Data type | Nullable | Description |
|---|---|---|---|
transaction_id | VARCHAR(36) | No | UUID grouping all events belonging to the same wire lifecycle |
imad | VARCHAR(22) | Yes | Input Message Accountability Data — Fedwire's per-message identifier, a 22-character string. The wire analog of an ACH trace number |
uetr | VARCHAR(36) | Yes | Unique End-to-end Transaction Reference — 36-character UUID assigned at wire initiation and carried across rails for end-to-end traceability |
event_type | VARCHAR(50) | No | Type of wire event (e.g., WIRE_TRANSFER_INBOUND, WIRE_TRANSFER_OUTBOUND_SETTLED, WIRE_REVERSAL_PAYMENT_INBOUND) |
transaction_code | INTEGER | No | Lithic-specific transaction code for the type of wire event |
direction | VARCHAR(8) | No | INBOUND (funds received) or OUTBOUND (funds sent) |
result | VARCHAR(8) | No | Outcome of the event — APPROVED or DECLINED. Settled wires are APPROVED |
is_cancel | BOOLEAN | No | Whether the event cancels a prior wire event |
is_reversal | BOOLEAN | No | Whether the wire reverses a prior wire (e.g., a returned inbound credit) |
previous_transfer | VARCHAR(36) | Yes | For reversal events, reference to the originating wire being reversed |
decline_reason | VARCHAR | Yes | Reason the event was declined. Null for settled wires |
return_reason_code | VARCHAR | Yes | Return reason code for a reversed wire. Null when not applicable |
amount | INTEGER | No | Settled amount in the currency's smallest unit (cents for USD). Positive for inbound, negative for outbound |
currency | VARCHAR(3) | No | ISO 4217 alpha-3 currency code |
memo | VARCHAR | Yes | Free-text description associated with the wire |
debtor_name | VARCHAR | Yes | Name of the debtor on the original wire, the party whose account is debited. Return rows keep the original wire's roles |
debtor_agent_name | VARCHAR | Yes | Name of the debtor's financial institution as sent on the wire message. Free text, can be a placeholder such as NOTPROVIDED |
debtor_agent_id | VARCHAR(11) | Yes | Routing number or BIC of the debtor's financial institution |
creditor_name | VARCHAR | Yes | Name of the creditor on the original wire, the party whose account is credited. Return rows keep the original wire's roles |
creditor_agent_name | VARCHAR | Yes | Name of the creditor's financial institution as sent on the wire message. Free text, can be a placeholder such as NOTPROVIDED |
creditor_agent_id | VARCHAR(11) | Yes | Routing number or BIC of the creditor's financial institution |
posted_date | DATE | No | Calendar date the wire settlement posted to the ledger |
Spec last updated: October 15, 2026
Intrabank Transfers
Event-level data for transfers your bank makes between Lithic's settlement account at your bank (its RTN subaccount) and your core, without going through the Fed. One row per transfer event, including reversals. Delivered at the bank level only.
These transfers move Lithic's settlement account balance, which appears in the ledger balance files as the IN_TRANSIT row. How a transfer shows up in the ledger balance files depends on its other side. When the other side is a program's account, as with program funds (BANK_PROGRAM_TRANSFER), that program's balance changes by amount_cents and IN_TRANSIT doesn't change. When the other side is a Lithic account outside the file, as with Lithic's own funds (BANK_LITHIC_TRANSFER), IN_TRANSIT changes by amount_cents. Either way, the change shows in the balances as of the transfer's posted_at. See Ledger Program Balances.
Timing: each file covers transfers that took effect on the day before the report date, by posted_at. A transfer can be recorded in Lithic's ledger after it took effect, so event_at can fall on a later day than posted_at.
| Field | Data type | Nullable | Description |
|---|---|---|---|
event_id | VARCHAR(36) | No | Unique identifier for each transfer event |
event_at | TIMESTAMP_NTZ | No | When the transfer was recorded in Lithic's ledger. Can be later than posted_at |
posted_at | TIMESTAMP_NTZ | No | When the transfer took effect. Report periods are based on this field |
transaction_id | VARCHAR(36) | No | Groups related events that are part of the same transfer |
credit_ledger_account_id | VARCHAR(36) | No | Ledger account credited by the transfer |
credit_ledger_account_name | VARCHAR(100) | No | Name of the credited ledger account |
debit_ledger_account_id | VARCHAR(36) | No | Ledger account debited by the transfer |
debit_ledger_account_name | VARCHAR(100) | No | Name of the debited ledger account |
currency | VARCHAR(3) | No | ISO 4217 alpha-3 currency code |
direction | VARCHAR(8) | No | OUTBOUND (funds leave Lithic's settlement account for your core) or INBOUND (funds return to it) |
amount_cents | INTEGER | No | Transfer amount in the smallest currency unit (cents for USD), signed from the settlement account's side: negative for OUTBOUND, positive for INBOUND |
transaction_code | INTEGER | No | Lithic-specific transaction code for the transfer, in the 801 range. Transfers and reversals have separate codes |
event_type | VARCHAR(50) | No | Type of transfer event (e.g., BANK_LITHIC_TRANSFER, BANK_PROGRAM_TRANSFER) |
event_subtype | VARCHAR(50) | Yes | Business reason for the transfer, when provided |
is_reversal | BOOLEAN | No | Whether the event reverses a prior transfer |
memo | VARCHAR(200) | Yes | Descriptive text providing context about the transfer |
Spec last updated: October 27, 2026
Ledger Accounts
A unified mapping file that consolidates multiple ID types (account_id, program_id, financial_account_id) into a single ledger_account_id column. Use this as the central join file across all other reports. Distinct on ledger_account_id.
Hierarchical structure: ledger_account_id creates a parent-child hierarchy via parent_ledger_account_id. Account holders can have multiple financial accounts that roll up to a primary account_id. Business accounts map to their owner via business_account_id. All relationships use the same self-join pattern: child.parent_ledger_account_id = parent.ledger_account_id.
| Field | Data type | Nullable | Description |
|---|---|---|---|
ledger_account_id | VARCHAR(36) | No | UUID of the ledger account. Acts as the universal join key across all reports. |
ledger_account_type | VARCHAR(50) | No | Type of ledger account (e.g., ACCOUNT, BUSINESS_ACCOUNT, INSTANCE) |
parent_ledger_account_type | VARCHAR(50) | Yes | ledger_account_type of the primary owner |
parent_ledger_account_id | VARCHAR(36) | Yes | ledger_account_id of the primary owner |
program_id | VARCHAR(36) | Yes | UUID of the associated program |
business_account_id | VARCHAR(36) | Yes | ledger_account_id of the associated business account |
ledger_account_created_at | TIMESTAMP_NTZ | No | Time the ledger account was created |
issuing_product | VARCHAR(10) | Yes | Issuing product for the program (PM = Program Managed, PO = Processor Only) |
is_test_program | BOOLEAN | Yes | Whether the program is for testing |
account_id | VARCHAR(36) | Yes | UUID of the associated account |
organization_id | VARCHAR(36) | Yes | UUID assigned to each organization |
organization_name | VARCHAR(100) | Yes | Friendly name for the organization |
is_sub_account | BOOLEAN | Yes | Child account / authorized user indicator |
ky_workflow | VARCHAR(15) | Yes | Type of KYB/KYC workflow run. Exemptions are also noted here. |
account_holder_type | VARCHAR(17) | Yes | Type of account holder (e.g., individual vs. business) |
account_status | VARCHAR(24) | Yes | Account status (e.g., active, closed) |
account_created_at | TIMESTAMP_NTZ | Yes | Time the account was created |
updated_at | TIMESTAMP_NTZ | No | Time the account was last updated |
first_name | VARCHAR(100) | Yes | Account holder's first name |
last_name | VARCHAR(100) | Yes | Account holder's last name |
business_name | VARCHAR(100) | Yes | Name of registered business |
government_id | VARCHAR(76) | Yes | Account holder's government ID (e.g., SSN in the US) |
dob | DATE | Yes | Account holder's date of birth |
address_1 | VARCHAR(130) | Yes | Street number and street name |
address_2 | VARCHAR(130) | Yes | Unit or apartment number |
city | VARCHAR(100) | Yes | City of residence |
state | VARCHAR(15) | Yes | State of residence (uppercase ISO 3166-2, e.g., "CA") |
zipcode | VARCHAR(12) | Yes | Zip code (5 or 10 characters) |
country | VARCHAR(3) | Yes | Country of residence |
phone | VARCHAR(25) | Yes | Primary phone number |
email | VARCHAR(254) | Yes | Email address |
ky_date | DATE | Yes | Date KYC/KYB was performed |
ky_status | VARCHAR(16) | Yes | Status of KYC/KYB check |
beneficial_owner_individuals | VARCHAR | Yes | List of beneficial owner individuals |
Spec last updated: May 7, 2026
Ledger Program Balances
Daily ledger balances at the program level. Can be joined to Ledger Accounts using program_id and ledger_account_id.
IN_TRANSIT row: depending on your configuration, the file includes a row with program_id of IN_TRANSIT. It isn't a program. It's Lithic's ledger balance for its settlement account at your bank, less the total of every other row in the file: funds held in that account that aren't yet reflected in a program or bank-level balance. The full value is reported in pending_balance, and available_balance is 0. Intrabank transfers of Lithic's own funds move this row by their amount_cents; transfers of program funds move the program's row instead. Both are itemized in the Intrabank Transfers report.
| Field | Data type | Nullable | Description |
|---|---|---|---|
program_id | VARCHAR(36) | No | Unique identifier assigned to each program |
program_name | VARCHAR | No | Friendly name for the program |
organization_id | VARCHAR(36) | No | UUID assigned to each organization |
organization_name | VARCHAR(100) | Yes | Name of the organization |
available_balance | INTEGER | No | Available balance at end of prior day |
pending_balance | INTEGER | No | Pending balance at end of prior day |
total_balance | INTEGER | No | Total balance at end of prior day (available + pending) |
available_balance_sign | VARCHAR(6) | No | Debit/credit indicator for available balance |
pending_balance_sign | VARCHAR(6) | No | Debit/credit indicator for pending balance |
total_balance_sign | VARCHAR(6) | No | Debit/credit indicator for total balance |
balance_currency_code | VARCHAR(3) | No | Currency code of the balances |
balance_at | TIMESTAMP_NTZ | No | End timestamp of the balance calculation |
Spec last updated: October 27, 2026
Ledger End User Balances
Daily ledger balances at the most granular level — account, card, end user, etc. Can be joined to Ledger Accounts using financial_account_id and ledger_account_id.
IN_TRANSIT row: depending on your configuration, the file includes a row with financial_account_id and program_id of IN_TRANSIT. It carries the same value as the IN_TRANSIT row in Ledger Program Balances, which describes it.
| Field | Data type | Nullable | Description |
|---|---|---|---|
financial_account_id | VARCHAR(36) | No | Unique identifier assigned to each financial account |
organization_name | VARCHAR(100) | Yes | Name of the organization |
organization_id | VARCHAR(36) | No | UUID assigned to each organization |
program_id | VARCHAR(36) | No | Unique identifier assigned to each program |
program_name | VARCHAR | No | Friendly name for the program |
business_account_id | VARCHAR(36) | Yes | Account identifier for business account level balances |
account_id | VARCHAR(36) | Yes | Account identifier for account and card level balances |
card_id | VARCHAR(36) | Yes | Account identifier for card level balances |
account_type | VARCHAR(50) | No | Type of account (e.g., Issuing) |
account_level | VARCHAR(16) | Yes | Level of account (e.g., Card, Account, Business Account) |
available_balance | INTEGER | No | Available balance at end of prior day |
pending_balance | INTEGER | No | Pending balance at end of prior day |
total_balance | INTEGER | No | Total balance at end of prior day (available + pending) |
available_balance_sign | VARCHAR(6) | No | Debit/credit indicator for available balance |
pending_balance_sign | VARCHAR(6) | No | Debit/credit indicator for pending balance |
total_balance_sign | VARCHAR(6) | No | Debit/credit indicator for total balance |
balance_currency_code | VARCHAR(3) | No | Currency code of the balances |
balance_at | TIMESTAMP_NTZ | No | End timestamp of the balance calculation |
Spec last updated: October 27, 2026
Statement Detail
Statements created or updated since the previous file, one row per statement. Distinct on statement_id within a file. Can be joined to Ledger Accounts using ledger_account_id, and to Loan Tape Detail on statement_id to previous_statement_id.
Available only for credit programs. Rows appear only for accounts on a credit product that has statements enabled, so a program without one receives a header-only file.
Report period: each file contains statements created or updated from 15:00 UTC the day before the report date to 15:00 UTC on the report date, by statement_updated_at. A statement is generated after its period ends, so it usually appears within two days of its statement_end_date. An updated statement appears again in a later file with a later statement_updated_at; keep the latest row per statement_id.
| Field | Data type | Nullable | Description |
|---|---|---|---|
statement_id | VARCHAR | No | Unique identifier for the statement |
statement_created_at | TIMESTAMP_NTZ | No | When the statement record was created |
statement_updated_at | TIMESTAMP_NTZ | No | When the statement record was last updated. Report periods are based on this field |
ledger_account_id | VARCHAR(36) | No | Ledger account the statement belongs to |
instance_token | VARCHAR(36) | No | Identifier of the Lithic instance the account belongs to |
statement_type | VARCHAR | No | Credit product type the statement was issued under: CHARGE_CARD, REVOLVING, SECURED_CHARGE, or DEPOSIT |
statement_start_date | DATE | No | First day of the statement period |
statement_end_date | DATE | No | Last day of the statement period |
generated_statement_type | VARCHAR | No | Where the statement falls in the account's lifecycle: INITIAL (opening, zero-day), PERIOD_END (regular billing cycle), or FINAL (account closing) |
starting_balance | DECIMAL | No | Account balance at the start of the statement period |
ending_balance | DECIMAL | No | Account balance at the end of the statement period |
payment_due_date | DATE | Yes | Date payment is due for this statement. Null on FINAL statements |
next_payment_due_date | DATE | Yes | Date the following payment is due. Null on FINAL statements |
json_payload | VARCHAR | No | Complete statement record as JSON, including line items and period totals not broken out into their own columns |
Spec last updated: October 27, 2026
Loan Tape Detail
Daily snapshot of a credit account's balances, limit, and delinquency state. One row per ledger account per day, for every day the account is open, whether or not anything changed. Distinct on loan_tape_id within a file. Can be joined to Ledger Accounts using ledger_account_id, and to Statement Detail on previous_statement_id to statement_id.
Available only for credit programs, under the same conditions as Statement Detail.
Report period: each file contains loan tapes written or restated from 15:00 UTC the day before the report date to 15:00 UTC on the report date, by loan_tape_updated_at. A day's loan tape is written the following day, so a file normally carries the snapshots dated the day before the report date. A loan tape written late or restated appears in the file covering when it was written, with a later loan_tape_updated_at; keep the latest row per loan_tape_id.
Monetary fields are in the currency's smallest unit (cents for USD). available_credit is credit_limit less total_balance.
| Field | Data type | Nullable | Description |
|---|---|---|---|
loan_tape_id | VARCHAR | No | Unique identifier for the loan tape record |
loan_tape_date | DATE | No | Date of the snapshot |
ledger_account_id | VARCHAR(36) | No | Ledger account the loan tape belongs to |
previous_statement_id | VARCHAR | Yes | Most recent statement to have closed before this snapshot. Null until the account's first statement period ends |
prime_rate | DECIMAL | Yes | Prime rate applied to the account, as a decimal fraction. 0.0675 is 6.75% |
credit_limit | INTEGER | No | Credit limit on the account |
total_balance | INTEGER | No | Outstanding balance on the account. Negative when the account is in credit |
available_credit | INTEGER | No | Credit remaining on the account |
minimum_payment_due | INTEGER | No | Minimum payment currently due |
account_state | VARCHAR | No | State of the account on loan_tape_date: CHARGED_OFF once the account is charged off, DELINQUENT when it is delinquent or past due, otherwise CURRENT. An account suspended or closed for another reason, such as paused interest and fees or an end user or bank request, stays CURRENT while past due, so use days_past_due to measure delinquency |
days_past_due | INTEGER | No | Days the account is past due. Zero when current |
date_delinquency_occurred | DATE | Yes | Date the account fell past due, derived as loan_tape_date less days_past_due. Null when the account is current |
origination_date | DATE | No | Date of the account's first loan tape |
balances | VARCHAR | No | Balance detail as JSON, split by ageing bucket (due, past_due, next_statement_due, past_statements_due) and within each by balance type (purchases, cash_advances, balance_transfers) into principal, interest, and fees |
interest | VARCHAR | Yes | Interest calculation detail as JSON, including the rates applied |
json_payload | VARCHAR | No | Complete loan tape record as JSON, including detail not broken out into its own column |
loan_tape_updated_at | TIMESTAMP_NTZ | No | When the loan tape was last written, including restatements. Report periods are based on this field |
Spec last updated: October 27, 2026
Updated 2 days ago
