Skip to main content

Query orders with filters

note

The filter values below (dates, email, tracking number, delivery ID) are examples — replace them with your own.

Use orders query to retrieve a paginated list of orders (see Pagination). The filter argument accepts an OrderComplexFilterInput object; how conditions are written and combined is described in Filtering. The examples below keep the returned fields minimal: the same queries can return the full detail of each order (lines, billing, shippings, documents) in a single request.

Filter by creation date

Use createdAt comparisons to retrieve orders created within a date range.

Request
query ordersBetweenDates {
  orders(
    filter: {
      and: [
        {
          fields: {
            createdAt: {
              greaterThanOrEqualsTo: "2026-01-01T00:00:00.000Z"
            }
          }
        }
        {
          fields: {
            createdAt: {
              lessThanOrEqualsTo: "2026-04-01T00:00:00.000Z"
            }
          }
        }
      ]
    }
  ) {
    nodes {
      id
      number
      createdAt
      status
    }
  }
}
Response
{
  "data": {
    "orders": {
      "nodes": [
        {
          "id": "2001",
          "number": "2001",
          "createdAt": "2026-02-10T10:00:00.000Z",
          "status": "processing"
        }
      ]
    }
  },
  "extensions": {
    "queryComplexity": 82,
    "bucketBalance": 9918,
    "bucketRestoreRate": 100
  }
}

Filter by order status

Use status to select orders that are ready for invoicing or downstream accounting flows.

Request
query invoicedOrders {
  orders(
    filter: {
      fields: { status: { in: [completed, shipped, delivered, storage] } }
    }
  ) {
    nodes {
      id
      number
      createdAt
      status
    }
  }
}
Response
{
  "data": {
    "orders": {
      "nodes": [
        {
          "id": "3001",
          "number": "3001",
          "createdAt": "2026-02-12T08:10:00.000Z",
          "status": "completed"
        },
        {
          "id": "3002",
          "number": "3002",
          "createdAt": "2026-02-12T08:15:00.000Z",
          "status": "shipped"
        }
      ]
    }
  },
  "extensions": {
    "queryComplexity": 82,
    "bucketBalance": 9918,
    "bucketRestoreRate": 100
  }
}

Filter by shipping fulfillment status

Use shippings.any to match orders that have at least one shipping with a pending or partial fulfillment status.

Request
query ordersToFulfill {
  orders(
    filter: {
      fields: {
        shippings: {
          any: { fields: { fulfillmentStatus: { in: [pending, partial] } } }
        }
      }
    }
  ) {
    nodes {
      id
      number
      createdAt
      shippings {
        id
        fulfillmentStatus
      }
    }
  }
}
Response
{
  "data": {
    "orders": {
      "nodes": [
        {
          "id": "4001",
          "number": "4001",
          "createdAt": "2026-02-13T09:00:00.000Z",
          "shippings": [
            {
              "id": "701",
              "fulfillmentStatus": "pending"
            }
          ]
        },
        {
          "id": "4002",
          "number": "4002",
          "createdAt": "2026-02-13T09:05:00.000Z",
          "shippings": [
            {
              "id": "702",
              "fulfillmentStatus": "partial"
            }
          ]
        }
      ]
    }
  },
  "extensions": {
    "queryComplexity": 122,
    "bucketBalance": 9878,
    "bucketRestoreRate": 100
  }
}

Filter by tracking number

Use shippings.any with trackingNumber to find the order associated with a shipment tracking code.

Request
query ordersByTrackingNumber {
  orders(
    filter: {
      fields: {
        shippings: {
          any: { fields: { trackingNumber: { equals: "IT2206513911" } } }
        }
      }
    }
  ) {
    nodes {
      id
      number
      createdAt
      shippings {
        id
        trackingNumber
      }
    }
  }
}
Response
{
  "data": {
    "orders": {
      "nodes": [
        {
          "id": "5001",
          "number": "5001",
          "createdAt": "2026-02-14T11:00:00.000Z",
          "shippings": [
            {
              "id": "801",
              "trackingNumber": "IT2206513911"
            }
          ]
        }
      ]
    }
  },
  "extensions": {
    "queryComplexity": 122,
    "bucketBalance": 9878,
    "bucketRestoreRate": 100
  }
}

Filter by billing email

Use the nested billing filter to retrieve orders for a specific customer email address.

Request
query ordersByEmail {
  orders(
    filter: {
      fields: {
        billing: { fields: { email: { equals: "example@example.com" } } }
      }
    }
  ) {
    nodes {
      id
      number
      createdAt
      billing {
        id
        email
      }
    }
  }
}
Response
{
  "data": {
    "orders": {
      "nodes": [
        {
          "id": "6001",
          "number": "6001",
          "createdAt": "2026-02-15T12:00:00.000Z",
          "billing": {
            "id": "901",
            "email": "example@example.com"
          }
        }
      ]
    }
  },
  "extensions": {
    "queryComplexity": 122,
    "bucketBalance": 9878,
    "bucketRestoreRate": 100
  }
}

Filter by delivery ID

Filter by deliveryId when you start from the reference the customer sees in the e-shop (see Order for how it differs from number).

Request
query ordersByDeliveryID {
  orders(filter: { fields: { deliveryId: { equals: "UWGDLUDLU" } } }) {
    nodes {
      id
      number
      deliveryId
    }
  }
}
Response
{
  "data": {
    "orders": {
      "nodes": [
        {
          "id": "7001",
          "number": "7001",
          "deliveryId": "UWGDLUDLU"
        }
      ]
    }
  },
  "extensions": {
    "queryComplexity": 62,
    "bucketBalance": 9938,
    "bucketRestoreRate": 100
  }
}

Relevant permissions

The operations in this page require the following permissions on the API credentials — they are configured for you by Calicantus.

  • order:query:orders
  • order:read
  • shipping:read
  • billing:read