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
| Status | Meaning |
|---|---|
| Working | The 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.
| Situation | What 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 repayment | The returned payment is reversed on the loan; templates show the prior successful payment (same as above). |
| Manual or off-system repayment posted on the loan | That 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
| Variable | Description | Status | Notes |
|---|---|---|---|
client.id | The customer's ID number in this system. | Working | |
client.accountNo | The customer's account number. | Working | |
client.externalId | The customer's ID in another connected system, if one has been saved. | Working | |
client.active | Whether the customer's account is active. The value is true for active and false otherwise. | Working | Render with ${client.active?string("Yes", "No")}. Plain ${client.active} fails. |
client.status | The customer's current status, such as Active, Pending, or Closed. | Working | |
client.subStatus | An extra detail about the customer's status, if one has been set. | Working | Omitted if unset unless you use a fallback such as ${(client.subStatus)!""}. |
client.activationDate | The date the customer's account was activated, if recorded. | Working | |
client.firstName | The customer's first name. Blank if not recorded. Use client.displayName for a name that works for both people and businesses. | Working | Missing names are supplied as blank text. |
client.middleName | The customer's middle name. Blank if not recorded. | Working | Missing names are supplied as blank text. |
client.lastName | The customer's last name. Blank if not recorded. | Working | Missing names are supplied as blank text. |
client.fullName | The full name saved for the customer, usually a business name. May be missing for individuals; use client.displayName for both people and businesses. | Working | Often missing for individuals. |
client.displayName | The name normally shown for the customer, whether they are a person or a business. | Working | Prefer this for greetings. |
client.mobileNo | The customer's mobile number, if recorded. Available in the SMS variable list. | Working | |
client.email | The 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.dateOfBirth | The customer's recorded date of birth, when available. | Working | |
client.gender | The customer's gender, if recorded. | Working | |
client.officeId | The ID number of the branch or office the customer belongs to. | Working | |
client.officeName | The name of the branch or office the customer belongs to. | Working | |
client.staffId | The ID number of the staff member assigned to the customer, if anyone is assigned. | Working | |
client.staffName | The name of the staff member assigned to the customer, if anyone is assigned. | Working | |
client.forms | Extra customer details saved in custom forms. Includes only the forms selected in the message setup, grouped by form name. | Working | Use a specific form field, not the whole object as text. Example: ${client.forms["table"][0]["column"]}. |
Loan information
| Variable | Description | Status | Notes |
|---|---|---|---|
loan.id | The loan's ID number in this system. | Working | |
loan.accountNo | The loan's account number. | Working | |
loan.externalId | The loan's ID in another connected system, if one has been saved. | Working | |
loan.status | The loan's current status, such as Active or Closed. | Working | |
loan.subStatus | An extra detail about the loan's status, if available. | Working | |
loan.productId | The ID number of the product used for this loan. | Working | |
loan.productName | The name of the product used for this loan, such as Personal Loan. | Working | |
loan.loanOfficerId | The ID number of the staff member assigned to this loan, if anyone is assigned. | Working | |
loan.loanOfficerName | The name of the staff member assigned to this loan. This may be different from the staff member assigned to the customer. | Working | |
loan.purposeName | The stated reason for the loan, such as Education, if recorded. | Working | |
loan.fundName | The name of the funding source assigned to the loan, if recorded. | Working | |
loan.clientId | The ID number of the customer who owns the loan, if available. | Working | |
loan.clientName | The name of the customer who owns the loan, if available. | Working | |
loan.principal | The loan amount before interest and charges. This may differ from the amount originally requested. | Working | |
loan.approvedPrincipal | The loan amount that was approved, before interest and charges. | Working | |
loan.currencyCode | The currency used for the loan, such as USD for US dollars. | Working | |
loan.disbursedOn | The 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.expectedMaturityDate | The date the loan is expected to be fully paid off, if available. | Working | |
loan.totalOutstanding | The total amount still owed on the loan, including principal, interest, fees, and penalties. | Working | Filled from the loan summary on active or later loans. |
loan.totalOverdue | The total amount that is past its payment due date. Available when an overdue amount is recorded for the loan. | Working | From the loan summary; should align with loan.overdueAmount when the loan is in arrears. |
loan.overdueSinceDate | The date the loan's currently unpaid overdue payments became late. Available when that date is recorded. | Working | Filled from the loan summary. |
loan.isOverdue | Whether the loan is currently marked as having late payments. The value is true for overdue and false otherwise. | Working | Render with ${loan.isOverdue?string("Yes", "No")}. |
loan.daysOverdue | The 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. | Working | Loaded from collection data when referenced. Omitted when the loan is not delinquent. |
loan.overdueAmount | The total amount of late payments on the loan, including principal, interest, fees, and penalties, if available. | Working | Loaded from collection data when referenced. |
loan.overduePrincipal | The part of the borrowed amount that should already have been repaid, if available. | Working (data) | Zero when no principal is overdue. |
loan.overdueInterest | The interest that should already have been paid, if available. | Working (data) | Zero when no interest is overdue. |
loan.overdueFee | The fees that should already have been paid, if available. | Working (data) | Zero when no fees are overdue. |
loan.overduePenalty | The penalties that should already have been paid, if available. | Working (data) | Zero when no penalties are overdue. |
loan.nextPaymentDueDate | The 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.nextPaymentAmount | The 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.lastPaymentDate | The 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.lastPaymentAmount | The 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.availableDisbursementAmount | The 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. | Working | Loaded from collection data when referenced. |
loan.delinquency.rangeId | The ID number of the loan's current late-payment category, if one is assigned. | Working | |
loan.delinquency.classification | The 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.minAgeDays | The lowest number of days late covered by the loan's current late-payment category, if available. | Working | |
loan.delinquency.maxAgeDays | The highest number of days late covered by the loan's current late-payment category, if available. | Working | |
loan.forms | Extra loan details saved in custom forms. Includes only the forms selected in the message setup, grouped by form name. | Working | Use a specific form field, not the whole object as text. |
loan.repaymentSchedule | The 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. | Working | Loop installments. Do not print the whole object as text. |
System, payment links, and account emails
| Variable | Description | Status | Notes |
|---|---|---|---|
system.businessDate | The 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.url | The link the customer can open to make a payment. Added when a payment-link email is prepared. | Working | Filled by payment-link emails only, not by selecting a customer or loan. |
payment_link.amount | The amount the payment link asks the customer to pay. Added when a payment-link email is prepared. | Working | Filled by payment-link emails only. |
user.passwordReset.resetLink | The link the user can open to reset their password. Added to password-reset emails. | Working | Filled by password-reset emails only. |
user.passwordReset.userName | The first name of the person resetting their password. Uses User if no first name is saved. Added to password-reset emails. | Working | Filled by password-reset emails only. |
user.passwordReset.tenantName | Your organization's system identifier, such as default. This may differ from its company name. Added to password-reset emails. | Working | Filled by password-reset emails only. |
payoff.asOfDate | The date the estimated payoff amount applies to, shown as YYYY-MM-DD, such as 2026-06-19. Added to payoff estimate emails. | Working | Filled by payoff estimate emails only. |
payoff.generatedOn | The date the payoff estimate was created, using your organization's time zone. Shown as YYYY-MM-DD, such as 2026-06-10. | Working | Filled by payoff estimate emails only. |
payoff.currencyCode | The currency used for the payoff estimate, such as USD for US dollars. | Working | Filled by payoff estimate emails only. |
payoff.principal | The 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. | Working | Filled by payoff estimate emails only. |
payoff.interest | The estimated interest owed on the payoff date. Shown with commas and two decimal places, such as 1,000.00, without a currency symbol. | Working | Filled by payoff estimate emails only. |
payoff.fee | The estimated fees owed on the payoff date. Shown with commas and two decimal places, such as 1,000.00, without a currency symbol. | Working | Filled by payoff estimate emails only. |
payoff.penalty | The estimated penalties owed on the payoff date. Shown with commas and two decimal places, such as 1,000.00, without a currency symbol. | Working | Filled by payoff estimate emails only. |
payoff.total | The 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. | Working | Filled by payoff estimate emails only. |
Updated about 1 month ago
