Conditional

The Conditional Rule applies conditional logic to incoming authentication requests to determine whether a transaction should be accepted, challenged, or rejected. Conditions are evaluated against transaction fields such as amount, merchant, device channel, risk scores, and cardholder activity.

Flow

flowchart TD
    classDef success fill:#e6ffed,stroke:#38a169,color:#276749
    classDef terminal fill:#fff5f5,stroke:#fc8181,color:#c53030
    classDef process fill:#ebf8ff,stroke:#4299e1,color:#2c5282
    START([Transaction received]) --> EVAL[Evaluate Conditions]:::process
    EVAL -->|All conditions true| MATCH[Execute Match Action]:::process
    EVAL -->|Conditions false| NOMATCH[Execute No Match Action]:::process
    MATCH --> OUT1{Match action?}
    NOMATCH --> OUT2{No match action?}
    OUT1 -->|Accept| ACC([Frictionless · SUCCEEDED]):::success
    OUT1 -->|Challenge| CHAL([Challenge Flow]):::process
    OUT1 -->|Reject| REJ([REJECTED]):::terminal
    OUT1 -->|Next| NEXT([Next Rule])
    OUT2 -->|Accept| ACC2([Frictionless · SUCCEEDED]):::success
    OUT2 -->|Challenge| CHAL2([Challenge Flow]):::process
    OUT2 -->|Reject| REJ2([REJECTED]):::terminal
    OUT2 -->|Next| NEXT2([Next Rule])

Available Fields

Transaction & Merchant
FieldTypeDescriptionPresence
AmountINTEGERPurchase amount in the currency's major unit. Currency must be specified.Payment transactions only
Amount in EURINTEGERPurchase amount converted to EUR in cents.Payment transactions only
CurrencyENUMPurchase currency in ISO 4217 Alpha3 (e.g. EUR).Payment transactions only
CategoryENUMTransaction category. Values: PAYMENT, NON_PAYMENT.Always
MCCENUMMerchant category code describing the type of business.Payment transactions; optional for non-payment
Merchant CountryENUMMerchant country in ISO 3166 Alpha3 (e.g. IRL).Payment transactions; optional for non-payment
Merchant IDSTRINGAcquirer-assigned merchant identifier.Payment transactions; optional for non-payment
Merchant NameSTRINGMerchant name assigned by the acquirer or payment system.Payment transactions; optional for non-payment
Merchant Last 24 Hours CountINTEGERNumber of transactions the cardholder has made with this merchant in the last 24 hours.Always
InstallmentsINTEGERMaximum number of authorisations permitted for instalment payments.Instalment payments only
Recur FrequencyINTEGERMinimum number of days between authorisations for recurring transactions.Recurring transactions only
Device & Network
FieldTypeDescriptionPresence
Device ChannelENUMChannel through which the transaction was initiated. Values: APP, BROWSER, REQUESTOR_INITIATED.Always
Device IPSTRINGIP address of the browser or app that initiated the transaction.When provided by 3DS requestor or SDK
Device CountryENUMCountry of the device in ISO 3166 Alpha3.When determinable
IP Occurrence Last 24 Hours CountINTEGERNumber of transactions from this IP address within the Financial Institution in the last 24 hours.Always
Challenge PreferenceENUMIndicates whether a challenge is requested.Always
Protocol VersionENUMProtocol Version in use. Values: 2.1.0, 2.2.0.Always
Cardholder & Card Activity
FieldTypeDescriptionPresence
Cardholder Last 24 Hours CountINTEGERNumber of transactions for the cardholder in the last 24 hours.Always
Frictionless Payment Count Since Last ChallengeINTEGERCount of Frictionless Transaction occurrences since the last successful challenge.Always
Card IDSTRINGApata internal card identifier.Always
Card External IDSTRINGIssuer-provided external card identifier.When set on the card
Financial Institution IDSTRINGIdentifier of the Financial Institution.Always
Possession Device IDENUMDevice ID match state for possession-based device profiling (browser only). Values: MATCH, NO_MATCH, NOT_PRESENT.Browser transactions when profiling is complete
Computed Device IDENUMComputed device ID match state. Values: MATCH, NO_MATCH, NOT_PRESENT.Browser (when profiling complete) or App (when provided by merchant)
Risk Scores
FieldTypeDescriptionPresence
Primary Risk CategoryENUMRisk result from the primary risk engine. Values: LOW, MEDIUM, HIGH.When configured and risk engine returns a result
Mastercard Risk ScoreINTEGERRisk score from the Mastercard DS. Range: 0–100.When provided by Mastercard DS
Mastercard Risk DecisionENUMRisk decision from the Mastercard DS. Values: Low Risk, Not Low Risk.When provided by Mastercard DS
Visa Risk ScoreINTEGERRisk score from the Visa DS.When provided by Visa DS
3DS Server & Requestor
FieldTypeDescriptionPresence
3DS Server Requestor IDSTRINGDS-assigned identifier for the 3DS Requestor (e.g. CAR12345_12345678).Always
3DS Server Requestor NameSTRINGDS-assigned name for the 3DS Requestor (e.g. Facebook).Always
3DS Server Operator IDSTRINGDS-assigned identifier for the 3DS Server. Present for Visa and Mastercard.Visa and Mastercard
3DS Server Reference NumberSTRINGEMVco-assigned unique identifier for the 3DS Server.Always

Operators

The operator available for a condition depends on the field type.

String Operators
OperatorDescription
EQUALExact match
NOT_EQUALDoes not match
INValue is in the provided list
NOT_INValue is not in the provided list
IS_PRESENTField is present on the transaction
IS_NOT_PRESENTField is absent from the transaction
EQUAL_IGNORE_CASECase-insensitive exact match
NOT_EQUAL_IGNORE_CASECase-insensitive non-match
REGEX_MATCHValue matches the regular expression
NOT_REGEX_MATCHValue does not match the regular expression
IN_IGNORE_CASEValue is in the list (case-insensitive)
NOT_IN_IGNORE_CASEValue is not in the list (case-insensitive)
REGEX_MATCH_INAt least one value in the list matches the regex
NOT_REGEX_MATCH_INNo value in the list matches the regex
Integer Operators
OperatorDescription
EQUALExact match
NOT_EQUALDoes not match
INValue is in the provided list
NOT_INValue is not in the provided list
IS_PRESENTField is present
IS_NOT_PRESENTField is absent
LESS_THANValue is less than the specified number
GREATER_THANValue is greater than the specified number
Enum Operators
OperatorDescription
EQUALExact match
NOT_EQUALDoes not match
INValue is in the provided list
NOT_INValue is not in the provided list
IS_PRESENTField is present
IS_NOT_PRESENTField is absent