status string (Prisma: String, default pending). There is no separate paymentStatus column — the order status doubles as payment lifecycle.
Common values
Analytics groupings (
lib/domains/analytics/constants.ts):
- Revenue:
paid,completed - Pending:
pending,processing - Cancelled:
cancelled,expired - Fulfilled:
completed
unpaid appears in notification helpers but is not part of the analytics count keys — treat it as a real status if you see it on an order row.
Transitions that matter to integrators
paid without completed. Checkout UI can call try-assign-keys after restock.
Ticket status (unrelated)
Support tickets use their ownstatus (open default) on the Ticket model. Do not confuse ticket status with order status.