Skip to content

Risk v2.1

The Risk object is a required part of the PII payload submitted at both POST /par (consent staging) and POST /payments (payment initiation). It carries contextual signals about the debtor, the transaction, and the creditor that the LFI uses for fraud scoring and risk assessment.

TPPs must populate every field that is known or derivable from their system. Omitting available data degrades the LFI's ability to assess the payment accurately. At the same time, the schema enforces additionalProperties: false at the root — no fields outside the defined schema are permitted.

Like all PII, the Risk object is encrypted inside the JWE and is only readable by the destination LFI.

Schema Overview

The Risk object has four top-level properties:

PropertyDescription
DebtorIndicatorsSignals about the user: authentication method, device, location, account history
TransactionIndicatorsSignals about the transaction itself: channel, customer presence, merchant context
CreditorIndicatorsSignals about the payee: account type, merchant details, COP verification
DestinationDeliveryAddressPostal delivery address for the goods or services, if applicable

DebtorIndicators

Describes who is making the payment and how they authenticated.

Authentication

FieldTypeDescription
AuthenticationChannelenumChannel on which the user authenticated: App, Web
PossessionFactor.IsUsedbooleanWhether a possession factor was used
PossessionFactor.TypeenumFIDO2SecurityKey, Passkey, OTPDevice, OTPApp, SMSOTP, EmailOTP, PushNotification, WebauthnToken, SecureEnclaveKey, HardwareOTPKey, TrustedDevice, Other
KnowledgeFactor.IsUsedbooleanWhether a knowledge factor was used
KnowledgeFactor.TypeenumPIN, Password, SecurityQuestion, SMSOTP, EmailOTP, OTPPush, Other
InherenceFactor.IsUsedbooleanWhether a biometric/inherence factor was used
InherenceFactor.TypeenumBiometric, Fingerprint, FaceRecognition, IrisScan, VoiceRecognition, FIDOBiometric, DeviceBiometrics, Other
ChallengeOutcomeenumResult of MFA: Pass, Fail, NotPerformed
AuthenticationFlowenumMFA, Other
AuthenticationValuestringCryptographic proof of authentication, where supported
ChallengeDateTimedate-timeWhen the authentication challenge was completed

UserName

FieldTypeDescription
enstringUser's name in English
arstringUser's name in Arabic

GeoLocation

FieldTypeRequiredDescription
LatitudestringYesGPS latitude of the user's device
LongitudestringYesGPS longitude of the user's device

DeviceInformation

FieldTypeDescription
DeviceIdstringIMEISV number of the device
AlternativeDeviceIdstringAlternative device identifier
DeviceOperatingSystemstringOS name (e.g. iOS, Android)
DeviceOperatingSystemVersionstringOS version
DeviceBindingIdstringIdentifier binding the device to this application
LastBindingDateTimedate-timeWhen the device was last bound
BindingDurationdurationISO 8601 duration since last binding (e.g. P30D)
BindingStatusenumActive, Expired, Revoked, Suspended
DeviceTypeenumMobile, Desktop, Tablet, Wearable, Other
DeviceManufacturer.ModelstringDevice model name
DeviceManufacturer.ManufacturerstringDevice manufacturer
DeviceLanguagestringDevice language setting
DeviceLocalDateTimestringLocal time on the device at initiation
ConnectionTypeenumWiFi, Cellular, Other
ScreenInformation.PixelDensitynumberScreen pixel density
ScreenInformation.OrientationenumPortrait, Landscape
BatteryStatus.LevelnumberBattery level 0–100
BatteryStatus.IsChargingbooleanWhether device is charging
TouchSupport.SupportedbooleanWhether the device supports touch input
TouchSupport.MaxTouchPointsintegerMaximum simultaneous touch points
MotionSensors.StatusenumInMotion, Stationary
MotionSensors.AccelerometerbooleanWhether accelerometer is present
MotionSensors.GyroscopebooleanWhether gyroscope is present
DeviceEnvironmentContextarray<enum>VPNDetected, EmulatorDetected

AppInformation (mobile apps)

FieldTypeDescription
AppVersionstringVersion of the TPP's mobile app
PackageNamestringApplication package identifier
BuildNumberstringBuild number

BrowserInformation (web sessions)

FieldTypeDescription
UserAgentstringFull browser user agent string
IsCookiesEnabledbooleanWhether cookies are enabled
AvailableFontsarray<string>Installed fonts (fingerprinting signal)
Pluginsarray<string>Installed browser plugins
PixelRationumberDevice pixel ratio

BiometricCapabilities

FieldTypeDescription
SupportsBiometricbooleanWhether the device supports biometric authentication
BiometricTypesarray<enum>Fingerprint, FacialRecognition, Iris, VoicePrint, Other

UserBehavior

FieldTypeDescription
ScrollBehavior.DirectionenumUp, Down, Both
ScrollBehavior.SpeednumberAverage scroll speed in pixels per second
ScrollBehavior.FrequencynumberScroll events per minute

AccountRiskIndicators

FieldTypeDescription
UserOnboardingDateTimedate-timeWhen the user's account was first activated with the TPP
LastAccountChangeDatedateDate the account details were last changed
LastPasswordChangeDatedateDate of the last password change
SuspiciousActivityenumNoSuspiciousActivity, SuspiciousActivityDetected
TransactionHistory.LastDayintegerTotal transactions in the last 24 hours
TransactionHistory.LastYearintegerTotal transactions in the past year

SupplementaryData

Free-form object for any debtor-side signals that do not fit the structured fields (e.g. typing speed, behavioural biometrics).

TransactionIndicators

Describes the nature of the transaction itself.

FieldTypeDescription
IsCustomerPresentbooleantrue if the user is actively present during initiation; false for automated/background payments
IsContractPresentbooleantrue if there is a contractual relationship between the creditor and the TPP for this payment
ChannelenumWeb, Mobile
ChannelTypeenumECommerce, InStore, InApp, Telephone, Mail, RecurringPayment, Other
SubChannelTypeenumWebBrowser, MobileApp, SmartTV, WearableDevice, POSTerminal, ATM, KioskTerminal, Other
PaymentProcess.TotalDurationintegerSeconds from payment initiation to submission
PaymentProcess.CurrentSessionAttemptsintegerPayment attempts in the current session
PaymentProcess.CurrentSessionFailedAttemptsintegerFailed attempts in the current session
PaymentProcess.Last24HourAttemptsintegerTotal payment attempts in the last 24 hours
PaymentProcess.Last24HourFailedAttemptsintegerFailed attempts in the last 24 hours

MerchantRisk (e-commerce payments)

FieldTypeDescription
DeliveryTimeframeenumElectronicDelivery, SameDayShipping, OvernightShipping, MoreThan1DayShipping
ReorderItemsIndicatorenumFirstTimeOrder, Reorder
PreOrderPurchaseIndicatorenumMerchandiseAvailable, FutureAvailability
IsGiftCardPurchasebooleanWhether the transaction includes a gift card
IsDeliveryAddressMatchesBillingbooleanWhether delivery address matches billing address
AddressMatchLevelenumFullMatch, PartialMatch, NoMatch, NotApplicable

SupplementaryData

Free-form object for transaction-side signals outside the structured fields.

CreditorIndicators

Describes the payee (beneficiary).

FieldTypeDescription
AccountTypeenumRetail, Corporate
IsCreditorPrePopulatedbooleantrue if the TPP pre-filled the beneficiary details rather than the user entering them
TradingNamestringTrading name of the creditor, if a business
IsVerifiedByTPPbooleantrue if the TPP has onboarded and verified the creditor
IsCreditorConfirmedbooleantrue if beneficiary account details were confirmed via Confirmation of Payee
AdditionalAccountHolderIdentifiersarrayAdditional identifiers for the creditor — each requires SchemeName (EmiratesID or TradeLicenceNumber) and Identification

MerchantDetails (merchant payments only)

FieldTypeDescription
MerchantIdstringMerchant identifier (8–20 chars)
MerchantNamestringMerchant trading name
MerchantSICCodestringStandard Industrial Classification code (3–4 chars)
MerchantCategoryCodestringISO 18245 merchant category code (3–4 chars)

SupplementaryData

Free-form object for creditor-side signals outside the structured fields.

DestinationDeliveryAddress

Postal address for delivery of goods or services. Provide this when the payment is for physical goods being shipped.

FieldTypeDescription
RecipientTypeenumIndividual, Corporate
RecipientName.enstringRecipient name in English
RecipientName.arstringRecipient name in Arabic
NationalAddressarrayOne or more postal addresses — see AEAddress schema for full field list including AddressType, AddressLine, Country, and UAE-specific fields such as CountrySubDivision (Emirate)

Payment Context Examples

The fields you must populate vary significantly depending on the payment scenario. The following examples show the minimum expected content for common cases.

Populate everything you know

These examples are illustrative minimums. If your system holds additional signals — device binding age, transaction history, browser fingerprint — include them. Missing data that your system holds weakens the LFI's risk assessment.

Merchant / E-Commerce Payment

A retail customer checks out on the TPP's web storefront. The user is present, authenticated with username/password + OTP, and paying a known merchant.

json
{
  "Risk": {
    "DebtorIndicators": {
      "Authentication": {
        "AuthenticationChannel": "Web",
        "KnowledgeFactor": { "IsUsed": true, "Type": "Password" },
        "PossessionFactor": { "IsUsed": true, "Type": "SMSOTP" },
        "ChallengeOutcome": "Pass",
        "AuthenticationFlow": "MFA",
        "ChallengeDateTime": "2025-06-19T10:14:32Z"
      },
      "GeoLocation": {
        "Latitude": "25.2048",
        "Longitude": "55.2708"
      },
      "BrowserInformation": {
        "UserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
        "IsCookiesEnabled": true,
        "PixelRatio": 2.0
      },
      "AccountRiskIndicators": {
        "UserOnboardingDateTime": "2023-01-15T08:00:00Z",
        "SuspiciousActivity": "NoSuspiciousActivity",
        "TransactionHistory": { "LastDay": 1, "LastYear": 47 }
      }
    },
    "TransactionIndicators": {
      "IsCustomerPresent": true,
      "IsContractPresent": false,
      "Channel": "Web",
      "ChannelType": "ECommerce",
      "SubChannelType": "WebBrowser",
      "PaymentProcess": {
        "TotalDuration": 94,
        "CurrentSessionAttempts": 1,
        "CurrentSessionFailedAttempts": 0,
        "Last24HourAttempts": 1,
        "Last24HourFailedAttempts": 0
      },
      "MerchantRisk": {
        "DeliveryTimeframe": "SameDayShipping",
        "ReorderItemsIndicator": "FirstTimeOrder",
        "IsGiftCardPurchase": false,
        "IsDeliveryAddressMatchesBilling": true,
        "AddressMatchLevel": "FullMatch"
      }
    },
    "CreditorIndicators": {
      "AccountType": "Corporate",
      "IsCreditorPrePopulated": true,
      "IsVerifiedByTPP": true,
      "IsCreditorConfirmed": true,
      "MerchantDetails": {
        "MerchantId": "MERCH00012345",
        "MerchantName": "Acme Electronics LLC",
        "MerchantCategoryCode": "5732"
      }
    },
    "DestinationDeliveryAddress": {
      "RecipientType": "Individual",
      "RecipientName": { "en": "Mohammed Al Rashid" },
      "NationalAddress": [
        {
          "AddressType": "DeliveryTo",
          "AddressLine": ["Villa 12, Al Wasl Road"],
          "CountrySubDivision": "Dubai",
          "Country": "AE"
        }
      ]
    }
  }
}

Account-to-Account Transfer

A user transfers funds to a friend or family member from within the TPP's mobile app. The user is present, authenticated with biometrics on a known device.

json
{
  "Risk": {
    "DebtorIndicators": {
      "Authentication": {
        "AuthenticationChannel": "App",
        "InherenceFactor": { "IsUsed": true, "Type": "FaceRecognition" },
        "PossessionFactor": { "IsUsed": true, "Type": "Passkey" },
        "ChallengeOutcome": "Pass",
        "AuthenticationFlow": "MFA",
        "ChallengeDateTime": "2025-06-19T14:02:11Z"
      },
      "GeoLocation": {
        "Latitude": "24.4539",
        "Longitude": "54.3773"
      },
      "DeviceInformation": {
        "DeviceType": "Mobile",
        "DeviceOperatingSystem": "iOS",
        "DeviceOperatingSystemVersion": "17.5",
        "DeviceBindingId": "a3f8b2c1-9d4e-4f12-b77a-0e1234567890",
        "BindingStatus": "Active",
        "BindingDuration": "P180D",
        "ConnectionType": "WiFi",
        "DeviceEnvironmentContext": []
      },
      "AppInformation": {
        "AppVersion": "4.2.1",
        "PackageName": "ae.example.tppapp",
        "BuildNumber": "20250601"
      },
      "BiometricCapabilities": {
        "SupportsBiometric": true,
        "BiometricTypes": ["FacialRecognition", "Fingerprint"]
      },
      "AccountRiskIndicators": {
        "UserOnboardingDateTime": "2022-08-10T09:30:00Z",
        "LastAccountChangeDate": "2025-01-04",
        "SuspiciousActivity": "NoSuspiciousActivity",
        "TransactionHistory": { "LastDay": 0, "LastYear": 112 }
      }
    },
    "TransactionIndicators": {
      "IsCustomerPresent": true,
      "IsContractPresent": false,
      "Channel": "Mobile",
      "ChannelType": "InApp",
      "SubChannelType": "MobileApp",
      "PaymentProcess": {
        "TotalDuration": 38,
        "CurrentSessionAttempts": 1,
        "CurrentSessionFailedAttempts": 0,
        "Last24HourAttempts": 1,
        "Last24HourFailedAttempts": 0
      }
    },
    "CreditorIndicators": {
      "AccountType": "Retail",
      "IsCreditorPrePopulated": false,
      "IsVerifiedByTPP": false,
      "IsCreditorConfirmed": true
    }
  }
}

Subscription / Recurring Payment (Customer Not Present)

A recurring subscription payment initiated automatically by the TPP's backend — for example, a monthly SaaS fee. The user is not present; the payment is executed under a standing consent.

json
{
  "Risk": {
    "DebtorIndicators": {
      "Authentication": {
        "ChallengeOutcome": "NotPerformed"
      },
      "AccountRiskIndicators": {
        "UserOnboardingDateTime": "2021-03-22T11:00:00Z",
        "SuspiciousActivity": "NoSuspiciousActivity",
        "TransactionHistory": { "LastDay": 0, "LastYear": 24 }
      }
    },
    "TransactionIndicators": {
      "IsCustomerPresent": false,
      "IsContractPresent": true,
      "ChannelType": "RecurringPayment",
      "PaymentProcess": {
        "CurrentSessionAttempts": 1,
        "CurrentSessionFailedAttempts": 0,
        "Last24HourAttempts": 1,
        "Last24HourFailedAttempts": 0
      }
    },
    "CreditorIndicators": {
      "AccountType": "Corporate",
      "IsCreditorPrePopulated": true,
      "IsVerifiedByTPP": true,
      "IsCreditorConfirmed": true,
      "MerchantDetails": {
        "MerchantId": "MERCH00099887",
        "MerchantName": "CloudSoft FZ LLC",
        "MerchantCategoryCode": "7372"
      }
    }
  }
}

Delegated SCA Payment

A payment where the user has completed SCA at the TPP (satisfying the bank's SCA requirement by delegation). The user is present, authenticated with a strong combination of factors on a trusted device, and the TPP is asserting authentication on behalf of the bank.

json
{
  "Risk": {
    "DebtorIndicators": {
      "Authentication": {
        "AuthenticationChannel": "App",
        "PossessionFactor": { "IsUsed": true, "Type": "SecureEnclaveKey" },
        "InherenceFactor": { "IsUsed": true, "Type": "Fingerprint" },
        "ChallengeOutcome": "Pass",
        "AuthenticationFlow": "MFA",
        "AuthenticationValue": "eyJhbGciOiJFUzI1NiJ9...",
        "ChallengeDateTime": "2025-06-19T09:55:44Z"
      },
      "GeoLocation": {
        "Latitude": "25.1972",
        "Longitude": "55.2744"
      },
      "DeviceInformation": {
        "DeviceType": "Mobile",
        "DeviceOperatingSystem": "Android",
        "DeviceOperatingSystemVersion": "14",
        "DeviceBindingId": "d7e9c3a2-1b5f-4c88-a991-1f2345678901",
        "BindingStatus": "Active",
        "BindingDuration": "P365D",
        "ConnectionType": "Cellular",
        "DeviceEnvironmentContext": []
      },
      "AppInformation": {
        "AppVersion": "5.0.3",
        "PackageName": "ae.example.tppapp",
        "BuildNumber": "20250610"
      },
      "BiometricCapabilities": {
        "SupportsBiometric": true,
        "BiometricTypes": ["Fingerprint"]
      },
      "AccountRiskIndicators": {
        "UserOnboardingDateTime": "2020-11-01T08:00:00Z",
        "LastAccountChangeDate": "2024-12-01",
        "SuspiciousActivity": "NoSuspiciousActivity",
        "TransactionHistory": { "LastDay": 2, "LastYear": 198 }
      }
    },
    "TransactionIndicators": {
      "IsCustomerPresent": true,
      "IsContractPresent": false,
      "Channel": "Mobile",
      "ChannelType": "InApp",
      "SubChannelType": "MobileApp",
      "PaymentProcess": {
        "TotalDuration": 22,
        "CurrentSessionAttempts": 1,
        "CurrentSessionFailedAttempts": 0,
        "Last24HourAttempts": 3,
        "Last24HourFailedAttempts": 0
      }
    },
    "CreditorIndicators": {
      "AccountType": "Retail",
      "IsCreditorPrePopulated": false,
      "IsVerifiedByTPP": false,
      "IsCreditorConfirmed": true
    }
  }
}