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.

ReportFile naming conventionDescription
Daily Card Network Settlement SummaryYYYYMMDD_lithic_daily_network_settlement_summaryDaily 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 DetailYYYYMMDD_lithic_settlement_detailTransaction-level breakdown of daily settlement activity including interchange, disputes, and fees.
Card TransactionsYYYYMMDD_lithic_card_transactionsAll card transaction events at the event level, including authorizations and clearing.
CardsYYYYMMDD_lithic_cardsAll existing cards, their states, and characteristics.
AccountsYYYYMMDD_lithic_accountsCardholder identifying information (sometimes referred to as an AML report).
ACH EntriesYYYYMMDD_lithic_ach_entriesDaily ACH entries.
TransfersYYYYMMDD_lithic_transfersDaily book transfers and management operations.
External PaymentsYYYYMMDD_lithic_external_paymentsDaily external payment activity recorded in the Lithic ledger, at the event level.
WiresYYYYMMDD_lithic_wiresDaily settled wire activity — inbound and outbound wires and reversals, at the event level.
Intrabank TransfersYYYYMMDD_lithic_intrabank_transfersDaily transfers your bank makes between Lithic's settlement account and your core, outside the Fed. Bank level only.
Ledger AccountsYYYYMMDD_lithic_ledger_accountsUnified mapping file that consolidates account IDs for joining across reports.
Ledger Program BalancesYYYYMMDD_lithic_ledger_program_balancesDaily ledger balances at the program level.
Ledger End User BalancesYYYYMMDD_lithic_ledger_end_user_balancesDaily ledger balances at the most granular level — account, card, end user, etc.
Statement DetailYYYYMMDD_lithic_statement_detailStatements created or updated since the previous file. Credit programs only.
Loan Tape DetailYYYYMMDD_lithic_loan_tape_detailDaily 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_id

Ledger 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.

FieldData typeNullableDescription
report_dateDATENoDate the report was generated by the Card Network
collection_dateDATENoDate of the funds movement being reconciled
networkVARCHAR(10)NoNetwork wire being reconciled
institution_idVARCHAR(10)NoNumeric identifier the network settles with (e.g., ICA for Mastercard, FTSRE for Visa)
currencyVARCHAR(3)NoISO 4217 alpha-3 currency code for the settlement
transaction_amountINTEGERNoTotal amount of settlement-impacting transactions in smallest denomination (e.g., pennies for USD)
disputes_amountINTEGERNoTotal gross amount of dispute settlements in smallest denomination
interchange_amountINTEGERNoTotal gross amount of interchange in smallest denomination
fees_amountINTEGERNoTotal gross amount of other fees outside of interchange in smallest denomination
net_amountINTEGERNoTotal net amount settled in smallest denomination
acquiring_networkVARCHAR(10)NoAcquiring 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.

FieldData typeNullableDescription
settlement_idVARCHAR(36)NoUUID assigned to each settlement event
program_idVARCHAR(36)YesUUID assigned to each program
program_nameVARCHAR(100)YesFriendly name for the program
organization_idVARCHAR(36)YesUUID assigned to each organization
organization_nameVARCHAR(100)YesFriendly name for the organization
institution_idVARCHAR(10)NoThe most granular ID the network settles with (e.g., ICA for Mastercard, FTSRE for Visa)
account_idVARCHAR(36)YesUUID of the account the card is associated with
card_idVARCHAR(36)YesUUID assigned to each card
transaction_event_idsVARCHAR(1000)NoArray of transaction event UUIDs associated with the network settlement event
transaction_idVARCHAR(36)YesUUID of the aggregate transaction that associates all related events
transaction_currency_codeVARCHAR(3)NoISO 4217 alpha-3 currency code for the settlement
networkVARCHAR(10)NoNetwork used to process the transaction (e.g., MASTERCARD, VISA)
acquiring_networkVARCHAR(10)NoAcquiring network for the transaction
transactions_gross_amountINTEGERNoGross settled amount. Positive = debit (e.g., clearing); negative = credit (e.g., refund). In currency's smallest unit.
disputes_gross_amountINTEGERNoGross amount of dispute settlements
interchange_gross_amountINTEGERNoGross interchange amount associated with this settlement event
interchange_gross_amount_extended_precisionVARCHAR(20)NoGross interchange amount in six-digit extended precision (e.g., $0.101 = 101000)
other_fees_gross_amountINTEGERNoTotal amount of other fees outside of interchange
net_amountINTEGERNoNet amount of this record
settlement_record_typeVARCHAR(20)NoType of record (e.g., CLEARING, CHARGEBACK, ADJUSTMENT, FEE)
settlement_dateDATENoDate money movement is triggered for this settlement event
report_dateDATENoDate 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 pan field is omitted. PCI-compliant institutions can request PAN delivery — see PAN availability.

FieldData typeNullableDescription
transaction_event_idVARCHAR(36)NoUUID assigned to each transaction event
program_idVARCHAR(36)NoUUID assigned to each program
program_nameVARCHAR(100)NoFriendly name for the program
organization_idVARCHAR(36)NoUUID assigned to each organization
organization_nameVARCHAR(100)YesFriendly name for the organization
account_idVARCHAR(36)NoUUID of the account the transaction event is associated with
authorizedBOOLEANNoFlag for whether the transaction is authorized or declined
authorization_codeVARCHAR(6)YesSystem-generated authorization code given at time of purchase (6-digit SVCAP auth code)
is_financialBOOLEANNoFlag for whether the transaction has financial impact
card_idVARCHAR(36)NoUUID assigned to each card
panVARCHAR(16)NoFull card Primary Account Number — present only for PCI-compliant recipients
last_fourVARCHAR(4)NoLast four digits of the PAN
networkVARCHAR(10)NoParent network used to process the transaction (e.g., MASTERCARD, VISA)
acquiring_networkVARCHAR(10)NoSpecific network used to process the transaction (e.g., VISA, MASTERCARD, INTERLINK, MAESTRO)
card_issuing_networkVARCHAR(10)NoNetwork the issued card belongs to according to BIN
response_codeVARCHAR(3)NoISO response code generated by the authorization system and sent to the network
response_descriptionVARCHAR(60)NoDescription of the response code
customer_response_descriptionVARCHAR(21)YesDescription of the response the client sends to Lithic (ASA clients only)
message_type_idVARCHAR(3)NoISO message type identifier code (e.g., 0200 Financial)
message_type_id_descriptionVARCHAR(29)NoDescription of the message type code
processing_codeVARCHAR(2)NoISO processing code (00 = purchase, 50 = bill_payment, 01 = withdrawal, etc.)
processing_code_descriptionVARCHAR(25)NoDescription of the processing code
transaction_codeINTEGERNoLithic-specific transaction code for the type of transaction
transaction_code_descriptionVARCHAR(35)NoDescription of the Lithic transaction code
international_transaction_indicatorBOOLEANNoIndicates the transaction is international
amountINTEGERNoAmount of the request in USD pennies
settled_amountINTEGERYesAmount of the settled transaction in USD pennies. Null for non-financial events.
transaction_signINTEGERNo1 for a debit, -1 for a credit, and 0 where the amount is zero, as on a zero-amount authorization
transaction_currency_codeVARCHAR(3)NoISO 4217 alpha-3 currency code for the settlement
point_of_service_terminal_typeVARCHAR(13)YesPoint of sale terminal type
point_of_service_entry_modeVARCHAR(17)YesPoint of sale entry mode indicator
settlement_dateDATEYesSettlement 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_timeTIMESTAMP_NTZNoTimestamp of when the transaction occurred (UTC)
post_timeDATEYesDate 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_idVARCHAR(36)NoUUID of the aggregate transaction that associates all related events
merchant_nameVARCHAR(25)YesMerchant name provided in the network message
card_acceptor_idVARCHAR(15)YesIdentifier for the merchant
merchant_cityVARCHAR(100)YesCity of the merchant
merchant_stateVARCHAR(3)YesState of the merchant (2-character abbreviation)
merchant_country_codeVARCHAR(3)YesISO alpha-3 country code
merchant_countryVARCHAR(52)YesCountry of the merchant
merchant_category_codeVARCHAR(4)YesFour-digit industry standard merchant category code
merchant_categoryVARCHAR(160)YesDescription of the merchant category code
binVARCHAR(9)NoFirst 6 or 8 digits of the PAN
address_verification_responseVARCHAR(14)YesResponse message if address verification was used
acquirer_reference_numberVARCHAR(23)YesAcquirer reference number from the ISO stream
retrieval_reference_numberVARCHAR(12)YesRetrieval 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 pan field is omitted. PCI-compliant institutions can request PAN delivery — see PAN availability.

FieldData typeNullableDescription
card_idVARCHAR(36)NoUUID assigned to each card
program_idVARCHAR(36)NoUUID assigned to each program
program_nameVARCHAR(100)NoFriendly name for the program
organization_idVARCHAR(36)NoUUID assigned to each organization
organization_nameVARCHAR(100)YesFriendly name for the organization
account_idVARCHAR(36)NoUUID of the account the card is associated with
card_created_atTIMESTAMP_NTZNoTime the card was created
card_updated_atTIMESTAMP_NTZNoTime the card was last updated
panVARCHAR(19)NoFull card Primary Account Number — present only for PCI-compliant recipients
last_fourVARCHAR(4)NoLast four digits of the PAN
card_stateVARCHAR(39)NoCurrent state of the card
expiration_dateDATENoDate the card expires (YYYY-MM-DD)
embossed_nameVARCHAR(26)YesEmbossed name on the card. Only present for physical cards.
binVARCHAR(9)NoFirst 6 or 8 digits of the PAN
card_closed_atDATEYesTime the card was closed
reloadable_indicatorBOOLEANNoIndicates whether the card is reloadable
memoVARCHARYesFriendly 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.

FieldData typeNullableDescription
account_idVARCHAR(36)NoUUID of the account
organization_idVARCHAR(36)NoUUID assigned to each organization
organization_nameVARCHAR(100)YesFriendly name for the organization
account_holder_typeVARCHAR(17)YesType of account holder (e.g., individual vs. business)
is_sub_accountBOOLEANNoChild account / authorized user indicator
account_statusVARCHAR(24)NoAccount status (e.g., active, closed)
created_atTIMESTAMP_NTZNoTime the account was created
updated_atTIMESTAMP_NTZNoTime the account was last updated
account_holder_first_nameVARCHAR(100)YesAccount holder's first name. May be empty for sub-accounts under KYB_DELEGATED or KYC_EXEMPT programs
account_holder_last_nameVARCHAR(100)YesAccount holder's last name. May be empty for sub-accounts under KYB_DELEGATED or KYC_EXEMPT programs
business_nameVARCHAR(100)YesName of registered business
account_holder_government_idVARCHAR(11)YesUS social security number or ITIN
account_holder_dobDATEYesAccount holder's date of birth
account_holder_address_1VARCHAR(130)YesStreet number and street name
account_holder_address_2VARCHAR(130)YesUnit or apartment number (if applicable)
account_holder_cityVARCHAR(100)YesCity of residence
account_holder_stateVARCHAR(15)YesState of residence. Uppercase ISO 3166-2 two-character abbreviation (e.g., "CA")
account_holder_zipcodeVARCHAR(12)YesZip code. 5 or 10 characters (ZIP or ZIP+4). May be empty for sub-accounts under KYB_DELEGATED or KYC_EXEMPT programs
account_holder_countryVARCHAR(3)YesCountry of residence
account_holder_phoneVARCHAR(25)YesPrimary phone number
account_holder_emailVARCHAR(254)YesEmail address. May be empty for sub-accounts under KYB_DELEGATED or KYC_EXEMPT programs
kyc_dateDATEYesDate KYC/KYB was performed
kyc_statusVARCHAR(24)YesStatus of KYC/KYB check
control_person_first_nameVARCHAR(100)YesControl person's first name
control_person_last_nameVARCHAR(100)YesControl person's last name
control_person_dobDATEYesControl person's date of birth
control_person_government_idVARCHAR(11)YesControl person's government ID
control_person_address_1VARCHAR(130)YesControl person's street number and street name
control_person_address_2VARCHAR(130)YesControl person's unit or apartment number
control_person_cityVARCHAR(100)YesControl person's city of residence
control_person_stateVARCHAR(2)YesControl person's state of residence
control_person_zipcodeVARCHAR(10)YesControl person's zip code
control_person_countryVARCHAR(3)YesControl person's country of residence, as an ISO alpha-3 country code
control_person_phoneVARCHAR(25)YesControl person's primary phone number
beneficial_owner_individualsVARCHARYesList of beneficial owner individuals. Fields follow the same validation rules as Control Person fields.
external_idVARCHARYesExternal 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.

FieldData typeNullableDescription
processed_atTIMESTAMP_NTZNoProcessing timestamp of the ACH entry
financial_transaction_idVARCHAR(36)NoUnique identifier assigned to each financial transaction
entry_trace_numberVARCHAR(15)NoUnique identifier Lithic or the originating bank assigns to an ACH transaction
transaction_codeINTEGERNoLithic-specific transaction code for the type of event
transaction_code_descriptionVARCHAR(35)NoEvent type for the ACH entry (e.g., ACH_ORIGINATION_PROCESSED)
return_reason_codeVARCHAR(3)YesReturn reason code (e.g., R01)
program_idVARCHAR(36)YesUnique program identifier
program_nameVARCHAR(100)YesProgram name
organization_idVARCHAR(36)YesUnique organization identifier
organization_nameVARCHAR(100)YesOrganization name
originator_idVARCHAR(10)NoNACHA company ID for the ACH entry
external_bank_account_ownerVARCHAR(100)YesCounterparty to the ACH entry. Not typically present for receipts.
descriptionVARCHAR(100)NoACH description
currencyVARCHAR(3)NoISO 4217 alpha-3 currency code
amountINTEGERNoAmount of the ACH transaction
signVARCHAR(6)Nocredit or debit
settled_dateDATENoDate the ACH settled
statusVARCHAR(50)NoACH status
resultVARCHAR(8)NoACH result
initiated_dateDATENoDate of ACH initiation
ledger_account_idVARCHAR(36)NoUnique identifier of the Lithic ledger account the ACH impacts
sec_codeVARCHAR(3)YesNACHA Standard Entry Class (e.g., PPD, CCD, WEB)
activity_dateDATEYesDate 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.

FieldData typeNullableDescription
event_idVARCHAR(36)NoUnique identifier for each individual transfer event
transaction_idVARCHAR(36)NoGroups related events that are part of the same transaction
credit_ledger_account_idVARCHAR(36)NoLedger account receiving funds (being credited)
debit_ledger_account_idVARCHAR(36)NoLedger account from which funds are taken (being debited)
program_idVARCHAR(36)YesUnique identifier for the program
program_nameVARCHAR(100)YesHuman-readable name of the program
organization_idVARCHAR(36)YesUnique identifier for the organization
organization_nameVARCHAR(100)YesName of the organization
event_atTIMESTAMP_NTZNoWhen the transfer event occurred in the system
posted_atTIMESTAMP_NTZNoWhen the transfer was officially posted to the ledger
currencyVARCHAR(3)NoCurrency of the transfer amount
amount_centsINTEGERNoTransfer amount in the smallest currency unit (cents for USD)
transaction_codeINTEGERNoStandardized code identifying the type of transfer operation
transaction_typeVARCHAR(160)NoConstructed identifier combining event family, category, and type
event_familyVARCHAR(50)NoHigh-level categorization of the event type
event_categoryVARCHAR(50)NoMid-level categorization within the event family
event_typeVARCHAR(50)NoSpecific type of operation within the category
event_subtypeVARCHAR(50)YesAdditional specification of the event type when applicable
memoVARCHAR(200)NoDescriptive text providing context about the transfer
user_defined_idVARCHAR(100)YesUser-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_RECEIVABLE on 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.

FieldData typeNullableDescription
event_idVARCHAR(36)NoUnique identifier for the payment event
transaction_idVARCHAR(36)NoExternal payment token. Groups all events belonging to the same payment
financial_account_idVARCHAR(36)NoLedger account the event moved
bank_nameVARCHAR(50)NoSponsor bank of the ledger account
account_typeVARCHAR(27)NoType of the ledger account (e.g., ISSUING_ACCOUNT_RECEIVABLE)
account_levelVARCHAR(16)YesLevel of the ledger account: CARD, ACCOUNT, BUSINESS_ACCOUNT or INSTANCE. Empty for bank-level accounts
program_idVARCHAR(36)YesUnique identifier of the program that made the payment
program_nameVARCHAR(100)YesName of the program that made the payment
organization_idVARCHAR(36)YesUnique identifier of the program's organization
organization_nameVARCHAR(100)YesName of the program's organization
business_account_idVARCHAR(36)YesBusiness account that owns the ledger account, when owned at that level
account_idVARCHAR(36)YesAccount that owns the ledger account, when owned at that level
event_atTIMESTAMP_NTZNoWhen the event was recorded in Lithic's ledger
posted_atTIMESTAMP_NTZNoWhen the event took effect, from the effective date the program supplied. Report periods are based on this field
currencyVARCHAR(3)NoISO 4217 alpha-3 currency code
amount_centsINTEGERNoPayment 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_amountINTEGERNoChange to the account's pending balance
available_amountINTEGERNoChange to the account's available balance
total_amountINTEGERNoChange to the account's total balance; pending_amount + available_amount
transaction_codeINTEGERYesLithic-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_typeVARCHAR(62)NoConstructed identifier combining event family, category and type
event_familyVARCHAR(17)NoAlways EXTERNAL_PAYMENTS
event_categoryVARCHAR(17)NoPayment rail reported by the program: EXTERNAL_ACH, EXTERNAL_WIRE, EXTERNAL_CHECK, EXTERNAL_TRANSFER, EXTERNAL_FEDNOW or EXTERNAL_RTP
event_typeVARCHAR(27)NoLifecycle event: {category}_INITIATED, _SETTLED, _RELEASED, _CANCELED or _REVERSED
event_subtypeVARCHARYesAdditional specification of the event type, when applicable
resultVARCHAR(8)NoAlways APPROVED
payment_typeVARCHAR(10)NoDEPOSIT (funds received) or WITHDRAWAL (funds sent)
is_reversalBOOLEANNoWhether the event reverses a prior event on the payment
decline_reasonVARCHARYesAlways empty
return_reasonVARCHARYesReturn reason supplied for the event, when present
memoVARCHAR(200)YesDescriptive text supplied by the program
user_defined_idVARCHAR(100)YesProgram-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.

FieldData typeNullableDescription
transaction_idVARCHAR(36)NoUUID grouping all events belonging to the same wire lifecycle
imadVARCHAR(22)YesInput Message Accountability Data — Fedwire's per-message identifier, a 22-character string. The wire analog of an ACH trace number
uetrVARCHAR(36)YesUnique End-to-end Transaction Reference — 36-character UUID assigned at wire initiation and carried across rails for end-to-end traceability
event_typeVARCHAR(50)NoType of wire event (e.g., WIRE_TRANSFER_INBOUND, WIRE_TRANSFER_OUTBOUND_SETTLED, WIRE_REVERSAL_PAYMENT_INBOUND)
transaction_codeINTEGERNoLithic-specific transaction code for the type of wire event
directionVARCHAR(8)NoINBOUND (funds received) or OUTBOUND (funds sent)
resultVARCHAR(8)NoOutcome of the event — APPROVED or DECLINED. Settled wires are APPROVED
is_cancelBOOLEANNoWhether the event cancels a prior wire event
is_reversalBOOLEANNoWhether the wire reverses a prior wire (e.g., a returned inbound credit)
previous_transferVARCHAR(36)YesFor reversal events, reference to the originating wire being reversed
decline_reasonVARCHARYesReason the event was declined. Null for settled wires
return_reason_codeVARCHARYesReturn reason code for a reversed wire. Null when not applicable
amountINTEGERNoSettled amount in the currency's smallest unit (cents for USD). Positive for inbound, negative for outbound
currencyVARCHAR(3)NoISO 4217 alpha-3 currency code
memoVARCHARYesFree-text description associated with the wire
debtor_nameVARCHARYesName of the debtor on the original wire, the party whose account is debited. Return rows keep the original wire's roles
debtor_agent_nameVARCHARYesName of the debtor's financial institution as sent on the wire message. Free text, can be a placeholder such as NOTPROVIDED
debtor_agent_idVARCHAR(11)YesRouting number or BIC of the debtor's financial institution
creditor_nameVARCHARYesName of the creditor on the original wire, the party whose account is credited. Return rows keep the original wire's roles
creditor_agent_nameVARCHARYesName of the creditor's financial institution as sent on the wire message. Free text, can be a placeholder such as NOTPROVIDED
creditor_agent_idVARCHAR(11)YesRouting number or BIC of the creditor's financial institution
posted_dateDATENoCalendar 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.

FieldData typeNullableDescription
event_idVARCHAR(36)NoUnique identifier for each transfer event
event_atTIMESTAMP_NTZNoWhen the transfer was recorded in Lithic's ledger. Can be later than posted_at
posted_atTIMESTAMP_NTZNoWhen the transfer took effect. Report periods are based on this field
transaction_idVARCHAR(36)NoGroups related events that are part of the same transfer
credit_ledger_account_idVARCHAR(36)NoLedger account credited by the transfer
credit_ledger_account_nameVARCHAR(100)NoName of the credited ledger account
debit_ledger_account_idVARCHAR(36)NoLedger account debited by the transfer
debit_ledger_account_nameVARCHAR(100)NoName of the debited ledger account
currencyVARCHAR(3)NoISO 4217 alpha-3 currency code
directionVARCHAR(8)NoOUTBOUND (funds leave Lithic's settlement account for your core) or INBOUND (funds return to it)
amount_centsINTEGERNoTransfer amount in the smallest currency unit (cents for USD), signed from the settlement account's side: negative for OUTBOUND, positive for INBOUND
transaction_codeINTEGERNoLithic-specific transaction code for the transfer, in the 801 range. Transfers and reversals have separate codes
event_typeVARCHAR(50)NoType of transfer event (e.g., BANK_LITHIC_TRANSFER, BANK_PROGRAM_TRANSFER)
event_subtypeVARCHAR(50)YesBusiness reason for the transfer, when provided
is_reversalBOOLEANNoWhether the event reverses a prior transfer
memoVARCHAR(200)YesDescriptive 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.

FieldData typeNullableDescription
ledger_account_idVARCHAR(36)NoUUID of the ledger account. Acts as the universal join key across all reports.
ledger_account_typeVARCHAR(50)NoType of ledger account (e.g., ACCOUNT, BUSINESS_ACCOUNT, INSTANCE)
parent_ledger_account_typeVARCHAR(50)Yesledger_account_type of the primary owner
parent_ledger_account_idVARCHAR(36)Yesledger_account_id of the primary owner
program_idVARCHAR(36)YesUUID of the associated program
business_account_idVARCHAR(36)Yesledger_account_id of the associated business account
ledger_account_created_atTIMESTAMP_NTZNoTime the ledger account was created
issuing_productVARCHAR(10)YesIssuing product for the program (PM = Program Managed, PO = Processor Only)
is_test_programBOOLEANYesWhether the program is for testing
account_idVARCHAR(36)YesUUID of the associated account
organization_idVARCHAR(36)YesUUID assigned to each organization
organization_nameVARCHAR(100)YesFriendly name for the organization
is_sub_accountBOOLEANYesChild account / authorized user indicator
ky_workflowVARCHAR(15)YesType of KYB/KYC workflow run. Exemptions are also noted here.
account_holder_typeVARCHAR(17)YesType of account holder (e.g., individual vs. business)
account_statusVARCHAR(24)YesAccount status (e.g., active, closed)
account_created_atTIMESTAMP_NTZYesTime the account was created
updated_atTIMESTAMP_NTZNoTime the account was last updated
first_nameVARCHAR(100)YesAccount holder's first name
last_nameVARCHAR(100)YesAccount holder's last name
business_nameVARCHAR(100)YesName of registered business
government_idVARCHAR(76)YesAccount holder's government ID (e.g., SSN in the US)
dobDATEYesAccount holder's date of birth
address_1VARCHAR(130)YesStreet number and street name
address_2VARCHAR(130)YesUnit or apartment number
cityVARCHAR(100)YesCity of residence
stateVARCHAR(15)YesState of residence (uppercase ISO 3166-2, e.g., "CA")
zipcodeVARCHAR(12)YesZip code (5 or 10 characters)
countryVARCHAR(3)YesCountry of residence
phoneVARCHAR(25)YesPrimary phone number
emailVARCHAR(254)YesEmail address
ky_dateDATEYesDate KYC/KYB was performed
ky_statusVARCHAR(16)YesStatus of KYC/KYB check
beneficial_owner_individualsVARCHARYesList 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.

FieldData typeNullableDescription
program_idVARCHAR(36)NoUnique identifier assigned to each program
program_nameVARCHARNoFriendly name for the program
organization_idVARCHAR(36)NoUUID assigned to each organization
organization_nameVARCHAR(100)YesName of the organization
available_balanceINTEGERNoAvailable balance at end of prior day
pending_balanceINTEGERNoPending balance at end of prior day
total_balanceINTEGERNoTotal balance at end of prior day (available + pending)
available_balance_signVARCHAR(6)NoDebit/credit indicator for available balance
pending_balance_signVARCHAR(6)NoDebit/credit indicator for pending balance
total_balance_signVARCHAR(6)NoDebit/credit indicator for total balance
balance_currency_codeVARCHAR(3)NoCurrency code of the balances
balance_atTIMESTAMP_NTZNoEnd 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.

FieldData typeNullableDescription
financial_account_idVARCHAR(36)NoUnique identifier assigned to each financial account
organization_nameVARCHAR(100)YesName of the organization
organization_idVARCHAR(36)NoUUID assigned to each organization
program_idVARCHAR(36)NoUnique identifier assigned to each program
program_nameVARCHARNoFriendly name for the program
business_account_idVARCHAR(36)YesAccount identifier for business account level balances
account_idVARCHAR(36)YesAccount identifier for account and card level balances
card_idVARCHAR(36)YesAccount identifier for card level balances
account_typeVARCHAR(50)NoType of account (e.g., Issuing)
account_levelVARCHAR(16)YesLevel of account (e.g., Card, Account, Business Account)
available_balanceINTEGERNoAvailable balance at end of prior day
pending_balanceINTEGERNoPending balance at end of prior day
total_balanceINTEGERNoTotal balance at end of prior day (available + pending)
available_balance_signVARCHAR(6)NoDebit/credit indicator for available balance
pending_balance_signVARCHAR(6)NoDebit/credit indicator for pending balance
total_balance_signVARCHAR(6)NoDebit/credit indicator for total balance
balance_currency_codeVARCHAR(3)NoCurrency code of the balances
balance_atTIMESTAMP_NTZNoEnd 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.

FieldData typeNullableDescription
statement_idVARCHARNoUnique identifier for the statement
statement_created_atTIMESTAMP_NTZNoWhen the statement record was created
statement_updated_atTIMESTAMP_NTZNoWhen the statement record was last updated. Report periods are based on this field
ledger_account_idVARCHAR(36)NoLedger account the statement belongs to
instance_tokenVARCHAR(36)NoIdentifier of the Lithic instance the account belongs to
statement_typeVARCHARNoCredit product type the statement was issued under: CHARGE_CARD, REVOLVING, SECURED_CHARGE, or DEPOSIT
statement_start_dateDATENoFirst day of the statement period
statement_end_dateDATENoLast day of the statement period
generated_statement_typeVARCHARNoWhere the statement falls in the account's lifecycle: INITIAL (opening, zero-day), PERIOD_END (regular billing cycle), or FINAL (account closing)
starting_balanceDECIMALNoAccount balance at the start of the statement period
ending_balanceDECIMALNoAccount balance at the end of the statement period
payment_due_dateDATEYesDate payment is due for this statement. Null on FINAL statements
next_payment_due_dateDATEYesDate the following payment is due. Null on FINAL statements
json_payloadVARCHARNoComplete 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.

FieldData typeNullableDescription
loan_tape_idVARCHARNoUnique identifier for the loan tape record
loan_tape_dateDATENoDate of the snapshot
ledger_account_idVARCHAR(36)NoLedger account the loan tape belongs to
previous_statement_idVARCHARYesMost recent statement to have closed before this snapshot. Null until the account's first statement period ends
prime_rateDECIMALYesPrime rate applied to the account, as a decimal fraction. 0.0675 is 6.75%
credit_limitINTEGERNoCredit limit on the account
total_balanceINTEGERNoOutstanding balance on the account. Negative when the account is in credit
available_creditINTEGERNoCredit remaining on the account
minimum_payment_dueINTEGERNoMinimum payment currently due
account_stateVARCHARNoState 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_dueINTEGERNoDays the account is past due. Zero when current
date_delinquency_occurredDATEYesDate the account fell past due, derived as loan_tape_date less days_past_due. Null when the account is current
origination_dateDATENoDate of the account's first loan tape
balancesVARCHARNoBalance 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
interestVARCHARYesInterest calculation detail as JSON, including the rates applied
json_payloadVARCHARNoComplete loan tape record as JSON, including detail not broken out into its own column
loan_tape_updated_atTIMESTAMP_NTZNoWhen the loan tape was last written, including restatements. Report periods are based on this field

Spec last updated: October 27, 2026


Did this page help you?