Orders API
The Orders API allows you to search orders, retrieve a specific order, or update order information.
GET /orders
Retrieve all completed orders.
Resource URL
GET https://app.snipcart.com/api/ordersHeaders
| Name | Value | Required | Description | 
|---|---|---|---|
| Accept | application/json | Yes | Must always be set. The API only supports JSON. | 
Query Parameters
| Name | Required | Type | Description | 
|---|---|---|---|
| offset | No | int | Number of results to skip. Default: 0. | 
| limit | No | int | Number of results to fetch. Default: 20. | 
| status | No | string | Filter orders by status. Values: InProgress,Processed,Disputed,Shipped,Delivered,Pending,Cancelled. | 
| invoiceNumber | No | string | Filter by invoice number. | 
| productId | No | string | Returns orders containing this product. Must be the user-defined ID, not Snipcart’s internal ID. | 
| placedBy | No | string | Name of the purchaser. | 
| from | No | datetime | Return orders placed after this date. | 
| to | No | datetime | Return orders placed before this date. | 
| isRecurringOrder | No | bool | Filter by recurring orders ( true/false). | 
| billingAddressCity | No | string | Exact match on billing city. | 
| billingAddressCountry | No | string | Exact match, 2-letter country code. | 
| billingAddressProvince | No | string | Exact match on billing province/state. | 
| billingAddressPostalCode | No | string | Exact match on billing postal/ZIP code. | 
| shippingAddressCity | No | string | Exact match on shipping city. | 
| shippingAddressCountry | No | string | Exact match, 2-letter country code. | 
| shippingAddressProvince | No | string | Exact match on shipping province/state. | 
| shippingAddressPostalCode | No | string | Exact match on shipping postal/ZIP code. | 
Example request
curl -H "Accept: application/json" \
  "https://app.snipcart.com/api/orders?offset=0&limit=50&status=Processed" \
  -u {API_KEY}:Example response
{
  "totalItems": 10,
  "offset": 0,
  "limit": 50,
  "items": [
    {
      "token": "d16e2f60-39f1-4a4c-b1c3-8a2e166d3f70",
      "creationDate": "2013-10-21T20:36:26.46Z",
      "status": "Processed",
      "paymentMethod": "CreditCard",
      "invoiceNumber": "SNIP-0001",
      "email": "geeks@snipcart.com",
      ...
    }
  ]
}GET /orders/{token}
Retrieve a single order, including all items, promo codes, and applied taxes.
Resource URL
GET https://app.snipcart.com/api/orders/{token}Headers
| Name | Value | Required | Description | 
|---|---|---|---|
| Accept | application/json | Yes | Must always be set. | 
Path Parameters
| Name | Required | Type | Description | 
|---|---|---|---|
| token | Yes | guid | The unique order token. | 
Example request
curl -H "Accept: application/json" \
  https://app.snipcart.com/api/orders/{token} \
  -u {API_KEY}:Example response
{
  "token": "93c4604e-35ac-4db7-b3f1-2871476e9e6a",
  "status": "Processed",
  "invoiceNumber": "SNIP-1427",
  "items": [
    {
      "id": "1",
      "name": "Un poster",
      "price": 300,
      "quantity": 1,
      ...
    }
  ],
  "taxes": [
    { "taxName": "TPS", "taxRate": 0.05, "amount": 12.5 },
    { "taxName": "TVQ", "taxRate": 0.09975, "amount": 24.94 }
  ],
  ...
}PUT /orders/{token}
Update the status of a specific order. Use this endpoint to set tracking information, change status, or attach metadata.
⚠️ Important: Changing an order’s status from Pending → Processed and payment status from Authorized → Paid will capture the payment (only applies to two-step Stripe payments).
Resource URL
PUT https://app.snipcart.com/api/orders/{token}Headers
| Name | Value | Required | Description | 
|---|---|---|---|
| Accept | application/json | Yes | Must always be set. | 
| Content-Type | application/json | Yes | JSON only. Other content types (e.g., XML) are not supported. | 
Path Parameters
| Name | Required | Type | Description | 
|---|---|---|---|
| token | Yes | guid | The unique order token. | 
Body Parameters
| Name | Required | Type | Description | 
|---|---|---|---|
| status | Yes | string | New order status. Values: InProgress,Processed,Disputed,Shipped,Delivered,Pending,Cancelled. | 
| paymentStatus | No | string | Payment status. Values: Paid,Deferred,PaidDeferred,ChargedBack,Refunded,Paidout,Failed,Pending,Expired,Cancelled,Open,Authorized. | 
| trackingNumber | No | string | Tracking number for the order. | 
| trackingUrl | No | string | Tracking URL for the customer. | 
| metadata | No | object | Arbitrary JSON object with custom metadata. Example: { "internal_id": "12345", "external_user_id": "user_1" }. | 
Example request
curl -X PUT https://app.snipcart.com/api/orders/{token} \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -u {API_KEY}: \
  -d '{"status": "Delivered"}'Example response
{
  "token": "c7af6278-1c06-411d-b009-22a839efda75",
  "status": "Delivered",
  "invoiceNumber": "SNIP-1427",
  "items": [
    {
      "id": "1",
      "name": "Un poster",
      "price": 300,
      "quantity": 1
    }
  ],
  "taxes": [
    { "taxName": "TPS", "taxRate": 0.05, "amount": 12.5 },
    { "taxName": "TVQ", "taxRate": 0.09975, "amount": 24.94 }
  ],
  ...
}GET /orders/{token}/digital
Return the list of digital goods attached to an order.
Resource URL
GET https://app.snipcart.com/api/orders/{token}/digitalHeaders
| Name | Value | Required | Description | 
|---|---|---|---|
| Accept | application/json | Yes | Must always be set. | 
Path Parameters
| Name | Required | Type | Description | 
|---|---|---|---|
| token | Yes | guid | The unique order token. | 
Response
An array of CustomerOrderDigitalGoodDto objects:
| Field | Type | Description | 
|---|---|---|
| fileGuid | string | Unique identifier of the digital file. | 
| name | string | Display name of the digital good. | 
| url | string | Download URL for the file. | 
| downloadedNbrTime | int | Number of times the item has been downloaded. | 
| maxNbrDownload | int? | Maximum allowed downloads; nullmeans unlimited. | 
| daysUntilExpire | int? | Number of days the download link remains valid after creationDate;nullmeans it does not expire. (JSON key isdaysUntilExpire. The backing property name contains a typo intentionally, but the API output uses the correct spelling.) | 
| creationDate | datetime | UTC date the digital good was created/issued. | 
| isValid | bool | trueif both conditions are met: downloads have not reachedmaxNbrDownload(or unlimited), and the item is not expired based ondaysUntilExpireandcreationDate. | 
Validity logic (for reference):
isValid =
  (maxNbrDownload == null || downloadedNbrTime < maxNbrDownload) &&
  (daysUntilExpire == null || (nowUtc - creationDate).TotalDays <= daysUntilExpire)Example request
curl -H "Accept: application/json" \
  https://app.snipcart.com/api/orders/{token}/digital \
  -u {API_KEY}:Example response
[
  {
    "fileGuid": "7e3f0c7a-2b4e-4db8-9b0a-0f9a8b2b8c11",
    "name": "Album – FLAC",
    "url": "https://cdn.example.com/dl/7e3f0c7a-2b4e-4db8-9b0a-0f9a8b2b8c11",
    "downloadedNbrTime": 1,
    "maxNbrDownload": 5,
    "daysUntilExpire": 30,
    "creationDate": "2025-09-01T12:34:56Z",
    "isValid": true
  },
  {
    "fileGuid": "a1b2c3d4-e5f6-47a8-9abc-def012345678",
    "name": "E-book (PDF)",
    "url": "https://cdn.example.com/dl/a1b2c3d4-e5f6-47a8-9abc-def012345678",
    "downloadedNbrTime": 3,
    "maxNbrDownload": 3,
    "daysUntilExpire": null,
    "creationDate": "2024-10-22T08:10:00Z",
    "isValid": false
  }
]