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
| Where | How you write a variable | Example |
|---|---|---|
| If Condition and Segmentation, simple mode | Pick 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 mode | A JavaScript expression with the bare name | account.totalAmount > 10000 |
| Recursive step | JavaScript code with the bare name, plus the helper functions | if (daysInExecution > 30) { return [switchPathIfExists('late')]; } |
| Set Value | A 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 saves10000. - Dates are strings in
YYYY-MM-DD. Compare them as strings (ptpDueDate < todaysDate) or withmoment. - 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.
| Variable | Type | Meaning |
|---|---|---|
claimAmount | integer, cents | Claim amount without fees. Same as amount. |
amount | integer, cents | Claim amount without fees |
totalFees | integer, cents | Sum of all fees on the claim |
fees | array | The individual fees |
currency | string | 3-letter currency code (ISO 4217), e.g. EUR |
status | string: ACTIVE, DELETED, RESOLVED | Current claim status |
type | string: DEFAULT, SIMULATED, ACCOUNT_INVOICE | Type of claim |
dueDate | string, date | Due date of the claim in the platform |
externalDueDate | string, date | The client's original due date |
claimAge | number, days | Days since dueDate |
originalClaimAge | number, days | Days since externalDueDate. Shown as "Days past due" in the builder. |
externalClaimRef | string | The client's claim reference |
externalPortfolioRef | string | The client's portfolio reference |
paymentReference | string | Reference used to match payments |
productReference | string | Reference of the claim's product |
creditorReference | string | The person or company the money is owed to |
segment | string | Label the client sets on the claim |
createdAt | integer | Claim creation time (epoch ms) |
repaymentsHistory | array | Earlier repayments |
additionalDebtors | array | Other people liable for the claim |
meta.<key> | depends on the field | The client's own claim fields. See Meta fields. |
Debtor
The person or company that owes the claim.
| Variable | Type | Meaning |
|---|---|---|
debtorAge | number, years | Debtor age |
debtorBirthday | string, date | Same as debtor.birthday |
debtorGender | string: F, M | Same as debtor.gender |
email | string | Same as debtor.contactInformation.email |
mobileNumber | string | Same as debtor.contactInformation.mobileNumber |
postalCode | string | Same as debtor.contactInformation.postalCode |
debtor.type | string: natural, legal | Person or company |
debtor.externalDebtorRef | string | The client's debtor reference |
debtor.firstName, debtor.middleName, debtor.lastName, debtor.title | string | Name |
debtor.companyName | string | Company name, for legal debtors |
debtor.birthday | string, date | Date of birth |
debtor.placeOfBirth | string | Place of birth |
debtor.gender | string: F, M | Gender |
debtor.SSN | string | Social security number |
debtor.IBAN | string | Bank account number |
debtor.timezone | string | IANA timezone, e.g. America/New_York |
debtor.sendingHours | object | Hours the debtor may be contacted, by day of the week (0 is Sunday) |
debtor.contactInformation.email | string | Email address |
debtor.contactInformation.mobileNumber, .landLine, .workPhoneNumber | string | Phone numbers |
debtor.contactInformation.addressLine1, .addressLine2, .addressLine3, .houseNumber | string | Street address |
debtor.contactInformation.city, .suburb, .postalCode | string | Place |
debtor.contactInformation.state | string | State, province or territory |
debtor.contactInformation.country | string | 2-letter country code (ISO 3166-1), e.g. DE |
debtor.contactInformation.additionalAddresses, .additionalContactInformation | array | Other 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.
| Variable | Type | Meaning |
|---|---|---|
account.totalAmount | integer, cents | Account total including fees. Shown as "Total amount" in the builder. |
account.amount | integer, cents | Account total without fees. Shown as "Amount without fees". |
account.totalFees | integer, cents | Account fees. Shown as "Total Fees". |
account.oldestClaimReference | string | Claim reference of the account's oldest active claim, by due date |
account.accountAge | number, days | Days since the earliest due date among the active claims |
account.originalAccountAge | number, days | Days since the earliest client due date among the active claims |
account.activeClaims | array | The account's active claims |
account.paymentMandates | array | The account's payment mandates |
account.scores.<type> | depends on the score | Account scores. See Scores. |
account.meta.<key> | depends on the field | The client's own account fields. See Meta fields. |
accountId | string | Account identifier |
internalScore | string | The 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.
| Variable | Type | Meaning |
|---|---|---|
product.productReference | string | Product reference |
product.name | string | Product name |
product.code | string | Product code |
product.type | string | Product type |
product.paymentReference | string | Payment reference of the product |
product.meta.<key> | depends on the field | The client's own product fields. See Meta fields. |
oldestClaimReferenceFromProduct | string | Claim reference of the oldest claim in the same product |
origination.type | string: product, service | What the debt came from |
origination.name | string | Name of the product or service, e.g. Loan |
origination.brand | string | Brand of the product |
origination.code | string | Client code of the product |
brand | string | Same as origination.brand |
Date and time
| Variable | Type | Meaning |
|---|---|---|
todaysDate | string, date | Today in the client's timezone |
dayOfTheWeek | string: Monday to Sunday | Today's weekday in the client's timezone, in English |
dayOfTheMonth | number, 1 to 31 | Today's day of the month in the client's timezone |
isHolidayInCountry(countryCode) | function returning true or false | True if today is a public holiday in that country, e.g. isHolidayInCountry("DE") |
moment | library | The moment-timezone library, for date maths |
Example: moment.tz("Europe/Berlin").format("HH") >= "09".
Strategy progress
| Variable | Type | Meaning |
|---|---|---|
daysInExecution | number, days | Days since the strategy started for this claim. A Set Value step can reset it. |
originalDaysInExecution | number, days | Days since the claim was created. Never reset. |
currentBlueprint.id | string | ID of the strategy the running step belongs to |
currentBlueprint.name | string or null | Name of the strategy the running step belongs to |
lastCheckpointName | string | Name of the last checkpoint the strategy reached |
clientId | string | Client identifier |
daysInExecution is the only one of these variables a Set Value step can change. Set Value can also write meta fields.
Communication
| Variable | Type | Meaning |
|---|---|---|
lastDebtorEmailOpened | string, date | Date the debtor last opened a strategy email |
lastStrategyEmailSent | string, date | Date the strategy last sent an email |
lastStrategySMSSent | string, date | Date the strategy last sent an SMS |
lastStrategyLetterSent | string, date | Date the strategy last sent a letter |
daysSinceLastStrategyCommunicationSent | number, days | Days 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:
| Field | Type | Meaning |
|---|---|---|
.amount | number, cents | Payment amount |
.currency | string | 3-letter currency code |
.date | string, date | Payment date |
.time | number | Payment time (epoch ms) |
.context | string | What the payment was for: claim, promiseToPay or instalment |
.paymentReference | string | Payment reference |
.providerName | string | Payment provider, e.g. trustly, adyen |
For example lastSettledPayment?.date >= "2026-01-01".
| Variable | Type | Meaning |
|---|---|---|
lastFailedPayment.reason | string | Why the last payment failed, e.g. INVALID_CVV |
lastFailedPayment.providerName | string | Payment provider of the failed payment |
ptpDueDate | string, date | Due date of the promise to pay |
paymentFlowProviderNames | array | Payment providers enabled for the claim |
activePaymentMandates | array | Active recurring payment mandates |
lastAutomatedClaimMandatePaymentSucceeded | true or false | Whether the last automatic mandate charge succeeded |
lastManualClaimMandatePaymentSucceeded | true or false | Whether the last manual mandate charge succeeded |
Outsourcing
Present once the claim has been outsourced to a partner.
| Variable | Type | Meaning |
|---|---|---|
claimOutsourcedToPartner.date | string, date | Date the claim was outsourced |
claimOutsourcedToPartner.outsourceTime | string | Time of day it was outsourced, e.g. 14:30 |
claimOutsourcedToPartner.time | number | Outsourcing time (epoch ms) |
claimOutsourcedToPartner.partnerId | string | The partner it was outsourced to |
claimOutsourcedToPartner.outsourceMethod | string | How 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:
| Variable | Meaning |
|---|---|
scores.collection, account.scores.collection | Collection score. Shown as "AI collection score". |
scores.behavioral.paymentProbability, account.scores.behavioral.paymentProbability | Probability of payment. Shown as "AI payments score". |
scores.behavioral.selfServiceProbability, account.scores.behavioral.selfServiceProbability | Self-service score. Shown as "AI self service score". |
scores.behavioral.segment, account.scores.behavioral.segment | Behavioural 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:
| Prefix | Field of | Example |
|---|---|---|
meta.<key> | the claim | meta.riskLevel === "high" |
account.meta.<key> | the account | account.meta.tier === "A" |
product.meta.<key> | the product | product.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) oraccount.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.