Mersi

Orders

List and retrieve order history with status and product snapshot.

Requires a valid crossmint-jwt cookie and completed onboarding. Rate-limited at 30 req/min per user.

Order Status Values

Order status is updated automatically by the Crossmint webhook handler:

StatusWebhook EventDescription
awaiting_approvalDefault after checkout creation
payment_confirmedorders.payment.succeededUSDC payment confirmed
in_progressorders.delivery.initiatedMerchant processing
deliveredorders.delivery.completedItem delivered
cancelledorders.payment.failed / orders.delivery.failedFailed payment or delivery

GET /api/orders

List the authenticated user's orders with optional filters and pagination.

Auth required: Yes + onboarding complete

Query Parameters

ParamTypeDefaultDescription
pagestring"1"Page number (1-based)
limitstring"20"Results per page
typestringFilter by type: checkout or deposit
statusstringFilter by status value (see table above)
phasestringFilter by Crossmint phase string

Response 200 OK

{
  "orders": [
    {
      "orderId": "d1e2f3a4-b5c6-7890-defg-234567890123",
      "crossmintOrderId": "ed34a579-7fbc-4509-b8d8-9e61954cd555",
      "type": "checkout",
      "phase": "payment-confirmed",
      "status": "payment_confirmed",
      "item": {
        "productId": "B0CXYZ1234",
        "productName": "Nike Air Max 90",
        "price": 14999,
        "image": "https://example.com/shoe.jpg",
        "size": "10",
        "color": "Black",
        "productUrl": "https://amazon.com/dp/B0CXYZ1234",
        "retailer": "amazon"
      },
      "payment": {
        "status": "succeeded",
        "currency": "usdc"
      },
      "quote": {
        "totalPrice": {
          "amount": "149.99",
          "currency": "usd"
        }
      },
      "createdAt": "2026-04-19T10:00:00.000Z"
    }
  ],
  "total": 5,
  "page": 1,
  "limit": 20
}

curl Example

curl -b cookies.txt "http://localhost:3000/api/orders?limit=10&type=checkout&status=payment_confirmed"

GET /api/orders/:orderId

Get live details for a single order. The server fetches the current status from Crossmint and merges it with the local order record.

Auth required: Yes + onboarding complete

Path Parameters

ParamTypeDescription
orderIdUUIDInternal order ID returned by POST /api/checkout

Response 200 OK

Same shape as a single item in the list response, including the full item snapshot and live phase / payment / quote from Crossmint.

Errors

StatusCodeCause
404OrderNotFoundErrorOrder not found or belongs to another user
502CheckoutOrderCreationErrorCrossmint API unavailable

curl Example

curl -b cookies.txt http://localhost:3000/api/orders/d1e2f3a4-b5c6-7890-defg-234567890123

How is this guide?

On this page