Infila API

KYC & Fraud Detection API

Verify a customer's identity and check their fraud/blacklist status with a few REST calls. Built for car-rental fleets, lenders, and marketplaces that need fast identity checks in India.

Fraud detection ₹20Aadhaar ₹10Driving Licence ₹10

Overview

The API is REST over HTTPS. Requests and responses are JSON. Every request is authenticated with your client_id and client_secret and billed per successful call from your prepaid wallet.

Base URLhttps://api.infila.in/api
FormatJSON over HTTPS

Authentication

Send your credentials as request headers on every call. Get them from your developer dashboard (Credentials tab). The secret is shown once — store it securely on your server; never ship it in client-side code.

Headers
client_id: infila_live_xxxxxxxxxxxxxxxxxxxxxxxx
client_secret: <your client_secret>
Content-Type: application/json

If your proxy strips underscore headers, the API also accepts x-client-id / x-client-secret.

Wallet & pricing

Each account has a prepaid wallet seeded with ₹500 of free test credit. A successful call debits its price; failed calls (invalid input, auth failure) are not charged. When the balance can't cover a call you get a 402.

EndpointPrice (INR)Billed
POST /fraud-detection₹20on 2xx
POST /kyc/aadhaar₹10on 2xx (initiation)
POST /kyc/driving-license₹10on 2xx
GET /walletFree

Full KYC (Aadhaar + Driving Licence) = ₹20.

Errors

Errors return the matching HTTP status and a JSON body of the shape:

{ "statusCode": 402, "message": "Human-readable explanation" }
StatusMeaning
400Bad request — required parameters missing or invalid.
401Missing or invalid client_id / client_secret.
402Insufficient wallet balance — top up to continue.
403Credentials revoked.
406Verification failed (e.g. invalid DL / DOB). Not billed.
POST/api/fraud-detection₹20

Fraud detection — customer profile

Look up a customer by any identifier and get their complete profile — identity, photo, contacts, ratings, KYC status and the blocked / blacklist signal. Read-only. Provide at least one of the fields below.

Request body

FieldTypeDescription
phone_numberstringPrimary or secondary contact number.
aadhaar_idstringAadhaar number.
driving_license_idstringDriving licence number.
email_idstringEmail address.

Sample request

cURL
curl -X POST https://api.infila.in/api/fraud-detection \
  -H "client_id: infila_live_xxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "client_secret: <your client_secret>" \
  -H "Content-Type: application/json" \
  -d '{ "phone_number": "9666232244" }'

Sample response — 200

Response
{
  "found": true,
  "count": 1,
  "results": [
    {
      "customer_id": "3f9a1c2e-7b44-4e10-9c1a-2d5e8f0b6a71",
      "full_name": "Ravi Kumar",
      "display_name": "Ravi",
      "profile_pic": "https://cdn.infila.in/customers/3f9a1c2e.jpg",
      "email_id": "[email protected]",
      "primary_contact_number": "9666232244",
      "secondary_contact_number": "9876543210",
      "date_of_birth": "1995-08-15",
      "gender": "male",
      "present_address": "Flat 402, Madhapur, Hyderabad, 500081",
      "permanent_address": "12-3-45, Guntur, Andhra Pradesh, 522001",
      "status": "active",
      "is_blocked": false,
      "member_since": "2024-11-02T09:14:22.001Z",
      "ratings": {
        "average_rating": 4.6,
        "rating_count": 12,
        "average_kms_per_day": 118.5
      },
      "kyc": {
        "aadhaar_id": "123456781234",
        "aadhaar_status": "verified",
        "driving_license_id": "TS01201900012345",
        "driving_license_status": "verified",
        "driving_license_expiry_date": "2032-05-14",
        "is_blacklisted": false
      }
    }
  ]
}

Response fields

FieldDescription
customer_idInfila's stable identifier for the customer.
full_name · display_nameLegal name and preferred display name.
profile_picProfile photo (URL or base64), if the customer has one.
email_id · primary / secondary_contact_numberContact details on file.
date_of_birth · genderDemographics, when captured.
present_address · permanent_addressAddresses on file.
statusactive, blocked, etc.
is_blockedThe fraud signal. True when status is blocked or KYC is blacklisted — do not onboard.
member_sinceWhen the customer first joined Infila.
ratings.average_rating · rating_countPast-trip rating and how many trips it's based on.
ratings.average_kms_per_dayTypical daily usage across past trips.
kyc.aadhaar_id · aadhaar_statusAadhaar number and verification state (verified, under_verification, not_verified).
kyc.driving_license_id · _status · _expiry_dateDriving licence number, verification state and expiry.
kyc.is_blacklistedWhether this identity is on Infila's blacklist.

When no customer matches: { "found": false, "count": 0, "results": [] } (still billed — a completed lookup). If a number matches more than one profile, every match is returned in results. is_blocked is true when the customer's status is blocked or their KYC is blacklisted.

POST/api/kyc/driving-license₹10

Driving Licence KYC

Synchronous verification against the public registry — one call, one result.

Request body

FieldTypeRequired
driving_license_idstringYes
date_of_birthstring (YYYY-MM-DD)Yes

Sample request

cURL
curl -X POST https://api.infila.in/api/kyc/driving-license \
  -H "client_id: infila_live_xxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "client_secret: <your client_secret>" \
  -H "Content-Type: application/json" \
  -d '{ "driving_license_id": "TS0120200000000", "date_of_birth": "1995-08-15" }'

Sample response — 200

Response
{
  "verified": true,
  "driving_license_id": "TS0120200000000",
  "name": "RAVI KUMAR",
  "class_of_vehicles": [
    { "cov": "LMV", "expiry_date": "2032-05-14" },
    { "cov": "MCWG", "expiry_date": "2032-05-14" }
  ]
}

Failure — 406 (not billed)

{ "statusCode": 406, "message": "Unable to verify driving licence. Please check the licence number and date of birth." }
POST/api/kyc/aadhaar₹10

Aadhaar KYC (DigiLocker)

Aadhaar verification is a hosted DigiLocker flow. This call initiates it and returns a URL to redirect your user to. The verified result is delivered asynchronously to your registered websocket / callback — it is not in the response to this call. Billed ₹10 on initiation.

Sample request

cURL
curl -X POST https://api.infila.in/api/kyc/aadhaar \
  -H "client_id: infila_live_xxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "client_secret: <your client_secret>" \
  -H "Content-Type: application/json" \
  -d '{}'

Sample response — 200

Response
{
  "status": "initiated",
  "aadhaar_url": "https://in.decentro.tech/kyc/digilocker/...",
  "reference_id": "0b0e5b2c-8f6a-4b1e-9f3a-9d0c2a11c7e2",
  "transaction_id": "DECENTRO12345",
  "message": "Redirect the user to aadhaar_url to complete Aadhaar KYC. The verified result is delivered via the websocket / callback channel."
}

Redirect the user to aadhaar_url. On completion, the verified data arrives on your websocket / callback keyed by reference_id. Talk to us to register your callback endpoint.

GET/api/walletFree

Wallet endpoint

Your current balance and recent transactions (credits and per-call debits).

Sample request

cURL
curl https://api.infila.in/api/wallet \
  -H "client_id: infila_live_xxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "client_secret: <your client_secret>"

Sample response — 200

Response
{
  "currency": "INR",
  "balance": 460,
  "transactions": [
    {
      "id": "86ab9a22-28dc-45fd-835e-6e796f75717d",
      "type": "DEBIT",
      "amount": "20.00",
      "balance_after": "480.00",
      "endpoint": "POST /api/fraud-detection",
      "reference": null,
      "status": "SUCCESS",
      "created_at": "2026-08-16T03:41:07.409Z"
    },
    {
      "id": "9ecbd41a-d498-4511-94d3-9f3c8d8f5475",
      "type": "SEED_CREDIT",
      "amount": "500.00",
      "balance_after": "500.00",
      "endpoint": null,
      "reference": "Initial free test credit",
      "status": "SUCCESS",
      "created_at": "2026-08-16T03:38:00.000Z"
    }
  ]
}

Ready to integrate?

Sign in to your developer dashboard to grab your keys, watch your wallet, and test every endpoint live.