Pix on File Risk Signals
Pix on File is a Pix payment flow in Brazil that allows customers to authorize payments with a device linked to their bank account, without being redirected to their bank app for each purchase. Pix on File is available on both the Cross-border and Local tenants.
Risk Signals provide contextual and behavioral data to the Relying Party (the customer's bank), allowing it to ensure the authentication is happening under expected and secure conditions.
This guide lists the Risk Signals parameters accepted by Pix on File. It covers where to send them, which parameters are required, and an example of the full object.
Where to send Risk Signals
Risk Signals are sent with both Device Linking and Payment requests:
- Device Linking - Send them in
enrollment.fidoOptions.risk_signalsof the enrollment request. - Payment - Send them in
risk_signalsof the payment authentication request.
If you use the Hosted Flow, EBANX collects Risk Signals on its own page and you do not need to send them.
Parameters
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.
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.
| Parameter | Requirement | Description |
|---|---|---|
device_id | Required | string Unique and persistent device ID. |
isRootedDevice | Conditional | boolean Indicates whether the device has root (Android) or jailbreak (iOS). Required on Android and iOS. |
screenBrightness | Conditional | integer Screen brightness (typically 0 to 255). Required on Android and iOS. |
elapsedTimeSinceBoot | Conditional | integer Elapsed time (in milliseconds) since device boot. Required on Android and iOS. |
osVersion | Required | string Operating system version (e.g., '14' for iOS 14). |
userTimeZoneOffset | Required | string User's time zone offset relative to UTC (i.e.: "-03"). |
language | Required | string Device language (ISO 639-1 code). |
screenDimensions.height | Required | integer Screen height in pixels. |
screenDimensions.width | Required | integer Screen width in pixels. |
accountTenure | Required | string Customer account creation date in the merchant's system (yyyy-mm-dd). |
geolocation.latitude | Optional | number Geolocation information. |
geolocation.longitude | Optional | number Geolocation information. |
geolocation.type | Optional | string Location precision (FINE, COARSE or INFERRED). |
isCallInProgress | Optional | boolean Indicates whether there is a phone call in progress. |
isDevModeEnabled | Optional | boolean Indicates whether developer mode is enabled. |
isMockGPS | Optional | boolean Indicates whether mock location (mock GPS) is enabled. |
isEmulated | Optional | boolean Indicates whether the application is running on an emulator. |
isMonkeyRunner | Optional | boolean Indicates whether an automated testing tool (MonkeyRunner) is in use. |
isCharging | Optional | boolean Indicates whether the device is charging the battery. |
antennaInformation | Optional | string Information about the mobile network connection type (e.g., 3G, 4G, 5G). |
isUsbConnected | Optional | boolean Indicates whether a USB cable is connected. |
integrity.appRecognitionVerdict | Optional | string Verdict on app recognition (e.g., via Google Play Protect). |
integrity.deviceRecognitionVerdict | Optional | string Verdict on the device's basic integrity. |
Example
Risk Signals object
"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"
}
}
Still need help?
We hope this article was helpful. If you still have questions, you can explore the following options:
- Merchant support: Contact our support team at sales.engineering@ebanx.com for assistance.
- Not a partner yet? Please complete the Merchant Signup Form, and our commercial team will reach out to you.