End-to-end vendor registration, compliance document verification, bank account validation, MSME classification, group management, and approval workflow.
The Vendor Onboarding System manages the complete lifecycle of adding new vendors to ProKure. It supports self-registration via the vendor portal, internal vendor creation by procurement teams, compliance document collection, bank account verification, and multi-level approval workflows.
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ Vendor Self- │ │ Basic Info │ │ Upload │
│ Registration │────▶│ Company, GSTIN, │────▶│ Compliance │
│ (Portal) │ │ PAN, Address │ │ Documents │
└──────────────────┘ └──────────────────┘ └────────┬─────────┘
│
┌─────────────────────────────────────────────────┘
▼
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ Bank Account │ │ MSME Details │ │ Vendor Status: │
│ Details (IFSC, │────▶│ (If applicable) │────▶│ PENDING_REVIEW │
│ A/C Number) │ │ Udyam Number │ │ │
└──────────────────┘ └──────────────────┘ └────────┬─────────┘
│
┌─────────────────────────────────────────────────┘
▼
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ Procurement │ │ Finance │ │ Admin Final │
│ Officer Review │────▶│ Verification │────▶│ Approval │
│ (Documents) │ │ (Bank Details) │ │ │
└──────────────────┘ └──────────────────┘ └────────┬─────────┘
│
▼
┌──────────────────┐
│ Vendor ACTIVE │
│ Code Generated │
│ Can participate │
│ in RFQs │
└──────────────────┘
| Status | Description | Allowed Actions |
|---|---|---|
| Draft | Vendor started registration but hasn't submitted | Edit profile, upload documents |
| Pending Review | Submitted for internal review | View only (vendor side) |
| Under Verification | Documents and bank details being verified | Reviewer can approve/reject/request info |
| Active | Fully approved and can participate in procurement | Bid on RFQs, receive POs |
| Rejected | Application rejected with reasons | Vendor can reapply with corrections |
| Suspended | Temporarily suspended (compliance/performance) | No new POs; existing POs continue |
| Blacklisted | Permanently debarred from procurement | No actions allowed |
Master vendor record with company information and status
Extended company information including legal entity type, incorporation details
Compliance documents uploaded during onboarding
Bank account information for payment processing
MSME registration details (linked to MSME Compliance logic)
Vendor group definitions for consolidated management
Many-to-many mapping of vendors to groups
Blacklisted/debarred vendors checked during onboarding
Multiple contact persons per vendor
Multiple addresses per vendor (registered, factory, delivery)
Category/product classification mapping for vendors
Vendor accesses the registration portal and fills in basic company details: company name, GSTIN, PAN, address, contact person, email, and phone. Alternatively, a procurement officer can create the vendor record internally.
Vendor provides extended company information: company type (Proprietorship/Partnership/LLP/Private Ltd/Public Ltd), CIN number, incorporation date, authorized and paid-up capital, annual turnover, and employee count. System records in vendor_companies table.
Vendor uploads required documents based on their entity type. The system tracks each document's type, expiry date, and verification status.
Vendor provides bank account information: bank name, branch, IFSC code, account number, and account type. A cancelled cheque is uploaded for verification. Multiple accounts can be added with one marked as primary.
If the vendor is an MSME, they provide their Udyam Registration Number and upload the certificate. The system validates the format (UDYAM-XX-00-0000000) and classifies the vendor as Micro/Small/Medium.
System automatically checks the vendor's GSTIN, PAN, and company name against the vendor_blacklist table. If a match is found, the registration is flagged for manual review.
Vendor submits the application. Status changes from "Draft" to "Pending Review". Notification sent to the assigned procurement officer.
-- Vendor Code Generation Logic -- Format: VND-{CATEGORY_CODE}-{SEQUENTIAL_NUMBER} -- Example: VND-RAW-00045, VND-SVC-00123 public string GenerateVendorCode(string categoryCode) { var lastVendor = _context.Vendors .Where(v => v.VendorCode.StartsWith($"VND-{categoryCode}-")) .OrderByDescending(v => v.VendorCode) .FirstOrDefault(); int nextNumber = lastVendor != null ? int.Parse(lastVendor.VendorCode.Split('-').Last()) + 1 : 1; return $"VND-{categoryCode}-{nextNumber:D5}"; }
Vendor Groups allow organizing vendors into logical categories for bulk operations such as sending RFQs to a group, applying group-level payment terms, or generating group-level reports.
| Operation | Description | Tables Used |
|---|---|---|
| Create Group | Define a new vendor group with name, code, and description | vendor_groups |
| Add Members | Add one or more vendors to a group | vendor_group_members |
| Bulk RFQ | Send RFQ to all active vendors in a group | vendor_group_members → rfq_vendors |
| Group Reporting | Generate performance/payment reports by group | vendor_groups + vendor_ratings |
| Remove Members | Remove a vendor from a group (soft delete) | vendor_group_members |
| Event | Recipient | Channel |
|---|---|---|
| New vendor registration submitted | Assigned Procurement Officer | In-app + Email |
| Document verification complete | Finance Team | In-app |
| Bank verification complete | Procurement Manager | In-app |
| Vendor approved/activated | Vendor (email) | Email + Portal notification |
| Vendor rejected | Vendor (email with reasons) | Email + Portal notification |
| Additional info requested | Vendor | Email + Portal notification |
| Document expiring (30 days) | Vendor + Procurement Officer | In-app + Email |
| Blacklist match detected | Procurement Manager + Admin | In-app + Email (urgent) |
ProKure Database Documentation - Vendor Onboarding Logic v1.0
Part of the ProKure Procurement Management System