LoanPro

Lending reports

Detailed descriptions of available lending reports and instructions for accessing them.

Lending reports are available by request via the Report File Hub or a destination of your choosing. Your data delivery options are outlined in our Data on Demand article. These reports are designed to help simplify the process of internal reporting, but can also make it easy to share reports with sponsor banks. The report options include both summary reports and detailed reports that provide granular insights. This article will define each of the available reports and show you how to access them within your tenant. 

LoanPro gives you multiple options for getting data in and out of our platform and connecting to external systems, but many of our clients use a similar approach for reconciling line for credit data from LoanPro with their other tools, outlined in our  Line of Credit Reconciliation Strategy.

Available reports

Lending reports are scheduled to query the database daily and deliver outputs to your Report File Hub or chosen location. In most cases, the report will display data from the previous day (T-1) although some reports pull data from the previous month. 

Each available report is listed below. For an in-depth guide, click the report title. 

Loan tape

The ___ report provides a comprehensive overview of ___.

Sample (link)

Report values

Column NameDescription
  

Payment breakdown

The ___ report provides a comprehensive overview of ___.

Sample (link)

Report values

Column NameDescription
  

Reversed payments

The reverse payments report provides a comprehensive overview of payment transactions that have been reversed within loan accounts. It includes information about the original payment details, customers, collateral, and the specific reasons and timestamps associated with the reversal action.

Report values

Column NameDescription
AccountLoan display ID.
Primary CustomerFull name of the primary borrower.
CollateralA combination of collateral fields A, B, C, and D.
Reverse DateThe date the payment was reversed.
Log Date PSTThe creation timestamp of the payment in PST.
Payment IDThe payment display ID.
Extra TowardsDetermines how extra towards is applied on the payment.
Payment Type NameThe name or title of the Custom Payment Type Entity.
AmountThe amount of the payment.
Reversal Reason NameThe reason for payment reversal.
Nacha Return CodeThe return code processed by NACHA.
CreatedThe creation timestamp of the payment.

SQL Query Example

 with loan_info as (
    SELECT le.display_id account,
        le.id,
        case 
            when ce.customer_type = 'customer.type.company' then ce.company_name
            else concat(IFNULL(ce.first_name, '') ," ",IFNULL(ce.middle_name, '')," ",IFNULL(ce.last_name, '')) 
        end primary_customer,
        CONCAT(IFNULL(col.a, '')," ",col.b," ",IFNULL(col.c, '')," ",IFNULL(col.d, '')) AS collateral
    from loan_entity le
        left join loan__customer lc on le.id = lc.loan_id and lc.customer_role = "loan.customerRole.primary"
        left join customer_entity ce on ce.id = lc.customer_id
        left join collateral_entity col on col.loan_id = le.id      
)
select li.account,
    li.primary_customer,
    li.collateral, 
    pe.reverse_date,
    DATE(CONVERT_TZ(pe.created, 'UTC', 'America/Los_Angeles')) AS log_date_pst,
    pe.display_id as payment_id,
    CASE
        WHEN pe.extra LIKE '%principalonly' THEN 'Principal Only'
        WHEN pe.extra IN ('payment.extra.tx.classic', 'payment.extra.tx.classicv1', 'payment.extra.tx.classicv2') THEN 'N/A'
        WHEN pe.extra IN ('payment.extra.periods.next', 'periods.next') THEN 'Next Payment'
        WHEN pe.extra IN ('payment.extra.tx.principal', 'tx.principal') THEN 'Principal'
        ELSE pe.extra
    END AS extra_towards,
    cpte.title AS payment_type_name,
    cpme.title AS payment_method_name,
    pe.amount,
    CASE pe.reverse_reason
        WHEN 'payment.reverse.canadaErrorCode' THEN 'Other'
        WHEN 'payment.reverse.checkBounce' THEN 'Check Bounced'
        WHEN 'checkBounce' THEN 'Check Bounced'
        WHEN 'payment.reverse.clericalError' THEN 'Clerical Error'
        WHEN 'clericalError' THEN 'Clerical Error'
        WHEN 'payment.reverse.nachaErrorCode' THEN 'NACHA Error Code'
        WHEN 'nachaErrorCode' THEN 'NACHA Error Code'
        WHEN 'payment.reverse.nsf' THEN 'Insufficient Funds (NSF)'
        WHEN 'insufficientFunds' THEN 'Insufficient Funds (NSF)'
        WHEN 'payment.reverse.other' THEN 'Other'
        WHEN 'other' THEN 'Other'
        ELSE pe.reverse_reason
    END AS reversal_reason_name,
    pe.nacha_return_code,
    pe.created 
from payment_entity pe
    left join loan_info li on pe.entity_id = li.id
    left join custom_payment_type_entity cpte on pe.payment_type_id = cpte.id
    left join custom_payment_method_entity cpme on pe.payment_method_id = cpme.id
where pe.reverse_date is not NULL

Charges

The charges report provides a comprehensive overview of fees and assessments applied to loan accounts. It includes information about accounts, primary customers, collateral details, and a breakdown of specific charge statuses, amounts, and dates applied. 

Report values

Column NameDescription
AccountThe loan display ID.
IDThe ID of the borrower.
Primary CustomerThe full name of the primary borrower.
CollateralA combination of collateral fields A, B, C, and D.
Entity IDThe ID of the associated entity. This will be the loan ID.
StatusThe active status of the charge. 1 - Active, 0 - Inactive
AmountThe dollar amount of the charge.
Paid AmountThe dollar amount of the fee paid.
Log DateThe timestamp of when the charge was last updated.
Applied DateThe date the charge applies to the loan.
TypeThe ID of the charge type.
ApplicationThe charge application type.
InfoAdditional information about the charge.
Display IDThe Display ID of the charge.
Related Payment IDThe associated payment ID if applicable.

SQL Query Example

 with loan_info as (
    SELECT le.display_id account,
        le.id,
        case 
            when ce.customer_type = 'customer.type.company' then ce.company_name
            else concat(IFNULL(ce.first_name, '') ," ",IFNULL(ce.middle_name, '')," ",IFNULL(ce.last_name, '')) 
        end primary_customer,
        CONCAT(IFNULL(col.a, '')," ",col.b," ",IFNULL(col.c, '')," ",IFNULL(col.d, '')) AS collateral
    from loan_entity le
        left join loan__customer lc on le.id = lc.loan_id and lc.customer_role = "loan.customerRole.primary"
        left join customer_entity ce on ce.id = lc.customer_id
        left join collateral_entity col on col.loan_id = le.id      
),
charge_info as (
    select case 
        when ce.active = 1 then "Active"
            else "Reversed"
        end status,
        ce.amount,
        ce.paid_amount,
        ce.lastUpdated log_date,
        ce.apply_date applied_date, 
        ccte.title type,
        ce.charge_application_type Application,
        ce.info,
        ce.display_id,
        ce.related_payment_id,
        ce.entity_id,
        ce.lastUpdated
    from charge_entity ce 
        left join custom_charge_type_entity ccte  on ce.`type`  = ccte.id
    where ce.entity_type = "entity.loan"
)
SELECT li.account, 
    li.id, 
    li.primary_customer, 
    li.collateral,
    ci.entity_id ,
    ci.status,
    ci.amount,
    ci.paid_amount, 
    ci.log_date, 
    ci.applied_date,
    ci.`type`, 
    ci.Application, 
    ci.info, 
    ci.display_id, 
    ci.related_payment_id
from charge_info ci 
    left join loan_info li on ci.entity_id = li.id

Enhanced funding

The enhanced funding report provides a comprehensive overview of funding transactions associated with loan accounts. It includes information about accounts, primary customers, collateral descriptions, and the specific lifecycle of each funding transaction, including status tracking, payment methods, and any reversal details.

Report values

Column NameDescription
AccountThe ID of the loan.
IDThe ID of the Enhanced Funding.
Primary CustomerThe full name of the primary borrower.
CollateralA combination of collateral fields A, B, C, and D.
Transaction IDThe ID of the transaction.
Fund WhoThe type of the entity receiving funding.
CategoryThe category of funding.
MethodThe method funding is provided.
StatusThe status of the funding.
Cash Drawer IDThe ID of the cash drawer.
Cash Drawer TransactionThe cash drawer transaction ID.
Cash Drawer TX StatusThe cash drawer transaction status.
Cash Drawer Terminal IDThe ID of the cash drawer terminal.
Payment IDThe ID of the payment.
Agent IDThe ID of the agent.
Merchant ProcessorThe name of the merchant processor.
Merchant Payment StatusThe merchant processor payment status.
Authorization TypeThe type of funding authorization.
Reversal ReasonThe reason for reversing the payment.
Reversal DateThe date of the reversal.
Reversal CodeThe reversal code.
Reversal CommentThe text description of the reversal.
DateThe date the enhanced funding was applied.
AmountThe dollar amount of the enhanced funding.

SQL Query Example

 with loan_info as (
    SELECT le.display_id account,
        le.id,
        case 
            when ce.customer_type = 'customer.type.company' then ce.company_name
            else concat(IFNULL(ce.first_name, '') ," ",IFNULL(ce.middle_name, '')," ",IFNULL(ce.last_name, '')) 
        end primary_customer,
        CONCAT(IFNULL(col.a, '')," ",col.b," ",IFNULL(col.c, '')," ",IFNULL(col.d, '')) AS collateral
    from loan_entity le
        left join loan__customer lc on le.id = lc.loan_id and lc.customer_role = "loan.customerRole.primary"
        left join customer_entity ce on ce.id = lc.customer_id
        left join collateral_entity col on col.loan_id = le.id      
)
SELECT
    li.*,
    lfte.id AS transaction_id,
    IF(lfte.customer_id IS NOT NULL, 'Customer', 'Source Company') AS fund_who,
    fce.name AS 'category',
    CASE
        WHEN lfte.method = 'loan.funding.method.deposit' THEN 'Bank Account/ACH Deposit'
        WHEN lfte.method = 'loan.funding.method.credit' THEN 'Debit/Credit Card'
        WHEN lfte.method = 'loan.funding.method.transfer' THEN 'EFT Transfer'
        WHEN lfte.method = 'loan.funding.method.other' THEN 'Other'
    END
    AS 'Method',
    SUBSTRING_INDEX(lfte.status, ".", -1) AS 'Status',
    lfte.cash_drawer_id ,
    lfte.cash_drawer_tx_id cash_drawer_ransaction,
    lfte.cash_drawer_tx_status cash_drawer_tx_status,
    lfte.cash_drawer_terminal_id AS cash_drawer_terminal_id,
    lfte.payment_id ,
    lfte.agent_id ,
    lfte.merchant_tx_processor merchant_processor,
    lfte.merchant_tx_status merchant_payment_status,
    lfte.authorization_type,
    lfte.reversal_reason,
    lfte.reversal_date,
    lfte.reversal_code,
    lfte.reversal_comment,
    lfte.date,
    lfte.amount
FROM loan_funding_transaction_entity lfte 
    LEFT JOIN funding_category_entity fce ON fce.id = lfte.category_id
    left join loan_info li on li.id = lfte.loan_id 

New accounts

The new accounts report provides a comprehensive overview of newly established loan accounts. It includes information about the accounts, primary customers, collateral information, and the specific terms and conditions of the loan setup, such as interest rates, payment frequencies, and underwriting fee details.

Report values

Column NameDescription
AccountThe loan display ID.
Primary CustomerThe full name of the primary borrower.
CollateralA combination of collateral fields A, B, C, and D.
TermThe total number of payment periods on the loan.
Last UpdatedA timestamp of when the loan setup values were last updated.
First Due DateThe date the first payment is due.
Interest RateThe interest rate.
DiscountThe dollar amount of the discount.
UnderwritingThe dollar amount of the underwriting fee.
FrequencyThe frequency at which payments will come due.
ModificationThe ID of the loan modification the Loan Setup is associated to.

SQL Query Example

 with loan_info as (
    SELECT le.display_id account,
        le.id,
        case 
            when ce.customer_type = 'customer.type.company' then ce.company_name
            else concat(IFNULL(ce.first_name, '') ," ",IFNULL(ce.middle_name, '')," ",IFNULL(ce.last_name, '')) 
        end primary_customer,
        CONCAT(IFNULL(col.a, '')," ",col.b," ",IFNULL(col.c, '')," ",IFNULL(col.d, '')) AS collateral
    from loan_entity le
        left join loan__customer lc on le.id = lc.loan_id and lc.customer_role = "loan.customerRole.primary"
        left join customer_entity ce on ce.id = lc.customer_id
        left join collateral_entity col on col.loan_id = le.id      
),
new_account as (
    SELECT
        term,
        lastUpdated,
        first_due_date,
        interest_rate,
        discount,
        underwriting,
        frequency,
        Modification,
        loan_id
    FROM
        (
            SELECT
                lse.loan_term AS term,
                lse.lastUpdated,
                lse.first_payment_date AS first_due_date,
                lse.loan_rate AS interest_rate,
                lse.discount,
                lse.underwriting,
                SUBSTRING_INDEX(lse.payment_frequency,'.',-1) frequency,
                lse.loan_id,
                CASE
                    WHEN lse.mod_id = 0 THEN 'Original'
                    ELSE CAST(lse.mod_id AS CHAR) 
                END AS Modification,
                ROW_NUMBER() OVER (
                    PARTITION BY lse.loan_id
                    ORDER BY lse.mod_id DESC
                ) as rn 
            FROM
                loan_setup_entity lse
        ) AS RankedModifications
    WHERE
        rn = 1 
)
select li.account,
    li.primary_customer,
    li.collateral,
    na.term, 
    na.lastUpdated, 
    NULLIF(na.first_due_date, '0000-00-00 00:00:00') AS first_due_date,
    na.interest_rate, 
    na.discount, 
    na.underwriting, 
    na.frequency, 
    na.Modification
from new_account na left join loan_info li on na.loan_id = li.id
where na.lastUpdated = DATE_SUB(CURRENT_DATE(), interval 1 day)

Promises

The promises report provides a comprehensive overview of commitment tracking for loan accounts, specifically regarding promises to pay (PTP). It includes detailed information about accounts, primary customers, collateral information, and the status of specific promises, including fulfillment details and notes.

Report values

Column NameDescription
AccountThe loan display ID.
Primary CustomerThe full name of the primary borrower.
CollateralA combination of collateral fields A, B, C, and D.
Promise IDThe promise ID.
SubjectThe subject of the promise.
NoteAn attached note describing the promise.
AmountThe dollar amount of the promise.
TypeThe type of the promise.
FulfilledThe fulfilled status of the promise.
Due DateThe promise due date.
CreatedThe timestamp the promise was created.
Logged ByThe user who logged the promise
Fulfilled DateThe date the promise was fulfilled
Fulfilled ByThe user who marked the promise fulfilled.

SQL Query Example

 with loan_info as (
    SELECT le.display_id account,
        le.id,
        case 
            when ce.customer_type = 'customer.type.company' then ce.company_name
            else concat(IFNULL(ce.first_name, '') ," ",IFNULL(ce.middle_name, '')," ",IFNULL(ce.last_name, '')) 
        end primary_customer,
        CONCAT(IFNULL(col.a, '')," ",col.b," ",IFNULL(col.c, '')," ",IFNULL(col.d, '')) AS collateral
    from loan_entity le
        left join loan__customer lc on le.id = lc.loan_id and lc.customer_role = "loan.customerRole.primary"
        left join customer_entity ce on ce.id = lc.customer_id
        left join collateral_entity col on col.loan_id = le.id      
)
select li.account,
    li.primary_customer,
    li.collateral,
    lpe.id Promise_id,
    lpe.subject,
    lpe.note,
    lpe.amount,
    lpe.`type`,
    lpe.fulfilled,
    lpe.due_date,
    lpe.created,
    lpe.logged_by,
    lpe.fulfilled_date,
    lpe.fulfilled_by 
from loan_promise_entity lpe 
    left join loan_info li on lpe.loan_id = li.id

Charge-off Detail

The charge-off Detail report provides a comprehensive overview of loan accounts that have undergone a charge-off or recovery process. It includes information about accounts, primary customers, collateral information, and the specific financial breakdown of both the charge-off amounts and any subsequent recoveries applied.

Report values

Column NameDescription
AccountThe loan display ID.
Primary CustomerThe full name of the primary borrower.
CollateralA combination of collateral fields A, B, C, and D.
DateThe date of the charge off.
Payment IDThe associated payment ID.
Credit IDThe associated credit ID.
TypeThe type of the charge off.
Charge Off AmountThe dollar amount of the charge off.
Recovery AmountThe dollar amount of recovery.

SQL Query Example

 with loan_info as (
    SELECT le.display_id account,
        le.id,
        case 
            when ce.customer_type = 'customer.type.company' then ce.company_name
            else concat(IFNULL(ce.first_name, '') ," ",IFNULL(ce.middle_name, '')," ",IFNULL(ce.last_name, '')) 
        end primary_customer,
        CONCAT(IFNULL(col.a, '')," ",col.b," ",IFNULL(col.c, '')," ",IFNULL(col.d, '')) AS collateral
    from loan_entity le
        left join loan__customer lc on le.id = lc.loan_id and lc.customer_role = "loan.customerRole.primary"
        left join customer_entity ce on ce.id = lc.customer_id
        left join collateral_entity col on col.loan_id = le.id      
)
select
    li.account,
    li.primary_customer ,
    li.collateral,
    lct.`date` ,
    lct.payment_id,
    lct.credit_id,
    SUBSTRING_INDEX(lct.`type`, '.', -1) type,
    lct.charge_off_amount,
    lct.recovery_amount
from loan_chargeoff__transactions lct left join loan_info li on lct.entity_id = li.id
where lct.entity_type = 'Entity.Loan'

Charge off summary

The ___ report provides a comprehensive overview of ___.

Report values

Column NameDescription
  

SQL Query Example

 with loan_info as (
    SELECT le.display_id account,
        le.id,
        case 
            when ce.customer_type = 'customer.type.company' then ce.company_name
            else concat(IFNULL(ce.first_name, '') ," ",IFNULL(ce.middle_name, '')," ",IFNULL(ce.last_name, '')) 
        end primary_customer,
        CONCAT(IFNULL(col.a, '')," ",col.b," ",IFNULL(col.c, '')," ",IFNULL(col.d, '')) AS collateral
    from loan_entity le
        left join loan__customer lc on le.id = lc.loan_id and lc.customer_role = "loan.customerRole.primary"
        left join customer_entity ce on ce.id = lc.customer_id
        left join collateral_entity col on col.loan_id = le.id      
)
select
    li.account,
    li.primary_customer ,
    li.collateral,
    max(lct.`date`) latest_date,
    count(lct.payment_id) number_of_payment_id,
    count(lct.credit_id) number_of_credit_id,
    SUBSTRING_INDEX(lct.`type`, '.', -1) type,
    sum(lct.charge_off_amount) sum_charge_off_amount,
    sum(lct.recovery_amount) sum_recovery_amount
from loan_chargeoff__transactions lct left join loan_info li on lct.entity_id = li.id
where lct.entity_type = 'Entity.Loan' 
group by li.account,
    li.primary_customer,
    li.collateral,
    lct.`type`

Interest adjustment

The interest rate adjustments report provides a comprehensive overview of changes made to the interest rates of loan accounts. It includes information about the accounts, primary customers, collateral information, and the specifics of each adjustment, such as the date, category, and whether the rate was increased or decreased.

Report values

Column NameDescription
AccountThe loan display ID.
Primary CustomerThe full name of the primary borrower.
CollateralA combination of collateral fields A, B, C, and D.
TitleThe title of the interest rate adjustment.
Logged DateThe date the interest rate adjustment was logged.
Apply DateThe date the interest rate adjustment was applied.
CategoryThe category of the interest rate adjustment.
AmountThe dollar amount of the interest rate adjustment.
TypeThe type of the interest rate adjustment.

SQL Query Example

 with loan_info as (
    SELECT le.display_id account,
        le.id,
        case 
            when ce.customer_type = 'customer.type.company' then ce.company_name
            else concat(IFNULL(ce.first_name, '') ," ",IFNULL(ce.middle_name, '')," ",IFNULL(ce.last_name, '')) 
        end primary_customer,
        CONCAT(IFNULL(col.a, '')," ",col.b," ",IFNULL(col.c, '')," ",IFNULL(col.d, '')) AS collateral
    from loan_entity le
        left join loan__customer lc on le.id = lc.loan_id and lc.customer_role = "loan.customerRole.primary"
        left join customer_entity ce on ce.id = lc.customer_id
        left join collateral_entity col on col.loan_id = le.id      
)
SELECt li.account,
    li.primary_customer,
    li.collateral,
    irae.title as 'Title',
    irae.`date` as 'Logged Date',
    irae.`date` as 'Apply Date',
    ce.title as 'Category',
    irae.amount as 'Amount',
    SUBSTRING_INDEX(irae.`type`, '.', -1) as 'Type'
FROM interest_rate_adjustment_entity irae 
    left JOIN category_entity ce ON ce.id = irae.category_id and ce.entity_type = 'Entity.InterestAdjustment'
    left join loan_info li on irae.entity_id = li.id AND irae.entity_type = 'Entity.Loan'

Advancements

The advancements report provides a comprehensive overview of funds advanced to loan accounts after the initial funding event. It includes information about the accounts, primary customers, collateral information, and the specific breakdown of each advancement, including the amount, date, and how it was applied to the loan.

Report values

Column NameDescription
AccountThe loan display ID.
Primary CustomerThe full name of the primary borrower.
CollateralA combination of collateral fields A, B, C, and D.
IDThe ID of the advancement.
TitleThe title of the advancement.
Logged DateThe date the advancement was logged.
Apply DateThe apply date of the advancement.
TypeThe type of the advancement.
AmountThe amount of the advancement.
CategoryThe category of the advancement.
ApplicationThe application type of the advancement.

SQL Query Example

 with loan_info as (
    SELECT le.display_id account,
        le.id,
        case 
            when ce.customer_type = 'customer.type.company' then ce.company_name
            else concat(IFNULL(ce.first_name, '') ," ",IFNULL(ce.middle_name, '')," ",IFNULL(ce.last_name, '')) 
        end primary_customer,
        CONCAT(IFNULL(col.a, '')," ",col.b," ",IFNULL(col.c, '')," ",IFNULL(col.d, '')) AS collateral
    from loan_entity le
        left join loan__customer lc on le.id = lc.loan_id and lc.customer_role = "loan.customerRole.primary"
        left join customer_entity ce on ce.id = lc.customer_id
        left join collateral_entity col on col.loan_id = le.id      
)
SELECT li.account,
    li.primary_customer,
    li.collateral,
    lae.id,
    lae.title,
    lae.created logged_date,
    lae.`date` apply_date,
    "Advancment" type,
    lae.amount,
    ace.title category,
    "Principal" application
FROM loan_advancement_entity lae 
    left join advance_category_entity ace on lae.category = ace.id
    left join loan_info li on li.id = lae.entity_id 
where lae.entity_type = "Entity.Loan"

Credits

The credits report provides a comprehensive overview of credit transactions applied to loan accounts. It includes information about the accounts, primary customers, collateral information, and the breakdown of credit amounts applied to interest, principal, discounts, and fees.

Report Values

Column NameDescription
AccountThe loan display ID.
Primary CustomerThe full name of the primary borrower.
CollateralA combination of Collateral fields A, B, C, and D.
IDThe ID of the credit.
TitleThe title of the credit.
Logged DateThe timestamp of when the credit was logged.
Apply DateThe date the credit was applied.
CreditA hardcoded string returning "credit".
AmountThe total dollar amount of the credit.
CategoryThe category of the credit.
ApplicationThe application type of the credit.
InterestPortions of the transaction applied to the loan's interest.
PrincipalPortions of the transaction applied to the loan's principal balance.
DiscountPortions of the transaction applied to the loan's discount.
FeesPortions of the transaction applied to loan fees; relevant for payments, forecasted payments, or credits.
DateThe effective date the transaction applies to the loan account.

SQL Query Example

with loan_info as (
    SELECT le.display_id account,
        le.id,
        case 
            when ce.customer_type = 'customer.type.company' then ce.company_name
            else concat(IFNULL(ce.first_name, '') ," ",IFNULL(ce.middle_name, '')," ",IFNULL(ce.last_name, '')) 
        end primary_customer,
        CONCAT(IFNULL(col.a, '')," ",col.b," ",IFNULL(col.c, '')," ",IFNULL(col.d, '')) AS collateral
    from loan_entity le
        left join loan__customer lc on le.id = lc.loan_id and lc.customer_role = "loan.customerRole.primary"
        left join customer_entity ce on ce.id = lc.customer_id
        left join collateral_entity col on col.loan_id = le.id      
),
credit as ( 
    select lce.id,
        lce.title,
        lce.created logged_date,
        lce.date apply_date,
        "credit" credit,
        lce.amount,
        cce.title category,
        cpte.title application
    from loan_credit_entity lce 
        left join credit_category_entity cce on lce.category = cce.id 
        left join custom_payment_type_entity cpte on lce.payment_type = cpte.id 
)
select li.account,
    li.primary_customer, 
    li.collateral, 
    c.id, 
    c.title, 
    c.logged_date, 
    c.apply_date, 
    c.credit, 
    c.amount, 
    c.category, 
    c.application,
    tx.payment_i interest,
    tx.payment_p prinicpal,
    tx.payment_d discount,  
    tx.payment_f fees,
    tx.`date` 
from loan_tx tx 
    left join credit c on tx.payment_id = c.id
    left join loan_info li on tx.entity_id = li.id
where tx.`type` = "credit"
    and tx.entity_type = "Entity.Loan"

Escrow transaction

The escrow transaction report provides a comprehensive overview of escrow activity across loan accounts. It includes detailed information about the accounts, primary customers, collateral details, and a full breakdown of escrow transactions, including deposits, withdrawals, vendor information, and ending balances.

Report Values

Column NameDescription
AccountThe loan display ID.
Primary CustomerThe full name of the primary borrower.
CollateralA combination of Collateral fields A, B, C, and D
Escrow NameThe name or title of the escrow transaction.
DateThe date the transaction occurred.
Transaction TypeThe type of transaction, such as a deposit or withdrawal.
AmountThe total dollar amount of the escrow transaction.
CategoryThe category of the escrow transaction.
VendorThe name of the vendor associated with the transaction.
DescriptionA text description providing additional context for the transaction.
Escrow BalanceThe ending balance of the escrow account following the transaction.

SQL Query Example

with loan_info as (
    SELECT le.display_id account,
        le.id,
        case 
            when ce.customer_type = 'customer.type.company' then ce.company_name
            else concat(IFNULL(ce.first_name, '') ," ",IFNULL(ce.middle_name, '')," ",IFNULL(ce.last_name, '')) 
        end primary_customer,
        CONCAT(IFNULL(col.a, '')," ",col.b," ",IFNULL(col.c, '')," ",IFNULL(col.d, '')) AS collateral
    from loan_entity le
        left join loan__customer lc on le.id = lc.loan_id and lc.customer_role = "loan.customerRole.primary"
        left join customer_entity ce on ce.id = lc.customer_id
        left join collateral_entity col on col.loan_id = le.id      
)
select li.account,
    li.primary_customer,
    li.collateral,
    ese.title escrow_namem,
    ete.`date`,
    substring_index(ete.`type`,'.',-1) trasaction_type,
    ete.amount,
    etce.title category,
    ve.vendor_name vendor,
    ete.description,
    et.balance escrow_balance
from escrow_transaction_entity ete 
    left join vendor_entity ve on ete.vendor_id = ve.id
    left join escrow_subset_entity ese on ete.subset = ese.id
    left join escrow_tx_category_entity etce on ete.category = etce.id
    left join escrow__transactions et on et.escrow_transaction_id = ete.id
    left join loan_info li on li.id = ete.loan_id

APD adjustments

The APD adjustments report provides a comprehensive overview of Amount Past Due (APD) adjustments applied to loan accounts. It includes information about the accounts, primary customer names, collateral descriptions, and the specific nature of each adjustment, such as the date, type, and dollar amount applied.

Report Values

Column NameDescription
AccountLoan display ID. This ID is assigned by the user and is displayed as the ID for the loan inside the LoanPro user interface.
Primary CustomerThe full name of the primary borrower.
CollateralA combination of collateral fields A, B, C, and D.
Apply DateThe date the APD adjustment is applied to the loan.
TypeThe category of the adjustment.
Dollar AmountThe dollar amount of the APD adjustment.

SQL Query Example

with loan_info as (
    SELECT le.display_id account,
        le.id,
        case 
            when ce.customer_type = 'customer.type.company' then ce.company_name
            else concat(IFNULL(ce.first_name, '') ," ",IFNULL(ce.middle_name, '')," ",IFNULL(ce.last_name, '')) 
        end primary_customer,
        CONCAT(IFNULL(col.a, '')," ",col.b," ",IFNULL(col.c, '')," ",IFNULL(col.d, '')) AS collateral
    from loan_entity le
        left join loan__customer lc on le.id = lc.loan_id and lc.customer_role = "loan.customerRole.primary"
        left join customer_entity ce on ce.id = lc.customer_id
        left join collateral_entity col on col.loan_id = le.id      
)
select li.account,
    li.primary_customer,
    li.collateral,
    laae.date as apply_date,
    CASE laae.type
        WHEN 'loan.apd.adjust.type.fixed' THEN 'Fixed Dollar Amount'
        WHEN 'loan.apd.adjust.type.zero' THEN 'Zero Balance'
    END as type,
    laae.dollar_amount
from loan_apd_adjustment_entity laae 
    join loan_info li on laae.entity_id = li.id
where laae.deleted = 0

DPD adjustments

The DPD adjustments report provides a comprehensive overview of Days Past Due (DPD) adjustments applied to loan accounts. It includes information about the accounts, primary customers, collateral information, and the specific adjustment dates to track account status changes.

Report Values

Column NameDescription
AccountThe loan display ID.
Primary CustomerThe full name of the primary borrower
CollateralA combination of collateral fields A, B, C, and D.
Apply DateThe date the DPD adjustment is applied to the loan.

SQL Query Example

 with loan_info as (
    SELECT le.display_id account,
        le.id,
        case 
            when ce.customer_type = 'customer.type.company' then ce.company_name
            else concat(IFNULL(ce.first_name, '') ," ",IFNULL(ce.middle_name, '')," ",IFNULL(ce.last_name, '')) 
        end primary_customer,
        CONCAT(IFNULL(col.a, '')," ",col.b," ",IFNULL(col.c, '')," ",IFNULL(col.d, '')) AS collateral
    from loan_entity le
        left join loan__customer lc on le.id = lc.loan_id and lc.customer_role = "loan.customerRole.primary"
        left join customer_entity ce on ce.id = lc.customer_id
        left join collateral_entity col on col.loan_id = le.id      
)
select li.account,
    li.primary_customer,
    li.collateral,
    ldae.date as apply_date
from loan_dpd_adjustment_entity ldae
    join loan_info li on ldae.entity_id = li.id
where ldae.deleted = 0

Due date changes

The due date changes report provides a comprehensive overview of manual adjustments made to loan payment due dates. It includes information about the accounts, primary customers, and a tracking history of original versus new due dates to maintain an accurate audit trail of schedule modifications.

Report values

Column NameDescription
AccountThe loan display ID.
Primary CustomerThe full name of the primary borrower.
CollateralA combination of collateral fields A, B, C, and D.
IDThe ID of the due date change.
Original DateThe due date prior to the changed date in the schedule.
New DateThe date that the changed date was changed to.
Changed DateThe due date from the schedule that was changed.
Last UpdatedTimestamp of when the entity was last updated in the system.

SQL Query Example

 with loan_info as (
    SELECT le.display_id account,
        le.id,
        case 
            when ce.customer_type = 'customer.type.company' then ce.company_name
            else concat(IFNULL(ce.first_name, '') ," ",IFNULL(ce.middle_name, '')," ",IFNULL(ce.last_name, '')) 
        end primary_customer,
        CONCAT(IFNULL(col.a, '')," ",col.b," ",IFNULL(col.c, '')," ",IFNULL(col.d, '')) AS collateral
    from loan_entity le
        left join loan__customer lc on le.id = lc.loan_id and lc.customer_role = "loan.customerRole.primary"
        left join customer_entity ce on ce.id = lc.customer_id
        left join collateral_entity col on col.loan_id = le.id      
)
select li.account,
    li.primary_customer,
    li.collateral,
    ldce.id,
    ldce.original_date,
    ldce.new_date,
    ldce.changed_date,
    ldce.lastUpdated 
from loan_duedate_change_entity ldce left join loan_info li on ldce.entity_id = li.id
    where ldce.entity_type = 'Entity.Loan'

Suspend/Resume interest

The suspend/resume interest report provides a comprehensive overview of actions taken to halt or restart interest accrual on loan accounts. It includes information about the accounts, primary customers, collateral, and the specific date and type of interest status change.

Report values

Column NameDescription
AccountThe loan display ID.
Primary CustomerThe full name of the primary borrower.
CollateralA combination of collateral fields A, B, C, and D
DateThe specific date the transaction (suspend or resume) occurred.
TypeIndicates the intended action for interest.

SQL Query Example

 with loan_info as (
    SELECT le.display_id account,
        le.id,
        case 
            when ce.customer_type = 'customer.type.company' then ce.company_name
            else concat(IFNULL(ce.first_name, '') ," ",IFNULL(ce.middle_name, '')," ",IFNULL(ce.last_name, '')) 
        end primary_customer,
        CONCAT(IFNULL(col.a, '')," ",col.b," ",IFNULL(col.c, '')," ",IFNULL(col.d, '')) AS collateral
    from loan_entity le
        left join loan__customer lc on le.id = lc.loan_id and lc.customer_role = "loan.customerRole.primary"
        left join customer_entity ce on ce.id = lc.customer_id
        left join collateral_entity col on col.loan_id = le.id      
)
select li.account,
    li.primary_customer,
    li.collateral,
    lt.`date`,
    lt.title type 
from loan_tx lt left join loan_info li on lt.entity_id = li.id 
where lt.`type` in ('suspendInterest','resumeInterest')
    and lt.entity_type = "Entity.Loan"

Monthly forecasted payments

The ___ report provides a comprehensive overview of ___.

Report values

Column NameDescription
  

SQL Query Example

 with loan_info as (
	SELECT le.display_id account,
		le.id,
		concat(IFNULL(ce.first_name, '') ," ",IFNULL(ce.middle_name, '')," ",IFNULL(ce.last_name, '')) primary_customer,
		CONCAT(IFNULL(col.a, '')," ",col.b," ",IFNULL(col.c, '')," ",IFNULL(col.d, '')) AS collateral
	from loan_entity le
		left join loan__customer lc on le.id = lc.loan_id and lc.customer_role = "loan.customerRole.primary"
		left join customer_entity ce on ce.id = lc.customer_id
		left join collateral_entity col on col.loan_id = le.id 		
)
select li.account,
	li.primary_customer,
	li.collateral,
	date(lt.`date`) as "Date",
	lt.payment_amount as "Amount",
	lt.payment_i as "Interest",
	lt.payment_p as "Principal",
	lt.payment_d as "Discount",
	lt.payment_f as "Fees",
	lt.payment_e as "Escrow"
from
	loan_tx lt
join loan_entity le 
	on	le.id = lt.entity_id
	and lt.entity_type = 'Entity.Loan'
left join loan_info li on lt.entity_id = li.id 
where lt.type = 'forecastedPayment' 
	and lt.date between
    date_format(curdate(), '%Y-%m-01')
	    and last_day(curdate())
		and le.deleted = 0
group by
	lt.id
order by
	lt.date

Daily snapshot

The daily snapshot report provides a comprehensive overview of the current status and financial health of all loan accounts as of a specific date. It includes information about the account, primary customer information, current balances (principal and payoff), delinquency tracking (DPD and amount past due), and credit reporting statuses.

Report values

Column NameDescription
Archive DateThe current date for which the snapshot was generated.
AccountThe loan display ID.
Primary CustomerThe full name of the primary borrower.
CollateralA combination of collateral fields A, B, C, and D.
Archive StoplightThe color of the stoplight for the loan, based on user-defined rules.
Archive PrincipalThe unpaid portion of the principal balance on the loan.
Archive AgingThe number of days elapsed since the loan's contract date.
Archive PDThe total amount currently due on the loan.
Archive PD 30The portion of the amount due that has been past due for more than 30 days.
Archive DPDDays Past Due. The number of days since the earliest unpaid amount came due.
Archive StatusThe current title or name of the loan status.
Archive Credit StatusThe credit status that will be reported if the loan is included in credit reporting.
Archive PayoffThe total amount required to pay the loan off, including principal, interest, fees, and escrow.
Archive Per DiemThe calculated daily interest amount based on the principal balance and interest rate.
Archive ChargeoffThe total amount that has been charged off on the loan.
Archive Last CurrentThe most recent date on which the loan had no unpaid amount due.
Archive ActivityThe timestamp of the last manual update made to the loan by a user.

SQL Query Example

 with loan_info as (
    SELECT le.display_id account,
        le.id,
        case 
            when ce.customer_type = 'customer.type.company' then ce.company_name
            else concat(IFNULL(ce.first_name, '') ," ",IFNULL(ce.middle_name, '')," ",IFNULL(ce.last_name, '')) 
        end primary_customer,
        CONCAT(IFNULL(col.a, '')," ",col.b," ",IFNULL(col.c, '')," ",IFNULL(col.d, '')) AS collateral
    from loan_entity le
        left join loan__customer lc on le.id = lc.loan_id and lc.customer_role = "loan.customerRole.primary"
        left join customer_entity ce on ce.id = lc.customer_id
        left join collateral_entity col on col.loan_id = le.id      
)
select CURRENT_DATE() archive_date, 
    li.account, 
    li.primary_customer primary_customer, 
    li.collateral, 
    CASE 
        when lsa.stoplight like '%stoplight.display.red' THEN 'red'
        when lsa.stoplight like '%stoplight.display.green' THEN 'green'
        when lsa.stoplight like '%stoplight.display.yellow' THEN 'yellow'
    END as archive_stoplight,
    lsa.principal_balance archive_principal,
    lsa.loan_age archive_aging, 
    lsa.amount_due archive_PD,
    lsa.amount_past_due_30 archive_PD_30, 
    lsa.days_past_due archive_DPD,
    lsa.loan_status_text archive_status,
    CASE
        WHEN lsa.credit_status LIKE '%loan.creditstatus.11' THEN '11 – Current Account (0-29 days past the due date)'
        WHEN lsa.credit_status LIKE '%loan.creditstatus.71' THEN '71 – Account 30-59 days past the due date'
        WHEN lsa.credit_status LIKE '%loan.creditstatus.78' THEN '78 – Account 60-89 days past due date'
        WHEN lsa.credit_status LIKE '%loan.creditstatus.80' THEN '80 – Account 90 – 119 days past due date'
        WHEN lsa.credit_status LIKE '%loan.creditstatus.82' THEN '82 – Account 120 – 149 days past due date'
        WHEN lsa.credit_status LIKE '%loan.creditstatus.83' THEN '83 – Account 150 – 179 days past due date'
        WHEN lsa.credit_status LIKE '%loan.creditstatus.84' THEN '84 – Account 180 days or more past the due date'
        WHEN lsa.credit_status LIKE '%loan.creditstatus.0'  THEN '0 – Auto – System managed status'
        WHEN lsa.credit_status LIKE '%loan.creditstatus.05' THEN '05 – Account transferred to another office'
        WHEN lsa.credit_status LIKE '%loan.creditstatus.13' THEN '13 – Paid or closed account/zero balance'
        WHEN lsa.credit_status LIKE '%loan.creditstatus.99' THEN '99 – Do Not Send'
        WHEN lsa.credit_status LIKE '%loan.creditstatus.61' THEN '61 – Account paid in full, was a voluntary surrender'
        WHEN lsa.credit_status LIKE '%loan.creditstatus.62' THEN '62 – Account paid in full, was a collection account'
        WHEN lsa.credit_status LIKE '%loan.creditstatus.63' THEN '63 – Account paid in full, was repossession'
        WHEN lsa.credit_status LIKE '%loan.creditstatus.93' THEN '93 – Account assigned to internal or external collections'
        WHEN lsa.credit_status LIKE '%loan.creditstatus.95' THEN '95 – Voluntary Surrender'
        WHEN lsa.credit_status LIKE '%loan.creditstatus.96' THEN '96 – Merchandise was repossessed; there may be a balance due'
        WHEN lsa.credit_status LIKE '%loan.creditstatus.64' THEN '64 – Account paid in full, was a write-off'
        WHEN lsa.credit_status LIKE '%loan.creditstatus.97' THEN '97 – Unpaid balance reported as a loss (write-off)'
        WHEN lsa.credit_status LIKE '%loan.creditstatus.DA' THEN 'DA – Deletes entire account (for reasons other than fraud)'
        WHEN lsa.credit_status LIKE '%loan.creditstatus.DF' THEN 'DF – Delete entire account due to confirmed fraud (fraud investigation completed)'
    END AS archive_credit_status,
    lsa.payoff archive_payoff, 
    lsa.perdiem archive_per_diem,
    lsa.net_charge_off archive_chargeoff, 
    lsa.date_last_current archive_last_current,
    lsa.last_human_activity archive_activity
from loan_status_archive lsa 
left join loan_info li on lsa.loan_id = li.id
group by lsa.loan_id 

Reverse calculated

The reverse calculation report provides a comprehensive overview of loan accounts with a focus on reconciling balances and aging. It includes information about accounts, customer details, current principal balances, and a detailed breakdown of amounts past due across interest, principal, and fees.

Report values

Column NameDescription
AccountThe loan display ID.
Primary CustomerThe full name of the primary borrower.
CollateralA combination of collateral fields A, B, C, and D.
Principal BalanceThe current total unpaid principal balance on the loan.
Payoff FeesTotal fees required to be paid as part of a full loan payoff.
AgingThe age of the loan account, typically represented in days.
PDThe total amount past due (specifically for a 30-day period).
DPDDays Past Due. The number of days since the earliest unpaid amount came due.
Due DiscountThe amount of discount currently due on the account.
Due InterestThe total amount of interest that is currently due and unpaid.
Due FeesThe total amount of fees that are currently due and unpaid.
Due PrincipalThe portion of the principal balance that is currently due and unpaid.
Daily Accrued InterestThe specific amount of interest that accrues on the loan account daily.

SQL Query Example

 with loan_info as (
    SELECT le.display_id account,
        le.id,
        case 
            when ce.customer_type = 'customer.type.company' then ce.company_name
            else concat(IFNULL(ce.first_name, '') ," ",IFNULL(ce.middle_name, '')," ",IFNULL(ce.last_name, '')) 
        end primary_customer,
        CONCAT(IFNULL(col.a, '')," ",col.b," ",IFNULL(col.c, '')," ",IFNULL(col.d, '')) AS collateral
    from loan_entity le
        left join loan__customer lc on le.id = lc.loan_id and lc.customer_role = "loan.customerRole.primary"
        left join customer_entity ce on ce.id = lc.customer_id
        left join collateral_entity col on col.loan_id = le.id      
)
select li.account,
    li.primary_customer,
    li.collateral,
    lrsa.principal_balance,
    lrsa.payoff_fees,
    lrsa.loan_age aging,
    lrsa.amount_past_due_30 pd,
    lrsa.days_past_due as dpd,
    lrsa.due_discount,
    lrsa.due_interest,
    lrsa.due_fees,
    lrsa.due_principal,
    lrsa.daily_accrued_interest
from loan_reverse_status_archive lrsa left join loan_info li on lrsa.loan_id = li.id

Calculated interest accrual

The daily interest accrual report provides a comprehensive overview of interest generated across loan accounts on a daily basis. It includes information about the account, primary customer names, collateral descriptions, and a breakdown of both the current principal due and the exact interest amount accrued for the reporting date.

Report values

Column NameDescription
DateThe current date for which the interest accrual is being reported.
AccountThe loan display ID.
Primary CustomerThe full name of the primary borrower.
CollateralA combination of collateral fields A, B, C, and D.
PrincipalThe amount of principal due on the loan, representing the amount that has come due but has not yet been paid.
Interest Accrued TodayThe actual amount of interest that accrued on the loan for the reporting date.

SQL Query Example

 with loan_info as (
    SELECT le.display_id account,
        le.id,
        concat(IFNULL(ce.first_name, '') ," ",IFNULL(ce.middle_name, '')," ",IFNULL(ce.last_name, '')) primary_customer,
        CONCAT(IFNULL(col.a, '')," ",col.b," ",IFNULL(col.c, '')," ",IFNULL(col.d, '')) AS collateral
    from loan_entity le
        left join loan__customer lc on le.id = lc.loan_id and lc.customer_role = "loan.customerRole.primary"
        left join customer_entity ce on ce.id = lc.customer_id
        left join collateral_entity col on col.loan_id = le.id      
)
select CURRENT_DATE(),
    li.account,
    li.primary_customer,
    li.collateral,
    lsa.due_principal principal,
    lsa.interest_accrued_today
from loan_status_archive lsa left join loan_info li on lsa.loan_id = li.id
where lsa.`date` = CURRENT_DATE()

Delinquency detail

The delinquency detail report provides a comprehensive overview of overdue loan accounts and their current financial state. It includes information about accounts, primary customers, collateral details, and a breakdown of amounts past due to assist in collections and risk management.

Report values

Column NameDescription
AccountThe loan display ID.
Primary CustomerThe full name of the primary borrower.
PayoffThe payoff amount on the loan. This includes all principal, interest, fees, and escrow that must be paid in order to pay the loan off.
CollateralA combination of collateral field A, B, C, and D.
Days Past DueThe number of days the loan is past due.
Amount Due

The amount due on the loan, meaning the amount that has come due, but not yet been paid. 

Because the due interest includes any interest accrued since the most-recent payment came due, adding up the due components may give a different number than the amount due.

Amount Past Due 30The amount that has been past due for more than 30 days. This amount came due with payments, at least 30 days ago, but hasn't been paid.
Next Payment DateThe next date on which a payment will come due. This date will always be in the future of the date for this record.
P I Past DueThe sum of due principal and due interest.

SQL Query Example

 with loan_info as (
	SELECT le.display_id account,
		le.id,
		case 
			when ce.customer_type = 'customer.type.company' then ce.company_name
			else concat(IFNULL(ce.first_name, '') ," ",IFNULL(ce.middle_name, '')," ",IFNULL(ce.last_name, '')) 
		end primary_customer,
		CONCAT(IFNULL(col.a, '')," ",col.b," ",IFNULL(col.c, '')," ",IFNULL(col.d, '')) AS collateral
	from loan_entity le
		left join loan__customer lc on le.id = lc.loan_id and lc.customer_role = "loan.customerRole.primary"
		left join customer_entity ce on ce.id = lc.customer_id
		left join collateral_entity col on col.loan_id = le.id 		
)
select li.account, 
	li.primary_customer, 
	lsa.payoff,
	li.collateral, 
	lsa.days_past_due,
	lsa.amount_due,
	lsa.amount_past_due_30,
	lsa.next_payment_date,
	(lsa.due_principal +lsa.due_interest) p_i_past_due
from loan_status_archive lsa 
	left join loan_info li on lsa.loan_id = li.id
where lsa.`date` = CURRENT_DATE()

Delinquency summary

The delinquency summary report provides a comprehensive overview of overdue loan accounts aggregated by delinquency severity. It includes information about the total number of accounts, cumulative payoff amounts, and a detailed breakdown of amounts past due within specific days-past-due (DPD) groups to assist in portfolio risk assessment.

Report values

Column NameDescription
Days Past Due GroupA classification of the loan's delinquency status based on the number of days elapsed since the oldest unpaid scheduled payment. This category groups accounts into "buckets" to represent the severity of the payment delay.
Total AccountsThe count of unique loan records falling within the specific Days Past Due Group.
Total PayoffThe sum of the "Payoff" for all loans in the group. This is the payoff amount on the loan, including all principal, interest, fees, and escrow required for full satisfaction.
Total Amount DueThe sum of the "amount due" for all loans in the group. This represents the total amount that has come due but remains unpaid.
Total Amount Past Due 30The sum of the "amount past due" for all loans in the group that has been overdue for more than 30 days.
Total P I Past DueThe sum of the "principal and interest due" for all loans in the group, totaling due principal and due interest.

SQL Query Example

 with loan_info as (
    SELECT le.display_id account,
        le.id,
        case 
            when ce.customer_type = 'customer.type.company' then ce.company_name
            else concat(IFNULL(ce.first_name, '') ," ",IFNULL(ce.middle_name, '')," ",IFNULL(ce.last_name, '')) 
        end primary_customer,
        CONCAT(IFNULL(col.a, '')," ",col.b," ",IFNULL(col.c, '')," ",IFNULL(col.d, '')) AS collateral
    from loan_entity le
        left join loan__customer lc on le.id = lc.loan_id and lc.customer_role = "loan.customerRole.primary"
        left join customer_entity ce on ce.id = lc.customer_id
        left join collateral_entity col on col.loan_id = le.id      
)
SELECT
    CASE
        WHEN lsa.days_past_due = 0 THEN 'Current (0 Days)'
        WHEN lsa.days_past_due BETWEEN 1 AND 14 THEN '1-14 Days Past Due'
        WHEN lsa.days_past_due BETWEEN 15 AND 29 THEN '15-29 Days Past Due'
        WHEN lsa.days_past_due BETWEEN 30 AND 59 THEN '30-59 Days Past Due'
        WHEN lsa.days_past_due BETWEEN 60 AND 89 THEN '60-89 Days Past Due'
        WHEN lsa.days_past_due >= 90 THEN '90+ Days Past Due'
    END AS days_past_due_group,
    COUNT(li.account) AS total_accounts,
    SUM(lsa.payoff) AS total_payoff,
    SUM(lsa.amount_due) AS total_amount_due,
    SUM(lsa.amount_past_due_30) AS total_amount_past_due_30,
    SUM(lsa.due_principal + lsa.due_interest) AS total_p_i_past_due
FROM
    loan_status_archive lsa
LEFT JOIN
    loan_info li ON lsa.loan_id = li.id
WHERE
    lsa.`date` = CURRENT_DATE()
GROUP BY
    days_past_due_group

Paid off loans

The paid off report provides a comprehensive overview of loan accounts that have reached a closed status, typically through full satisfaction of the debt. It includes detailed information regarding accounts, primary customer names, collateral details, and a complete financial breakdown of the final payments, including principal, interest, fees, and escrow amounts applied upon payoff.

Report values

Column NameDescription
AccountThe loan display ID.
IDThe loan system ID.
Primary CustomerThe full name of the primary borrower.
CollateralA combination of collateral fields A, B, C, and D.
Loan ProductThis field contains an array of the IDs of the portfolios with which the loan is associated.
Payoff DateThe specific date the account was closed, if applicable.
Payoff ReasonThe loan sub-status associated with the loan.
Principal PaidThe portion of the transaction amount applied specifically to the loan's principal balance.
Interest PaidThe portion of the transaction amount applied specifically to the loan's interest.
Fees PaidThe portion of the transaction amount applied specifically to loan fees.
Escrow PaidThe portion of the transaction amount applied specifically to the loan's escrow account.
Discount PaidThe portion of the transaction amount applied specifically to the loan's discount.
Total ReceivedThe total amount of the final transaction received.
YTD InterestThe year-to-date interest applied to the loan through this transaction.
Original Loan AmountThe initial principal amount advanced, excluding the underwriting fee.
Original Final MaturityThe originally-calculated final payment date for the loan term.

SQL Query Example

 with loan_info as (
    SELECT le.display_id account,
        le.id,
        case 
            when ce.customer_type = 'customer.type.company' then ce.company_name
            else concat(IFNULL(ce.first_name, '') ," ",IFNULL(ce.middle_name, '')," ",IFNULL(ce.last_name, '')) 
        end primary_customer,
        CONCAT(IFNULL(col.a, '')," ",col.b," ",IFNULL(col.c, '')," ",IFNULL(col.d, '')) AS collateral
    from loan_entity le
        left join loan__customer lc on le.id = lc.loan_id and lc.customer_role = "loan.customerRole.primary"
        left join customer_entity ce on ce.id = lc.customer_id
        left join collateral_entity col on col.loan_id = le.id      
),
closed_off_loans as (
    select lse.loan_id,
        lse.closed_date Payoff_Date,
        lsa.portfolio_breakdown Loan_Product,
        lsa.loan_sub_status_text Payoff_Reason
    from loan_settings_entity lse 
        left join loan_status_archive lsa on lse.loan_id = lsa.loan_id 
            and lse.closed_date = lsa.`date`
    where lse.closed_date is not null and lse.closed_date != '0000-00-00'
),
payment_breakdown as (
    select 
        lt.entity_id,
        sum(lt.payment_p) Principal_Paid,           
        sum(lt.payment_i) Interest_Paid,     
        sum(lt.payment_f) Fees_Paid,                    
        sum(lt.payment_e) Escrow_Paid,  
        sum(lt.payment_d) Discount_Paid,
        sum(lt.payment_amount) Total_Received,
        sum(
            case 
                when year(lt.`date`) = YEAR(CURDATE()) then lt.payment_i
                else 0
            end
            ) YTD_Interest
    from loan_tx lt 
    where lt.entity_type = 'Entity.Loan'
    group by lt.entity_id 
),
og_loan_amt as (
    select *
    from
        (
            SELECT
                lse.loan_id,
                (lse.underwriting +lse.loan_amount) Original_loan_amount,
                lse.orig_final_payment_date Original_final_maturity,
                ROW_NUMBER() OVER (
                    PARTITION BY lse.loan_id
                    ORDER BY lse.mod_id DESC
                ) as rn 
            FROM
                loan_setup_entity lse
        ) AS RankedModifications
    WHERE
        rn = 1 
)
select li.account,
    li.id,
    li.primary_customer,
    li.collateral,
    cof.Loan_Product,
    cof.Payoff_Date,
    cof.payoff_reason,
    pb.Principal_Paid, 
    pb.Interest_Paid, 
    pb.Fees_Paid, 
    pb.Escrow_Paid, 
    pb.Discount_Paid, 
    pb.Total_Received, 
    pb.YTD_Interest,
    ola.Original_loan_amount, 
    ola.Original_final_maturity
from closed_off_loans cof 
    left join loan_info li on cof.loan_id = li.id 
    left join payment_breakdown pb on cof.loan_id = pb.entity_id
    left join og_loan_amt ola on  cof.loan_id = ola.loan_id 

Accessing reports

To access and begin using line of credit reports, you must reach out to your LoanPro contact. Once you’ve set up this reporting feature, the reports will be uploaded to the location of your choosing. The options include:

  • Report File Hub (preferred)
  • Secure File Transfer Protocol (SFTP) connection
  • Google Drive

If you choose a delivery method other than the Report File Hub, the reports will be encrypted before they are delivered. The following file types are supported: .xls, .csv, .pdf, .txt, .jpeg, and .png. For a deeper explanation of each option, read about our delivery options here

Report File Hub

Using the Report File Hub is our preferred method of delivery. It is a secure, easy-to-use location housed within the software. To open the Report File Hub, navigate to Reports > Administration > Report File Hub.

ab0ce897c84c76782b6e0ea593dd5e2f8ea50007789764f869db42f5561f082c.png

In the Report File Hub, you’ll be able to access any of the line of credit reports you requested as well as access or upload other documents you use in your tenant. Within the hub you can use search filters to find reports that have previously uploaded. 

Other delivery options

If you have selected a different delivery option than the report file hub, your reports will be uploaded to the destination of your choosing. Open your selected location each day, and the reports will be available to you.