List Tax Categories
Returns a cursor-paginated list of every tax category in the store, newest first. Each tax category is a named group of tax rates that you assign to products to determine how they are taxed.
Operation
| Operation | Type | Purpose |
|---|---|---|
adminSettingsTaxCategories | QueryCollection | Page through every tax category |
Arguments
All arguments are optional and combine in a single query — filter, sort and paginate together.
Pagination
| Argument | Description |
|---|---|
first | Number of records to return. |
after | Cursor to fetch the page after (from pageInfo.endCursor). |
Filters
Each filter narrows the result; supplying more than one combines with logical AND. They mirror the admin Tax Categories datagrid filters.
| Argument | Type | Match | Example |
|---|---|---|---|
code | String | Partial (contains). | "doc" |
name | String | Partial (contains). | "Demo" |
Sorting
| Argument | Type | Values |
|---|---|---|
sort | String | id (default), code, name |
order | String | asc, desc (default desc) |
Fields
| Field | Meaning |
|---|---|
_id | Numeric tax-category id — use it when referencing a category from other operations. |
id | The category's resource path. |
code | Unique machine code identifying the category. |
name | Human-readable display name. |
description | Free-text description. |
taxRates | The attached tax rates connection — detail-only. Has empty edges on the listing (see the note below). |
createdAt / updatedAt | ISO 8601 timestamps. |
taxRates is detail-only
The taxRates connection is not loaded on the listing — its edges are empty for every row here to keep the list query light. To read a category's attached rates, fetch the single category with the detail query and select taxRates { edges { node { _id identifier taxRate } } }.
Pass first (page size) and after (an endCursor from a previous page) to paginate. totalCount is the total number of tax categories across all pages.

