Skip to main content

The REST Admin API is a legacy API as of October 1, 2024. Starting April 1, 2025, all new public apps must be built exclusively with the GraphQL Admin API. For details and migration steps, visit our migration guide.

Province

Multiple access scopes needed — refer to each endpoint for access scope requirements.
Important

The REST Province API is deprecated as of version 2024-07.

Please refer to the documentation for each individual endpoint and the developer changelog for more information.

The Province resource represents the sales tax that's applied to orders based the sub-regions of a country. Sub-regions might include counties, emirates, governorates, prefectures, provinces, regions, states, and territories.

You can use the Province resource to retrieve and update available sub-regions for only the countries that a shop owner has added to a shipping zone. Merchants add countries to a shipping zone from the Shipping page of their Shopify admin.

For information on accessing the tax information for an entire country, including its provinces, see the Country resource.

Caution

As of version 2020-10, you can no longer update custom tax values for the Province resource.

Countries that have provinces in Shopify

Shopify provides provincial tax rates for the following countries:

A-JM-Z
Argentina (24 provinces)Mexico (32 states)
Australia (8 states/territories)New Zealand (16 regions)
Brazil (27 states)Nigeria (37 states)
Canada (13 provinces/territories)Panama (13 regions)
Chile (16 regions)Peru (26 regions)
China (31 provinces)Philippines (82 provinces)
Colombia (33 provinces)Portugal (20 regions)
Egypt (29 governorates)Romania (42 counties)
Guatemala (22 regions)Russia (82 regions)
Hong Kong (3 regions)South Africa (9 provinces)
India (36 states)South Korea (17 provinces)
Indonesia (34 provinces)Spain (52 provinces)
Ireland (26 counties)Thailand (78 provinces)
Italy (110 provinces)United Arab Emirates (7 emirates)
Japan (47 prefectures)United Kingdom (5 constituent countries/provinces)
Malaysia (16 states/territories)United States (62 states/territories)
Was this section helpful?
#

Endpoints


Anchor to

The Province resource

Anchor to

Properties


code

The standard abbreviation for the province.


country_id

The ID for the country that the province belongs to.


id

The ID for the province.


name

The full name of the province.


shipping_zone_id

The ID for the shipping zone that the province belongs to.


tax

The sales tax rate to be applied to orders made by customers from this province.


tax_name

The name of the tax for this province.


tax_type

The tax type. Valid values: null, normal, harmonized, or compounded.

A harmonized tax is a combination of provincial and federal sales taxes.

Normal and harmonized tax rates are applied to the pre-tax value of an order, but a compounded tax rate is applied on top of other tax rates. For example, if a $100 order receives a 5% normal tax rate and a 2% compound tax rate, then the post-tax total is $107.10 ((100 x 1.05) x 1.02 = 107.1).


tax_percentage

The province's tax in percent format.


Was this section helpful?
{}

The Province resource

{
"code": "AB",
"country_id": 879921427,
"id": 205434194,
"name": "Alberta",
"shipping_zone_id": 2038345,
"tax": 0.08,
"tax_name": "PST",
"tax_type": "normal",
"tax_percentage": 8
}

Anchor to GET request, Retrieves a list of provinces for a country
get
Retrieves a list of provinces for a country
deprecated

Important

This endpoint is deprecated as of 2024-07.

Retrieves a list of provinces.


api_version
string
required

country_id
string
required

fields

Show only certain fields, specified by a comma-separated list of fields names.


since_id

Restrict results to after the specified ID.


Was this section helpful?

Retrieve all provinces for a country

Path parameters
country_id=879921427
string
required

Retrieve all provinces for a country after the specified ID

Path parameters
country_id=879921427
string
required
Query parameters
since_id=536137098

Restrict results to after the specified ID.

Was this section helpful?
get

/admin/api/2025-07/countries/879921427/provinces.json

curl -X GET "https://your-development-store.myshopify.com/admin/api/2025-07/countries/879921427/provinces.json" \
-H "X-Shopify-Access-Token: {access_token}"

{}

Response

JSON
HTTP/1.1 200 OK
{
"provinces": [
{
"id": 205434194,
"country_id": 879921427,
"name": "Alberta",
"code": "AB",
"tax_name": null,
"tax_type": null,
"shipping_zone_id": null,
"tax": 0.08,
"tax_percentage": 8
},
{
"id": 170405627,
"country_id": 879921427,
"name": "British Columbia",
"code": "BC",
"tax_name": null,
"tax_type": null,
"shipping_zone_id": null,
"tax": 0.07,
"tax_percentage": 7
},
{
"id": 342345110,
"country_id": 879921427,
"name": "Manitoba",
"code": "MB",
"tax_name": null,
"tax_type": null,
"shipping_zone_id": null,
"tax": 0.07,
"tax_percentage": 7
},

Anchor to GET request, Retrieves a single province for a country
get
Retrieves a single province for a country
deprecated

Important

This endpoint is deprecated as of version 2024-07.

Retrieves a single province for a country


api_version
string
required

country_id
string
required

province_id
string
required

fields

Show only certain fields, specified by a comma-separated list of field names.


Was this section helpful?
Was this section helpful?
get

/admin/api/2025-07/countries/879921427/provinces/224293623.json

curl -X GET "https://your-development-store.myshopify.com/admin/api/2025-07/countries/879921427/provinces/224293623.json" \
-H "X-Shopify-Access-Token: {access_token}"

{}

Response

JSON
HTTP/1.1 200 OK
{
"province": {
"id": 224293623,
"country_id": 879921427,
"name": "Quebec",
"code": "QC",
"tax_name": "HST",
"tax_type": "compounded",
"shipping_zone_id": null,
"tax": 0.09,
"tax_percentage": 9
}
}

Anchor to GET request, Retrieves a count of provinces for a country
get
Retrieves a count of provinces for a country
deprecated

Important

This endpoint is deprecated as of version 2024-07.

Retrieves a count of provinces for a country


api_version
string
required

country_id
string
required

Was this section helpful?

Count all provinces

Path parameters
country_id=879921427
string
required
Was this section helpful?
get

/admin/api/2025-07/countries/879921427/provinces/count.json

curl -X GET "https://your-development-store.myshopify.com/admin/api/2025-07/countries/879921427/provinces/count.json" \
-H "X-Shopify-Access-Token: {access_token}"

{}

Response

JSON
HTTP/1.1 200 OK
{
"count": 13
}

Anchor to PUT request, Updates an existing province for a country
put
Updates an existing province for a country
deprecated

Requires shipping access scope.
Important

This endpoint is deprecated as of version 2024-07.

Caution

As of version 2020-10, the tax field is deprecated.

Updates an existing province for a country.


api_version
string
required

country_id
string
required

province_id
string
required

Was this section helpful?

Update a province's tax rate

Request body
province
Province resource
Show province properties
province.id:224293623

The ID for the province.

province.tax:0.09

The sales tax rate to be applied to orders made by customers from this province.

Was this section helpful?
put

/admin/api/2025-07/countries/879921427/provinces/224293623.json

curl -d '{"province":{"id":224293623,"tax":0.09}}' \
-X PUT "https://your-development-store.myshopify.com/admin/api/2025-07/countries/879921427/provinces/224293623.json" \
-H "X-Shopify-Access-Token: {access_token}" \
-H "Content-Type: application/json"

{}

Response

JSON
HTTP/1.1 200 OK
{
"province": {
"country_id": 879921427,
"id": 224293623,
"name": "Quebec",
"code": "QC",
"tax_name": "HST",
"tax_type": "compounded",
"shipping_zone_id": null,
"tax": 0.09,
"tax_percentage": 9
}
}