Test Cases: Registration — Paid Events

Module: Events & Registrations - Paid Registration

Endpoints: POST /api/events/:id/register (creates invoice → REGISTERED_UNPAID) · POST /api/events/:id/checkout (paid checkout) · POST /api/events/:id/pay (pay invoice).

Frontend: register from the Registration card on /events/:slug → checkout /events/:slugOrId/checkout → invoice /invoices/:id?pay=now.

⏸ Live payment is PARKED — no prod Paynamics credentials, and seeded events are mostly free. You can exercise registration → invoice creation → REGISTERED_UNPAID, but completing a real gateway payment is not testable on stage right now. Use an upcoming paid event such as RCME Mid-Year Celebration 2026 (2026-06-13). If Paynamics sandbox is switched on, the buyer-side sandbox test cards / Maya account are in Payments Test Plan → 💳 Paynamics Sandbox — Test Accounts.

Test Cases

TC-REG-PAID-01: Register → Invoice → Unpaid

StepActionExpected Result
1Open a paid event → the card shows the price (not "Free" — #166 fix) + a "Get Tickets" button.Price displayed correctly.
2Click Get Tickets (select a ticket type if the event has them).POST /api/events/:id/register (or /checkout): an event invoice is created; toast "Registration successful! Redirecting to payment…"; redirect to /invoices/:id?pay=now. Registration status = REGISTERED_UNPAID.
3Open My Invoices (/invoices).The event invoice appears with an outstanding balance.

TC-REG-PAID-02: Invoice Email

StepActionExpected Result
1Check MailHog after registering.An event invoice email is sent with a pay link. (Note: the email copy still uses "Invoice" — terminology cleanup is pending.)

TC-REG-PAID-03: Pending / Resume

StepActionExpected Result
1Register but don't pay; come back later.Status stays REGISTERED_UNPAID; the card shows "Complete Payment". The member can return to the invoice to pay (when gateway is available).

TC-REG-PAID-04: Gateway Payment (PARKED)

StepActionExpected Result
1Attempt to pay the invoice via the gateway.Not testable on stage (no prod Paynamics creds). Mark N/A — payment parked. When paid, status → REGISTERED_PAID and the invoice → PAID.

TC-REG-PAID-05: Purchase Additional Ticket (for a guest)

StepActionExpected Result
1As a member already registered/paid, use "buy ticket for someone else" (POST /api/events/:id/purchase-additional-ticket).A GUEST registration + invoice are created for the additional attendee.