Fraud detection

Make data-driven decisions and identify possible fraudulent behavior using the Fraud Detection API


The Fraud Detection API is a beta product. Specific details like the response structure and the attributes used in a fraud detection record may change.


Okra's Fraud Detection API utilizes real-time financial transactions and demographic data from a user's bank account to calculate how likely the user is to engage in fraudulent activities.

This API provides useful insights for financial institutions, payment providers, and insurance companies. It can be used for KYC validation before loan disbursement, account opening, transaction validation, and claims validation. Make faster and more informed decisions by understanding the indicating factors of potential fraudulent behavior of users.

Some examples of fraudulent behavior that you can identify with Okra’s Fraud Detection API:

  • BVN fraud, where a user has multiple BVNs
  • Account transaction fraud, where users manipulate transactions and account values to appear more suitable for loans
  • Loan fraud, where users skip out on loan payments, or close accounts after dispersal

How it works

When a user grants Okra permission to access their bank accounts via the widget, the Fraud Detection API retrieves the user's transactions, identity data, and demographic data. The API churns these data sets through the Okra AI system. This machine learning system extracts and identifies fraud indicators from the data. Fraud indicators are properties of the data that point out possible fraudulent behavior. The API uses these indicators to calculate a user's fraud probability score, which ranges from 0% to 100% probability of committing fraud.

Some examples of fraud indicators in different data sets:

Transaction data

  • User has no transaction data in their bank account
  • User opened a bank account in the month prior to registering on the app
  • User has a loan to average deposit ratio greater than 20
  • User has a cash/non-cash deposit frequency in the month prior to registration that is more than 5 times the average frequency for their entire tenure with the bank account
  • User has an average cash/non-cash deposit amount in the month prior to registration that is more than 5 times the average deposit amount for their entire tenure with the bank account
  • User already has more than one active loan account
Identity data

  • User has a phone number that is linked to more than three different bank account names
  • User has a BVN is already linked to other users on the Okra platform
Demographic data

  • User has redundant or no address information
  • User has the same first and last name
  • User has a birthday that start on the first day of the month. The Okra API takes additional steps to verify that the birthday is genuine by verifying other details at the same time
  • User has a name that matches with an already identified list of common names used for account registration

How to use

This guide explains how you can retrieve your users' fraud probability details with the Fraud Detection API’s process and get endpoint operations. Okra recommends that you leverage the Fraud Detection API using this simple process:

  1. Use the process operation to create a fraud detection record and calculate a user’s fraud probability score based on their BVN
    • A successful response means that the user has already connected their bank accounts via the widget, and the API returns the fraud detection record for you.
    • An unsuccessful response means that the user’s BVN is not found and the user needs to connect their bank accounts before you can retrieve their fraud detecion record.
  2. If you receive an unsuccesful response, set up a Widget instance so your user can connect their bank account
    • After your user connects their bank account, use the process operation with their BVN.
  3. Use the get operations to retrieve the fraud scores and fraud detection records for users that you already processed

Visit the API reference for the complete list of Fraud Detection endpoint operations, sample responses, and field descriptions.

Sample objects

Check out a sample request, and sample responses for different scenarios:

curl -X POST
-H 'Content-Type: application/json'
-d '{
  "bvn" : "22156153506"
	"message":"Successfully processed fraud detection",
		"status":"The bvn 22351038112 is a genuine user and their probability to commit fraud is 0%.",
	"message":"Successfully processed fraud detection",
			"user has a suspicious address as no flat or house number mentioned in the address",
			"user has a suspicious or missing date of birth",
			"user has no transactions recorded in their bank account"
		"status":"The bvn 22546330713 is a suspicious user and their probability to commit fraud is 100%.",