Skip to main content
The bigger your application, the more likely it is to be targeted by fraudsters. Fraudsters inspect and copy your app’s backend API requests and modify them to send OTP codes to themselves to retrieve the SMS charges. This is called SMS pumping or IRSF fraud (read more about it here).

Signals

Prelude’s machine learning models use a number of signals to distinguish fraudulent users from legitimate users. We infer some of these signals, but many depend on the information provided by your integration. The more data you provide, the more effective fraud prevention will be and the higher your conversion rate will be.

Important signals to send to Prelude

To increase the effectiveness of fraud prevention, we recommend that you send the following signals to Prelude:
DataEstimated improvementDescription
IP address50%The public IP v4 or v6 address of the end-user’s device. You should collect this from your backend. If your backend is behind a proxy, use the X-Forwarded-For, Forwarded, True-Client-IP, CF-Connecting-IP or an equivalent header to get the true public IP of the end-user’s device.
Device ID40%A unique ID for the user’s device. You should ensure that each user device has a unique device_id. Ideally, for Android, this corresponds to the ANDROID_ID and for iOS, this corresponds to the identifierForVendor.
Platform35%The platform of the user’s device (iOS or Android).
JA4 fingerprint30%The JA4 TLS fingerprint observed for the user’s connection. Prelude will infer it automatically when you use our Frontend SDKs (which use Prelude’s edge network), but you can also forward the value if you terminate TLS yourself.
Device model20%The model of the user’s device.
OS Version20%The version of the user’s device operating system.
App version10%The version of your application.

Inferring signals from the User-Agent

Some signals can be inferred from the User-Agent string if you provide it to us:
  • Platform
  • Device model
  • OS version
If the individual fields (os_version, device_platform, device_model) are provided, they will take precedence over those values instead of parsing them from the user agent string.

Adding more signals using our Frontend SDKs

You can add more signals that are collected directly from the user’s device using our Frontend SDKs.

Selectively bypassing the anti-fraud system

This feature, if implemented incorrectly, could substantially increase the risk of fraud attacks. If you need this feature, contact our support team to validate your implementation, and to enable it on your account free of charge.
You can use the is_trusted_user signal to completely bypass the antifraud system for a specific verification request. This field should indicate the trustworthiness of the user on your app, beyond just a basic validity check. It should ensure trust by confirming that the user is genuine within the context of your application. Examples of validation criteria include whether the user has completed onboarding steps, performed valid transactions, or completed a purchase. When set to true, this will bypass fraud checks for that user.

Allow and block lists

You can configure your integration to allow or block specific users from signing in. This can be useful if you want to manually block users you have identified as fraudulent or to disable anti-fraud algorithms for specific users. To edit the allow or block lists, go to the Dashboard and navigate to the Verify API > Configure > Numbers tab.
Dashboard screenshot