Skip to main content
Orders store a single 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

If license-key stock is empty, settlement may leave the order paid without completed. Checkout UI can call try-assign-keys after restock.

Ticket status (unrelated)

Support tickets use their own status (open default) on the Ticket model. Do not confuse ticket status with order status.