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:
Backend API:
MailHog:
Frontend:
https://stg-rcme.membervu.comBackend API:
https://stg-api.membervu.comMailHog:
https://stg-webmail.membervu.com
Test A: ISSUED to PAID Transition
Purpose: Verify an invoice transitions to PAID after payment is submitted and approved.
| Step | Action (EXACT clicks/typing) | Expected Result (EXACT text/behavior) | Test Value |
|---|---|---|---|
| 1 | Open browser, go to:https://stg-rcme.membervu.com/login | Login page loads. | https://stg-rcme.membervu.com/login |
| 2 | Login as: admin@rcme.membervu.com / Admin123! | Admin dashboard displayed. | Email: admin@rcme.membervu.comPass: Admin123! |
| 3 | Navigate 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 |
| 4 | Click on the ISSUED invoice to open the detail page. Click "Record Payment" (or similar button). | Payment recording form or modal opens. | - |
| 5 | Fill 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: 15000Ref: BT-2026-TEST-001 |
| 6 | If 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. | - |
| 7 | Return 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 |
| 8 | Verify the "Pay Now" button (member view) is no longer shown. | PAID invoices do NOT show a "Pay Now" button. Payment actions are disabled. | - |
| 9 | Check 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.
| Step | Action (EXACT clicks/typing) | Expected Result (EXACT text/behavior) | Test Value |
|---|---|---|---|
| 1 | Navigate 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 |
| 2 | Click on the ISSUED invoice to open the detail page. | Invoice detail page loads. Status shows ISSUED. | - |
| 3 | Click the "Void Invoice" button. | A confirmation dialog or modal appears asking for a void reason. | - |
| 4 | In the void reason field, type:Created in error - test cleanupClick "Confirm Void" (or "Yes, Void Invoice"). | Invoice is voided. Success message: "Invoice voided successfully" or similar. | Reason: Created in error - test cleanup |
| 5 | Verify 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 |
| 6 | Try 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. | - |
| 7 | Return 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.
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.
| Step | Action (EXACT clicks/typing) | Expected Result (EXACT text/behavior) | Test Value |
|---|---|---|---|
| 1 | Create 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 |
| 2 | If 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). | - |
| 3 | If 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 |
| 4 | Verify 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.
| Step | Action (EXACT clicks/typing) | Expected Result (EXACT text/behavior) | Test Value |
|---|---|---|---|
| 1 | Navigate to "Admin" > "Billing" > "Invoices". Filter by status "PAID". Click on a PAID invoice. | Invoice detail page loads. Status: PAID. | Filter: PAID |
| 2 | Look for an "Edit" button on the detail page. | Edit button is disabled or hidden. PAID invoices cannot be edited. | - |
| 3 | Look 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. | - |
| 4 | Look 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.
| Step | Action (EXACT clicks/typing) | Expected Result (EXACT text/behavior) | Test Value |
|---|---|---|---|
| 1 | Navigate to "Admin" > "Billing" > "Invoices". Filter by status "VOIDED". Click on a VOIDED invoice. | Invoice detail page loads. Status: VOIDED. | Filter: VOIDED |
| 2 | Look for any action buttons: Edit, Pay, Record Payment, Re-open. | All action buttons are disabled or hidden. VOIDED is a terminal state. | - |
| 3 | Verify void details are displayed. | Void reason, void date, and voided-by user are shown (if applicable). | - |
| 4 | Try 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:
- Document all status transitions observed:
- Invoice # _____ : ISSUED → PAID (Test A)
- Invoice # _____ : ISSUED → VOIDED (Test B)
- Invoice # _____ : ISSUED → OVERDUE (Test C, if tested) - PAID and VOIDED invoices cannot be cleaned up (terminal states). Note them in your test report.
- Void any remaining ISSUED test invoices that are no longer needed: Open invoice > Void > Reason:
Test cleanup - TC-BIL-003