Skip to main content

Condition variables reference

This page lists every variable a strategy can read when it decides what to do: in an If Condition step, a Segmentation step, a Recursive (code) step, and as a {{placeholder}} in a Set Value step. For each one it gives the exact name, the type, the allowed values where there is a fixed list, and what it means.

Use the names exactly as written here. A name the platform does not know is rejected when you save, and a path under an object that is not listed here is never set, so the condition does not do what you expect.

Where you use them​

WhereHow you write a variableExample
If Condition and Segmentation, simple modePick it from the variable list. The list shows a subset of this page, grouped as in the tables below.Account → Total amount, Greater than, 100.00
If Condition and Segmentation, advanced modeA JavaScript expression with the bare nameaccount.totalAmount > 10000
Recursive stepJavaScript code with the bare name, plus the helper functionsif (daysInExecution > 30) { return [switchPathIfExists('late')]; }
Set ValueA placeholder in the value{{daysInExecution}}

In expressions and code, variables are bare names, never {{placeholders}}. Placeholders only work in Set Value.

Rules that apply to every variable​

  • Amounts are integers in cents. 100.00 is 10000. This applies to claim, account and payment amounts. In simple mode the amount field does the conversion for you: you type 100.00 and the condition saves 10000.
  • Dates are strings in YYYY-MM-DD. Compare them as strings (ptpDueDate < todaysDate) or with moment.
  • Today's date, day of the week and day of the month use the client's timezone, not UTC.
  • Values can be missing. A claim that never had a payment has no lastSettledPayment. Use ?. so a missing value makes the condition false instead of failing it: lastSettledPayment?.amount > 0. See Custom Conditions (Advanced).
  • Fixed lists are exact. Where a variable lists allowed values, compare with exactly one of them, in the same case: debtorGender === "F", not "FEMALE".

Claim​

The claim the strategy is running for.

VariableTypeMeaning
claimAmountinteger, centsClaim amount without fees. Same as amount.
amountinteger, centsClaim amount without fees
totalFeesinteger, centsSum of all fees on the claim
feesarrayThe individual fees
currencystring3-letter currency code (ISO 4217), e.g. EUR
statusstring: ACTIVE, DELETED, RESOLVEDCurrent claim status
typestring: DEFAULT, SIMULATED, ACCOUNT_INVOICEType of claim
dueDatestring, dateDue date of the claim in the platform
externalDueDatestring, dateThe client's original due date
claimAgenumber, daysDays since dueDate
originalClaimAgenumber, daysDays since externalDueDate. Shown as "Days past due" in the builder.
externalClaimRefstringThe client's claim reference
externalPortfolioRefstringThe client's portfolio reference
paymentReferencestringReference used to match payments
productReferencestringReference of the claim's product
creditorReferencestringThe person or company the money is owed to
segmentstringLabel the client sets on the claim
createdAtintegerClaim creation time (epoch ms)
repaymentsHistoryarrayEarlier repayments
additionalDebtorsarrayOther people liable for the claim
meta.<key>depends on the fieldThe client's own claim fields. See Meta fields.

Debtor​

The person or company that owes the claim.

VariableTypeMeaning
debtorAgenumber, yearsDebtor age
debtorBirthdaystring, dateSame as debtor.birthday
debtorGenderstring: F, MSame as debtor.gender
emailstringSame as debtor.contactInformation.email
mobileNumberstringSame as debtor.contactInformation.mobileNumber
postalCodestringSame as debtor.contactInformation.postalCode
debtor.typestring: natural, legalPerson or company
debtor.externalDebtorRefstringThe client's debtor reference
debtor.firstName, debtor.middleName, debtor.lastName, debtor.titlestringName
debtor.companyNamestringCompany name, for legal debtors
debtor.birthdaystring, dateDate of birth
debtor.placeOfBirthstringPlace of birth
debtor.genderstring: F, MGender
debtor.SSNstringSocial security number
debtor.IBANstringBank account number
debtor.timezonestringIANA timezone, e.g. America/New_York
debtor.sendingHoursobjectHours the debtor may be contacted, by day of the week (0 is Sunday)
debtor.contactInformation.emailstringEmail address
debtor.contactInformation.mobileNumber, .landLine, .workPhoneNumberstringPhone numbers
debtor.contactInformation.addressLine1, .addressLine2, .addressLine3, .houseNumberstringStreet address
debtor.contactInformation.city, .suburb, .postalCodestringPlace
debtor.contactInformation.statestringState, province or territory
debtor.contactInformation.countrystring2-letter country code (ISO 3166-1), e.g. DE
debtor.contactInformation.additionalAddresses, .additionalContactInformationarrayOther addresses and contact details

The debtor path is debtor.contactInformation.country. There is no debtor.address.

Account​

The account the claim belongs to. An account groups all claims of the same person.

VariableTypeMeaning
account.totalAmountinteger, centsAccount total including fees. Shown as "Total amount" in the builder.
account.amountinteger, centsAccount total without fees. Shown as "Amount without fees".
account.totalFeesinteger, centsAccount fees. Shown as "Total Fees".
account.oldestClaimReferencestringClaim reference of the account's oldest active claim, by due date
account.accountAgenumber, daysDays since the earliest due date among the active claims
account.originalAccountAgenumber, daysDays since the earliest client due date among the active claims
account.activeClaimsarrayThe account's active claims
account.paymentMandatesarrayThe account's payment mandates
account.scores.<type>depends on the scoreAccount scores. See Scores.
account.meta.<key>depends on the fieldThe client's own account fields. See Meta fields.
accountIdstringAccount identifier
internalScorestringThe account's internal score

The three account totals add up the account's active claims, including claims already outsourced to a partner. Resolved claims are not included.

To act only when a person's whole debt is above a limit, compare the account total, not the claim amount. For "above 100.00":

account.totalAmount > 10000;

Product​

The product the claim belongs to, and where the debt came from.

VariableTypeMeaning
product.productReferencestringProduct reference
product.namestringProduct name
product.codestringProduct code
product.typestringProduct type
product.paymentReferencestringPayment reference of the product
product.meta.<key>depends on the fieldThe client's own product fields. See Meta fields.
oldestClaimReferenceFromProductstringClaim reference of the oldest claim in the same product
origination.typestring: product, serviceWhat the debt came from
origination.namestringName of the product or service, e.g. Loan
origination.brandstringBrand of the product
origination.codestringClient code of the product
brandstringSame as origination.brand

Date and time​

VariableTypeMeaning
todaysDatestring, dateToday in the client's timezone
dayOfTheWeekstring: Monday to SundayToday's weekday in the client's timezone, in English
dayOfTheMonthnumber, 1 to 31Today's day of the month in the client's timezone
isHolidayInCountry(countryCode)function returning true or falseTrue if today is a public holiday in that country, e.g. isHolidayInCountry("DE")
momentlibraryThe moment-timezone library, for date maths

Example: moment.tz("Europe/Berlin").format("HH") >= "09".

Strategy progress​

VariableTypeMeaning
daysInExecutionnumber, daysDays since the strategy started for this claim. A Set Value step can reset it.
originalDaysInExecutionnumber, daysDays since the claim was created. Never reset.
currentBlueprint.idstringID of the strategy the running step belongs to
currentBlueprint.namestring or nullName of the strategy the running step belongs to
lastCheckpointNamestringName of the last checkpoint the strategy reached
clientIdstringClient identifier

daysInExecution is the only one of these variables a Set Value step can change. Set Value can also write meta fields.

Communication​

VariableTypeMeaning
lastDebtorEmailOpenedstring, dateDate the debtor last opened a strategy email
lastStrategyEmailSentstring, dateDate the strategy last sent an email
lastStrategySMSSentstring, dateDate the strategy last sent an SMS
lastStrategyLetterSentstring, dateDate the strategy last sent a letter
daysSinceLastStrategyCommunicationSentnumber, daysDays since the strategy last sent anything

Payments​

Four variables hold the claim's last payment in each state: lastSettledPayment, lastCanceledPayment, lastDisputedPayment and lastProcessingPayment. Each has the same fields:

FieldTypeMeaning
.amountnumber, centsPayment amount
.currencystring3-letter currency code
.datestring, datePayment date
.timenumberPayment time (epoch ms)
.contextstringWhat the payment was for: claim, promiseToPay or instalment
.paymentReferencestringPayment reference
.providerNamestringPayment provider, e.g. trustly, adyen

For example lastSettledPayment?.date >= "2026-01-01".

VariableTypeMeaning
lastFailedPayment.reasonstringWhy the last payment failed, e.g. INVALID_CVV
lastFailedPayment.providerNamestringPayment provider of the failed payment
ptpDueDatestring, dateDue date of the promise to pay
paymentFlowProviderNamesarrayPayment providers enabled for the claim
activePaymentMandatesarrayActive recurring payment mandates
lastAutomatedClaimMandatePaymentSucceededtrue or falseWhether the last automatic mandate charge succeeded
lastManualClaimMandatePaymentSucceededtrue or falseWhether the last manual mandate charge succeeded

Outsourcing​

Present once the claim has been outsourced to a partner.

VariableTypeMeaning
claimOutsourcedToPartner.datestring, dateDate the claim was outsourced
claimOutsourcedToPartner.outsourceTimestringTime of day it was outsourced, e.g. 14:30
claimOutsourcedToPartner.timenumberOutsourcing time (epoch ms)
claimOutsourcedToPartner.partnerIdstringThe partner it was outsourced to
claimOutsourcedToPartner.outsourceMethodstringHow it was outsourced. The builder lists the allowed methods.

Scores​

Scores are keyed by score type. The claim's scores are in scores, the account's in account.scores:

VariableMeaning
scores.collection, account.scores.collectionCollection score. Shown as "AI collection score".
scores.behavioral.paymentProbability, account.scores.behavioral.paymentProbabilityProbability of payment. Shown as "AI payments score".
scores.behavioral.selfServiceProbability, account.scores.behavioral.selfServiceProbabilitySelf-service score. Shown as "AI self service score".
scores.behavioral.segment, account.scores.behavioral.segmentBehavioural segment
scores.internal, scores.external (and the same under account.scores)Other scores the client sends

A score that was never sent is null, so use ?. below it: scores.behavioral?.segment. The builder only shows the score groups when the client has AI scoring enabled.

Meta fields​

Meta fields are the client's own fields. Which ones exist depends on the client's meta schema, which you manage under Manage Meta Fields. The prefix says where the field lives:

PrefixField ofExample
meta.<key>the claimmeta.riskLevel === "high"
account.meta.<key>the accountaccount.meta.tier === "A"
product.meta.<key>the productproduct.meta.campaign === "spring"

Use the key exactly as it is in the schema, and protect it with ?. because not every claim has every field: meta?.riskLevel === "high".

Helper functions in the Recursive step​

A Recursive step returns a list of steps built with these functions: insertPath, insertPathIfExists, switchPathIfExists, insertEmailStep, insertEmailStepWithCustomRecipients, insertMessageStep, insertLetterStep, insertLetterStepsWithCustomRecipients, enableCallbacks, disableCallbacks, enableTextFeedback, disableTextFeedback, setPaymentMethods, updateLandingPageContent, setClaimMetaField, setAccountMetaField, chargeRecurringPaymentMandate and createPromiseToPay. See Recursive step.

Besides the variables and these functions, code can use Math, Number, parseInt, parseFloat, isNaN, NaN, Date, Error and undefined. Access by a computed key such as obj[key] is not allowed; a number index such as list[0] is.

For AI agents​

When you write or check a strategy condition:

  • Only use names and paths from this page, or meta field keys from the client's meta schema. Do not guess a path from another system's data model.
  • Compare amounts in cents. "Above €100" is > 10000.
  • For a limit on a person's total debt, use account.totalAmount (with fees) or account.amount (without fees). Do not add up claims in code.
  • Use allowed values exactly as listed.
  • Use ?. on anything that can be missing: payments, outsourcing, meta fields, scores.
  • In If Condition and Segmentation, write a boolean expression. In Set Value, use {{placeholders}}. In a Recursive step, return a list built with the helper functions.