Step-by-Step Guide — Follow each step exactly as written. All values are provided — do not improvise.

TC-BIL-003: Invoice Status Transitions

Module: Billing & Invoicing - Status Transitions

Primary Login: admin@rcme.membervu.com / Admin123! (ADMIN role)

Prerequisite: At least 3 ISSUED invoices exist (created in TC-BIL-001 or create new ones below).

URLs for this test:
Frontend: https://stg-rcme.membervu.com
Backend API: https://stg-api.membervu.com
MailHog: https://stg-webmail.membervu.com

Test A: ISSUED to PAID Transition

Purpose: Verify an invoice transitions to PAID after payment is submitted and approved.

StepAction (EXACT clicks/typing)Expected Result (EXACT text/behavior)Test Value
1Open browser, go to:
https://stg-rcme.membervu.com/login
Login page loads.https://stg-rcme.membervu.com/login
2Login as: admin@rcme.membervu.com / Admin123!Admin dashboard displayed.Email: admin@rcme.membervu.com
Pass: Admin123!
3Navigate to "Admin" > "Billing" > "Invoices". Create a new invoice if needed:
- Member: Maria Cruz
- Line item: Annual Dues 2026 / 15000
- Due date: 30 days from today
- Save
Invoice created with status ISSUED. Note the invoice number (e.g., INV-2026-XXXX).Amount: PHP 15,000.00
4Click on the ISSUED invoice to open the detail page. Click "Record Payment" (or similar button).Payment recording form or modal opens.-
5Fill in payment details:
- Amount: 15000
- Payment method: Select "Bank Transfer" (or available method)
- Reference number: BT-2026-TEST-001
- Payment date: today's date
Click "Submit" or "Record Payment".
Payment recorded successfully. If admin approval is not required, invoice status changes to PAID immediately.Amount: 15000
Ref: BT-2026-TEST-001
6If the payment requires admin approval:
Navigate to "Admin" > "Payments" (or pending payments list). Find the pending payment for this invoice. Click "Approve".
Payment approved. Invoice status changes to PAID.-
7Return to the invoice detail page. Verify the status.Invoice status badge now shows: PAID
- Payment date is displayed
- Payment reference (BT-2026-TEST-001) is visible in payment history
Status: PAID
8Verify the "Pay Now" button (member view) is no longer shown.PAID invoices do NOT show a "Pay Now" button. Payment actions are disabled.-
9Check the Payment History section on the detail page.Shows at least one payment entry:
- Amount: PHP 15,000.00
- Method: Bank Transfer
- Reference: BT-2026-TEST-001
- Date: today's date
- Status: Approved/Completed
-
PASS if: Invoice transitions from ISSUED to PAID after payment is recorded/approved. Payment date, reference, and history are correctly displayed. "Pay Now" is no longer available.

Test B: ISSUED to VOIDED Transition

Purpose: Verify an admin can void an issued invoice.

StepAction (EXACT clicks/typing)Expected Result (EXACT text/behavior)Test Value
1Navigate to "Admin" > "Billing" > "Invoices". Find an invoice with status ISSUED. If none exist, create one:
- Member: Maria Cruz
- Line item: Void Test Invoice / 5000
- Save
ISSUED invoice is available. Note the invoice number.Amount: PHP 5,000.00
2Click on the ISSUED invoice to open the detail page.Invoice detail page loads. Status shows ISSUED.-
3Click the "Void Invoice" button.A confirmation dialog or modal appears asking for a void reason.-
4In the void reason field, type:
Created in error - test cleanup
Click "Confirm Void" (or "Yes, Void Invoice").
Invoice is voided. Success message: "Invoice voided successfully" or similar.Reason: Created in error - test cleanup
5Verify the invoice detail page after voiding.Status badge now shows: VOIDED
- Void reason displayed: "Created in error - test cleanup"
- Void date is shown (today's date)
- No "Pay Now" button
- No "Record Payment" button
- May show who voided it (admin name)
Status: VOIDED
6Try to record a payment on the voided invoice. Look for "Record Payment" button.The "Record Payment" button is disabled, hidden, or absent. Voided invoices cannot accept payments.-
7Return to the invoice list. Filter by status: VOIDED.The voided invoice appears in the filtered list with VOIDED status badge.-
WARNING: Voiding an invoice is typically irreversible. Do not void invoices that are needed for other test cases unless you plan to recreate them.
PASS if: Invoice transitions from ISSUED to VOIDED. Void reason and date are displayed. Voided invoice cannot accept payments.

Test C: ISSUED to OVERDUE Transition

Purpose: Verify invoices past their due date are marked as OVERDUE.

SKIP — This test requires waiting for the due date to pass. If the system has an automatic overdue marking process (e.g., a scheduled job), this test requires waiting for that job to run. If no such automation exists and OVERDUE status is only set manually, skip this test and note it in your report.

Alternative approach: If you can create an invoice with a due date in the past (e.g., yesterday), do so and check if the system immediately marks it OVERDUE.
StepAction (EXACT clicks/typing)Expected Result (EXACT text/behavior)Test Value
1Create a new invoice with a past due date (if the system allows):
- Member: Maria Cruz
- Line item: Overdue Test / 10000
- Due date: yesterday or 7 days ago
- Save
Invoice created. Check if the system immediately assigns OVERDUE status or keeps it as ISSUED.Due date: past date
2If the invoice was created as ISSUED (not immediately OVERDUE), navigate to the invoice list and check if any scheduled process marks it overdue.The invoice should eventually show status OVERDUE (may require page refresh or cron job execution).-
3If OVERDUE status is assigned, click the invoice to view details.Status badge: OVERDUE
- Due date shown in past
- "Pay Now" button still available (overdue invoices can still be paid)
- Visual indicator of overdue status (e.g., red highlight)
Status: OVERDUE
4Verify that an OVERDUE invoice can still transition to PAID by recording a payment.Payment is accepted. Status changes from OVERDUE to PAID.-
PASS if: Invoices past their due date are marked OVERDUE (either automatically or on display). OVERDUE invoices can still be paid and transition to PAID.

Test D: PAID Invoice - No Further Transitions

Purpose: Verify a PAID invoice cannot be re-opened or further modified.

StepAction (EXACT clicks/typing)Expected Result (EXACT text/behavior)Test Value
1Navigate to "Admin" > "Billing" > "Invoices". Filter by status "PAID". Click on a PAID invoice.Invoice detail page loads. Status: PAID.Filter: PAID
2Look for an "Edit" button on the detail page.Edit button is disabled or hidden. PAID invoices cannot be edited.-
3Look for a "Void" button on the detail page.Void button may be available (to issue a refund/credit) or may be disabled. Note the behavior.-
4Look for a "Record Payment" button."Record Payment" button is disabled or hidden. Cannot add duplicate payments to a fully paid invoice.-
PASS if: PAID invoice has no Edit or Record Payment options. The invoice is in a terminal (or near-terminal) state.

Test E: VOIDED Invoice - No Further Transitions

Purpose: Verify a VOIDED invoice is a terminal state with no available actions.

StepAction (EXACT clicks/typing)Expected Result (EXACT text/behavior)Test Value
1Navigate to "Admin" > "Billing" > "Invoices". Filter by status "VOIDED". Click on a VOIDED invoice.Invoice detail page loads. Status: VOIDED.Filter: VOIDED
2Look for any action buttons: Edit, Pay, Record Payment, Re-open.All action buttons are disabled or hidden. VOIDED is a terminal state.-
3Verify void details are displayed.Void reason, void date, and voided-by user are shown (if applicable).-
4Try navigating directly to a payment URL for this invoice (if you know the pattern).Payment is rejected. API returns error: "Cannot pay a voided invoice" or similar.-
PASS if: VOIDED invoice has no available actions. It is a terminal state that cannot be reopened or paid.

CLEANUP

After completing all tests in this file: