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])
Transaction & Merchant
| Field | Type | Description | Presence |
|---|
Amount | INTEGER | Purchase amount in the currency's major unit. Currency must be specified. | Payment transactions only |
Amount in EUR | INTEGER | Purchase amount converted to EUR in cents. | Payment transactions only |
Currency | ENUM | Purchase currency in ISO 4217 Alpha3 (e.g. EUR). | Payment transactions only |
Category | ENUM | Transaction category. Values: PAYMENT, NON_PAYMENT. | Always |
MCC | ENUM | Merchant category code describing the type of business. | Payment transactions; optional for non-payment |
Merchant Country | ENUM | Merchant country in ISO 3166 Alpha3 (e.g. IRL). | Payment transactions; optional for non-payment |
Merchant ID | STRING | Acquirer-assigned merchant identifier. | Payment transactions; optional for non-payment |
Merchant Name | STRING | Merchant name assigned by the acquirer or payment system. | Payment transactions; optional for non-payment |
Merchant Last 24 Hours Count | INTEGER | Number of transactions the cardholder has made with this merchant in the last 24 hours. | Always |
Installments | INTEGER | Maximum number of authorisations permitted for instalment payments. | Instalment payments only |
Recur Frequency | INTEGER | Minimum number of days between authorisations for recurring transactions. | Recurring transactions only |
Device & Network
| Field | Type | Description | Presence |
|---|
Device Channel | ENUM | Channel through which the transaction was initiated. Values: APP, BROWSER, REQUESTOR_INITIATED. | Always |
Device IP | STRING | IP address of the browser or app that initiated the transaction. | When provided by 3DS requestor or SDK |
Device Country | ENUM | Country of the device in ISO 3166 Alpha3. | When determinable |
IP Occurrence Last 24 Hours Count | INTEGER | Number of transactions from this IP address within the Financial Institution in the last 24 hours. | Always |
Challenge Preference | ENUM | Indicates whether a challenge is requested. | Always |
Protocol Version | ENUM | Protocol Version in use. Values: 2.1.0, 2.2.0. | Always |
Cardholder & Card Activity
| Field | Type | Description | Presence |
|---|
Cardholder Last 24 Hours Count | INTEGER | Number of transactions for the cardholder in the last 24 hours. | Always |
Frictionless Payment Count Since Last Challenge | INTEGER | Count of Frictionless Transaction occurrences since the last successful challenge. | Always |
Card ID | STRING | Apata internal card identifier. | Always |
Card External ID | STRING | Issuer-provided external card identifier. | When set on the card |
Financial Institution ID | STRING | Identifier of the Financial Institution. | Always |
Possession Device ID | ENUM | Device ID match state for possession-based device profiling (browser only). Values: MATCH, NO_MATCH, NOT_PRESENT. | Browser transactions when profiling is complete |
Computed Device ID | ENUM | Computed device ID match state. Values: MATCH, NO_MATCH, NOT_PRESENT. | Browser (when profiling complete) or App (when provided by merchant) |
Risk Scores
| Field | Type | Description | Presence |
|---|
Primary Risk Category | ENUM | Risk result from the primary risk engine. Values: LOW, MEDIUM, HIGH. | When configured and risk engine returns a result |
Mastercard Risk Score | INTEGER | Risk score from the Mastercard DS. Range: 0–100. | When provided by Mastercard DS |
Mastercard Risk Decision | ENUM | Risk decision from the Mastercard DS. Values: Low Risk, Not Low Risk. | When provided by Mastercard DS |
Visa Risk Score | INTEGER | Risk score from the Visa DS. | When provided by Visa DS |
3DS Server & Requestor
| Field | Type | Description | Presence |
|---|
3DS Server Requestor ID | STRING | DS-assigned identifier for the 3DS Requestor (e.g. CAR12345_12345678). | Always |
3DS Server Requestor Name | STRING | DS-assigned name for the 3DS Requestor (e.g. Facebook). | Always |
3DS Server Operator ID | STRING | DS-assigned identifier for the 3DS Server. Present for Visa and Mastercard. | Visa and Mastercard |
3DS Server Reference Number | STRING | EMVco-assigned unique identifier for the 3DS Server. | Always |
The operator available for a condition depends on the field type.
String Operators
| Operator | Description |
|---|
EQUAL | Exact match |
NOT_EQUAL | Does not match |
IN | Value is in the provided list |
NOT_IN | Value is not in the provided list |
IS_PRESENT | Field is present on the transaction |
IS_NOT_PRESENT | Field is absent from the transaction |
EQUAL_IGNORE_CASE | Case-insensitive exact match |
NOT_EQUAL_IGNORE_CASE | Case-insensitive non-match |
REGEX_MATCH | Value matches the regular expression |
NOT_REGEX_MATCH | Value does not match the regular expression |
IN_IGNORE_CASE | Value is in the list (case-insensitive) |
NOT_IN_IGNORE_CASE | Value is not in the list (case-insensitive) |
REGEX_MATCH_IN | At least one value in the list matches the regex |
NOT_REGEX_MATCH_IN | No value in the list matches the regex |
Integer Operators
| Operator | Description |
|---|
EQUAL | Exact match |
NOT_EQUAL | Does not match |
IN | Value is in the provided list |
NOT_IN | Value is not in the provided list |
IS_PRESENT | Field is present |
IS_NOT_PRESENT | Field is absent |
LESS_THAN | Value is less than the specified number |
GREATER_THAN | Value is greater than the specified number |
Enum Operators
| Operator | Description |
|---|
EQUAL | Exact match |
NOT_EQUAL | Does not match |
IN | Value is in the provided list |
NOT_IN | Value is not in the provided list |
IS_PRESENT | Field is present |
IS_NOT_PRESENT | Field is absent |