Welcome back,
.
Your team matched SP this month. Keep both teams growing evenly to unlock the next reward.
This month’s estimated payout
Illustrative values from the Master Cumulative Payout Matrix. TDB is capped at ₹30,000 a month; Travel and Car Fund need two-month qualification.
Recent activity
- New distributor joined Team BPriya Nair · 2 hours ago
- Order of 1,200 SP placed in Team AAmit Verma · yesterday
- Silver rank reward unlockedPremium ceiling fan · 12 Oct
- Bank KYC verifiedPayouts enabled · 03 Oct
Team tree
Select a member to see their volume. Team A is the left leg and Team B the right.
Member details
Earnings statement
Raise any calculation query within 14 days of issue. Payouts need completed bank KYC.
Current month ()
| Stream | Points | Amount | Status |
|---|
Previous statements
| Month | Matched SP | Gross | Net paid | Status |
|---|---|---|---|---|
| September 2026 | 30,000 | ₹8,420 | ₹8,252 | Paid |
| August 2026 | 22,000 | ₹5,100 | ₹4,998 | Paid |
| July 2026 | 14,000 | ₹2,540 | ₹2,489 | Paid |
Place an order
Sample prices and SP values for the demo. Your DP is the MRP less up to 30% savings.
Your cart
Order history
Register a new member
Four quick steps. The new ID must place one SP order and complete KYC within 35 days.
Welcome a new member
to your team
Register them in four short steps. Personal details, placement, KYC and a final review.
Backend design
A proposed architecture to turn this demo into a production system.
Stack
React or Next.js front end, Node.js (NestJS) API, PostgreSQL for all money and tree data, Redis for queues and sessions, S3 for KYC documents. A nightly and month-end job runner computes bonuses. Payments go through a bank payout API such as RazorpayX.
Core tables
distributors(id, sponsor_id, parent_id, leg[A|B], status, joined_at, activate_by, kyc_status) kyc(distributor_id, pan, bank_acct, ifsc, docs[], verified_at) products(id, name, mrp, dp, sp) orders(id, distributor_id, total_dp, total_sp, placed_at) order_items(order_id, product_id, qty) sp_ledger(id, distributor_id, order_id, leg_credit_to, sp, month) matching(distributor_id, month, a_sp, b_sp, carry_a, carry_b) points(distributor_id, month, fund, points) payouts(id, distributor_id, month, fund, gross, tds, net, status) ranks(distributor_id, rank, achieved_at) -- never demoted audit_log(id, actor, action, before, after, at)
Key API endpoints
POST /auth/login GET /me/dashboard GET /team/tree?depth=3 POST /members (register, place in leg) GET /orders POST /orders GET /earnings/:month POST /earnings/:month/query (14-day window) POST /kyc GET /ranks/progress ADMIN: POST /payout-runs/:month PATCH /rules POST /terminate/:id
Month-end payout run
1) Lock the month’s SP ledger. 2) For each distributor, match the smaller leg against the larger and carry the remainder forward. 3) Convert matched SP into points per fund (2,000 / 14,000 / 24,000 / 34,000 and so on). 4) Divide each pool (percentage of company SP turnover) by total points to get the point value. 5) Apply the ₹30,000 TDB cap and the one-point BBB limit. 6) Hold Travel and Car Fund until two-month qualification is met. 7) Deduct TDS, withhold if KYC is incomplete, write payouts and audit entries.
Rules to enforce in code
One ID per person and no cross-sponsoring; 35-day activation; 9 months without an order marks a distributor inactive; spouse and family-unit sponsorship lines; lifetime ranks never demoted; all money changes are append-only ledger entries. Confirm the open questions from the first demo (Luxury Fund 3% or 5%, House Fund values) before coding the engine.