customer_use sub-account must complete its own KYC before it can place calls. Until it does, the sub-account is returned with kyc_calls_blocked: true. This section documents the per-sub-account KYC API used to drive that verification.
Authentication: Sub-account KYC endpoints authenticate as the parent main account that owns the sub-account (or an admin), using your account’s
X-Auth-ID and X-Auth-Token headers — the same credential pair used everywhere else in the API:When KYC applies
kyc_mode | KYC required? | Notes |
|---|---|---|
personal_use (default) | No | The sub-account inherits the parent account’s KYC. |
customer_use | Yes | The sub-account must verify itself. Requires an email. Fresh sub-accounts start with kyc_calls_blocked: true. |
kyc_mode at creation or promote an existing sub-account.
Verification paths
There are two ways to complete KYC for acustomer_use sub-account:
Per-document API
Drive each step yourself — PAN, GST, CIN, or Aadhaar via DigiLocker — and poll the aggregated status.
Hosted session
Hand the customer a Vobiz-hosted link (email) or redirect them inline to the hosted widget.
Document requirements by entity
Entity (business_type) | Typical documents |
|---|---|
individual, proprietorship, huf | PAN + Aadhaar (via DigiLocker) |
private_limited, public_limited, llp, partnership | PAN + GST and/or CIN |
trust, society, government | PAN + supporting registration (CIN/GST as applicable) |
How the call-blocking gate works
Each verification persists akyc_verifications row and recomputes the sub-account’s aggregated KYC state. The aggregated status exposes:
overall_status—not_started→pending→verified/failed.verifications— the per-document state (pan,gst,cin,aadhaar), eachnot_started/pending/verified/failed.kyc_calls_blocked— the gate. Whiletrue, the sub-account’s calls are rejected; it flips tofalseonce the documents itsbusiness_typerequires areverified.
failed document leaves kyc_calls_blocked: true. Re-run that verification with corrected input to clear it.
Create → KYC → unblock recipe
- Create a
customer_usesub-account with anemailand abusiness_type. It returnskyc_calls_blocked: true. (Create) - Verify the documents the entity needs — authenticate as the parent, with the sub-account in the path. For a company: PAN then GST and/or CIN search → confirm. For an individual: PAN then DigiLocker initiate → verify.
- Poll KYC status until
kyc_calls_blockedisfalse. - The sub-account can now place calls with its own credentials. See the full onboarding flow.
Endpoints
| Method | Endpoint | Description |
|---|---|---|
| GET | /sub-accounts/{sub_auth_id}/kyc/status | Aggregated KYC state |
| POST | /sub-accounts/{sub_auth_id}/kyc/verify-pan | Verify PAN |
| POST | /sub-accounts/{sub_auth_id}/kyc/verify-gst | Verify GST |
| POST | /sub-accounts/{sub_auth_id}/kyc/cin/search | CIN search |
| POST | /sub-accounts/{sub_auth_id}/kyc/cin/confirm | CIN confirm |
| POST | /sub-accounts/{sub_auth_id}/kyc/digilocker/initiate | DigiLocker initiate |
| POST | /sub-accounts/{sub_auth_id}/kyc/digilocker/verify | DigiLocker verify |
| POST | /sub-accounts/{sub_auth_id}/kyc-sessions | Create a hosted KYC session |