Step-by-Step Guide — Follow each step exactly as written. Every value you need to type is spelled out. Do not improvise.

TC-DUES-003: Dues Payment & Renewal (Detailed)

Module: Dues & Billing - Payment & Renewal

Admin Test User: admin@rcme.membervu.com / Admin123! (Admin User)

Treasurer Test User: treasurer@demo.membervu.com / Treasurer123! (Ana Reyes)

Member Test User: testmember@rcme.membervu.com / Member123! (Maria Cruz)

URLs for this test:
Frontend: https://stg-rcme.membervu.com
MailHog (email viewer): https://stg-webmail.membervu.com
PREREQUISITE: Dues invoices must already exist. If not, run TC-DUES-002 first to generate them. Maria Cruz should have a dues invoice for ₱15,000 (Regular Member, period 2026).

TC-DPAY-01: Member Pays Dues Invoice

Purpose: Verify that a member can pay their dues invoice through the member portal.

StepAction (EXACT clicks/typing)Expected Result (EXACT text/behavior)Test Value
1 Open your browser and go to:
https://stg-rcme.membervu.com/login

Enter email: testmember@rcme.membervu.com
Enter password: Member123!

Click "Sign In".
Login succeeds. Member dashboard loads for Maria Cruz. Email: testmember@rcme.membervu.com
Password: Member123!
2 Navigate to "My Invoices" or "Billing" in the sidebar. Your invoice list loads. You should see a dues invoice for 2026 with amount ₱15,000 and status PENDING (or UNPAID). -
3 Click on the dues invoice (₱15,000) to view its details. Invoice detail page opens showing:
- Amount: ₱15,000
- Type: Dues / Annual Dues
- Period: 2026
- Status: PENDING / UNPAID
- A "Pay Now" button (or payment options).
-
4 Click the "Pay Now" button. A payment dialog or page appears showing payment options. You may see options like:
- GCash
- Maya
- Credit Card
- Bank Transfer
- Or an "Admin will record payment" note.

For full payment channel testing, see TC-PAY-001.
-
5 Select a payment method (e.g., "GCash" or whichever is available). Follow the payment flow to completion.

If using a test/sandbox payment gateway, use any test credentials provided.

If no online payment is available, proceed to TC-DPAY-02 for admin-recorded payment.
Payment is processed. The invoice status changes to "PAID". A confirmation message appears, such as "Payment successful". -
6 Return to "My Invoices". Verify the dues invoice now shows status "PAID". The invoice is marked as PAID with the payment date recorded. -
7 Verify that your membership status remains ACTIVE (or was renewed with an updated expiry date). Check your profile or dashboard. Membership status is ACTIVE. If the membership had an expiry date, it may have been extended to the next renewal period. -
NOTE: If online payment gateways are not yet configured in staging (Paynamics integration is pending), skip to TC-DPAY-02 to test admin-recorded payment instead.
PASS if: Dues payment processed, invoice status changed to PAID, membership remains ACTIVE.

TC-DPAY-02: Admin Records Dues Payment

Purpose: Verify that an admin or treasurer can manually record a dues payment.

StepAction (EXACT clicks/typing)Expected Result (EXACT text/behavior)Test Value
1 Log in as treasurer:
Email: treasurer@demo.membervu.com
Password: Treasurer123!
Login succeeds. Dashboard loads for Ana Reyes (Treasurer). Email: treasurer@demo.membervu.com
Password: Treasurer123!
2 Navigate to "Admin" > "Invoices" (or "Billing" > "Invoices"). The invoice list loads showing all invoices across all members. -
3 Find a PENDING/UNPAID dues invoice for a member (e.g., a member other than Maria Cruz if her invoice is already paid, or any member with an unpaid dues invoice). Click on the invoice. Invoice detail page opens. -
4 Look for a "Record Payment" or "Mark as Paid" button. Click it. A payment recording form appears with fields for:
- Payment amount (pre-filled with invoice amount)
- Payment method (e.g., Cash, Bank Transfer, Check)
- Payment date
- Reference number (optional)
-
5 Fill in the payment details:
- Amount: leave as pre-filled (full invoice amount)
- Payment Method: select "Bank Transfer" (or "Cash")
- Payment Date: today's date
- Reference: QA-TEST-PAYMENT-001

Click "Record Payment" or "Save".
A success message appears. The invoice status changes to "PAID". Reference: QA-TEST-PAYMENT-001
6 Return to the invoice list. Verify the invoice now shows "PAID". Invoice status is PAID. -
PASS if: Admin/Treasurer recorded payment, invoice status changed to PAID.

TC-DPAY-03: Overdue Dues Handling

Purpose: Verify the system's behavior when dues are overdue (past due date + grace period).

SKIP (Partial) — Testing actual overdue status transitions requires waiting for the due date + 30-day grace period to pass, or requires database manipulation to set past due dates.

What you CAN verify:
StepAction (EXACT clicks/typing)Expected Result (EXACT text/behavior)Test Value
1 Log in as the expired user:
Email: expired@demo.membervu.com
Password: Expired123!
Either:
- Login succeeds but the dashboard shows an overdue/expired notice, or
- Login succeeds but with restricted access, or
- Login is blocked with a message about expired membership.
Email: expired@demo.membervu.com
Password: Expired123!
2 If login succeeded, look for any overdue warnings, expired banners, or renewal prompts on the dashboard or profile. The system indicates the membership is expired or dues are overdue. There may be a "Renew" or "Pay Now" prompt. -
PASS if: Expired member sees appropriate overdue/expired notices.

TC-DPAY-04: Founding Member Exemption

SKIP — The "Founding Member" membership type (with ₱0 dues) is not included in the RCME seed data. Only Regular Member (₱15,000), Associate Member (₱10,000), and Student Member (₱5,000) are seeded.

What would happen: If a Founding Member type existed with ₱0 annual dues, the system should either:
- Not generate a dues invoice for Founding Members (since amount is ₱0), or
- Generate a ₱0 invoice that is automatically marked as PAID.

To test manually: Create a "Founding Member" membership type via Admin > Membership Types with ₱0 dues, assign a member to it, and generate invoices.

TC-DPAY-05: Partial Payment

Purpose: Verify the system's behavior when a partial payment is made against a dues invoice.

StepAction (EXACT clicks/typing)Expected Result (EXACT text/behavior)Test Value
1 Log in as admin or treasurer. Navigate to "Admin" > "Invoices". Find a PENDING dues invoice for ₱15,000 (Regular Member). Click on it. Invoice detail page opens showing amount ₱15,000. -
2 Click "Record Payment". In the amount field, enter a partial amount:
10000

Payment Method: "Bank Transfer"
Reference: QA-PARTIAL-001

Click "Record Payment" or "Save".
Either:
- The partial payment is recorded. Invoice shows ₱10,000 paid with ₱5,000 remaining. Status changes to "PARTIALLY_PAID" or remains "PENDING" with a balance, or
- The system rejects partial payments with a message like "Payment amount must match invoice amount".

Note the behavior.
Amount: 10000
Reference: QA-PARTIAL-001
3 If partial payment was accepted: record a second payment for the remaining amount:
5000

Reference: QA-PARTIAL-002

Click "Record Payment".
The remaining ₱5,000 is recorded. Invoice is now fully paid (status: PAID). Total payments: ₱10,000 + ₱5,000 = ₱15,000. Amount: 5000
Reference: QA-PARTIAL-002
NOTE: If partial payments are not supported, note this in your test results as "Partial payments not supported — system requires full payment amount." This is acceptable behavior.
PASS if: Either partial payments work correctly (balance tracked, final payment completes invoice) OR partial payments are explicitly rejected (also valid).

CLEANUP — Read This Before You Stop

Payments were recorded during this test:


These payments and invoice status changes cannot be easily reversed through the UI. If you need a clean state, reseed the database:
docker exec membervu-backend npm run seed:rcme

Do NOT change the expired user's status (expired@demo.membervu.com) unless you plan to reseed. Other tests depend on Antonio Dela Cruz being in EXPIRED status.