Skip to main content
Unlisted page
This page is unlisted. Search engines will not index it, and only users having a direct link can access it.

Risk Signals

Risk Signals provide contextual and behavioral data to the Relying Party (i.e. the customer's bank), allowing it to ensure the authentication is happening under expected and secure conditions.

Risk Signals are used both in Device Linking and Payment processing, and the available parameters are the following:

Send the widest set your app can collect

The bank receiving the signals sets its own risk appetite, and that appetite is not published and differs between institutions. A bank can refuse an authentication over missing signals that are listed as Optional here. Under-sending is the most likely cause of rejections that appear only at specific banks, so collect as many of these as your app can.

device_id is the only snake_case field

Every other parameter on this page uses camelCase exactly as shown. Only device_id is snake_case — sending deviceId instead will leave the field unpopulated.

ParameterRequirementDescription
device_idRequiredstring Unique and persistent device ID.
isRootedDeviceConditionalboolean Indicates whether the device has root (Android) or jailbreak (iOS). Required on Android and iOS.
screenBrightnessConditionalinteger Screen brightness (typically 0 to 255). Required on Android and iOS.
elapsedTimeSinceBootConditionalinteger Elapsed time (in milliseconds) since device boot. Required on Android and iOS.
osVersionRequiredstring Operating system version (e.g., '14' for iOS 14).
userTimeZoneOffsetRequiredstring User's time zone offset relative to UTC (i.e.: "-03").
languageRequiredstring Device language (ISO 639-1 code).
screenDimensions.heightRequiredinteger Screen height in pixels.
screenDimensions.widthRequiredinteger Screen width in pixels.
accountTenureRequiredstring Customer account creation date in the merchant's system (yyyy-mm-dd).
geolocation.latitudeOptionalnumber Geolocation information.
geolocation.longitudeOptionalnumber Geolocation information.
geolocation.typeOptionalstring Location precision (FINE, COARSE or INFERRED).
isCallInProgressOptionalboolean Indicates whether there is a phone call in progress.
isDevModeEnabledOptionalboolean Indicates whether developer mode is enabled.
isMockGPSOptionalboolean Indicates whether mock location (mock GPS) is enabled.
isEmulatedOptionalboolean Indicates whether the application is running on an emulator.
isMonkeyRunnerOptionalboolean Indicates whether an automated testing tool (MonkeyRunner) is in use.
isChargingOptionalboolean Indicates whether the device is charging the battery.
antennaInformationOptionalstring Information about the mobile network connection type (e.g., 3G, 4G, 5G).
isUsbConnectedOptionalboolean Indicates whether a USB cable is connected.
integrity.appRecognitionVerdictOptionalstring Verdict on app recognition (e.g., via Google Play Protect).
integrity.deviceRecognitionVerdictOptionalstring Verdict on the device's basic integrity.

Node Example

JSON
"risk_signals": {
"device_id": "{string}",
"isRootedDevice": false,
"screenBrightness": 255,
"elapsedTimeSinceBoot": 6356027,
"osVersion": "14",
"userTimeZoneOffset": "-03",
"language": "pt",
"screenDimensions": {
"height": 720,
"width": 1280
},
"accountTenure": "yyyy-mm-dd",
"geolocation": {
"latitude": -15.738602,
"longitude": -47.926498,
"type": "{FINE/COARSE/INFERRED}"
},
"isCallInProgress": false,
"isDevModeEnabled": false,
"isMockGPS": false,
"isEmulated": false,
"isMonkeyRunner": false,
"isCharging": false,
"antennaInformation": "4G",
"isUsbConnected": false,
"integrity": {
"appRecognitionVerdict": "PLAY_RECOGNIZED",
"deviceRecognitionVerdict": "BASIC_INTEGRITY_SUCCESS"
}
}