Skip to main content

Transactions File

All transaction IDs in this file are unique and have never been seen in a Transactions file before.

Balances File

Deposit Balance

See Balance Reconciliation and Examples for specific examples.
ValidationDescription
balance on t = balance on t-1 + daily_activity on tdaily_activity on t = sum(transactions.amount) where transactions.type not in (interest_accrued,dispute_won)
rewards_balance on t = rewards_balance on t-1 + daily_rewards_activity on tdaily_rewards_activity on t = sum(transactions.rewards_amount) where transactions.type in (rewards_earned, rewards_spent, rewards_redeemed,debit, refund,credit)
interest_accrued_balance on t = interest_accrued_balance on t-1 + daily_interest_activity on tdaily_interest_activity on t = transactions.amount where transactions.type=interest_accrued - transactions.amount where transactions.type= interest_paid
dispute_balance on t = dispute_balance on t-1 + daily_dispute_activity on tdaily_dispute_activity on t = sum (amount) where transactions.type in (dispute_provisional, dispute_won, dispute_lost)
charge_off_balance on t = charge_off_balance on t-1 + daily_charge_off_activity on tdaily_charge_off_activity on t = sum (transactions.amount) where transactions.typein (charge_off, charge_off_recovery)

Credit Balance

See Balance Reconciliation and Examples for specific examples.
ValidationDescription
balance on t = balance on t-1 + daily_activity on tdaily_activity on t = sum(transactions.amount) where transactions.type not in (charge_off_recovery,dispute_won)
any balance across balance, dispute_balance, past_due_balance, charge_off_balance will have the following validations:*balance = *principal + *interest + *fees
outstanding_principal on t = outstanding_principalon t-1 + daily_principal_activity on tdaily_principal_activity on t = sum (transactions.principal_amount) where transactions.type not in (fee,interest_accrued,charge_off_recovery,dispute_won)
outstanding_fees on t = outstanding_feeson t-1 + daily_fees_activity on tdaily_fees_activity on t = sum(transactions.fee_amount) where transactions.type not in (disbursement,interest_accrued,charge_off_recovery,dispute_won)
outstanding_interest on t = outstanding_interest on t-1 + daily_interest_activity on tdaily_interest_activity on t = sum(transactions.interest_amount) where transactions.type not in (disbursement,fee,charge_off_recovery,dispute_won)
rewards_balance on t = rewards_balance on t-1 + daily_rewards_activity on tdaily_rewards_activity on t = sum(transactions.rewards_amount) where transactions.type in (rewards_earned, rewards_spent, rewards_redeemed,disbursement, refund,client_credit)
dispute_balance on t = dispute_balance on t-1 + daily_dispute_activity on tdaily_dispute_activity on t = -transactions.amount where transactions.type = dispute_provisional+ transactions.amount where transactions.type = dispute_won - transactions.amount where transactions.type = dispute_lost (the same logic applies for dispute_principal, dispute_fees ,dispute_interest)
charge_off_balance on t = charge_off_balance on t-1 + daily_charge_off_activity on tdaily_charge_off_activity on t = - transactions.amount where transactions.type = charge_off + transactions.amount where transactions.type = charge_off_recovery (the same logic applies for charge_off_principal , charge_off_fees ,charge_off_interest)
past_due_balance <= balancepast_due_principal <= outstanding_principal;
past_due_fees <= outstanding_fees ;
past_due_interest <= outstanding_interest

If a credit balance is both past due and charged off, the amount should only be included in charge_off_balance and not in past_due_balance.