KYC and KYB for India

Verify anyone.
Know exactly how.

Aadhaar, liveness, PAN, bank and company checks in one hosted flow — and every result says who verified it: the source, our models, or your reviewers.

  • Aadhaar number never stored
  • Data stays in India
  • Human review built in

01 · The product

One flow. Every check. Labelled.

Your applicant finishes on their phone in minutes. Your team sees every check and exactly how it was verified.

A flow they finish on their phone

Your brand, their language, a camera that helps. Steps your team reviews say “Submitted for review” — nobody gets stuck.

AAcme FinanceStep 5 of 5

Verifying your details

This usually takes a few seconds.

  • ConsentRecorded
  • Mobile numberVerified by OTP
  • AadhaarSecure QR · signature verified
  • SelfieLiveness and face match
  • PANSubmitted for review

Human review, built in

Put a person in the loop wherever you want one: your reviewer sees what was typed next to what the document says — and decides.

PAN · reviewer checkNeeds review
Field
Applicant typed
On the card
PAN
ABCPE1234F
ABCPE1234F
Name
Ravi Kumar
RAVI KUMAR
Date of birth
31 Jan 1990
31/01/1990
Reject Confirm

A signed decision

Approved, declined or in review, delivered to your backend with every check.

POST /okyc/webhook signed
{
  "type": "session.approved",
  "data": { "session": {
    "id": "ses_in_01…",
    "status": "approved"
  }}
}

Stays in India

Stored and processed in India.

Bengaluru
India region Keys per business

02 · What you can verify

Verify what your business needs.

Start from ready-made checks for India, or tell us what your process needs — new checks, document types and steps are added to your workflows on request.

Ask for a new check or document

People05

AadhaarVerified against UIDAI’s signature; the number is never stored
Selfie and livenessA live challenge, matched to the photo on file
Identity documentsCaptured with live quality checks, read automatically
PAN and bank accountsTyped details alongside the document that backs them
Sanctions and watchlistsScreened, with possible matches for your team

Businesses03

Company registrationCIN, LLPIN, GSTIN, Udyam and their certificates
Directors and ownersEach verified in their own session, linked to the business
Business documentsAny document you ask for, with the fields you need read out

Your own steps02

Documents and fieldsCollect and read whatever your process needs
Rules and decisionsApprove, decline or review on your own conditions

03 · Your choice, per check

Choose how each check is verified.

Weigh assurance, speed and cost for every check: strict where the rules demand it, automated where volume does, a person where judgement does.

At the source

Signed data and official records, checked directly with the issuer.

Assurance
Speed
Cost
Per check
Best for
Regulated onboarding, high-value accounts
Automatically

Our models read documents, match faces and screen names in seconds.

Assurance
Speed
Cost
Lowest
Best for
High volume, instant decisions
By your reviewers

A person in the loop, with what was typed next to what the document says.

Assurance
Speed
Cost
Your team’s time
Best for
Edge cases, judgement calls, your own policies

Build your workflow

Identity (Aadhaar)
How to verify Identity (Aadhaar)
Selfie and liveness
How to verify Selfie and liveness
PAN
How to verify PAN
Bank account
How to verify Bank account

Your mix

  • At the source1
  • Automatically2
  • By your reviewers1

Change it whenever your requirements, budget or risk appetite change — your integration stays the same, and every result carries verified_by.

04 · Human review

Review is part of the flow, not a fallback.

When a check needs a person, the applicant carries on and your reviewer takes it from there — with everything they need on one screen.

Review › Ravi Kumar · KYC
In review
ConsentMobile numberAadhaarSelfieSanctionsPAN· your team

Why it’s here: every other check passed; your workflow sends PAN to your team to confirm against the card.

PAN · typed vs PAN card1 field corrected by you
Permanent account number
RAVI KUMAR31/01/1990ABCPE1234F
Field
Typed
Read from card
PAN
ABCPE1234F
ABCPE1234F
Name
Ravi Kumar
Low confidenceRAVl KUMAR
DOB
31-01-1990
31/01/1990
Reject check Confirm PAN
ReasonChoose a reason Ask to redo Decline Approve
Audit10:41 submitted · sent to review (PAN needs your team)10:42 name corrected: “RAVl KUMAR” → “RAVI KUMAR”10:43 PAN confirmed · session approved — all checks verified10:43 locked · session.approved sent to your backend1 events

05 · For developers

Integrate in an afternoon.

Create a session, open the link, verify the webhook. Screens, retries, reviewers and rules live in OKYC.

$ npm install @okyc/nodeNode.js
  • SDKs everywhereDrop the hosted flow into any app, or open it as a link.
  • Free test modeEvery step has “Use test data” — walk a whole workflow without real documents.
  • Works with your AI assistantConnect Claude or any MCP client to build and test workflows.
WebReactReact NativeFlutteriOSAndroidNode.jsMCP
Explore the docs
// Your frontend calls this, then passes { clientToken, sessionUrl } to @okyc/web or @okyc/react.
app.post('/api/kyc/session', express.json(), async (req, res) => {
  const userId = req.header('x-user-id') ?? 'demo-user'; // use your own auth here
  try {
    const session = await okyc.sessions.create(
      {
        workflowId: process.env.OKYC_WORKFLOW_ID,
        referenceId: userId,
        redirectUrl: process.env.REDIRECT_URL,
      },
      { idempotencyKey: `kyc-${userId}-${new Date().toISOString().slice(0, 10)}` },
    );
    res.json({ clientToken: session.clientToken, sessionUrl: session.url });
  } catch (e) {
    res.status(e.statusCode ?? 500).json({ error: e.code ?? 'error' });
  }
});

06 · Privacy by design

Built to be trusted.

Verification data is the most sensitive data your customers give you. OKYC is built to hold as little of it as possible, for as short as possible.

0Aadhaar numbers storedOnly the last four digits are kept; masking is enforced on our servers.
INData stays in IndiaSessions, documents and results are stored and processed in India.
1:1A key per businessPersonal data is encrypted with keys separate for every business.
AlwaysConsent firstApplicants consent before anything starts, with the purpose stated.
ScheduledDeleted on scheduleData is removed after the retention period you set.
YoursYour brand, or none of oursYour logo, colours and words — or hide OKYC entirely.

Ready to verify your first customer?

Tell us what you need to verify — and how. Once we approve your request, you get a test account.