LoanPro

Statements

Generate and automate billing statements for up to 25 years in the past.

Billing statements are automatically generated at the end of each billing cycle. LoanPro will be able to access transaction statements from the most recent billing period up to 25 years in the past. This article will explain how to access statements for loan and line of credit accounts. We'll also walk through detailed field mappings, dynamic variable syntax, related database tables, and workflow steps for template updates.

Statement mapping

LoanPro’s context engine allows embedding dynamic fields within HTML templates. These variables (e.g., [[v('path')]] or [[formatNumber('path','2','.',' ,')]]) pull live customer, account, and transaction data directly from the LoanPro database. Refer to the complete list of database tables as well as formatting variables with functions articles for more information. 

Dynamic field mapping

Customer information

Name VariableNotes
Customer Full Name[[v('customer.primary.full-name')]]Customer full legal name
Customer Primary address 1[[v('customer.primary.mailing-address1')]] Customer Primary address 1
Customer Primary address 2[[v('customer.primary.mailing-address2')]]Customer Primary address 2
Customer Primary City[[v('customer.primary.mailing-city')]]Customer Primary City
Customer Primary State[[v('customer.primary.mailing-state')]] Customer Primary State
Customer Primary Zip Code[[v('customer.primary.mailing-zipcode')]]Customer Primary Zip Code

Account information

Name VariableNotes
Account ending in[[evalFormula('(let [lastfour (take-last 4 line-of-credit-display-id)] (str (nth lastfour 0) (nth lastfour 1) (nth lastfour 2) (nth lastfour 3)))')]]Last 4 of account number

Statement details

Name VariableNotes
Statement Period Start[[companyFormatDateTime('billing-period-values-array.current.start-date')]]Cycle start date
Statement Period End[[companyFormatDateTime('billing-period-values-array.current.end-date')]]Cycle end date

Account summary

Name VariableNotes
Previous Balance[[formatNumber('billing-period-values-array.current.starting-balance','2','.',' ,')]]Start balance
Payments and Credits[[formatNumber('billing-period-values-array.current.payment-credit-total','2','.',' ,')]]Sum of payments
Total Credit Limit[[formatNumber('status-total-credit-limit', '2', '.', ',')]]Credit Limit
Purchases[[formatNumber('billing-period-values-array.current.buckets-array.id____.total-swipes', '2', '.', ',')]]Total swipes in the Purchases Bucket
Cash Advances[[formatNumber(‘billing-period-values-array.current.buckets-array.id__.total-swipes’,2,’.’,’,’)]]Total swipes in the Cash Advances Bucket
Bucket #____[[formatNumber(‘billing-period-values-array.current.buckets-array.id__.total-swipes’,2,’.’,’,’)]] Total swipes in the ___ Bucket
Bucket #____[[formatNumber(‘billing-period-values-array.current.buckets-array.id__.total-swipes’,2,’.’,’,’)]]Total swipes in the ___ Bucket
Fees Charged[[formatNumber('billing-period-values-array.current.fees-total','2','.',' ,')]]Total fees charged
Interest Charged[[formatNumber('billing-period-values-array.current.interest-total','2','.',' ,')]]Interest accrued
New Balance[[formatNumber('billing-period-values-array.current.new-balance','2','.',' ,')]]Ending balance for cycle

Payment information

Name VariableNotes
Minimum Payment$[[formatNumber('billing-period-values-array.current.minimum-payment', '2', '.', ',')]]Required minimum payment
Due Date[[companyFormatDateTime('billing-period-values-array.current.due-date')]]Due Date
Total Balance$[[formatNumber('billing-period-values-array.current.new-balance', '2', '.', ',')]]Total Balance

Available credit

Name VariableNotes
Total Available Credit[[formatNumber('billing-period-values-array.current.new-available-credit','2','.',' ,')]]Available credit at period end
Purchases$[[formatNumber('buckets-array.id__.available-credit', '2', '.', ',')]Available credit in Purchases bucket at period end
Cash Advance[[formatNumber('billing-period-values-array.current.new-available-credit','___','.',' ,')]]Available credit in Cash Advance bucket at period end
Bucket #____$[[formatNumber('buckets-array.id__.available-credit', '2', '.', ',')]Available credit in __ bucket at period end

Compliance / legal fields

Minimum payment warning

If you make no additional changes using this card and each month you pay...You will pay off the balance shown on the statement in about...And you will end up paying an estimated total of...
Only the minimum payment[[v('billing-period-values-array.current.minimum-payment-payoff-months')]] months$[[formatNumber('billing-period-values-array.current.minimum-payment-payoff-total', '2', '.', ',')]]
$[[formatNumber('billing-period-values-array.current.36-month-minimum-payment-amount', '2', '.', ',')]]36 months$[[formatNumber('[[mathAdd('billing-period-values-array.current.36-month-total-interest-paid', 'billing-period-values-array.current.36-month-total-principal-paid')]]', '2', '.', ',')]]

Payment coupon

NameVariableNotes
Account Number[[evalFormula('(->> loan-display-id (take-last 4) (apply str))')]]Last 4 of account number
New Balance[[formatNumber('billing-period-values-array.current.new-balance', '2', '.', ',')]]Ending balance for cycle
Minimum Payment Due[[formatNumber('billing-period-values-array.current.minimum-payment', '2', '.', ',')]]    Required minimum payment
Payment Due Date[[companyFormatDateTime('billing-period-values-array.current.due-date')]]Due Date

 

Credit line

NameVariableNotes
Total Credit Line[[formatNumber('status-total-credit-limit', '2', '.', ',')]]Credit Limit
Total Available Credit[[formatNumber('billing-period-values-array.current.new-available-credit','2','.',' ,')]]Available credit at period end

 

Account activity

NameVariableNotes
Fees Charged[[formatNumber('billing-period-values-array.current.fees-total', '2', '.', ',')]]Total fees charged within the billing period
Interest Charged[[formatNumber('billing-period-values-array.current.interest-total', '2', '.', ',')]]Total interest charged within the billing period
Total Fees Year-To-Date[[IF $computation-fields-array.id17.calculated-value]]$[[formatNumber('computation-fields-array.id17.calculated-value', '2', '.', ',')]][[ELSE]]$[[formatNumber('billing-period-values-array.current.fees-total')]][[END]]Computed value to calculated the total fees charged year to date. Otherwise, pulls the total fees in the current billing period.
Total Interest Year-To-Date[[IF $computation-fields-array.id18.calculated-value]]$[[formatNumber('computation-fields-array.id18.calculated-value', '2', '.', ',')]][[ELSE]]$[[formatNumber('billing-period-values-array.current.interest-total')]][[END]]Computed value to calculated the total interest charged year to date. Otherwise, pulls the total interest in the current billing period.

 

 

Interest charge calculation

Name VariableNotes
Balance Type - Purchases Bucket[[v('buckets-array.id__.bucket-title')]]Purchases Bucket Title
Balance Type - Cash Advance Bucket[[v('buckets-array.id__.bucket-title')]]Cash Advance Bucket Title
Balance Type - ___ Bucket[[v('buckets-array.id__.bucket-title')]]___Bucket Title
APR - Purchases Bucket[[v('buckets-array.id__.interest-rate')]]%APR for Purchases Bucket
APR - Cash Advance Bucket[[v('buckets-array.id__.interest-rate')]]%APR for Cash Advance Bucket
APR - ____  Bucket[[v('buckets-array.id__.interest-rate')]]%APR for ___ Bucket
Interest Bearing Amount - Purchases Bucket[[formatNumber('billing-period-values-array.current.buckets-array.id__.interest-bearing-amount', '2', '.', ',')]]Interest Bearing Amount for Purchases Bucket
Interest Bearing Amount - Cash Advance  Bucket[[formatNumber('billing-period-values-array.current.buckets-array.id__.interest-bearing-amount', '2', '.', ',')]]Interest Bearing Amount for Cash Advance  Bucket
Interest Bearing Amount - ___Bucket[[formatNumber('billing-period-values-array.current.buckets-array.id__.interest-bearing-amount', '2', '.', ',')]]Interest Bearing Amount for __ Bucket
Interest Charge - Purchases Bucket[[formatNumber('billing-period-values-array.current.buckets-array.id__.interest-charges', '2', '.', ',')]]Interest charged for Purchases Bucket
Interest Charge - Cash Advance Bucket[[formatNumber('billing-period-values-array.current.buckets-array.id__.interest-charges', '2', '.', ',')]]Interest charged for Cash Advance Bucket
Interest Charge - ___ Bucket[[formatNumber('billing-period-values-array.current.buckets-array.id__.interest-charges', '2', '.', ',')]]Interest charged for __ Bucket

 

Account activity

NameVariableNotes
Date[[formatDateTime($date, 'm/d/Y')]]Pulls the date for all transactions and formats in mm/dd/yyyy
Type[[IF $type == "swipe"]][[$bucket-label]][[ELSE]][[END]] [[ucwords('[[strtolower($type)]]')]]If the transaction type is ‘Swipe’ it displays the associated bucket, otherwise, it will display the transaction type
Description[[IF $merchant]][[$merchant]][[ELSEIF $memo]][[$memo]][[ELSEIF $type== "credit"]][[$info]][[ELSEIF $type == "payment"]]{{IF $status == "reversed"}}Reversed Payment{{ELSEIF $status == "active" || $status == "settled"}}Successful Payment{{ELSE}}{{END}}[[ELSE]][[END]]Displays the transaction description
Status

{{IF $status == "active" || $status == "lineOfCredit.transactionStatus.active" || $status == "settled" || $status == "lineOfCredit.transactionStatus.settled"}}Settled{{ELSEIF $status == "pending" || $status == "lineOfCredit.transactionStatus.pending"}}Pending{{ELSE}} {{END}}

 

Displays transaction status
Amount[IF $type == "payment"]]- $[[formatNumber($amount, '2', '.', ',')]][[ELSEIF $type == "credit"]]- $[[formatNumber($amount, '2', '.', ',')]][[ELSE]]$[[formatNumber($amount, '2', '.', ',')]][[END]]Displays the transaction amount

 

Rewards

NameVariableNotes
Rewards Balance[[v(‘rewards-current-points-balance’)]]Current rewards balance in points

 

Workflow for creating or updating templates

  1. List all required dynamic placeholders for the statement (customer, balances, transactions).
  2. Map each placeholder to the correct variable path and verify the database source.
  3. Insert the placeholders into the HTML structure, preserving syntax.
  4. Implement repeat loops for transaction tables or sections.
  5. Test the template in Sandbox by generating it within a test account under ‘Statements’.
  6. Statement template must be assigned to the account under ‘Account Settings’ > ‘Settings’ >
  7. Edit ‘Which template will accounts use for statements by default?’.
  8. Validate all values (balances, names, due dates) render correctly.
  9. Maintain version control and a changelog of updates.

 

b17fc60ad1a91bb212bcd5fb52d802fd4ecfaa73f51369f1bf518f1c6bb200e7.jpg

3d482a2512eb36244730c435120284995b720d71782d9075bcfe459a3150a9b8.jpg

e46ded634af6eb170850937f0b6c12a96999ca5e11afe090deee4752df87ca64.jpg

Accessing loan statements

To download statements as a PDF, use the billing tool. This is also helpful if you would like to print and mail bills to your customers using the billing templates that LoanPro provides. It can be found by navigating to Tools > Customer Communication > Billing inside your company account. If you want your billing statements to be entirely custom, you can create a Dynamic Template as a billing statement instead.

To send loans to billing, navigate to Account Manager and select the loans you would like to send. Click the 'Send to Billing' link. This will send you to the ‘Billing’ section in the Communication Suite. Here, you can choose your billing options and generate statements. 

At the top of the page are multiple billing template options. The image to the right of these options previews how the statement will look. You can set defaults for many of these values by clicking 'Defaults' in the top-right corner of the page. The template options you can adjust include the following: 

OptionDescription
TemplateChoose the template that will determine how your printed statements will look. The 2.0 Billing Statement works slightly differently than the rest and will give you some additional options.
ThemeSet a color theme for the billing statement.

Header color
This is a custom color for the bill’s header. Clicking on this field displays a color picker; but you can also enter a hex color code directly if preferred.
PDF FormatHere, you can choose whether bills should generate as one large PDF file or as individual PDF files per loan.  Typically, it’s easier to print one large file than to open and print individual ones.
Statement dateThis date appears at the top of the bill as the statement date.
Co-borrower statementHere, you can choose whether to generate a separate statement for the co-borrower.
Show billing transactions fromThis option is only available if you chose 2.0 Billing Statement from the ‘Template’ drop-down.  The 2.0 Billing statement will display loan transactions either for the current payment period or over a specified date range, and this drop-down lets you choose which to use.
Custom textThis text box allows you to enter custom text that will appear on the billing statement.

At the bottom of the page, you can remove any previously selected loans from the billing queue by clicking the red trash icon to the right of individual loans.

To generate the billing statements for the loans you have selected, click 'Generate' in the top-right corner of the page. This will generate PDFs for the statements you have created. To view the PDFs, click the 'Billing' header which will now display a notification counter of the form generation requests in the last 24 hours.

Accessing line of credit statements

In LMS, navigate to Lines of Credit >  Inside a Line of Credit account > Statements.

The statement is categorized by each the billing cycles of the account and provides details about the period through a number of different fields:

FieldsDescription
PeriodThe billing period for the transaction.
Minimum PaymentThe minimum payment required for the transaction. 
Starting BalanceThe starting balance of the billing period. This will typically be the ending balance of the previous period. 
Payment TotalThe total amount of payments and credits made during the billing period. 
Swipe TotalThe swipe total during the billing period. 
Finance ChargesThe amount of interest charged. 
Ending BalanceThe ending balance of the billing period.

The download button at the far right of each entry lets you download the statements as a PDF. Clicking the arrow will open a new side window with more information about the transaction. 

To create a statement template, navigate to Settings > Line of Credit > Statements. Click ‘Add’ at the top right of the page to add a new template. On this page, you can give your template a name and choose whether you want it to be active/inactive using the ‘Status’ toggle switch. Turning the switch on sets the template as ‘Active’, which will make it available to use for a billing statement in an individual account. 

aa24306888cf19e669d198d72bdce1efdd7042c86d10da02ece1e728fe0e502a.png

Below the ‘Name’ field is a dropdown menu for the template's file type. 'HTML' will open up our Dynamic Templates editor where you can use HTML to create your template in the software. Similar to Dynamic Templates, these templates use context variables that will pull data from the borrower's accounts and merge it into the templates. Once you finish creating your template, click ‘Save Changes’ at the top right of the page. 

8a927510284542d2c50654d7957df695463726b890787169c4645e449ffe8917.png

The main ‘Statements’ page will show you all of the templates you've created in your tenant. At the right of each listing are the options to ‘Edit’ or ‘Delete’ your template. 

Once you've created a few statement templates, you can assign them to a line of credit account. This will ensure that the billing statement generated on the account will use the template that is assigned to it. To assign a statement template, go into an individual account and navigate to Account Settings > Settings. The ‘Account Settings’ section should be at the top of this page. Click the pencil icon at the top right to edit the ‘Account Settings’ section. Scroll until you see the ‘Statement Type’ field and click it to choose a template from the dropdown menu. 

It's important to remember that the templates that are set to the “Active” status in Lines of Credit > Statements will be available as an option in the ‘Statement Type’ field. After choosing the statement template for this account, click the ‘Save’ button at the bottom. 

Automating statement creation

You can automatically send billing statements to your customers at the end of each billing period after they're auto-generated using event-based notifications. Again, the process is different for loan and line of credit statements.

Automate loan statements

The easiest way to send out billing statements is to create automated email triggers. Automated emails can even be set up to send your customers statements a specific number of days before a payment comes due. To do this, navigate to Settings > Company > Automated Notifications > Dynamic Triggers. Click the ‘Add’ button in the upper right corner. In this window you can determine the name, trigger, and email content for the notification. For more information about trigger-based notifications, see our Automated communication article. 

Automate line of credit statements

Before you enable automated statements, we recommend creating a template for your statements so that they match your company's branding and operations.

To enable automated statements, navigate to Settings > Company > Automated Notifications > Event-Based Triggers and scroll down until you reach the ‘Line of Credit Events’ section. Click the pencil icon to edit the ‘Statement Generated’ event. This event will trigger a notification to be sent when a statement is generated for an account.