---
title: "Preview product tax"
method: POST
path: "/products/tax"
tags: ["Products"]
---

# Preview product tax

`POST /products/tax`

Preview estimated indirect taxes (VAT, GST, sales tax) for products before checkout.

Returns per-item details:
- `jurisdiction`, `taxType`, `taxRate`, `taxPercent`, `taxPrice`, and localized display amounts.

Send requests as one or more country/currency groups:
- U.S. groups: include `zip` at the **group level** to compute sales tax. If omitted, the response may return `taxRate: 0` and `taxPrice: 0`. ZIP is only supported at the group level.
- Pricing:
  - Virtual/non-catalog items: `pricing.price` is required.
  - Catalog items: if `pricing.price` (or `price`) is provided, it overrides the catalog price for the preview.

## Request body

- TaxRequest — Preview request for product taxes; supports optional pagination.
  - `page` integer — Page number for paginated results.
  - `limit` integer — Maximum number of items across all groups to include per page.
  - `groups` TaxGroup[], required — One or more country/currency groups to evaluate in a single call.
    - `country` string, required — ISO 3166-1 alpha-2 country code.
    - `currency` string, required — ISO 4217 currency code for prices and taxes in this group.
    - `zip` string — Optional group-level postal/ZIP code.
    - `items` TaxGroupItem[], required
      - `product` string, required — Product identifier (may be a catalog path or a virtual/non-catalog name).
      - `pricing` object — Pricing container for overrides and virtual/non-catalog items.
        - `price` number — Unit price in the group currency. Required for non-catalog products.

## Response `200`

OK

- TaxResponse — Wrapper object for preview results with pagination and pricing mode metadata.
  - `action` string — Action identifier for the operation.
  - `result` string — Outcome of the operation.
  - `page` integer — Current page number.
  - `limit` integer — Page size limit.
  - `totalItems` integer — Total number of items across all result pages.
  - `totalPages` integer — Total number of pages available.
  - `priceMode` string — Pricing mode used when previewing totals.
  - `results` TaxResult[] — Per-region results corresponding to request groups.
    - `country` string — ISO 3166-1 alpha-2 country code for this result group.
    - `currency` string — ISO 4217 currency code used for amounts in this group.
    - `zip` string — Group-level postal/ZIP code (if provided in the request).
    - `totalGroupItems` integer — Number of items evaluated in this group (pre-pagination).
    - `items` union[] — One entry per requested item (aligned to the input order within the group).
      - union
        - object — Successful per-item preview result.
          - `productPath` string — Product identifier/path provided in the request.
          - `listPrice` number — Item price excluding tax when priceMode is GROSS (or base price used to compute tax).
          - `listPriceDisplay` string — Localized display string for the list price.
          - `tax` TaxDetail — Applied tax details for the item.
            - `jurisdiction` string — Jurisdiction used to determine the rate (e.g., country or state).
            - `taxCode` string — Tax category code used when calculating the rule.
            - `taxType` string — Type of tax applied.
            - `taxRate` number — Decimal tax rate applied.
            - `taxPercent` number — Percentage tax rate applied.
            - `taxPrice` number — Calculated tax amount.
            - `taxPriceDisplay` string — Localized display string for the tax amount.
          - `productTotal` ProductTotal — Item total including applicable taxes in the group currency.
            - `total` number — Total amount for the item.
            - `totalDisplay` string — Localized display string for the item total.
        - object — Error result for an item that could not be evaluated.
          - `error` object — Error payload when previewing the item failed.
            - `message` string — Human-readable error message.

## Other responses

- `400` — Bad Request

---

[API](https://skmtc.dev/fastspring/apis/fastspring-api-accounts.md) · [All operations](https://skmtc.dev/fastspring/apis/fastspring-api-accounts/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/fastspring/fastspring-api-accounts/revisions/ae2f0b97db3e/schema)
