---
title: Payments Overview
slug: payments-overview
docTags: 
createdAt: 2026-03-06T19:27:17.314Z
---

REMMU has a unified payment system that handles all money movement in your academy — student fees, package purchases, one-off charges, and instructor compensation.

## 💳 Payment Flow

1. **Payment is created** — either automatically (recurring monthly fee) or manually (admin records a payment)
2. **Member pays** — via bank transfer (upload proof) or online payment (CommercePay)
3. **Payment is confirmed** — automatically for online payments, or by admin approval for bank transfers
4. **Receipt is sent** — member receives a WhatsApp notification and/or email with their receipt

***

## 📊 Payment Statuses

| Status             | Meaning                                                                                    |
| ------------------ | ------------------------------------------------------------------------------------------ |
| **Draft**          | Generated as a draft for admin review — not yet visible to members                         |
| **Pending**        | Payment created, waiting for member to pay                                                 |
| **Processing**     | Online payment initiated, waiting for gateway confirmation                                 |
| **Paid**           | Payment confirmed and complete                                                             |
| **Overdue**        | Payment past due date                                                                      |
| **Rejected**       | Proof uploaded but rejected by admin                                                       |
| **Failed**         | Online payment failed at gateway                                                           |
| **Partially Paid** | Some payment received, balance remaining                                                   |
| **Cancelled**      | Payment voided by admin                                                                    |
| **Refunded**       | Payment was refunded — see [Credit Notes & Payment Vouchers](docId\:hV0ua8QgZfseBecfvmnlK) |

***

## 🏷️ Payment Types

REMMU tracks different kinds of charges under one unified system:

- **Class fees** — monthly, per-session, or package-based
- **Package purchases** — upfront session blocks
- **One-off charges** — custom amounts for merchandise, events, etc.
- **Enrollment fees** — bundled one-time fees generated automatically when a student joins a class
- **Instructor payments** — compensation records for coaches

→ See [Payment Types](docId\:XVjKZ4dPOYbaFCat_wvDO) for how to configure recurring schedules, auto-generation, deposits, and invoice numbering.

## 🗓️ Filtering Payments

The Payments page supports multiple filters that can be combined:

| Filter               | Description                                               |
| -------------------- | --------------------------------------------------------- |
| **Billing period**   | Filter by month, year, or a specific week                 |
| **Location / Class** | Filter by branch or specific class using expandable pills |
| **Status**           | Pending, Paid, Overdue, etc.                              |
| **Invoice type**     | Standard or New Enrollments                               |
| **Student**          | Search by student name                                    |

**Week filter:** Appears automatically when your academy has weekly payment types. Select a start and end date to view payments for that specific week.

### Sorting, pagination, and the Date column

- The Payments table defaults to **newest first** (sorted by created date)
- **Invoice #** and **Date** column headers are clickable — toggle ascending/descending
- **Rows per page** can be set to 20 / 50 / 100 / 200 (default 50); the choice persists in the URL
- The **Date** column is context-aware: it shows the **paid date** for paid payments, the **cancelled date** for cancelled ones, and the **due date** otherwise. Hover the header for the explainer tooltip

## 🤖 AI Proof Verification

REMMU can automatically verify bank transfer proofs using AI before an admin reviews them. When a member uploads a receipt screenshot, the AI extracts the amount, date, transfer status, and bank name, then scores the proof against the expected payment.

Proofs that score highly are auto-approved and marked Paid immediately — everything else stays in the normal manual review queue. The AI never auto-rejects a proof; it only ever fast-tracks the ones it's confident about.

**What the AI checks:**

| Signal     | What it checks                                                               |
| ---------- | ---------------------------------------------------------------------------- |
| **Amount** | Does the transferred amount match the invoice?                               |
| **Status** | Does the receipt show a success indicator?                                   |
| **Date**   | Was the transfer made within the expected window?                            |
| **Bank**   | Does the bank name match? (Skipped for QR/e-wallet receipts — not penalised) |

Each proof card in the Proof Submissions panel shows an AI breakdown — a confidence score, the transfer type detected, and individual signal pass/fail indicators — so admins reviewing manually can see why a proof did or didn't qualify for auto-approval.

### Configuring AI Verification

Go to **Settings → Billing → Payment Methods** → expand **Bank Transfer** → scroll to **AI Proof Verification** to turn the feature on, control whether qualifying proofs auto-approve, set a cap on which payments can be auto-approved, and adjust how strict the matching should be.

:::hint{type="info"}
AI verification is available to academies on the REMMU platform. Contact support if you'd like to enable it.
:::

***

## 🧾 Proof Submissions (Batch Review)

When members upload bank transfer proofs, REMMU groups them by **submission batch** — so if a member uploads one receipt covering multiple invoices, it appears as a single card for the admin to review.

The **Proof Submissions** section sits above the payments table on **Payments**. It is collapsible — click the heading to expand or collapse it. An amber badge shows the number of pending submissions waiting for review.

Each batch card shows:

- File name, student name(s), submission date/time, and total amount
- **Approve** button (green) — approves all linked invoices in one click without needing to expand
- **Reject** button (red) — prompts for a rejection reason, then rejects all linked invoices
- Click the card to **expand** it and see the proof image alongside a list of all invoices covered

When expanded, you can:

- View the proof image inline or open it full size in a new tab
- See each individual invoice (student, amount, billing period, invoice number)
- Read any note the member added when uploading
- Still approve or reject from the expanded view

:::hint{type="info"}
Members whose proof is rejected receive an email with the rejection reason and can re-upload corrected proof.
:::

### Proof History

For a complete audit trail of every proof ever submitted (approved, rejected, or re-submitted), go to **Payments → Proof History**.

The page lists every proof batch with:

- Submission date and uploader name
- Student(s) and invoice number(s) covered by the batch
- Total amount
- Status badge (Approved / Rejected / Pending)
- AI verification confidence score
- Rejection reason (if rejected)

Tools available:

| Tool              | Purpose                                                         |
| ----------------- | --------------------------------------------------------------- |
| **Search**        | By student name or invoice number                               |
| **Status filter** | All / Approved / Rejected                                       |
| **Date range**    | Filter by submission date (from/to)                             |
| **Sort**          | Newest first, oldest first, amount descending, amount ascending |

Click any batch card to expand the proof image and see all linked invoices. Use this page to audit historical decisions, find a specific proof for re-review, or check why a past proof was rejected.

***

## 🧾 Admin-Recorded Proof

When an admin marks a payment as paid on the student's behalf (e.g. cash received at the desk, bank transfer confirmed directly with the member), they can now **upload a proof image** as part of that record — a photo of the cash handover, a screenshot of the transfer confirmation, or any other supporting document.

**How it works:**

1. Open a pending invoice and click **Mark as Paid**
2. Fill in the amount, method, and date as usual
3. Scroll to the **Upload proof (optional)** section
4. Attach an image or PDF

The uploaded file is saved as an **admin-recorded proof**:

- Marked as already approved (it skips the review queue)
- Tagged with an **Admin-uploaded** badge in the payment detail view to distinguish from student-submitted proofs
- Visible in Proof History alongside regular submissions for audit

:::hint{type="info"}
This is separate from the member-facing proof upload flow. Use admin-recorded proof to document offline / informal payments that still need a paper trail.
:::

***

## 💰 Partial Payments

Admins can record **partial payments** when a member pays part of an invoice amount. This is useful for instalment arrangements or when members pay in stages.

### How it works

1. Open a pending, overdue, or partially paid invoice
2. Click **Mark as Paid**
3. Enter the amount received — if it's less than the remaining balance, it's recorded as a partial payment
4. The invoice status changes to **Partially Paid** until the full amount is collected
5. Each subsequent payment is added as a new entry until the invoice is fully paid
6. The final payment automatically marks the invoice as **Paid** and issues a receipt

### Payment entries timeline

Each partial payment is shown as a numbered entry in a visual timeline:

- **Progress bar** — shows percentage paid (cyan while partial, green when complete)
- **Running total** — cumulative amount paid after each entry
- **Per-entry details** — amount, payment method, date, reference number, notes, and receipt (if issued)

### Managing entries

While an invoice is partially paid, admins can:

- **Edit** an entry — change the amount, payment method, date, or notes
- **Delete** an entry — removes the payment and recalculates the balance
- **Download receipt** — if a receipt was issued for that entry

Deleting all entries reverts the invoice back to its original status (pending or overdue).

### Receipt options for partial payments

| Scenario                  | Receipt behaviour                                     |
| ------------------------- | ----------------------------------------------------- |
| **First partial payment** | Choose to issue a receipt or skip                     |
| **Subsequent partials**   | Add to existing receipt or issue a new receipt number |
| **Final payment**         | Receipt is always issued automatically                |

### Payment summary

The Mark as Paid dialog shows a summary box at the top:

- **Invoice Total** — the full amount
- **Paid so far** — sum of all entries (green when > 0)
- **Remaining** — what's still owed (highlighted)

The amount input defaults to the remaining balance and shows a warning when recording a partial amount.

:::hint{type="info"}
Partial payments are an admin-only feature. Members see their invoice status as "Partially Paid" with the amount remaining.
:::

***

## 🔢 Gateway Reference & Transaction Numbers

For online payments, the payment detail view shows the gateway-issued **reference code** (order ID) and **transaction number** in monospace font. Use these to cross-reference with your CommercePay or other gateway dashboards when reconciling.

***

## 📝 Review Drafts

If your academy has **Generate as drafts** enabled in invoice settings, monthly recurring invoices are created as **drafts** instead of being sent to members directly. Drafts are not visible to members and don't trigger any emails until you send them.

Review drafts under **Payments → Review Drafts**. Pick a billing month — drafts are grouped by billing type:

| Section       | Shows                                                                   |
| ------------- | ----------------------------------------------------------------------- |
| **Per Hour**  | Student, class, day, hourly rate, **Lessons** (editable inline), amount |
| **Monthly**   | Student, class, amount                                                  |
| **Frequency** | Student, class, tier / cycle, amount                                    |
| **Package**   | Student, package name, sessions / validity, amount                      |
| **Other**     | Anything that doesn't fit above                                         |

A summary band at the top shows total students, draft count, total amount, location breakdown, and how many lessons were adjusted.

### Filters

A toolbar above the sections lets you narrow the list:

- **Search** by student name or class name
- **Location filter** (appears when 2+ locations have drafts)
- **Class filter** — beside the location filter; its options narrow to the selected location, and changing the location resets it
- **Clear filters** button

### Per-section multi-select

Each billing-type section header has a **select-all checkbox**. Ticking it (or individual rows) reveals **Send** and **Delete** buttons in the section header — so you can send or delete whole groups (e.g. only per-hour drafts) in one click.

### Per-row actions

- **Send** — emails the invoice to the member (and guardians) and moves the draft to Pending. Clicking Send twice (or two admins sending the same draft) is safe — the invoice number is claimed once, so no number is wasted
- **Edit** — open the full edit dialog to change amount, line items, or due date
- **Delete** — permanently remove the draft (drafts only)

### Inline lesson edit (per-hour drafts only)

For per-hour drafts, the **Lessons** column is editable inline — click the cell, type the corrected lesson count, blur or hit Enter. REMMU recalculates the amount server-side instantly.

### Send All

A sticky action bar at the bottom shows the total amount and draft count. Click **Send All** to bulk-send every draft on screen after a confirmation dialog, or **Delete All** to drop them entirely (also confirmed). When filters are active, the buttons change to **Send Filtered** / **Delete Filtered** so you only act on what you can see.

Drafts that aren't sent stay in this list until you send or delete them. They are also auto-promoted to Pending on the **due date** of the invoice (so you don't miss billing if you forget to review).

:::hint{type="info"}
Invoice numbers are assigned **at publish time**, not when the draft is generated — so deleted drafts don't leave gaps in your invoice sequence.
:::

***

## ✏️ Editing a Payment

Open any payment and click **Edit** to update its details:

- **Invoice Date** — the date printed on the invoice/receipt PDF (defaults to creation date; useful for back-dating)
- **Billing period** — the month/quarter/year this invoice covers; the description updates automatically to match
- **Description** — auto-generated from the class and billing period, but you can override it manually
- **Discount (RM)** — apply a one-off discount to the invoice amount
- **Late fee** — add a late payment charge if configured
- **Line items** (enrollment invoices only) — edit individual line item amounts, add a description to each item, remove items, or add new custom line items

***

## 📥 Downloading Invoice & Receipt PDFs

You can download a PDF copy of any invoice or receipt:

- From the payments table: open the **⋯** menu → **Download Invoice** or **Download Receipt**
- From inside the payment detail view: click the **Download** button

Both pending and paid invoices can be downloaded. Paid invoices also have a receipt PDF with the receipt number and payment confirmation details.

***

## 📧 Resending Invoice / Receipt Email

You can resend the invoice or receipt email to the member at any time:

- From the payments table: open the **⋯** menu → **Resend Invoice** (pending) or **Resend Receipt** (paid)
- From inside the payment detail view: click **Resend Invoice** or **Resend Receipt**

The email is sent to the member or guardian with the latest payment details.

***

## 🔁 Reverting a Payment

Admins can revert a **Paid** payment back to **Pending** status. This is useful when a payment was marked paid by mistake or a bank transfer was reversed.

From the Payments table, open the ⋯ menu on any paid payment → **Revert to Pending**. The payment returns to pending and the member's payment health updates accordingly.

***

## ♻️ Reinstating a Cancelled Invoice

Cancelled an invoice by mistake? Admins can bring it back to **Pending**:

- From the Payments table: open the **⋯** menu on a cancelled payment → **Reinstate**
- From the student's **Payments** tab, or inside the payment detail view: click **Reinstate**

Confirm in the dialog. The invoice returns to Pending with the same invoice number, and the cancellation reason is cleared. Reinstate is also available in the mobile app for admins.

:::hint{type="info"}
Only **Cancelled** invoices can be reinstated. To undo a payment that was marked paid by mistake, use **Revert to Pending** instead.
:::

***

## 📊 Exporting Payments

Click **Export** above the Payments table to download the current filtered list as a CSV file. All active filters apply — filter first, then export the exact records you need.

***

## 💰 Currency

All amounts are in **Malaysian Ringgit (RM)**. Amounts are stored precisely to the sen (e.g. RM 75.50).

→ See [Billing Types](docId\:Y6e9yg3O1AVwe6bjOf6ar) for more on how fees are calculated.
→ See [Payment Methods](docId:37vN_hzh3BG4nbw49RLW2) for how members can pay.
