curl --request POST \
--url https://sandbox.cashfree.com/verification/mobile360/otpless \
--header 'Content-Type: application/json' \
--header 'x-api-version: <x-api-version>' \
--header 'x-client-id: <api-key>' \
--header 'x-client-secret: <api-key>' \
--data '
{
"verification_id": "ABC00122",
"mobile_number": "9999999999",
"name": "John Doe",
"user_consent": {
"timestamp": "2024-11-29T12:34:56Z",
"purpose": "User consent to fetch data.",
"obtained": true,
"type": "EXPLICIT"
}
}
'import requests
url = "https://sandbox.cashfree.com/verification/mobile360/otpless"
payload = {
"verification_id": "ABC00122",
"mobile_number": "9999999999",
"name": "John Doe",
"user_consent": {
"timestamp": "2024-11-29T12:34:56Z",
"purpose": "User consent to fetch data.",
"obtained": True,
"type": "EXPLICIT"
}
}
headers = {
"x-api-version": "<x-api-version>",
"x-client-id": "<api-key>",
"x-client-secret": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-api-version': '<x-api-version>',
'x-client-id': '<api-key>',
'x-client-secret': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
verification_id: 'ABC00122',
mobile_number: '9999999999',
name: 'John Doe',
user_consent: {
timestamp: '2024-11-29T12:34:56Z',
purpose: 'User consent to fetch data.',
obtained: true,
type: 'EXPLICIT'
}
})
};
fetch('https://sandbox.cashfree.com/verification/mobile360/otpless', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://sandbox.cashfree.com/verification/mobile360/otpless",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'verification_id' => 'ABC00122',
'mobile_number' => '9999999999',
'name' => 'John Doe',
'user_consent' => [
'timestamp' => '2024-11-29T12:34:56Z',
'purpose' => 'User consent to fetch data.',
'obtained' => true,
'type' => 'EXPLICIT'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-version: <x-api-version>",
"x-client-id: <api-key>",
"x-client-secret: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://sandbox.cashfree.com/verification/mobile360/otpless"
payload := strings.NewReader("{\n \"verification_id\": \"ABC00122\",\n \"mobile_number\": \"9999999999\",\n \"name\": \"John Doe\",\n \"user_consent\": {\n \"timestamp\": \"2024-11-29T12:34:56Z\",\n \"purpose\": \"User consent to fetch data.\",\n \"obtained\": true,\n \"type\": \"EXPLICIT\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-version", "<x-api-version>")
req.Header.Add("x-client-id", "<api-key>")
req.Header.Add("x-client-secret", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://sandbox.cashfree.com/verification/mobile360/otpless")
.header("x-api-version", "<x-api-version>")
.header("x-client-id", "<api-key>")
.header("x-client-secret", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"verification_id\": \"ABC00122\",\n \"mobile_number\": \"9999999999\",\n \"name\": \"John Doe\",\n \"user_consent\": {\n \"timestamp\": \"2024-11-29T12:34:56Z\",\n \"purpose\": \"User consent to fetch data.\",\n \"obtained\": true,\n \"type\": \"EXPLICIT\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.cashfree.com/verification/mobile360/otpless")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-version"] = '<x-api-version>'
request["x-client-id"] = '<api-key>'
request["x-client-secret"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"verification_id\": \"ABC00122\",\n \"mobile_number\": \"9999999999\",\n \"name\": \"John Doe\",\n \"user_consent\": {\n \"timestamp\": \"2024-11-29T12:34:56Z\",\n \"purpose\": \"User consent to fetch data.\",\n \"obtained\": true,\n \"type\": \"EXPLICIT\"\n }\n}"
response = http.request(request)
puts response.read_body{
"verification_id": "test_verification_id_99",
"reference_id": 1234567,
"status": "SUCCESS",
"personal_details": {
"full_name": "JOHN SNOW",
"gender": "MALE",
"total_income": 1000000,
"occupation": "Software Engineer",
"age": 30,
"dob": "1996-10-02",
"relatives_details": [
{
"relation": "FATHER",
"relative_name": "Alice Doe"
}
]
},
"phone_numbers": [
{
"type": "HOME",
"phone": "9999996655",
"linked_to": "CREDIT"
},
{
"type": "MOBILE",
"phone": "9999999999",
"linked_to": "PAN"
},
{
"type": "MOBILE",
"phone": "9988775566",
"linked_to": "UAN"
}
],
"emails": [
{
"email": "johnsnow@example.com",
"linked_to": "CREDIT"
},
{
"email": "abc@gmail.com",
"linked_to": "PAN"
},
{
"email": "johndoe@gmail.com",
"linked_to": "UAN"
}
],
"passport_details": [
{
"passport_number": "PA123456",
"linked_to": "CREDIT"
}
],
"ration_card_details": [
{
"ration_card_number": "TN1234567890",
"linked_to": "CREDIT"
}
],
"voter_details": [
{
"voter_id": "UAI4574761",
"linked_to": "CREDIT"
}
],
"pan_details": [
{
"pan_number": "ABCPV1234D",
"metadata": {
"registered_name": "JOHN SNOW",
"name_pan_card": "JOHN SNOW",
"type": "Individual or Person",
"aadhaar_linked": true
}
}
],
"driving_license_details": [
{
"driving_license_number": "KA0120198900984",
"linked_to": "CREDIT"
}
],
"aadhaar_details": [
{
"masked_aadhaar_number": "XXXXXXXX8848",
"linked_to": "PAN"
}
],
"addresses": [
{
"address": "Flat 404, Green Towers, MG Road, Mumbai 400001",
"type": "Primary",
"state": "MAHARASTHRA",
"pincode": "400001",
"city": "Mumbai",
"street": " MG Road",
"country": "India",
"linked_to": "PAN"
}
],
"bank_account_details": [
{
"bank_account": "20329012345",
"ifsc": "SBIN0012345",
"bank_address": "STATE BANK OF INDIA,KATANGA BENGALURU",
"linked_to": "CREDIT"
}
],
"employment_details": {
"uan": [
{
"uan": "200123456789",
"member_id": "XYZAB00123450000005678",
"establishment_id": "XYZAB0012345000",
"exit_date": null,
"joining_date": "2018-05-10",
"leave_reason": null,
"establishment_name": "ABC TECHNOLOGIES PVT LTD",
"uan_linked_aadhaar": true
}
],
"recent_employment_details": {
"employee_details": {
"member_id": "XYZAB00123450000005678",
"exit_date": null,
"joining_date": "2018-05-10",
"uan": "200123456789",
"epfo": {
"recent": true,
"name_unique": true,
"pf_filings_details": true
},
"employed": true,
"employee_name_match": true,
"exit_date_marked": false
},
"employer_details": {
"establishment_id": "XYZAB0012345000",
"establishment_name": "ABC TECHNOLOGIES PVT LTD",
"setup_date": "2012-03-15",
"ownership_type": "Private Limited Company",
"employer_confidence_score": 85,
"employer_name_match": true,
"pf_filing_details": [
{
"total_amount": 32145678,
"employees_count": 5678,
"wage_month": "JAN-25"
},
{
"total_amount": 31456789,
"employees_count": 5600,
"wage_month": "DEC-24"
},
{
"total_amount": 30987654,
"employees_count": 5500,
"wage_month": "NOV-24"
}
]
}
}
},
"mobile_number_intelligence": {
"is_valid_number": true,
"subscriber_status": "CONNECTED",
"connection_type": "PREPAID",
"current_service_provider": "AIRTEL",
"original_service_provider": "AIRTEL",
"network_region": "India",
"is_ported": false
},
"credit_score": 805,
"risk_intelligence": {
"is_safe": false,
"risk_level": "LOW",
"risk_reason": "Inactive SIM",
"risk_description": "SIM inactive or unused for an extended period",
"added_on": "2025-06-23T12:42:10Z",
"last_updated_on": "2025-09-09T17:00:11Z"
}
}Mobile 360 OTP Less
Use this API to extract multiple identity types from mobile number.
curl --request POST \
--url https://sandbox.cashfree.com/verification/mobile360/otpless \
--header 'Content-Type: application/json' \
--header 'x-api-version: <x-api-version>' \
--header 'x-client-id: <api-key>' \
--header 'x-client-secret: <api-key>' \
--data '
{
"verification_id": "ABC00122",
"mobile_number": "9999999999",
"name": "John Doe",
"user_consent": {
"timestamp": "2024-11-29T12:34:56Z",
"purpose": "User consent to fetch data.",
"obtained": true,
"type": "EXPLICIT"
}
}
'import requests
url = "https://sandbox.cashfree.com/verification/mobile360/otpless"
payload = {
"verification_id": "ABC00122",
"mobile_number": "9999999999",
"name": "John Doe",
"user_consent": {
"timestamp": "2024-11-29T12:34:56Z",
"purpose": "User consent to fetch data.",
"obtained": True,
"type": "EXPLICIT"
}
}
headers = {
"x-api-version": "<x-api-version>",
"x-client-id": "<api-key>",
"x-client-secret": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-api-version': '<x-api-version>',
'x-client-id': '<api-key>',
'x-client-secret': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
verification_id: 'ABC00122',
mobile_number: '9999999999',
name: 'John Doe',
user_consent: {
timestamp: '2024-11-29T12:34:56Z',
purpose: 'User consent to fetch data.',
obtained: true,
type: 'EXPLICIT'
}
})
};
fetch('https://sandbox.cashfree.com/verification/mobile360/otpless', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://sandbox.cashfree.com/verification/mobile360/otpless",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'verification_id' => 'ABC00122',
'mobile_number' => '9999999999',
'name' => 'John Doe',
'user_consent' => [
'timestamp' => '2024-11-29T12:34:56Z',
'purpose' => 'User consent to fetch data.',
'obtained' => true,
'type' => 'EXPLICIT'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-version: <x-api-version>",
"x-client-id: <api-key>",
"x-client-secret: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://sandbox.cashfree.com/verification/mobile360/otpless"
payload := strings.NewReader("{\n \"verification_id\": \"ABC00122\",\n \"mobile_number\": \"9999999999\",\n \"name\": \"John Doe\",\n \"user_consent\": {\n \"timestamp\": \"2024-11-29T12:34:56Z\",\n \"purpose\": \"User consent to fetch data.\",\n \"obtained\": true,\n \"type\": \"EXPLICIT\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-version", "<x-api-version>")
req.Header.Add("x-client-id", "<api-key>")
req.Header.Add("x-client-secret", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://sandbox.cashfree.com/verification/mobile360/otpless")
.header("x-api-version", "<x-api-version>")
.header("x-client-id", "<api-key>")
.header("x-client-secret", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"verification_id\": \"ABC00122\",\n \"mobile_number\": \"9999999999\",\n \"name\": \"John Doe\",\n \"user_consent\": {\n \"timestamp\": \"2024-11-29T12:34:56Z\",\n \"purpose\": \"User consent to fetch data.\",\n \"obtained\": true,\n \"type\": \"EXPLICIT\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.cashfree.com/verification/mobile360/otpless")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-version"] = '<x-api-version>'
request["x-client-id"] = '<api-key>'
request["x-client-secret"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"verification_id\": \"ABC00122\",\n \"mobile_number\": \"9999999999\",\n \"name\": \"John Doe\",\n \"user_consent\": {\n \"timestamp\": \"2024-11-29T12:34:56Z\",\n \"purpose\": \"User consent to fetch data.\",\n \"obtained\": true,\n \"type\": \"EXPLICIT\"\n }\n}"
response = http.request(request)
puts response.read_body{
"verification_id": "test_verification_id_99",
"reference_id": 1234567,
"status": "SUCCESS",
"personal_details": {
"full_name": "JOHN SNOW",
"gender": "MALE",
"total_income": 1000000,
"occupation": "Software Engineer",
"age": 30,
"dob": "1996-10-02",
"relatives_details": [
{
"relation": "FATHER",
"relative_name": "Alice Doe"
}
]
},
"phone_numbers": [
{
"type": "HOME",
"phone": "9999996655",
"linked_to": "CREDIT"
},
{
"type": "MOBILE",
"phone": "9999999999",
"linked_to": "PAN"
},
{
"type": "MOBILE",
"phone": "9988775566",
"linked_to": "UAN"
}
],
"emails": [
{
"email": "johnsnow@example.com",
"linked_to": "CREDIT"
},
{
"email": "abc@gmail.com",
"linked_to": "PAN"
},
{
"email": "johndoe@gmail.com",
"linked_to": "UAN"
}
],
"passport_details": [
{
"passport_number": "PA123456",
"linked_to": "CREDIT"
}
],
"ration_card_details": [
{
"ration_card_number": "TN1234567890",
"linked_to": "CREDIT"
}
],
"voter_details": [
{
"voter_id": "UAI4574761",
"linked_to": "CREDIT"
}
],
"pan_details": [
{
"pan_number": "ABCPV1234D",
"metadata": {
"registered_name": "JOHN SNOW",
"name_pan_card": "JOHN SNOW",
"type": "Individual or Person",
"aadhaar_linked": true
}
}
],
"driving_license_details": [
{
"driving_license_number": "KA0120198900984",
"linked_to": "CREDIT"
}
],
"aadhaar_details": [
{
"masked_aadhaar_number": "XXXXXXXX8848",
"linked_to": "PAN"
}
],
"addresses": [
{
"address": "Flat 404, Green Towers, MG Road, Mumbai 400001",
"type": "Primary",
"state": "MAHARASTHRA",
"pincode": "400001",
"city": "Mumbai",
"street": " MG Road",
"country": "India",
"linked_to": "PAN"
}
],
"bank_account_details": [
{
"bank_account": "20329012345",
"ifsc": "SBIN0012345",
"bank_address": "STATE BANK OF INDIA,KATANGA BENGALURU",
"linked_to": "CREDIT"
}
],
"employment_details": {
"uan": [
{
"uan": "200123456789",
"member_id": "XYZAB00123450000005678",
"establishment_id": "XYZAB0012345000",
"exit_date": null,
"joining_date": "2018-05-10",
"leave_reason": null,
"establishment_name": "ABC TECHNOLOGIES PVT LTD",
"uan_linked_aadhaar": true
}
],
"recent_employment_details": {
"employee_details": {
"member_id": "XYZAB00123450000005678",
"exit_date": null,
"joining_date": "2018-05-10",
"uan": "200123456789",
"epfo": {
"recent": true,
"name_unique": true,
"pf_filings_details": true
},
"employed": true,
"employee_name_match": true,
"exit_date_marked": false
},
"employer_details": {
"establishment_id": "XYZAB0012345000",
"establishment_name": "ABC TECHNOLOGIES PVT LTD",
"setup_date": "2012-03-15",
"ownership_type": "Private Limited Company",
"employer_confidence_score": 85,
"employer_name_match": true,
"pf_filing_details": [
{
"total_amount": 32145678,
"employees_count": 5678,
"wage_month": "JAN-25"
},
{
"total_amount": 31456789,
"employees_count": 5600,
"wage_month": "DEC-24"
},
{
"total_amount": 30987654,
"employees_count": 5500,
"wage_month": "NOV-24"
}
]
}
}
},
"mobile_number_intelligence": {
"is_valid_number": true,
"subscriber_status": "CONNECTED",
"connection_type": "PREPAID",
"current_service_provider": "AIRTEL",
"original_service_provider": "AIRTEL",
"network_region": "India",
"is_ported": false
},
"credit_score": 805,
"risk_intelligence": {
"is_safe": false,
"risk_level": "LOW",
"risk_reason": "Inactive SIM",
"risk_description": "SIM inactive or unused for an extended period",
"added_on": "2025-06-23T12:42:10Z",
"last_updated_on": "2025-09-09T17:00:11Z"
}
}Authorizations
Your unique client identifier issued by Cashfree. You can find this in your Merchant Dashboard.
The secret key associated with your client ID. Use this to authenticate your API requests. You can find this in your Merchant Dashboard.
Headers
Send the signature if two-factor authentication is selected as Public Key. More details.
API version to be used. Format is in YYYY-MM-DD.
"2024-12-01"
Body
Find the request parameters for Mobile 360 Otp-less.
It is the unique ID you create to identify the verification request. The maximum character limit is 50. Only alphaumeric, period (.), hyphen (-), and underscore ( _ ) are allowed.
"test_verification_id"
It is the 10 digit mobile number of individual.
"9999999999"
Consent details for Mobile360 Send OTP.
Show child attributes
Show child attributes
Name of the individual, a correct name can increase the success rate of data retrieval.
"John Doe"
Response
Response for Mobile360 Otp-less.
Unique ID of the verification request.
"test_verification_id_123"
Unique reference ID for the transaction.
987654
It displays the status of the API request. Possible values are
SUCCESS: Data has been successfully fetched using the provided mobile number.DETAILS_NOT_FOUND: No data for the given mobile number could be retrieved.
"SUCCESS"
Personal information of the individual.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Employment details of the individual.
Show child attributes
Show child attributes
Provides intelligence on mobile number.
Show child attributes
Show child attributes
Credit score of the individual.
805
Provides risk intelligence analysis for the mobile number.
Show child attributes
Show child attributes
Was this page helpful?