Developer Resourcesemi
EMI Module Feature List
EMI configuration, bank management, and customer inquiry surfaces.
EMI Module - Feature List
1. Feature Overview
EMI adds two API surfaces:
- admin management for global EMI settings, supported banks, and inquiry tracking
- mobile-composed customer endpoints for reading EMI availability and submitting product-specific EMI interest
The module stores inquiry-time product and pricing snapshots so follow-up can be based on the state visible when the customer submitted the request.
2. Route Ownership and Surfaces
| Surface | Route prefix | Owner |
|---|---|---|
| Admin API | /api/admin/emi | EmiAdminModule |
| Mobile customer API | /api/mobile/emi | EmiCustomerModule via MobileModule |
Swagger tags used by EMI controllers:
EMI (Admin)EMI (Mobile)
3. Admin Feature Matrix
| Capability | Endpoint | AuthZ |
|---|---|---|
| Read global EMI config | GET /api/admin/emi/config | EmiConfig_READ |
| Update global EMI config | PUT /api/admin/emi/config | EmiConfig_UPDATE |
| Create bank | POST /api/admin/emi/banks | EmiBanks_CREATE |
| List banks | GET /api/admin/emi/banks | EmiBanks_READ |
| Bank detail | GET /api/admin/emi/banks/:id | EmiBanks_READ |
| Update bank | PATCH /api/admin/emi/banks/:id | EmiBanks_UPDATE |
| Deactivate bank | DELETE /api/admin/emi/banks/:id | EmiBanks_DELETE |
| List inquiries | GET /api/admin/emi/inquiries | EmiInquiries_READ |
| Inquiry detail | GET /api/admin/emi/inquiries/:id | EmiInquiries_READ |
| Update inquiry status | PATCH /api/admin/emi/inquiries/:id/status | EmiInquiries_UPDATE |
4. Customer/Mobile Feature Matrix
| Capability | Endpoint | Notes |
|---|---|---|
| Read EMI config | GET /api/mobile/emi/config | Public/mobile, cache-backed |
| List active banks | GET /api/mobile/emi/banks | Public/mobile, cache-backed |
| Submit EMI inquiry | POST /api/mobile/emi/inquiries | Public/mobile, transactional write |
5. Key Business Rules
- EMI config is a singleton row stored in PostgreSQL, not an environment toggle.
- EMI periods are stored as integer month values; installment math stays on the frontend.
- Banks are soft-deactivated with
is_active = false. - EMI inquiries can only be submitted when EMI is enabled.
- At least one active bank must be selected for each inquiry.
- Product price snapshot uses the product
spvalue in paisa. - Down payment is optional and stored in paisa.
- Inquiry status lifecycle is
pending -> contacted -> resolved.
6. Data Tables
| Table | Purpose |
|---|---|
emi_config | Singleton global EMI settings |
emi_bank | Admin-managed EMI bank catalog |
emi_inquiry | Customer inquiry records with product snapshot |
emi_inquiry_bank | Inquiry-to-bank join table for multi-select banks |