Mhani Back Office

Financial Month-End Guide

The complete process for closing a commission cycle and sending payouts to the bank. Follow every step in order — missing a step means agents don't get paid correctly.

⚠ Read This First — Critical Rules

  • Commissions are only earned on FULFILLED orders. Pending or cancelled orders do NOT count. Fulfill every order before closing the month.
  • The commission amount is based on confirmed_total (the actual amount after fulfillment rationing), not the original order subtotal.
  • The period is locked when you click "Close & Post." After that, the approved amounts are final. You cannot re-close the same month without deleting the existing records first.
  • "Mark as Paid" is irreversible. Only click it AFTER the bank transfer is complete. It removes commissions from future exports and creates audit-trail Payment records.
  • Do this on the LAST DAY of each month — or as close to it as possible. Late closes still work (the engine filters by date), but agents see a delay in their commission portal.

Month-End Timeline

Last day of month
Fulfill orders → Calculate → Close & Post
→
1st of next month
Export bank CSV → Make payment
→
After bank transfer
Mark as Paid → Cycle complete

The commission month runs from the 1st at 00:00:00 through the last day at 23:59:59. Orders are assigned to a month based on their fulfillment date (the point of sale), not the order creation date.

Step-by-Step Process

1

Fulfill All Pending Customer Orders

By 18:00 on last day

Go to Order Fulfillment and process every pending order for the month. The commission engine only counts FULFILLED orders — any order left pending will NOT generate commission. Use the fulfillment form to set provided quantities (rationing if stock is short) and confirm each order. The confirmed_total (provided_qty × price) becomes the commission-eligible sale amount.

Go to Order Fulfillment
2

Run the Commission Engine — Calculate

By 20:00 on last day

Go to the Commission Engine page. Select the month you're closing. Click 'Calculate Commissions'. The engine reads every fulfilled customer order for the month, applies the Mhani Skincare Compensation Plan rates per agent rank, calculates downline commissions up to 4 levels, checks maintenance requirements, and identifies rank-up bonuses. This produces a DRAFT — nothing is saved yet.

Go to Commission Engine
3

Review the Per-Agent Breakdown

By 21:00 on last day

Scroll through each agent's expanded row. Check: (a) Personal Sales — matches their fulfilled orders. (b) Maintenance status — green = maintained, red = below minimum (commissions will be forfeited). (c) Rank-up alerts — purple badges show agents ready to advance. (d) Commission breakdown — direct_bonus, team_bonus, leadership_bonus, salary, rank_bonus. If anything looks wrong, do NOT close — fix the underlying order data first and re-calculate.

Go to Commission Engine
4

Close & Post the Period

By 22:00 on last day

Click 'Close & Post [Month]'. This is the LOCK step. The system creates official Commission records: approved (agent maintained — ready for payment), forfeited (agent didn't maintain — commission voided, retained by Mhani), or rolled-over (first-month grace — kit finder fee moves to next month). Each agent gets an inbox notification. After this, the month's commissions are FINAL — you cannot re-close without deleting existing records.

Go to Commission Engine
5

Export the Bank Batch CSV

1st of next month

Go to the Bank Export Report page. Select the same month. The page shows every agent with approved commissions, their total payout, and banking details (from TeamMember records). Click 'Export Bank EFT CSV' for your bank's bulk payment upload (FNB, Standard Bank, ABSA, Nedbank), or 'Export PayFast CSV' for PayFast bulk payment. Check the 'Missing Banking' warning — any agent without banking details in their TeamMember record will show MISSING and you must collect their details before exporting.

Go to Bank Export Report
6

Make the Bank Payment

1st of next month

Upload the CSV to your bank's bulk payment portal (or PayFast). Verify each recipient name, account number, and amount matches the Bank Export Report. Execute the transfer. Save the bank confirmation/reference number — you'll need it for your records.

7

Mark All as Paid

After bank transfer confirmed

Back on the Bank Export Report page, click 'Mark All as Paid'. A confirmation dialog shows the total amount and agent count. Confirm ONLY after the bank transfer is complete. This marks all approved commissions as 'paid', creates Payment records (with bank reference) for audit trail, and removes them from future bank exports. The cycle is now complete.

Go to Bank Export Report

Data Flow — Where Everything Goes

Customer Order
Fulfilled (point of sale)
Commission Engine
Commission Record
approved / forfeited / rolled-over
Bank Export CSV
account, branch, amount
Bank Transfer
Mark as Paid
Payment record + status update

Commission entity: The core record. Status flows: pending → approved (at close) → paid (after bank transfer). Forfeited = voided. Rolled-over = moved to next month (first-month grace).

Payment entity: Audit trail of actual money sent. Created when you click "Mark as Paid". Contains bank reference, amount, and date.

AgentInbox entity: Notifications sent to agents at close (approved/forfeited/grace) and at payout.

Key Data Points — What the System Uses

Commission Calculation

  • • Order status: Only "fulfilled" orders count
  • • Sale amount: confirmed_total (after rationing)
  • • Period date: fulfilled_at (not created_date)
  • • Agent filter: approved === true (activated agents only)
  • • Commission reserve: 25% of affiliate price (worst-case cap)

Maintenance Requirements

  • • Agent: R600 personal sales/month
  • • Associate: R600 + 2 individual + 10 team customers
  • • Team Leader: R700 + 3 individual + 20 team customers
  • • Manager: R700 + 4 individual + 30 team customers
  • • Director: R800 + 5 individual + 45 team customers
  • • Veteran: R800 + 5 individual + 60 team customers

Forfeiture & Grace Period Rules

If an agent does NOT meet maintenance: All their earned commissions for the month are forfeited — voided and retained by Mhani. The agent receives an inbox notification explaining the forfeiture.

First-month grace period: New agents who join in the current month and don't meet maintenance get a one-month grace. Their kit finder fee (10%) rolls over to the next month. All other commissions are still forfeited. To receive the rolled-over fee, they must meet maintenance in month 2.

No demotion: An agent's rank only ever advances, never drops — even if they don't meet maintenance.

Troubleshooting

"No activated Brand Partners found"

The engine only processes agents with approved === true. Go to Agent Activation and activate agents first. Agents with approved === false or no approved field are invisible to the engine.

"Period already has approved commission records"

You already closed this month. To re-close, delete the existing Commission records for that period first (via the Commissions Report page), then re-calculate and re-close.

"Missing Banking" on the Bank Export Report

The agent's TeamMember record doesn't have bank_name, account_number, or branch_code. Go to the Agents Database, find the agent, and update their TeamMember banking details before exporting.

I forgot to close last month — is the data lost?

No. The engine filters by fulfillment date, so you can close any month retroactively (up to 12 months back). Select the missed month, calculate, and close. New orders from the current month are NOT affected — they stay in the current month.

An agent's commission looks wrong

Check: (1) Are all their orders fulfilled? (2) Does confirmed_total match what was actually provided? (3) Is their rank correct? (4) Are their downline agents' orders also fulfilled? The engine recalculates from scratch each time — fix the underlying data and re-calculate.

base44
Edit with Base44