---
title: Tax exemptions
description: Learn how to handle customer and purchasing company tax exemptions in your tax app.
source_url:
  html: https://shopify.dev/docs/apps/build/tax/tax-exemptions
  md: https://shopify.dev/docs/apps/build/tax/tax-exemptions.md
---

# Tax exemptions

**Note:**

Shopify's Tax Platform is available by invitation only to select tax software companies integrating with Shopify.

Merchants can set tax exemptions on customers and company locations in Shopify Admin. This information is available to tax apps as part of the Tax Calculation API when taxes are calculated during checkout as well as in the payload of the Tax Summary webhook.

You can configure tax exemptions in two places in Shopify Admin:

* **Customer**: For direct-to-consumer (D2C) orders
* **Company location**: For business-to-business (B2B) orders

The API will only return one type of tax exemption. If a customer has both customer and company location tax exemptions, the company location tax exemptions take precedence.

**Note:**

The field for exemptions is available in the API version `2025-07` or later.

* To access this field in the tax calculation API, the tax app must be on an API version of `2025-07` or later which is to be specified in the tax calculation app extension TOML file.
* To access this field in the tax summary webhook, the tax app must specify a webhook API version of `2025-07` or later in the app TOML file.

***

## Supported tax exemption codes

### Australia

* `au.reseller`: Australia reseller

### Canada

* `ca.status.card`: Canada status card
* `ca.diplomat`: Canada diplomat
* `ca.bc.reseller`: British Columbia reseller
* `ca.mb.reseller`: Manitoba reseller
* `ca.sk.reseller`: Saskatchewan reseller
* `ca.bc.commercial.fishery`: British Columbia fishery
* `ca.mb.commercial.fishery`: Manitoba fishery
* `ca.ns.commercial.fishery`: Nova Scotia fishery
* `ca.pe.commercial.fishery`: Prince Edward Island fishery
* `ca.sk.commercial.fishery`: Saskatchewan fishery
* `ca.bc.production.and.machinery`: British Columbia production and machinery
* `ca.sk.production.and.machinery`: Saskatchewan production and machinery
* `ca.bc.sub.contractor`: British Columbia sub contractor
* `ca.sk.sub.contractor`: Saskatchewan sub contractor
* `ca.bc.contractor`: British Columbia contractor
* `ca.sk.contractor`: Saskatchewan contractor
* `ca.on.purchase`: Ontario purchase
* `ca.mb.farmer`: Manitoba farmer
* `ca.ns.farmer`: Nova Scotia farmer
* `ca.sk.farmer`: Saskatchewan farmer

### European Union

* `eu.reverse.charge`: Reverse charge (EU/UK)

### United States

* `us.al.reseller`: Alabama reseller
* `us.ak.reseller`: Alaska reseller
* `us.az.reseller`: Arizona reseller
* `us.ar.reseller`: Arkansas reseller
* `us.ca.reseller`: California reseller
* `us.co.reseller`: Colorado reseller
* `us.ct.reseller`: Connecticut reseller
* `us.de.reseller`: Delaware reseller
* `us.dc.reseller`: Washington DC reseller
* `us.fl.reseller`: Florida reseller
* `us.ga.reseller`: Georgia reseller
* `us.hi.reseller`: Hawaii reseller
* `us.id.reseller`: Idaho reseller
* `us.il.reseller`: Illinois reseller
* `us.in.reseller`: Indiana reseller
* `us.ia.reseller`: Iowa reseller
* `us.ks.reseller`: Kansas reseller
* `us.ky.reseller`: Kentucky reseller
* `us.la.reseller`: Louisiana reseller
* `us.me.reseller`: Maine reseller
* `us.md.reseller`: Maryland reseller
* `us.ma.reseller`: Massachusetts reseller
* `us.mi.reseller`: Michigan reseller
* `us.mn.reseller`: Minnesota reseller
* `us.ms.reseller`: Mississippi reseller
* `us.mo.reseller`: Missouri reseller
* `us.mt.reseller`: Montana reseller
* `us.ne.reseller`: Nebraska reseller
* `us.nv.reseller`: Nevada reseller
* `us.nh.reseller`: New Hampshire reseller
* `us.nj.reseller`: New Jersey reseller
* `us.nm.reseller`: New Mexico reseller
* `us.ny.reseller`: New York reseller
* `us.nc.reseller`: North Carolina reseller
* `us.nd.reseller`: North Dakota reseller
* `us.oh.reseller`: Ohio reseller
* `us.ok.reseller`: Oklahoma reseller
* `us.or.reseller`: Oregon reseller
* `us.pa.reseller`: Pennsylvania reseller
* `us.ri.reseller`: Rhode Island reseller
* `us.sc.reseller`: South Carolina reseller
* `us.sd.reseller`: South Dakota reseller
* `us.tn.reseller`: Tennessee reseller
* `us.tx.reseller`: Texas reseller
* `us.ut.reseller`: Utah reseller
* `us.vt.reseller`: Vermont reseller
* `us.va.reseller`: Virginia reseller
* `us.wa.reseller`: Washington reseller
* `us.wv.reseller`: West Virginia reseller
* `us.wi.reseller`: Wisconsin reseller
* `us.wy.reseller`: Wyoming reseller

***

## Tax calculation API schema

In the tax calculation request, the exemptions are represented as an array of objects with a property called `external_id` whose value is one or more tax exemption codes.

If there are no exemptions for the customer or company location associated with the checkout, the API returns an empty array.

### Customer tax exemptions

When tax exemptions are configured for the customer associated with the tax calculation request, they appear in the `customer` field of the `buyer_identity` section as an array:

```json
{
  "idempotent_key": "<some_idempotent_key>",
  ...
  "cart": {
    "buyer_identity": {
      "tax_exempt": true,
      "customer": {
        "id": "6145263457",
        "exemptions": [
          {
            "external_id": "us.al.reseller"
          },
          {
            "external_id": "ca.sk.farmer"
          }
        ]
      },
      "purchasing_company": null
      ...
    }
  }
}
```

### Company location tax exemptions

When tax exemptions are configured for the company location associated with the tax calculation request, they appear in the `purchasing_company` field of the `buyer_identity` section:

```json
{
  "idempotent_key": "<some_idempotent_key>",
  ...
  "cart": {
    "buyer_identity": {
      "tax_exempt": true,
      "customer": null,
      "purchasing_company": {
        "company": {
          "id": "5242343243",
          "external_id": "external_company_id"
        },
        "company_location": {
          "id": "56354253",
          "external_id": "external_company_location_id",
          "vat_number": "DE45352345"
        },
        "exemptions": [
          {
            "external_id": "us.al.reseller"
          },
          {
            "external_id": "ca.sk.farmer"
          },
          {
            "external_id": "eu.reverse.charge"
          }
        ]
      }
      ...
    }
  }
}
```

***

## Tax summary webhook payload schema

The tax exemptions associated with the order are in the `agreements` section of the tax summary. This is because the exemptions could change over the lifecycle of the order. Each operation done on an order results in the creation of an agreement. Examples include placing an order, editing the order to add items, and performing a refund on the order.

Only agreements that trigger a request for tax calculation will have the exemptions in the tax summary. Agreements that are exclusively for refunds do not trigger a request for tax calculation, so they will not have tax exemptions in the tax summary.

### Customer tax exemptions

```json
{
  "agreements": [
    {
      "id": "261365366",
      "happened_at": "2005-07-31T15:58:11.000Z",
      "sales": [...],
      "customer": {
        "id": "6145263457",
        "exemptions": [
          {
            "external_id": "us.al.reseller"
          },
          {
            "external_id": "ca.sk.farmer"
          }
        ]
      },
      "purchasing_company": null
    }
  ]
}
```

### Company location tax exemptions

```json
{
  "agreements": [
    {
      "id": "261365366",
      "happened_at": "2005-07-31T15:58:11.000Z",
      "sales": [...],
      "customer": null,
      "purchasing_company": {
        "company": {
          "id": "5242343243",
          "external_id": "external_company_id"
        },
        "company_location": {
          "id": "56354253",
          "external_id": "external_company_location_id",
          "vat_number": "DE45352345"
        },
        "exemptions": [
          {
            "external_id": "us.al.reseller"
          },
          {
            "external_id": "ca.sk.farmer"
          },
          {
            "external_id": "eu.reverse.charge"
          }
        ]
      }
    }
  ]
}
```

***