Onboarding & KYC
How a low-literacy villager becomes a trusted RideChain partner in under ten minutes β three onboarding tracks, Cashfree Easy KYC, graduated trust tiers, vehicle verification, and the Aadhaar-token blacklist that keeps offenders out for good.
1. Overview β three onboarding tracks
Onboarding is where RideChain earns the right to put a stranger in custody of someone else's parcel and someone else's money. There are three distinct tracks, each with a different friction budget because each carries a different risk. The hardest, most thorough track is the Delivery Partner β and that is deliberate, because partner trust is the number-one fraud lever in the whole system. A weak partner KYC poisons every later control (custody chain, escrow release, COD handling); a strong one makes most downstream fraud uneconomic.
Track A β Delivery Partner
The heaviest track: identity + liveness + vehicle + bank + community vouch + safety quiz + background check, then graduated activation. This is the trust spine of the platform.
Track B β Booker
The lightest track: phone + OTP + language and you can book. No KYC to book. KYC-lite only fires for high declared value or COD-receiving.
Track C β RideChain Point (PUDO)
A kirana / CSC / panchayat / chai stall: shop KYC + photo + geo + hours + storage capacity. Gets a scanner-lite app, a signboard and per-parcel commission β the local champion.
flowchart TB START["π± New user opens app
or walks into a Point"] --> Q{"Which role?"} Q -- "I want to deliver" --> A["π΅ Track A Β· Delivery Partner
full KYC + vehicle + vouch + quiz + bg-check"] Q -- "I want to send a parcel" --> B["π¦ Track B Β· Booker
phone + OTP + language only"] Q -- "I run a shop" --> C["πͺ Track C Β· RideChain Point
shop KYC + geo + hours + capacity"] A --> AG["Graduated activation
(New β Bronze β β¦ β Platinum)"] B --> BK["Can book immediately;
KYC-lite only if high value / COD"] C --> PT["Scanner-lite app + signboard
+ per-parcel commission"] classDef a fill:#fff3e0,stroke:#f4920b,color:#8a5200; classDef b fill:#e8f0fb,stroke:#1f5fae,color:#143d6e; classDef c fill:#e9f7ef,stroke:#1e8e4e,color:#13602f; class A,AG a; class B,BK b; class C,PT c;
2. Partner onboarding β the full sequence
Partner onboarding is a linear pipeline of trust gates. Each gate is independently re-runnable and idempotent (so a dropped signal mid-flow never loses progress), and a partner can resume exactly where they left off. The order is chosen so the cheapest, highest-signal checks run first, and the slow ones (background check) run last in parallel with a limited "prepaid low-value" head start.
flowchart TB P0["π Phone + OTP + language"] --> P1["πͺͺ Identity Β· Cashfree Easy KYC
(Aadhaar OKYC β store masked token, never raw)"] P1 --> P2["π€³ Liveness + face match
(deepfake-resistant)"] P2 --> P3{"Vehicle type?"} P3 -- "cycle / cart" --> P5["π· Capacity profile
(max weight/size, vehicle photos,
service radius, availability,
which Points served)"] P3 -- "motorized" --> P4["π Vehicle registration
RC via VAHAN Β· DL via Sarathi"] P4 --> P5 P5 --> P6["π¦ Bank / UPI payout setup
penny-drop name match"] P6 --> P7["π€ Community / panchayat vouch"] P7 --> P8["π 5-min safety micro-training + quiz"] P8 --> P9["π Tiered background check"] P9 --> P10["β Graduated activation
(start as New tier)"] classDef g fill:#e9f7ef,stroke:#1e8e4e,color:#13602f; class P10 g;
- Phone + OTP + language β the entry. Pick a vernacular (Hindi-first); the whole flow is then voice-guided in that language.
- Identity via Cashfree Easy KYC β Aadhaar OKYC (OTP to the Aadhaar-linked number). We store only a masked token + verification status, never the raw Aadhaar number.
- Liveness + face match β a short active-liveness check (blink / turn) matched against the OKYC photo, hardened against printed photos, screen replays and deepfake video.
- Vehicle registration β choose vehicle type; for motorized vehicles the RC is validated via VAHAN and the DL via Sarathi. Cycle / cart skip DL/RC (no such document) but still complete identity + face match.
- Capacity profile β max weight & size bucket, vehicle photos, service radius, availability windows, and which RideChain Points they serve. This feeds the matching engine directly.
- Bank / UPI payout setup β a penny-drop credits βΉ1 and reads back the account-holder name, which must match the KYC name before payouts are enabled (platform holds no money; payouts flow via Razorpay Route / Cashfree Easy Split).
- Community / panchayat vouch β an existing partner, Point operator or panchayat reference vouches; raises starting trust and is itself a fraud signal if abused.
- 5-min safety micro-training + quiz β short vernacular video + handling rules (fragile, perishable, OTP discipline, COD honesty) with a pass-gate quiz.
- Tiered background check β depth scales with what the partner will be trusted to carry (low-value prepaid vs high-value / COD / long-haul). May run in the background.
- Graduated activation β the partner goes live at the New tier with the most conservative limits and climbs from there (see Β§4).
3. Cashfree Easy KYC integration
All identity and bank verification goes through Cashfree Easy KYC (no DigiLocker in MVP). The app never talks to Cashfree directly β it calls the Go auth module, which orchestrates the calls, stores only tokenized results, and is the single place where DPDP obligations are enforced.
sequenceDiagram
autonumber
participant APP as "Partner app (Flutter)"
participant GO as "Go auth module"
participant CF as "Cashfree Easy KYC"
participant DB as "Postgres (tokenized)"
APP->>GO: "Start KYC (consent captured)"
GO->>CF: "Aadhaar OKYC β send OTP to Aadhaar-linked phone"
CF-->>APP: "OTP delivered"
APP->>GO: "Submit OKYC OTP"
GO->>CF: "Verify OKYC OTP"
CF-->>GO: "OKYC result + masked Aadhaar + photo (no raw number)"
GO->>CF: "PAN verify (where required)"
CF-->>GO: "PAN name + status"
GO->>CF: "Liveness + face match vs OKYC photo"
CF-->>GO: "Match score + liveness pass/fail"
GO->>CF: "Bank / UPI penny-drop (βΉ1)"
CF-->>GO: "Account-holder name + verified"
GO->>GO: "Name match: KYC name == bank name?"
GO->>DB: "Store masked token + verification status only"
GO-->>APP: "KYC complete / step failed (reason)"
Not every check applies to every partner. The partner class (what they will be trusted to carry) decides the depth of verification β a cycle courier carrying βΉ100 prepaid parcels does not need the same checks as a Tata Ace driver handling high-value COD.
| Check | Cycle / cart (low-value prepaid) | Motorized (standard) | Heavy / high-value / COD |
|---|---|---|---|
| Aadhaar OKYC (identity) | β required | β required | β required |
| Liveness + face match | β required | β required | β required |
| RC via VAHAN | β (no RC) | β required | β required |
| DL via Sarathi | β (no DL) | β required | β required |
| PAN verify | Optional | Recommended | β required |
| Bank / UPI penny-drop + name match | β required (payout) | β required | β required |
| Background-check depth | Basic | Standard | Enhanced |
4. Graduated trust tiers
Onboarding does not end at activation β it graduates. A newly verified partner starts at New with the most conservative limits and climbs as they accumulate clean signals. This is the bridge between onboarding and fraud control: even a fully KYC'd partner cannot carry a βΉ40,000 high-value parcel on day one. Trust is earned per delivery, not bought at sign-up.
| Tier | Max parcel value | COD limit | Distance cap | Unlocks | Commission |
|---|---|---|---|---|---|
| New | βΉ500 | Prepaid only | Local (within service radius) | Low-value prepaid parcels only; head start during background check | Standard |
| Bronze | βΉ2,000 | βΉ1,000 | Block-level | Small COD; milk-run legs | Standard |
| Silver | βΉ10,000 | βΉ5,000 | Inter-block | Larger COD; relay hub legs | Slightly lower |
| Gold | βΉ40,000 | βΉ20,000 | District / long-haul | High-value parcels; long-haul; priority offers | Lower |
| Platinum | Uncapped (with surety) | Top COD band | Unrestricted | All categories; lowest commission; can vouch for new partners | Lowest |
The trust score that drives promotion rises with completed deliveries, high ratings, accepted community vouches, and a clean record of no fraud signals (no OTP-skip attempts, no GPS spoofing, no COD shortfalls, no QR mismatches). Negative signals can demote a partner instantly. Money figures are display; the ledger stores paise.
stateDiagram-v2
[*] --> New
New --> Bronze: "clean prepaid deliveries + good ratings"
Bronze --> Silver: "volume + ratings + vouch"
Silver --> Gold: "sustained record, zero fraud signals"
Gold --> Platinum: "long clean tenure + surety"
Platinum --> Gold: "fraud signal / rating drop"
Gold --> Silver: "complaint / COD shortfall"
Silver --> Bronze: "demotion on negative signal"
Bronze --> New: "serious violation"
New --> Suspended: "fraud detected"
Suspended --> [*]: "blacklisted (Aadhaar token)"
5. Vehicle eligibility & verification
RideChain accepts the full spectrum of rural vehicles. Each type maps to a required document set and a capacity envelope; this mapping is what the matching engine consumes to pick a feasible vehicle for a given parcel size/weight, and what the verification pipeline enforces at onboarding.
| Vehicle type | DL (Sarathi) | RC (VAHAN) | Insurance | Indicative max capacity |
|---|---|---|---|---|
| Cycle | β | β | β | ~15 kg Β· S/M parcels |
| Bike / scooter | β | β | β | ~40 kg Β· S/M/L parcels |
| E-rickshaw | β | β | β | ~250 kg Β· bulky L |
| Auto | β | β | β | ~400 kg Β· L/XL |
| Bolero (pickup) | β | β | β | ~1 tonne Β· XL |
| Tata Ace | β | β | β | ~750 kgβ1 tonne Β· XL |
| Tractor-trolley | β | β | β | ~2β3 tonnes Β· bulk agri |
| Mini-truck | β | β | β | ~1.5β3 tonnes Β· bulk |
| Tempo | β | β | β | ~1β2 tonnes Β· bulk |
6. Booker onboarding β friction-light
A booker is the person sending a parcel, and the design rule is brutal: do not make them do KYC just to book. Friction here directly suppresses the demand the whole network needs. So the booker track is almost nothing β and the rare cases that do need verification are handled with a targeted, minimal KYC-lite step.
- Phone + OTP + language β the entire mandatory onboarding. Pick a vernacular and you are in.
- Address book + voice address β save pickup/drop addresses; low-literacy users can add a voice address (spoken landmark + map pin) instead of typing.
- Book immediately β no KYC required to place a booking. Quote, pay, track β all without an identity check.
7. RideChain Point (PUDO) onboarding
A RideChain Point is a physical handover venue β a kirana, CSC, panchayat office or chai stall β and onboarding one is about verifying a shop, not just a person. The Point becomes a local champion: it stages and collects parcels, confirms handovers, and earns a per-parcel commission.
flowchart TB S0["π Shop owner: phone + OTP + language"] --> S1["πͺͺ Shop KYC
owner identity (Easy KYC) + shop details"] S1 --> S2["π· Shop photo + signboard frontage"] S2 --> S3["π Geo pin (exact PUDO location)"] S3 --> S4["π Operating hours"] S4 --> S5["π¦ Storage capacity
(how many parcels can rest here)"] S5 --> S6["π² Scanner-lite app provisioned"] S6 --> S7["πͺ§ Signboard kit + per-parcel commission"] S7 --> S8["β Live as a RideChain Point"] classDef c fill:#e9f7ef,stroke:#1e8e4e,color:#13602f; class S8 c;
Once live, the Point gets a scanner-lite app (scan parcel QR, confirm handover OTP, mark stored/collected), a signboard so customers can find it, and a per-parcel commission β consistent with the worked baselines: a drop Point earns βΉ6 and a collect Point earns βΉ6 on a typical βΉ120 single point-to-point booking.
8. Re-verification, suspension & blacklist
Onboarding is not a one-time event β trust decays and documents expire. The platform runs periodic re-KYC and watches document expiry so a partner can never silently age out of compliance.
| Mechanism | What it does |
|---|---|
| Periodic re-KYC | Scheduled re-verification of identity/bank at intervals scaled by tier and risk; failure freezes new offers until resolved. |
| Document expiry watch | DL and insurance (and RC validity) are tracked; an approaching expiry warns the partner, and a lapsed document auto-suspends motorized eligibility until renewed and re-validated via Sarathi / VAHAN. |
| Aadhaar-token blacklist | A blacklisted offender is recorded by their Aadhaar verification token (not raw number), so the same person cannot re-register under a new phone or vehicle. The blacklist is checked at the very first identity gate. |
| Account-farm detection | Device fingerprint + SIM binding link suspicious sign-ups; many accounts from one device, or rapid SIM-swaps on one device, raise a farm signal and route to manual review. |
9. Edge cases & failure modes
Onboarding is designed for the unhappy path β flaky SMS, low literacy, no smartphone, and people actively trying to game the gate. Each risk below has a defined mitigation; the full catalogue lives in the Edge-Case Catalog.
| Risk / scenario | Mitigation |
|---|---|
| Aadhaar OTP not received (SMS down / Aadhaar phone unreachable) | Retry + alternate-channel prompts; if persistent, route to assisted mode at a Point; the gate is resumable so no progress is lost. |
| Face / liveness mismatch (deepfake or photo-replay attempt) | Active liveness (blink/turn) + match-score threshold; deepfake-resistant model; repeated fails lock the attempt and flag the device fingerprint for review. |
| Duplicate Aadhaar (same person, second account) | One active account per Aadhaar token; the identity gate detects the existing token and blocks the duplicate at sign-up. |
| RC / DL expired or owner name mismatch | VAHAN/Sarathi validation flags expiry/name mismatch; motorized eligibility is withheld until a valid, name-matching document is provided. |
| Penny-drop name mismatch with KYC name | Payouts stay disabled; partner must supply an account whose holder name matches the KYC name, or resolve via manual review with evidence. |
| Low-literacy user stuck mid-flow | Voice-guided vernacular prompts at every step; one-tap escalation to assisted mode where a Point operator co-pilots the flow. |
| No smartphone at all | Point-assisted onboarding: the operator runs the KYC flow on their own device for the applicant (with on-device consent), then provisions a lightweight account. |
| Vouch fraud (collusion to inflate starting trust) | Vouches raise starting trust only, never bypass KYC; voucher is liable on the abuse signal and can be demoted; graduated tiers cap exposure regardless of vouch. |
| Background check still pending | Partner starts at New tier with prepaid low-value parcels only; full limits unlock when the check clears, so the slow gate never blocks the head start. |
| KYC provider downtime (Cashfree unavailable) | Queue + retry the verification; partner can proceed to non-blocking steps; fall back to manual review if downtime persists; idempotent so a retry never double-verifies. |
| Partner sells or changes their vehicle | Re-verify the new vehicle (RC via VAHAN, DL still valid) before it can be matched; the old vehicle is retired from the capacity profile so matching never offers it. |
| Stolen / borrowed identity attempt | Liveness + face match must match the OKYC photo of the same person; mismatch blocks onboarding and flags the Aadhaar token for review. |