> ## Documentation Index
> Fetch the complete documentation index at: https://developer.zamp.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Canadian Transactions

> Selling into Canada? Keep in mind the following key distinctions.

# Overview

Zamp supports tax calculations and filing for businesses selling into Canada. When utilizing the Zamp Tax Engine for calculations and the the Zamp team for filing, there are a few requirements to ensure transaction data is complete and accurate.

## Endpoints Used

```text theme={null}
POST /calculations
POST /transactions
```

## Canadian-Specific Implementation Requirements

### Province Code

The `shipToAddress.state` is required for orders shipped to Canada. The supported provinces are below:

| Province Name             | Province Code |
| ------------------------- | ------------- |
| Alberta                   | AB            |
| British Columbia          | BC            |
| Manitoba                  | MB            |
| New Brunswick             | NB            |
| Newfoundland and Labrador | NL            |
| Northwest Territories     | NT            |
| Nova Scotia               | NS            |
| Nunavut                   | NU            |
| Ontario                   | ON            |
| Prince Edward Island      | PE            |
| Quebec                    | QC            |
| Saskatchewan              | SK            |
| Yukon                     | YT            |

<Warning>
  This requirement is specific to transactions for Canada. US-based transactions do not require the state.
</Warning>

### Zip Code

Canada uses an alpha-numeric format (*A1A 1A1*).

<Tip>
  A few example postal codes are H3B 2B6 (Montreal), M5V 3A8  (Toronto), V6B 1A1 (Vancouver)
</Tip>

### Country Code

<u>All</u> transactions shipped to Canada also require a country code that corresponds to Canada, being *CA.*

### Currency

<Danger>
  This section is important for return filing. Please reach out to your Zamp representative if there are further questions regarding the currency requirements
</Danger>

<u>For transactions shipped to Canada</u>, Zamp expects the currency to be set as `"currency": "CAD"` . Zamp will reject requests for transactions with a mismatched country code and currency type.

```json theme={null}
{
    "code": "BAD_REQUEST",
    "issues": [
        {
            "code": "custom",
            "path": [
                "currency"
            ],
            "message": "Currency should be CAD when shipped to CA",
            "params": {
                "reason": "CURRENCY_MISMATCH"
            }
        }
    ],
    "message": "Input validation failed"
}
```

### Example Requests and Responses

<CodeGroup>
  ```json Calculation Request theme={null}
  {
      "id": "testCanada",
      "name": "testCanada",
      "transactedAt": "2026-04-10T00:00:00",
  	"currency": "CAD", // Canadian dollar
      "total": 100,
      "entity": null,
      "purpose": null,
      "shippingHandling": 0,
      "taxCollected": 0,
      "recalculate": true,
      "discount": 0,
      "isResale": false,
      "parentId": null,
      "subtotal": 100,
      "shipToAddress": {
          "line1": "1 Place Ville Marie",
          "line2": null,
          "city": "Montreal",
          "state": "QC", // Province Code
          "zip": "H3B 2C4", // Canadian Zip Code Structure
          "country": "CA" // Canadian Country Code
      },
      "lineItems": [
          {
              "id": "1",
              "amount": 1,
              "quantity": 100,
              "productSku": null,
              "productName": "Test product",
              "productTaxCode": null
          }
      ]
  }
  ```

  ```json Calculation Response theme={null}
  {
      "id": "testCanada",
      "name": "testCanada",
      "transactedAt": "2026-04-10T00:00:00",
      "currency": "CAD",
      "total": 114.98,
      "entity": null,
      "purpose": null,
      "shippingHandling": 0,
      "taxCollected": 14.98, //The taxDue from the calculation request
      "recalculate": true,
      "discount": 0,
      "isResale": false,
      "parentId": null,
      "subtotal": 100,
      "shipToAddress": {
          "line1": "1 Place Ville Marie",
          "line2": null,
          "city": "Montreal",
          "state": "QC",
          "zip": "H3B 2C4",
          "country": "CA"
      },
      "lineItems": [
          {
              "id": "1",
              "amount": 1,
              "quantity": 100,
              "productSku": null,
              "productName": "Test product",
              "productTaxCode": null
          }
      ]
  }
  ```

  ```json Transaction Request theme={null}
  {
      "id": "testCanada",
      "name": "testCanada",
      "transactedAt": "2026-04-10T00:00:00",
      "currency": "CAD",
      "total": 114.98,
      "entity": null,
      "purpose": null,
      "shippingHandling": 0,
      "taxCollected": 14.98, //The taxDue from the calculation request
      "recalculate": true,
      "discount": 0,
      "isResale": false,
      "parentId": null,
      "subtotal": 100,
      "shipToAddress": {
          "line1": "1 Place Ville Marie",
          "line2": null,
          "city": "Montreal",
          "state": "QC",
          "zip": "H3B 2C4",
          "country": "CA"
      },
      "lineItems": [
          {
              "id": "1",
              "amount": 1,
              "quantity": 100,
              "productSku": null,
              "productName": "Test product",
              "productTaxCode": null
          }
      ]
  }
  ```
</CodeGroup>
