Skip to content

MOP 4.1 — Vendor Onboarding: Individual vs. Agency

Audience: Vendor (mobile), society_admin (review) Outcome: A vendor (single or under an agency) can register, complete KYC, mark interest in target societies, and start applying to events hosted there.

1. Two registration flows

Flow Storage When to use
Individual vendor vendor_profiles linked to a users row with role=vendor Sole proprietor / one-person stall
Agency agencies + agency_profiles + agency_vendor_mappings A company managing multiple vendors / sub-stalls

An agency owner is itself a users row with role=agency_owner. Their sub-vendors get individual users + agency_vendor_mappings rows.

2. KYC fields captured

  • Brand name, owner name, GSTIN, PAN, bank a/c
  • Categories of products / services
  • interested_society_ids[] — populates Society Admin's user list and surfaces the vendor when admins post events.
  • Aadhaar / Udyam number (masked, encrypted at rest)

3. Society admin review

Sidebar → Approvals → Vendor KYC. Approve / Reject with notes. Approval flips vendor_profiles.kyc_verified = true + records approved_by, approved_at.

4. APIs touched

Method Endpoint
POST /api/vendors/register (mobile)
POST /api/agencies/register (mobile)
GET / POST /api/admin/agencies
GET /api/admin/vendors?status=&society_id=
POST /api/admin/vendors/{vendor_id}/approve-kyc
POST /api/admin/vendors/{vendor_id}/reject-kyc?reason=...

5. Edge cases & FAQ

  • A vendor wants to switch agency → create a new agency_vendor_mapping and deactivate the old (no row deletion).
  • Aadhar masking — only last 4 digits are surfaced in the dashboard.
  • Phase-bound admin sees only vendors interested in their phase.
  • MOP 4.2 — Service Marketplace
  • MOP 4.3 — Temporary Permits