Appendix D — Template variable reference
Five kinds of document are produced from templates that a workspace can copy and edit: HR letters, employment contracts, salary slips, tax certificates and bank payment files. To insert a value, wrap a variable in double curly braces, spelled exactly as in the tables below (capital letters and underscores matter: salary slips use employee.full_name, HR letters use employee.firstName). A variable the document does not supply prints as nothing rather than as an error. Letters, contracts, slips and certificates are HTML rendered with Handlebars, so they can also use the block tags and helpers listed at the end; bank payment files use a simpler one-line format with filters of their own.
Variables marked "list" hold several rows. Use them with an each block, and inside the block refer to a row's fields as this.name, this.amount and so on. Examples come from the preview sample data in the code; amounts are shown for a workspace that pays in US dollars.
HR letters, salary slips and tax certificates also receive a verification object (verification.verifyUrl, verification.qrDataUrl, verification.caption, verification.token). The system adds the QR verification block to these documents by itself, so a template does not need to use them; the object is empty when the platform address is not configured.
HR letters
System values are filled in for every letter. Letter data values come from the Issue Letter form, which shows the fields for the chosen letter type and pre-fills some of them from the employee record, or from the module that issued the letter automatically. Any custom field added on the Issue Letter form becomes a variable named after the key typed for it; if that key matches a system value, the system value wins.
| Variable | Meaning | Example |
|---|---|---|
employee.firstName | Employee's first name (system) | Jordan |
employee.lastName | Employee's last name (system) | Lee |
employee.employeeCode | Employee code (system) | EMP-0042 |
company.name | Workspace name (system) | Example Company Ltd |
company.logo | Workspace logo as an embedded image, for an image source; empty when no logo is uploaded (system) | (image data) |
company.seal | Company seal as an embedded image; empty when none is uploaded (system) | (image data) |
company.address | Address line 1, city, state or province and country, comma-separated (system) | 100 Example Street, Example City |
referenceNumber | The letter's reference number (system) | LTR-2026-00001 |
date | Issue date, written in the letter's language (system) | 13 Apr 2026 |
issuedDate | Issue date as a raw date value; print it through the formatDate helper (system) | (date value) |
letterType | The letter type key (system) | experience_certificate |
designation | Designation. Form: experience certificate, offer, appointment and confirmation letters; pre-filled from the employee | Senior Software Engineer |
department | Department. Same letter types as designation; pre-filled from the employee | Software Engineering |
joiningDate | Joining date. Experience certificate, offer, appointment and confirmation letters; pre-filled from the employee | 15 Jan 2023 |
lastDate | Last day of employment. Experience certificate | 30 Mar 2026 |
remarks | Free-text remarks. Experience certificate | Outstanding performance and dedicated service throughout the tenure |
currentSalary | Current salary. Salary certificate; pre-filled with the current gross salary | $ 6,500 |
effectiveDate | Effective date. Salary certificate, promotion, increment, decrement and transfer letters | 01 Apr 2026 |
purpose | Purpose of the letter. Salary certificate; pre-filled from the employee's letter request | Bank Loan Application |
proposedSalary | Offered salary. Offer letter | $ 7,000 |
salary | Salary. Appointment letter; pre-filled with the current gross salary | $ 6,500 |
reportingTo | Reporting manager. Appointment letter; pre-filled from the employee | David Kim (Director of Engineering) |
confirmationDate | Date of confirmation. Confirmation letter | (no sample) |
previousDesignation | Designation before the promotion. Promotion letter; pre-filled with the current designation | Software Engineer |
newDesignation | Designation after the promotion. Promotion letter | Senior Software Engineer |
newSalary | New salary. Promotion, increment and decrement letters | $ 7,000 |
previousSalary | Salary before the change. Increment and decrement letters; pre-filled with the current gross salary | $ 6,500 |
reason | Reason. Increment, decrement, transfer, warning and termination letters | Excellent performance and significant contributions to the organization |
fromBranch | Branch before the transfer. Transfer letter; pre-filled from the employee | Head Office |
toBranch | Branch after the transfer. Transfer letter | Regional Office |
previousWarnings | Earlier warnings. Warning letter | Verbal warning issued on 15 Feb 2026 |
expectedImprovement | What must improve. Warning letter | Regular attendance, punctuality, and adherence to company policies |
deadline | Deadline for the improvement. Warning letter | 30 Apr 2026 |
lastWorkingDate | Last working date. Termination letter | 30 Apr 2026 |
settlementDetails | How the final pay will be settled. Termination letter | Final pay, including salary through the last working day and any leave payable under company policy, will be processed with the next payroll |
addressedTo | Addressee, added as a custom field when HR issues a letter from an employee's request that names one | (no sample) |
Letters issued automatically fill these values themselves: the appointment letter when a contract is activated (designation, department, salary, joiningDate, and reportingTo, the reporting manager's name); the confirmation letter when HR confirms an employee (joiningDate, confirmationDate, designation, department); the promotion letter (previousDesignation, newDesignation, effectiveDate, newSalary); the increment or decrement letter (previousSalary, newSalary, effectiveDate, reason); the transfer letter (fromBranch, toBranch, effectiveDate, reason); and the experience certificate at final settlement in Offboarding (joiningDate, lastDate, designation, department).
Employment contracts
| Variable | Meaning | Example |
|---|---|---|
contractNumber | Contract number; a dash when the contract has none | CON-2026-00001 |
contractType | Contract type, worded in the document's language | Permanent |
probationMonths | Probation length in months | 3 |
date | The date the document is produced | 18 Apr 2026 |
startDate | Contract start date | 01 May 2026 |
endDate | Contract end date; empty when the contract has no end date, so if endDate shows it only when there is one | (no end date in the sample) |
jobDescription | The job description saved on the employee's designation | Design and implement complex software features (first of five sample duties) |
preExistingIP | The contract's Pre-existing intellectual property declaration, each typed line kept on its own line; empty when nothing was declared, so if preExistingIP can print your own wording instead. The standard agreements print it in Schedule A, or "None disclosed" | (empty in the sample) |
employee.firstName | First name | Jordan |
employee.lastName | Last name | Lee |
employee.fatherName | Father's name; empty unless recorded (the field is collected only in countries whose records carry it) | (empty for a US workspace) |
employee.employeeCode | Employee code | EMP-0042 |
employee.cnic | National ID number, the document named by legal.nationalIdLabel; a dash when not recorded | 123-45-6789 |
employee.nationality | Nationality as recorded; empty when not recorded | American |
employee.designation | Designation | Senior Software Engineer |
employee.department | Department | Software Engineering |
employee.reportingTo | Reporting manager's name with designation; "Management" when there is none | David Kim (Director of Engineering) |
employee.childRelation | "son of", "daughter of" or "son/daughter of", from the recorded gender | son of |
company.name | Workspace name | Example Company Ltd |
company.logo | Logo as an embedded image | (image data) |
company.seal | Seal as an embedded image | (image data) |
company.address | Address line 1, city, state or province and country | 100 Example Street, Example City |
company.email | Company email | (not in the preview sample) |
company.phone | Company phone | (not in the preview sample) |
company.payDay | Day of the month salary is paid, from payroll settings; 7 when not set | 7 |
workingHours.perDay | Working hours per day | 8 |
workingHours.days | Working days in words, from the employee's shift (or attendance settings when there is no shift) | Monday to Friday |
workingHours.start | Shift start time; 09:00 when there is no shift | 09:00 |
workingHours.end | Shift end time; 18:00 when there is no shift | 18:00 |
workingHours.shiftName | Shift name; empty when there is no shift | (empty in the sample) |
workingHours.breakMinutes | Break length in minutes; 60 when there is no shift | 60 |
overtime.multiplier | Overtime rate multiplier from attendance settings | 1.5 |
overtime.minMinutes | Minimum minutes that count as overtime | 30 |
attendanceRules.grace | Late grace period in minutes; the shift's own grace period wins over the company's | 15 |
attendanceRules.latesPerMonthForAbsent | Lates in a month that count as one absence | 3 |
attendanceRules.ladder | List of late-arrival steps; each row has this.minutes and this.action | 30 / logged as a warning |
salary.gross | Gross monthly salary on the contract, digits grouped, no currency | 6,500 |
salary.currency | Workspace currency code | USD |
salary.basic | The basic payroll pays: what the salary structure's BASIC component gives on the gross of the salary assignment in force, formatted like the gross; empty when the structure has no BASIC component, or when the assignment's gross differs from the contract's | 4,550.00 |
salary.allowances | The rest of the gross after the basic, formatted like the gross; empty under the same conditions, or when it is zero | 1,950.00 |
leavePolicies | List of the employee's paid, active leave types (types limited to the other gender are left out); each row has name, quota, eligibility, carryForward, payRate | (the workspace's own leave types) |
name (in leavePolicies) | Leave type name | (workspace data) |
quota (in leavePolicies) | Days per year | (workspace data) |
eligibility (in leavePolicies) | "From day 1", or "After N months" | From day 1 |
carryForward (in leavePolicies) | "None", or "Up to N days" | None |
payRate (in leavePolicies) | "Paid", in the document's language, for a type that pays a full day; for a type paid at a reduced rate, its pay share as a percentage written the document's way | Paid (50% for a half-pay type) |
leaveRules.sandwich | True when any listed leave policy applies the sandwich rule (weekends or holidays between two leave days count as leave) | (true or false) |
leaveRules.adjacent | True when any listed leave policy applies the adjacent-day rule (leave next to a weekend or holiday may be counted together with it) | (true or false) |
legal.jurisdiction | Governing-law jurisdiction for the workspace's country, including any leading article; empty for a country without one | the United States of America and the State in which the Employee is primarily employed |
legal.probationNoticeWeeks | Notice during probation, in weeks | 1 |
legal.probationNoticeDays | Notice during probation, in days | 7 |
legal.maxProbationMonths | Longest probation allowed, in months | 6 |
legal.postProbationNoticeMonths | Notice after confirmation, in months | 1 |
legal.noticeMinDays | Lower end of the notice band after confirmation, in days | 30 |
legal.noticeMaxDays | Upper end of the notice band, in days | 90 |
legal.nonCompeteMonths | Longest post-employment restraint, in months | 12 |
legal.finalSettlementDays | Days within which final dues are settled | 30 |
legal.statutes | List of statutes named in the governing-law clause; empty where none are modelled | (empty for the US) |
legal.nationalIdLabel | Name of the national ID document | Social Security Number |
legal.incomeTaxStatute | Income-tax statute cited in the pay clause; empty where none | the Internal Revenue Code |
legal.payrollContributions | Statutory payroll contributions named next to tax; empty where none | Social Security and Medicare contributions under the Federal Insurance Contributions Act (FICA) |
legal.leaveStatutes | List of statutes behind the leave entitlements; empty where none | (empty for the US) |
legal.restraintStatute | Provision that makes post-employment restraints enforceable; empty where none | (empty for the US) |
legal.eSignatureStatute | Statute that makes electronic acceptance binding; empty where none | the Electronic Signatures in Global and National Commerce Act (E-SIGN) and the Uniform Electronic Transactions Act (UETA) as enacted in the State of employment |
legal.leaveYearLabel | How the leave year runs, from the country's fiscal-year start | January to December |
legal.usesJudicialStampPaper | True where contracts are conventionally executed on judicial stamp paper | false |
legal.sampleDemonym | A nationality used only as preview sample data | American |
witness1.name | First witness's name, entered on the contract | (no sample) |
witness1.cnic | First witness's ID number | (no sample) |
witness1.designation | First witness's designation | (no sample) |
witness2.name | Second witness's name | (no sample) |
witness2.cnic | Second witness's ID number | (no sample) |
witness2.designation | Second witness's designation | (no sample) |
hasWitnesses | True when either witness has a name | false |
electronicAcceptance | Present only when the employee accepted the contract electronically; empty otherwise | (empty in the sample) |
electronicAcceptance.acceptedAt | Date of electronic acceptance | (no sample) |
electronicAcceptance.ip | IP address the acceptance came from | (no sample) |
electronicAcceptance.userAgent | Browser identification, first 100 characters | (no sample) |
variant.key | PDF variant chosen at download: digital (full letterhead), stamp_overlay (blank top area for stamp paper) or plain (no letterhead) | digital |
variant.digital | True for the digital variant | true |
variant.stampOverlay | True for the stamp-overlay variant | false |
variant.plain | True for the plain variant | false |
Salary slips
| Variable | Meaning | Example |
|---|---|---|
company.name | Workspace name | Example Company Ltd |
company.logo | Logo as an embedded image | (image data) |
company.seal | Seal as an embedded image | (image data) |
company.address | Street, city, state or province and country, skipping empty parts | 100 Example Street, Example City |
company.email | Company email | [email protected] |
company.phone | Company phone | +1 555 0100 |
employee.full_name | First and last name | Jordan Lee |
employee.code | Employee code | EMP-0042 |
employee.department | Department | Software Engineering |
employee.designation | Designation | Senior Software Engineer |
employee.cnic | National ID number | 123-45-6789 |
employee.bank_name | Employee's first bank account: bank name | Example Bank |
employee.bank_title | Account title | Jordan Lee |
employee.bank_account | Full account number | 1234-5678901234 |
employee.bank_display | Bank with the account masked to its last four digits | Example Bank (***1234) |
payment.from_bank_name | Bank the salary was paid from | Example Bank |
payment.from_bank_account_title | Paying account's title | Example Company Ltd |
payment.from_bank_account_number | Paying account's number | 0001-1234567890 |
payment.from_bank_branch | Paying account's branch | Main Branch |
payment.from_display | Paying bank with the account masked to its last four digits | Example Bank (***7890) |
payment.method | Payment method key | bank_transfer |
payment.method_label | Payment method in words | Bank Transfer |
payment.reference | Payment reference | TRX-2026040712345 |
payment.is_paid | True once the entry is marked paid | true |
acknowledgment.is_acknowledged | True once the employee has confirmed receipt | true |
acknowledgment.timestamp | When they confirmed, in the workspace's time | 08 Apr 2026, 09:14 |
acknowledgment.ip | IP address of the confirmation | 203.0.113.42 |
acknowledgment.signer_name | Name stamped as the typed signature | Jordan Lee |
payroll.month_year | Pay period | March 2026 |
payroll.pay_date | Payment date, or the date the slip is generated when the entry is unpaid | 07 Apr 2026 |
payroll.working_days | Working days in the period | 26 |
payroll.present_days | Present days | 23 |
payroll.absent_days | Absent days | 1 |
payroll.leave_days | Leave days | 1 |
payroll.late_count | Late arrivals | 2 |
payroll.early_leave_count | Early departures; the standard slip shows them only when there are some | 1 |
payroll.half_days | Half days; the standard slip shows them only when there are some | 1 |
payroll.unpaid_leave_days | Unpaid leave days; on a processed run this includes the days of pay withheld by leave at reduced pay (four days at 50% count as 2); the standard slip shows them only when there are some | 1 |
payroll.overtime_hours | Overtime hours | 0 |
payroll.holidays | Holidays in the period | 0 |
payroll.exempt_days | Days on a shift that does not require punches | (not in the preview sample) |
payroll.is_exempt | True when most present days were punch-exempt days | (not in the preview sample) |
payroll.gross_salary | Assigned monthly gross; stays the same whatever the attendance | 6,500 |
payroll.total_earnings | Sum of the earning lines, after attendance proration | (not in the preview sample) |
payroll.total_deductions | Total deductions | 1,170 |
payroll.net_salary | Net pay | 5,330 |
payroll.net_salary_words | Net pay in words, without the currency noun | Five Thousand Three Hundred and Thirty |
payroll.tax_amount | Tax deducted this month | 845 |
payroll.taxable_income | Taxable income this month | 6,500 |
payroll.pf_taxable_excess | Employer provident-fund contribution above the tax-free limit | 50 |
payroll.has_pf_taxable_excess | True when that excess applies | true |
payroll.has_absence_tax_note | True when absences or unpaid leave reduced the taxed earnings | true |
payroll.fy_label | Fiscal year label | FY 2026 |
payroll.has_tax_box | True when there is taxable income or tax this month | true |
payroll.projected_annual_taxable | This month's taxable income times 12 | 78,000 |
payroll.projected_annual_tax | This month's tax times 12 | 10,140 |
payroll.pf_month_employee | Employee provident-fund contribution this month | 195 |
payroll.pf_month_employer | Employer provident-fund contribution this month | 195 |
payroll.pf_ytd_employee | Employee contributions so far this fiscal year | 585 |
payroll.pf_ytd_employer | Employer contributions so far this fiscal year | 585 |
payroll.pf_ytd_total | Both, so far this fiscal year | 1,170 |
payroll.pf_balance | Fund balance through the slip's month | 9,240 |
payroll.has_pf_summary | True when there is any fund activity or balance | true |
payroll.history_months | List: the last 12 months, each with this.label, this.gross, this.deductions, this.tax, this.net, this.bar_pct | Mar 2026 / 6,500 / 1,170 / 845 / 5,330 / 100 |
payroll.history_gross | Gross total of those months | 76,500 |
payroll.history_deductions | Deductions total | 13,740 |
payroll.history_tax | Tax total | 9,885 |
payroll.history_net | Net total | 62,760 |
payroll.months_paid | Payroll months on record through this slip | 24 |
payroll.lifetime_gross | Gross paid over the whole employment | 148,500 |
payroll.lifetime_tax | Tax over the whole employment | 19,005 |
payroll.lifetime_net | Net over the whole employment | 121,920 |
payroll.has_lifetime_tax | True when any tax has been deducted | true |
payroll.employer_contributions_total | Total employer contributions this month | 580 |
payroll.ctc | Earned pay after attendance deductions plus employer contributions | 7,080 |
payroll.ytd_months | List: fiscal-year months so far, each with this.label, this.gross, this.deductions, this.tax, this.net (kept for older slip designs) | Jan 2026 / 6,500 / 1,170 / 845 / 5,330 |
payroll.ytd_gross | Gross so far this fiscal year | 19,500 |
payroll.ytd_deductions | Deductions so far this fiscal year | 3,510 |
payroll.ytd_tax | Tax so far this fiscal year | 2,535 |
payroll.ytd_net | Net so far this fiscal year | 15,990 |
payroll.is_imported | True when the slip comes from an imported salary history | false |
payroll.source | "imported" or "processed" | processed |
payroll.adjustment_notes | Notes on the entry, with the import note removed | (empty in the sample) |
payroll.has_adjustment_notes | True when there are notes to show | false |
earnings | List of earning lines, each with this.name and this.amount | Basic Salary / 3,900 |
deductions | List of deduction lines, each with this.name and this.amount | Income Tax / 845 |
employer_contributions | List of employer contribution lines, each with this.name and this.amount | (not in the preview sample) |
has_employer_contributions | True when there is at least one employer contribution | (not in the preview sample) |
The fiscal-year sample figures above are for a workspace whose fiscal year starts in January; the preview recalculates them for the workspace's own fiscal year.
Tax certificates
| Variable | Meaning | Example |
|---|---|---|
company.name | Workspace name; also the signatory | Example Company Ltd |
company.legalName | Legal name; empty when it is the same as the workspace name | (empty when identical) |
company.ntn | Company national tax number field, shown in company settings only in countries that use it; empty otherwise | (empty for a US workspace) |
company.strn | Company sales-tax registration field, same rule as above | (empty for a US workspace) |
company.address | Address lines 1 and 2, city, state or province and country | 100 Example Street, Example City |
company.email | Company email | [email protected] |
company.phone | Company phone | +1 555 0100 |
company.website | Company website | www.example.com |
company.logo | Logo as an embedded image | (image data) |
company.seal | Seal as an embedded image | (image data) |
employee.full_name | First and last name | Jordan Lee |
employee.code | Employee code | EMP-0042 |
employee.cnic | National ID number | 123-45-6789 |
employee.ntn | Employee's personal tax number, where the country records one; empty otherwise | (empty for a US workspace) |
employee.designation | Designation | Senior Software Engineer |
employee.department | Department | Software Engineering |
employee.joining_date | Joining date | 15 Jan 2022 |
fiscalYear | Fiscal year name | FY 2025 |
fiscalYearRange | First and last day of the fiscal year | 01 Jan 2025 – 31 Dec 2025 |
certificateNumber | Certificate number, built from the fiscal year and employee code | TC-FY2025-EMP-0042 |
issuedDate | Date the certificate is produced | 15 Jan 2026 |
months | List: one row per payroll month in the year, each with this.monthName, this.grossSalary, this.taxableIncome, this.taxDeducted | January 2025 / 6,000.00 / 5,500.00 / 760.00 |
totals.grossSalary | Gross for the year | 75,000.00 |
totals.taxableIncome | Taxable income for the year | 69,000.00 |
totals.taxDeducted | Tax deducted for the year, including tax adjustments | 9,630.00 |
totals.taxAdjustments | Net tax adjustments; empty when there are none | (empty in the sample) |
amountInWords | Total tax deducted in words, with the currency noun | Nine Thousand Six Hundred and Thirty Dollars Only |
signatory.name | Signatory: the workspace name | Example Company Ltd |
signatory.designation | Signatory title, in the certificate's language | Authorized Signatory |
Bank payment files
A payment file format has a header line, a row line repeated once per payment, and a trailer line. Row variables work only in the row line; global variables work in all three. Add a filter after a vertical bar, for example debitAccount|pad:13:0 or beneName|trunc:35|upper. Filters: pad:length:character pads on the left (zero by default), padEnd:length:character pads on the right (space by default), trunc:length cuts to a maximum length, upper and lower change case. An unknown variable prints nothing and an unknown filter is ignored. Commas and line breaks in names are replaced with spaces.
| Variable | Meaning | Example |
|---|---|---|
beneName | Row. Beneficiary name: the account title, else the employee's name | JORDAN LEE |
employeeName | Row. Employee's full name (for a contribution-fund transfer row, the fund's name) | Jordan Lee |
employeeCode | Row. Employee code (for a fund row, the fund's code) | E-1002 |
accountTitle | Row. Beneficiary account title | JORDAN LEE |
accountNumber | Row. Beneficiary local account number | 9876543210 |
iban | Row. Beneficiary IBAN, spaces removed, upper case | GB33BUKB20201555555555 |
bankName | Row. Beneficiary bank name | Sample Bank |
bankShortName | Row. Beneficiary bank's short label | SMPL |
bankCode | Row. Routing code: the paying bank's SWIFT code when both accounts are at the same bank, otherwise the beneficiary bank's routing code | SMPLUS44XXX |
swift | Row. Beneficiary bank's SWIFT/BIC | SMPLUS44XXX |
amount | Row. Net pay, rounded to a whole unit and written with the format's number of decimals | 4250.00 |
amountMinor | Row. The same amount with the decimal point removed | 425000 |
isOwnBank | Row. "1" when the beneficiary banks with the paying bank, else "0" | 0 |
count | Global. Number of payments in the file | 2 |
total | Global. Sum of the amounts | 9580.00 |
totalMinor | Global. The sum with the decimal point removed | 958000 |
valueDate | Global. Payment date chosen when the file is generated, written with the format's date pattern (YYYY, MM and DD) | 25/07/2026 |
companyName | Global. Paying company's name | Example Company Ltd |
debitAccount | Global. Paying (debit) account number | (the paying account) |
debitTitle | Global. Paying account title | (the paying account) |
debitIban | Global. Paying account IBAN | (the paying account) |
debitSwift | Global. Paying bank's SWIFT/BIC | (the paying account) |
debitCity | Global. City code typed when the file is generated, upper case; required when the format uses it | NYC |
name | File name pattern only. The format's name, with unsafe characters replaced by dashes | Example-Bank-payment-file |
year | File name pattern only. Payroll year | 2026 |
month | File name pattern only. Payroll month, two digits | 07 |
Only employees paid by bank transfer, with a positive net pay, a bank account with an IBAN and a selected bank, and a routing code, get a row; everyone else is listed as skipped. Contribution-fund transfers that go out in the payment file get rows of their own.
Handlebars helpers
These helpers are available in HR letters, employment contracts, salary slips and tax certificates (and in email templates, which use the same engine). They are not available in bank payment files.
| Helper | What it does | Example use |
|---|---|---|
formatCurrency | Formats a plain number as money in the document's currency, with grouping and two decimals. Also reads the amounts in the tables above, which arrive already formatted in the document's language | formatCurrency 5330 gives $ 5,330.00 on a slip |
formatDate | Writes a date as day, short month and year, in the document's language | formatDate issuedDate gives 13 Apr 2026 |
uppercase | Upper-cases text (prints nothing for a non-text value) | uppercase employee.full_name |
lowercase | Lower-cases text | lowercase employee.code |
eq | True when two values are exactly equal; use it inside if or unless | if (eq payment.method "bank_transfer") |
add | Adds two numbers | add payroll.present_days payroll.leave_days |
subtract | Subtracts the second number from the first | subtract payroll.working_days payroll.present_days |
inc | Adds one, for 1-based row numbers | inc @index inside an each block |
monthName | Month name for a month number 1 to 12, in the document's language | monthName 4 gives April |
tx | Prints a platform message by its key, translated into the document's language | tx 'payroll.tax.certificateText.authorizedSignatory' |
numberToWords | A plain number in words, with the currency noun and "Only". Reads formatted amounts like formatCurrency | numberToWords 5330 gives Five Thousand Three Hundred and Thirty Dollars Only on a slip |
currencyWord | The currency's noun on its own | Dollars |
currencySymbol | The currency's symbol on its own | $ |
Handlebars' own block tags also work: if with else, unless, each (with @index, @first and @last inside the block), with and lookup. Letters, contracts, salary slips and tax certificates all carry their currency and language, so the currency and language-aware helpers work in each of them.