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
Step
Action
Expected Result
1
Open a paid event → the card shows the price (not "Free" — #166 fix) + a "Get Tickets" button.
Price displayed correctly.
2
Click 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.
3
Open My Invoices (/invoices).
The event invoice appears with an outstanding balance.
TC-REG-PAID-02: Invoice Email
Step
Action
Expected Result
1
Check 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
Step
Action
Expected Result
1
Register 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)
Step
Action
Expected Result
1
Attempt 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)
Step
Action
Expected Result
1
As 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.