Communication Variable Definitions

Communication template variable reference

Use these variables to add customer, loan, and payment details to a message.

Customer details need a customer selected, either directly or through their loan. Loan details need a loan selected. The system fills in the variables used by your template when it prepares the message. Extra details from custom forms must be selected in the message setup.

Some details may not be recorded. A missing value does not automatically appear as blank or zero, and a template may fail to render without a fallback. For example, ${(client.subStatus)!""} leaves a missing customer sub-status blank. Missing first, middle, and last names are already supplied as blank text.

The variable list offers mobile numbers for SMS templates and email addresses for email templates. Other customer and loan variables are listed for both. Payment-link, password-reset, and payoff variables are listed for email and are filled in by those features. They are not filled in just by selecting a customer or loan. Values provided when sending a message can replace the automatically filled values.

For true/false values, choose how they should read in your message. For example, ${client.active?string("Yes", "No")} displays Yes or No. Dates in the examples use YYYY-MM-DD. Format amounts in the template unless their description says they are already formatted.

Payoff figures are estimates for the chosen date and assume no further payments before that date. All payoff.* variables below are added to payoff estimate emails.

Status legend

StatusMeaning
WorkingThe system loads the value when the template uses the variable and the required customer, loan, or sending feature is present.
Working (data)Same as Working, but the value is omitted or zero when nothing is recorded on the loan or customer .

Collection and payment fields (loan.daysOverdue, overdue breakdown, next/last payment, loan.availableDisbursementAmount) are loaded from loan collection data when your template references them. Use fallbacks for optional fields, for example ${(loan.lastPaymentDate)!""}.

Last payment vs returned or NSF payments

loan.lastPaymentDate and loan.lastPaymentAmount come from the loan account ledger: the most recent non-reversed, repayment-like transaction (for example a posted repayment). They do not read the Payments module, payment processor, or “last attempt” history.

SituationWhat templates show
ACH/card fails before a repayment is posted (for example payment status Failed)Previous successful posted payment, or the fields are omitted if none exist. Not the failed attempt amount.
Payment settles, posts a repayment, then returns (NSF) and return handling chargebacks that repaymentThe returned payment is reversed on the loan; templates show the prior successful payment (same as above).
Manual or off-system repayment posted on the loanThat posted transaction (subject to the same repayment-like rules).

Returned-payment details (return reason, return date, payment status) are not available as communication variables today. Use Payments reporting or APIs for NSF/return messaging unless product adds dedicated variables.

Customer information

VariableDescriptionStatusNotes
client.idThe customer's ID number in this system.Working
client.accountNoThe customer's account number.Working
client.externalIdThe customer's ID in another connected system, if one has been saved.Working
client.activeWhether the customer's account is active. The value is true for active and false otherwise.WorkingRender with ${client.active?string("Yes", "No")}. Plain ${client.active} fails.
client.statusThe customer's current status, such as Active, Pending, or Closed.Working
client.subStatusAn extra detail about the customer's status, if one has been set.WorkingOmitted if unset unless you use a fallback such as ${(client.subStatus)!""}.
client.activationDateThe date the customer's account was activated, if recorded.Working
client.firstNameThe customer's first name. Blank if not recorded. Use client.displayName for a name that works for both people and businesses.WorkingMissing names are supplied as blank text.
client.middleNameThe customer's middle name. Blank if not recorded.WorkingMissing names are supplied as blank text.
client.lastNameThe customer's last name. Blank if not recorded.WorkingMissing names are supplied as blank text.
client.fullNameThe full name saved for the customer, usually a business name. May be missing for individuals; use client.displayName for both people and businesses.WorkingOften missing for individuals.
client.displayNameThe name normally shown for the customer, whether they are a person or a business.WorkingPrefer this for greetings.
client.mobileNoThe customer's mobile number, if recorded. Available in the SMS variable list.Working
client.emailThe customer's email address, if recorded. Available in the email variable list. Adding it to the message does not choose who receives the email.Working
client.dateOfBirthThe customer's recorded date of birth, when available.Working
client.genderThe customer's gender, if recorded.Working
client.officeIdThe ID number of the branch or office the customer belongs to.Working
client.officeNameThe name of the branch or office the customer belongs to.Working
client.staffIdThe ID number of the staff member assigned to the customer, if anyone is assigned.Working
client.staffNameThe name of the staff member assigned to the customer, if anyone is assigned.Working
client.formsExtra customer details saved in custom forms. Includes only the forms selected in the message setup, grouped by form name.WorkingUse a specific form field, not the whole object as text. Example: ${client.forms["table"][0]["column"]}.

Loan information

VariableDescriptionStatusNotes
loan.idThe loan's ID number in this system.Working
loan.accountNoThe loan's account number.Working
loan.externalIdThe loan's ID in another connected system, if one has been saved.Working
loan.statusThe loan's current status, such as Active or Closed.Working
loan.subStatusAn extra detail about the loan's status, if available.Working
loan.productIdThe ID number of the product used for this loan.Working
loan.productNameThe name of the product used for this loan, such as Personal Loan.Working
loan.loanOfficerIdThe ID number of the staff member assigned to this loan, if anyone is assigned.Working
loan.loanOfficerNameThe name of the staff member assigned to this loan. This may be different from the staff member assigned to the customer.Working
loan.purposeNameThe stated reason for the loan, such as Education, if recorded.Working
loan.fundNameThe name of the funding source assigned to the loan, if recorded.Working
loan.clientIdThe ID number of the customer who owns the loan, if available.Working
loan.clientNameThe name of the customer who owns the loan, if available.Working
loan.principalThe loan amount before interest and charges. This may differ from the amount originally requested.Working
loan.approvedPrincipalThe loan amount that was approved, before interest and charges.Working
loan.currencyCodeThe currency used for the loan, such as USD for US dollars.Working
loan.disbursedOnThe date the loan money was paid out. If it has not been paid out yet, this shows the expected payout date, if available.Working
loan.expectedMaturityDateThe date the loan is expected to be fully paid off, if available.Working
loan.totalOutstandingThe total amount still owed on the loan, including principal, interest, fees, and penalties.WorkingFilled from the loan summary on active or later loans.
loan.totalOverdueThe total amount that is past its payment due date. Available when an overdue amount is recorded for the loan.WorkingFrom the loan summary; should align with loan.overdueAmount when the loan is in arrears.
loan.overdueSinceDateThe date the loan's currently unpaid overdue payments became late. Available when that date is recorded.WorkingFilled from the loan summary.
loan.isOverdueWhether the loan is currently marked as having late payments. The value is true for overdue and false otherwise.WorkingRender with ${loan.isOverdue?string("Yes", "No")}.
loan.daysOverdueThe number of days the loan's payments are late, based on the system's business date. May be missing if no overdue date or day count is recorded.WorkingLoaded from collection data when referenced. Omitted when the loan is not delinquent.
loan.overdueAmountThe total amount of late payments on the loan, including principal, interest, fees, and penalties, if available.WorkingLoaded from collection data when referenced.
loan.overduePrincipalThe part of the borrowed amount that should already have been repaid, if available.Working (data)Zero when no principal is overdue.
loan.overdueInterestThe interest that should already have been paid, if available.Working (data)Zero when no interest is overdue.
loan.overdueFeeThe fees that should already have been paid, if available.Working (data)Zero when no fees are overdue.
loan.overduePenaltyThe penalties that should already have been paid, if available.Working (data)Zero when no penalties are overdue.
loan.nextPaymentDueDateThe date the customer's next loan payment is due. Available when a next payment date is recorded.Working (data)Omitted when no upcoming installment is due.
loan.nextPaymentAmountThe amount the customer needs to pay on the next payment due date. Available when the loan has a next payment amount recorded.Working (data)Zero when no next payment is scheduled.
loan.lastPaymentDateThe transaction date of the most recent posted, non-reversed repayment-like entry on the loan ledger.Working (data)Not the date of a failed or returned payment attempt. Omitted when none qualify. See Last payment vs returned or NSF payments.
loan.lastPaymentAmountThe amount on that same ledger transaction.Working (data)Not the amount of an NSF/returned attempt unless it remains posted and not reversed. Zero when none qualify.
loan.availableDisbursementAmountThe amount still available to be paid out on the loan, if recorded. Already includes a $ sign and two decimal places, such as $250.00; do not add another currency symbol.WorkingLoaded from collection data when referenced.
loan.delinquency.rangeIdThe ID number of the loan's current late-payment category, if one is assigned.Working
loan.delinquency.classificationThe name of the loan's current late-payment category, such as CURRENT or a category for payments 30 to 60 days late.Working
loan.delinquency.minAgeDaysThe lowest number of days late covered by the loan's current late-payment category, if available.Working
loan.delinquency.maxAgeDaysThe highest number of days late covered by the loan's current late-payment category, if available.Working
loan.formsExtra loan details saved in custom forms. Includes only the forms selected in the message setup, grouped by form name.WorkingUse a specific form field, not the whole object as text.
loan.repaymentScheduleThe loan's payment plan, with past and upcoming installments, dates, amounts due, amounts paid, and amounts still owed. Also includes the currency and overall totals, if available.WorkingLoop installments. Do not print the whole object as text.

System, payment links, and account emails

VariableDescriptionStatusNotes
system.businessDateThe date the system is using for business processing, which may differ from today's date. If none is set, it uses today's date in your organization's time zone.Working
payment_link.urlThe link the customer can open to make a payment. Added when a payment-link email is prepared.WorkingFilled by payment-link emails only, not by selecting a customer or loan.
payment_link.amountThe amount the payment link asks the customer to pay. Added when a payment-link email is prepared.WorkingFilled by payment-link emails only.
user.passwordReset.resetLinkThe link the user can open to reset their password. Added to password-reset emails.WorkingFilled by password-reset emails only.
user.passwordReset.userNameThe first name of the person resetting their password. Uses User if no first name is saved. Added to password-reset emails.WorkingFilled by password-reset emails only.
user.passwordReset.tenantNameYour organization's system identifier, such as default. This may differ from its company name. Added to password-reset emails.WorkingFilled by password-reset emails only.
payoff.asOfDateThe date the estimated payoff amount applies to, shown as YYYY-MM-DD, such as 2026-06-19. Added to payoff estimate emails.WorkingFilled by payoff estimate emails only.
payoff.generatedOnThe date the payoff estimate was created, using your organization's time zone. Shown as YYYY-MM-DD, such as 2026-06-10.WorkingFilled by payoff estimate emails only.
payoff.currencyCodeThe currency used for the payoff estimate, such as USD for US dollars.WorkingFilled by payoff estimate emails only.
payoff.principalThe estimated borrowed amount still owed on the payoff date. Shown with commas and two decimal places, such as 1,000.00, without a currency symbol.WorkingFilled by payoff estimate emails only.
payoff.interestThe estimated interest owed on the payoff date. Shown with commas and two decimal places, such as 1,000.00, without a currency symbol.WorkingFilled by payoff estimate emails only.
payoff.feeThe estimated fees owed on the payoff date. Shown with commas and two decimal places, such as 1,000.00, without a currency symbol.WorkingFilled by payoff estimate emails only.
payoff.penaltyThe estimated penalties owed on the payoff date. Shown with commas and two decimal places, such as 1,000.00, without a currency symbol.WorkingFilled by payoff estimate emails only.
payoff.totalThe total estimated amount needed to pay off the loan on the chosen date. Shown with commas and two decimal places, such as 10,075.00, without a currency symbol.WorkingFilled by payoff estimate emails only.

Did this page help you?