> This page is for APIs, version Calculations.
> For other versions, use one of these documentation indexes:
> - Overview (default): https://avalara.ferndocs.com/api-reference/overview/llms.txt
> - Calculations: https://avalara.ferndocs.com/api-reference/calculations/llms.txt
> - E-invoicing: https://avalara.ferndocs.com/api-reference/e-invoicing/llms.txt
> - Brazil: https://avalara.ferndocs.com/api-reference/brazil/llms.txt
> - Returns: https://avalara.ferndocs.com/api-reference/returns/llms.txt
> - Shared service: https://avalara.ferndocs.com/api-reference/shared-service/llms.txt
> - 1099 & W-9: https://avalara.ferndocs.com/api-reference/1099-w9/llms.txt
> - Tax registrations & business licenses: https://avalara.ferndocs.com/api-reference/tax-registrations/llms.txt
> - ECM: https://avalara.ferndocs.com/api-reference/ecm/llms.txt
> - Cross-Border: https://avalara.ferndocs.com/api-reference/cross-border/llms.txt

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://avalara.ferndocs.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://avalara.ferndocs.com/_mcp/server.

# List Valid Certificates For Customer

GET https://rest.avatax.com/api/v2/companies/{companyId}/customers/{customerCode}/certificates/{country}/{region}

> **Access control:** this endpoint is available to users with the `everyone` role.

List valid certificates linked to a customer in a particular country and region.
            
This API is intended to help identify whether a customer has already provided a certificate that
applies to a particular country and region.  This API is intended to help you remind a customer
when they have or have not provided copies of their exemption certificates to you during the sales
order process.
            
If a customer does not have a certificate on file and they wish to provide one, you should send the customer
a CertExpress invitation link so that the customer can upload proof of their exemption certificate.  Please
see the `CreateCertExpressInvitation` API to create an invitation link for this customer.
            
Before you can use any exemption certificates endpoints, you must set up your company for exemption certificate data storage.
Companies that do not have this storage system set up will see `CertCaptureNotConfiguredError` when they call exemption
certificate related APIs. To check if this is set up for a company, call `GetCertificateSetup`.  To request setup of exemption
certificate storage for this company, call `RequestCertificateSetup`.

### Security Policies

* This API requires one of the following user roles: AccountAdmin, AccountOperator, AccountUser, AvaTaxOnlyAccountAdmin, AvaTaxOnlyAccountUser, AvaTaxOnlyCompanyAdmin, AvaTaxOnlyCompanyUser, BatchServiceAdmin, CompanyAdmin, CompanyUser, CSPTester, SSTAdmin, TechnicalSupportAdmin, TechnicalSupportUser.
* This API depends on the following active services:*Required* (all):  AvaTaxPro, ECMEssentials, ECMPro, ECMPremium, VEMPro, VEMPremium, ECMProComms, ECMPremiumComms.


Reference: https://avalara.ferndocs.com/api-reference/calculations/ava-tax/public-reference/list-valid-certificates-for-customer

## Authentication

- `Authorization` header (required) — API Key authentication via header

## Request

### Path parameters

- `companyId` (integer, required) — The unique ID number of the company that recorded this customer
- `customerCode` (string, required) — The unique code representing this customer
- `country` (string, required) — Search for certificates matching this country. Uses the ISO 3166 two character country code.
- `region` (string, required) — Search for certificates matching this region. Uses the ISO 3166 two or three character state, region, or province code.

### Headers

- `X-Avalara-Client` (string, optional, default: Swagger UI; 26.7.0; Custom; 1.0) — Identifies the software you are using to call this API. For more information on the client header, see [Client Headers](https://developer.avalara.com/avatax/client-headers/) .

## Response

### 200

Success

- `status` (string, optional) — The exemption status of this customer in this country/region.
- `certificate` (CertificateModel, optional) — A certificate is a document stored in either AvaTax Exemptions or CertCapture. The certificate document can contain information about a customer's eligibility for exemption from sales or use taxes based on criteria you specify when you store the certificate. To view or manage your certificates directly, please log onto the administrative website for the product you purchased.

## Errors

### 400 Bad Request Error

Bad Request

- `type` (string, optional)
- `title` (string, optional)
- `status` (integer, optional)
- `detail` (string, optional)
- `instance` (string, optional)

### 401 Unauthorized Error

Unauthorized

- `type` (string, optional)
- `title` (string, optional)
- `status` (integer, optional)
- `detail` (string, optional)
- `instance` (string, optional)

### 404 Not Found Error

Not Found

- `type` (string, optional)
- `title` (string, optional)
- `status` (integer, optional)
- `detail` (string, optional)
- `instance` (string, optional)

## Types

### CertificateModel

A certificate is a document stored in either AvaTax Exemptions or CertCapture. The certificate document can contain information about a customer's eligibility for exemption from sales or use taxes based on criteria you specify when you store the certificate. To view or manage your certificates directly, please log onto the administrative website for the product you purchased.

- `signedDate` (date, required) — The date when this certificate was signed.
- `exemptionReason` (ExemptionReasonModel, required) — An exemption reason defines why a certificate allows a customer to be exempt for purposes of tax calculation. For a full list of defined exemption reasons, please call the `ListCertificateExemptionReasons` API.
- `exposureZone` (ExposureZoneModel, required) — Information about a physical area or zone in which a certificate can apply. An exposure zone for an exemption certificate will generally be a tax authority such as a state, country, or local government entity.
- `id` (integer, optional) — The unique ID number of this certificate.
- `companyId` (integer, optional) — The unique ID number of the AvaTax company that recorded this certificate.
- `expirationDate` (date, optional) — Expiration date when this certificate will no longer be valid.
- `filename` (string, optional) — File name for the image of this certificate. When creating a certificate, if you do not upload a PDF or JPG image, you must specify the filename of the certificate as it is tracked in your repository. To create a certificate, you must provide one of the following fields: either a `filename`, a `pdf` file, or an array of JPG `pages`. The API will return an error if you omit these fields or if you attempt to put values in more than one of them.
- `documentExists` (boolean, optional) — This value is true if there exists scanned PDF copy of this certificate or the PDF version of the form that the customer filled via the CertCapture wizard on S3 bucket.
- `valid` (boolean, optional) — True if this certificate is marked as valid. A valid certificate can be considered for exemption purposes. When a certificate is marked invalid, it will no longer be considered when calculating exemption for a customer.
- `verified` (boolean, optional) — This value is true if the certificate has gone through the certificate validation process. For more information on the certificate validation process, please see the Avalara Help Center.
- `exemptPercentage` (double, optional) — If this certificate provides exemption from transactional taxes, what percentage of the transaction is considered exempt? For a fully exempt certificate, this percentage should be 100.
- `isSingleCertificate` (boolean, optional) — This value is true if this certificate is a single (or standalone) certificate. This value is set during the audit stage of the certificate validation process.
- `exemptionNumber` (string, optional) — Indicates the tax number passed in for the certificate.
- `validatedExemptionReason` (ExemptionReasonModel, optional) — An exemption reason defines why a certificate allows a customer to be exempt for purposes of tax calculation. For a full list of defined exemption reasons, please call the `ListCertificateExemptionReasons` API.
- `status` (string, optional) — The status of the certificate. Possible values for status COMPLETE,PENDING,PENDING-FUTURE,PENDING-MULTI,PENDING-SINGLE,REVOKED
- `ecmStatus` (enum, optional) — The status of the certificate as displayed on https://exemptions.avalara.com. The values in `CertificateEcmStatus` include all the possible status values.
  - Allowed values: `None`, `Expired`, `Invalid`, `Valid`, `PendingFuture`
- `createdDate` (datetime, optional) — The date/time when this record was created.
- `modifiedDate` (date, optional) — The date/time when this record was last modified.
- `taxNumberType` (string, optional) — The tax number type for the certificate. For example, `FEIN`, `Social Security Number`, or `Employer Identification Number`.
- `businessNumberType` (string, optional) — Description of business for the certificate. For example, `Retail trade`, `Professional services`, or `Construction`.
- `pageCount` (integer, optional) — The number of pages contained within this certificate.
- `customers` (list of CustomerModel, optional) — A list of customers to which this certificate applies. You can fetch this data by specifying `$include=customers` when calling a certificate fetch API.
- `poNumbers` (list of PoNumberModel, optional) — A list of purchase order numbers that are valid for use with this certificate. If this certificate is applicable for all purchase order numbers, this field will be empty. You can fetch this data by specifying `$include=po_numbers` when calling a certificate fetch API.
- `exposureZoneName` (string, optional) — The name of the exposure zone where this certificate is valid. This is a computed property for filtering purposes.
- `jurisdictions` (list of CertificateJurisdictionModel, optional) — A list of jurisdictions associated with this certificate, indicating the tax authority regions where the certificate applies. A certificate can have one or more jurisdictions. You can fetch this data by specifying `$include=jurisdictions` when calling a certificate fetch API.
- `attributes` (list of CertificateAttributeModel, optional) — A list of certificate attributes that apply to this certificate. You can fetch this data by specifying `$include=attributes` when calling a certificate fetch API.
- `histories` (list of HistoryModel, optional) — A list of update histories for this certificate. You can fetch this data by specifying `$include=histories` when calling a certificate fetch API.
- `jobs` (list of CertificateJobModel, optional) — The jobs (and their phases / tasks) associated with this certificate. On POST / PUT: supply the `id` of each existing job — and optionally nested phase / task `id`s — to link them to this certificate. All other fields on each entry (`name`, `jobNumber`, `isExplicit`, etc.) are server-computed and ignored on input. On GET: populated when `$include=jobs` is specified. Use `$include=jobs.phases` to also expand the phases within each job, and `$include=jobs.tasks` to expand the tasks within each phase (which implies `jobs` and `jobs.phases`).
- `logs` (list of CertificateLogModel, optional) — A list of logs for this certificate. You can fetch this data by specifying `$include=logs` when calling a certificate fetch API.
- `invalidReasons` (list of CertificateInvalidReasonModel, optional) — For a certificate with an invalid status, this lists the reasons why the certificate is invalid. You can fetch this data by specifying `$include=invalid_reasons` when calling a certificate fetch API.
- `customFields` (list of CustomFieldModel, optional) — A list of custom defined fields for this certificate. You can fetch this data by specifying `$include=custom_fields` when calling a certificate fetch API.
- `ecmsId` (integer, optional) — The unique ID number of current AvaTax Exemption Certificate that refers this certificate.
- `ecmsStatus` (string, optional) — The status of current AvaTax Exemption Certificate that refers to this certificate.
- `pdf` (string, optional) — This field is available for input only. To retrieve the image after creation, use the `DownloadCertificateImage` API. When creating a certificate, you may optionally provide a PDF image in Base64 URLEncoded format. PDFs are automatically parsed into individual page JPG images and can be retrieved back later as either the original PDF or the individual pages. To create a certificate, you must provide one of the following fields: either a `filename`, a `pdf` file, or an array of JPG `pages`. The API will return an error if you omit these fields or if you attempt to put values in more than one of them.
- `pages` (list of string, optional) — This field is available for input only. To retrieve the image after creation, use the `DownloadCertificateImage` API. When creating a certificate, you may optionally provide a list of JPG images, one per page, in Base64 URLEncoded format. These JPG images are automatically combined into a single downloadable PDF and can be retrieved back later as either the original JPG images or the combined PDF. To create a certificate, you must provide one of the following fields: either a `filename`, a `pdf` file, or an array of JPG `pages`. The API will return an error if you omit these fields or if you attempt to put values in more than one of them.

### ExemptionReasonModel

An exemption reason defines why a certificate allows a customer to be exempt for purposes of tax calculation. For a full list of defined exemption reasons, please call the `ListCertificateExemptionReasons` API.

- `id` (integer, optional) — A unique ID number representing this exemption reason.
- `name` (string, optional) — A friendly name describing this exemption reason.

### ExposureZoneModel

Information about a physical area or zone in which a certificate can apply. An exposure zone for an exemption certificate will generally be a tax authority such as a state, country, or local government entity.

- `id` (integer, optional) — A unique ID number representing this exposure zone.
- `companyId` (integer, optional) — The unique ID number of the AvaTax company that recorded this customer.
- `name` (string, optional) — The short name of this exposure zone, suitable for use in a drop-down list.
- `tag` (string, optional) — A tag indicating
- `description` (string, optional) — A more complete description of this exposure zone, suitable for use as a tooltip or help text.
- `created` (datetime, optional) — The date when this record was created.
- `modified` (datetime, optional) — The date/time when this record was last modified.
- `region` (string, optional) — Two or three character ISO 3166 region, province, or state name of this exposure zone.
- `country` (string, optional) — Two character ISO 3166 county code for the country component of this exposure zone.

### CustomerModel

Represents a customer to whom you sell products and/or services.

- `companyId` (integer, required) — The unique ID number of the AvaTax company that recorded this customer.
- `customerCode` (string, required) — The unique code identifying this customer. Must be unique within your company. This code should be used in the `customerCode` field of any call that creates or adjusts a transaction in order to ensure that all exemptions that apply to this customer are correctly considered. Note: This field is case sensitive.
- `name` (string, required) — A friendly name identifying this customer.
- `line1` (string, required) — First line of the street address of this customer.
- `city` (string, required) — City component of the street address of this customer.
- `postalCode` (string, required) — Postal Code / Zip Code component of the address of this customer.
- `country` (string, required) — Name or ISO 3166 code identifying the country. This field supports many different country identifiers: * Two character ISO 3166 codes * Three character ISO 3166 codes * Fully spelled out names of the country in ISO supported languages * Common alternative spellings for many countries For a full list of all supported codes and names, please see the Definitions API `ListCountries`.
- `id` (integer, optional) — The unique ID number of this customer.
- `alternateId` (string, optional) — A customer-configurable alternate ID number for this customer. You may set this value to match any other system that would like to reference this customer record.
- `attnName` (string, optional) — Indicates the "Attn:" component of the address for this customer, if this customer requires mailings to be shipped to the attention of a specific person or department name.
- `line2` (string, optional) — Second line of the street address of this customer.
- `phoneNumber` (string, optional) — The main phone number for this customer.
- `faxNumber` (string, optional) — The fax phone number for this customer, if any.
- `emailAddress` (string, optional) — The main email address for this customer.
- `contactName` (string, optional) — The name of the main contact person for this customer.
- `lastTransaction` (datetime, optional) — Date when this customer last executed a transaction.
- `createdDate` (datetime, optional) — The date when this record was created.
- `modifiedDate` (datetime, optional) — The date/time when this record was last modified.
- `region` (string, optional) — ISO 3166 code identifying the region within the country. Two and three character ISO 3166 region codes. This is a required field if the country is US or CA. For other countries, this is an optional field. For a full list of all supported codes, please see the Definitions API `ListRegions`.
- `isBill` (boolean, optional) — True if this customer record is specifically used for bill-to purposes.
- `isShip` (boolean, optional) — True if this customer record is specifically used for ship-to purposes.
- `taxpayerIdNumber` (string, optional) — For customers in the United States, this field is the federal taxpayer ID number. For businesses, this is a Federal Employer Identification Number. For individuals, this will be a Social Security Number.
- `certificates` (list of CertificateModel, optional) — A list of exemption certficates that apply to this customer. You can fetch this data by specifying `$include=certificates` when calling a customer fetch API.
- `customFields` (list of CustomFieldModel, optional) — A list of custom fields defined on this customer. For more information about custom fields, see the [Avalara Help Center article about custom fields](https://help.avalara.com/0021_Avalara_CertCapture/All_About_CertCapture/Edit_or_Remove_Details_about_Customers).
- `exposureZones` (list of ExposureZoneModel, optional) — A list of exposure zones where you do business with this customer. To keep track of certificates that are needed for each customer, set this value to a list of all exposure zones where you sell products to this customer. You can find a list of exposure zones by calling `ListExposureZones`. This field is often called "Ship-To States" or "Ship-To Zones", since it generally refers to locations where you ship products when this customer makes a purchase. This field is useful for audit purposes since it helps you ensure you have the necessary certificates for each customer.
- `billTos` (list of CustomerModel, optional) — A list of bill-to customer records that are connected to this ship-to customer. Customer records represent businesses or individuals who can provide exemption certificates. Some customers may have certificates that are linked to their shipping address or their billing address. To group these customer records together, you may link multiple bill-to and ship-to addresses together to represent a single entity that has multiple different addresses of different kinds.
- `shipTos` (list of CustomerModel, optional) — A list of ship-to customer records that are connected to this bill-to customer. Customer records represent businesses or individuals who can provide exemption certificates. Some customers may have certificates that are linked to their shipping address or their billing address. To group these customer records together, you may link multiple bill-to and ship-to addresses together to represent a single entity that has multiple different addresses of different kinds.
- `attributes` (list of CustomerAttributeModel, optional) — A list of attributes that apply to this customer. You can fetch this data by specifying `$include=attributes` when calling a customer fetch API.
- `activeCertificates` (list of ActiveCertificateModel, optional) — A list of active certificates with exemption reasons.
- `histories` (list of HistoryModel, optional) — A list of field update histories for this customer.
- `logs` (list of CertificateLogModel, optional) — A list of logs for this customer.
- `shipToStates` (list of StateModel, optional) — A list of states where this customer ships to.

### PoNumberModel

Represents a purchase order number for a transaction

- `id` (integer, optional) — Unique ID number
- `poNumber` (string, optional) — Purchase order number.

### CertificateJurisdictionModel

Represents a jurisdiction associated with a certificate. A certificate can be linked to one or more jurisdictions indicating the tax authority regions where the certificate applies.

- `id` (integer, optional) — Unique ID number
- `type` (string, optional) — The type of the jurisdiction (e.g., State, County, City).
- `name` (string, optional) — The name of the jurisdiction.
- `code` (string, optional) — The FIPS code or identifier for the jurisdiction.

### CertificateAttributeModel

A certificate attribute can be thought of as a feature or flag that is applied to a certificate. A single certificate can be linked to zero, one, or many certificate attributes. The full list of attributes can be obtained by calling the `ListCertificateAttributes` API.

- `id` (integer, optional) — A unique ID number representing this certificate attribute.
- `name` (string, optional) — A friendly readable name for this certificate attribute.
- `description` (string, optional) — A full help text description of the certificate attribute.
- `isSystemCode` (boolean, optional) — This value is true if this is a system-defined certificate attribute. System-defined attributes cannot be modified or deleted on the CertCapture website.

### HistoryModel

Update history for Avalara.AvaTax.AccountServices.Models.v2.CustomerModel and Avalara.AvaTax.AccountServices.Models.v2.CertificateModel. This is exposed in the URL's `$includes`.

- `id` (integer, optional) — The unique ID number of this history.
- `account` (string, optional) — The account name this history belongs to.
- `field` (string, optional) — The name of the field to update.
- `oldValue` (string, optional) — The old value of the field.
- `newValue` (string, optional) — The new value of the field.
- `created` (datetime, optional) — The date/time when this history was created.

### CertificateJobModel

A job associated with a certificate. Used as both the input shape on certificate POST/PUT (only `id` and the nested Avalara.AvaTax.AccountServices.Models.v2.CertificateJobModel.phases ids are required to link existing jobs/phases/tasks to the certificate) and the response shape on certificate GET endpoints when `jobs` is requested via `$include`. Use `$include=jobs.phases` or `$include=jobs.tasks` on GET to additionally populate the nested Avalara.AvaTax.AccountServices.Models.v2.CertificateJobModel.phases collection and the tasks under each phase.

- `isExplicit` (boolean, optional) — Indicates whether this job was explicitly linked to the certificate. Populated by CertCapture on GET responses; ignored on POST/PUT.
- `isDirect` (boolean, optional) — Indicates whether this is a direct association. Populated by CertCapture on GET responses; ignored on POST/PUT.
- `id` (integer, optional) — The unique ID of this job. Required on POST/PUT to link an existing job to the certificate.
- `name` (string, optional) — The name of this job. Populated by CertCapture on GET responses; ignored on POST/PUT (the job is identified by Avalara.AvaTax.AccountServices.Models.v2.CertificateJobModel.id).
- `jobNumber` (string, optional) — The job number. Populated by CertCapture on GET responses; ignored on POST/PUT (the job is identified by Avalara.AvaTax.AccountServices.Models.v2.CertificateJobModel.id).
- `exposureZoneName` (string, optional) — The name of the exposure zone associated with this job. Populated by CertCapture on GET responses; ignored on POST/PUT.
- `phases` (list of JobPhaseModel, optional) — The nested list of phases for this job (each phase containing its own tasks). On GET, populated by CertCapture only when `$include=jobs.phases` or `$include=jobs.tasks` is requested; null otherwise. On POST/PUT, supply the phase / task `id` values to link them to the certificate alongside the job.

### CertificateLogModel

The certificate log for a customer. This is exposed in the URL's `$includes`.

- `id` (long, optional) — The unique ID number of this log entry.
- `certificateId` (long, optional) — The unique ID number of this certificate.
- `account` (string, optional) — The name of this account.
- `entry` (string, optional) — The log entry description.
- `created` (datetime, optional) — The date/time when this certificate log was created.

### CertificateInvalidReasonModel

The reason the certificate is invalid.

- `id` (integer, optional) — The unique ID of this invalid reason.
- `name` (string, optional) — The name of this certificate invalid reason.
- `description` (string, optional) — A description of the certificate invalid reason.
- `systemCode` (boolean, optional) — This value is `true` if the invalid reason is a system code.

### CustomFieldModel

A custom field provides extra information about a customer or certificate. Custom fields are provided to permit you to store additional information about an exemption certificate or customer. They are available to support additional use cases beyond that supported directly by Avalara's exemption certificate software. For more information about custom fields, see the [Avalara Help Center article about custom fields](https://help.avalara.com/0021_Avalara_CertCapture/All_About_CertCapture/Edit_or_Remove_Details_about_Customers).

- `id` (integer, optional) — The unique ID of this custom field.
- `name` (string, optional) — The name of the custom field.
- `type` (string, optional) — The type of custom field.
- `possibleValues` (string, optional) — The possible values the custom field can have.
- `usesDataEntry` (boolean, optional) — This value is `true` if the custom field uses a data entry.
- `requiredInDataEntry` (boolean, optional) — Shows whether the custom field is required in data entry.
- `value` (string, optional) — The value of the custom field.

### CustomerAttributeModel

A Customer's linked attribute denoting what features applied to the customer. A customer can be linked to multiple customer attributes and vice versa.

- `id` (integer, optional) — A unique ID number representing this attribute.
- `name` (string, optional) — A friendly readable name for this attribute.
- `description` (string, optional) — A full help text description of the attribute.
- `isSystemCode` (boolean, optional) — This value is true if this is a system-defined attribute. System-defined attributes cannot be modified or deleted on the CertCapture website.
- `isNonDeliver` (boolean, optional) — A flag denotes that future exemption certificate request won't be mailed to the customer
- `isChangeable` (boolean, optional) — A flag denotes that this attribute can't be removed/added to a customer record

### ActiveCertificateModel

Certificate with exemption reason and exposure zone. This is exposed in the URL's `$includes`.

- `id` (long, optional) — The unique ID number of this certificate.
- `created` (datetime, optional) — The date/time when this certificate was created.
- `modified` (datetime, optional) — The date/time when this certificate was last modified.
- `expectedTaxNumber` (string, optional) — The expected tax number for this certificate.
- `actualTaxNumber` (string, optional) — The actual tax number for this certificate.
- `exposureZone` (ExposureZoneModel, optional) — Information about a physical area or zone in which a certificate can apply. An exposure zone for an exemption certificate will generally be a tax authority such as a state, country, or local government entity.
- `expectedTaxCode` (ExemptionReasonModel, optional) — An exemption reason defines why a certificate allows a customer to be exempt for purposes of tax calculation. For a full list of defined exemption reasons, please call the `ListCertificateExemptionReasons` API.
- `actualTaxCode` (ExemptionReasonModel, optional) — An exemption reason defines why a certificate allows a customer to be exempt for purposes of tax calculation. For a full list of defined exemption reasons, please call the `ListCertificateExemptionReasons` API.
- `certificate` (CertificateModel, optional) — A certificate is a document stored in either AvaTax Exemptions or CertCapture. The certificate document can contain information about a customer's eligibility for exemption from sales or use taxes based on criteria you specify when you store the certificate. To view or manage your certificates directly, please log onto the administrative website for the product you purchased.

### StateModel

Defines a state, region, or province as known to Avalara's certificate management system.

- `id` (integer, optional) — A unique ID number that represents this state, region, or province.
- `name` (string, optional) — The state, region, or province name as known in US English.
- `initials` (string, optional) — The abbreviated two or three character ISO 3166 state, province, or region code.
- `geoCode` (integer, optional) — A geocoding identification number for this state
- `country` (CountryModel, optional) — Defines a country as known to Avalara's certificate management system.

### JobPhaseModel

A phase within a certificate job.

- `id` (integer, optional) — The unique ID number of this phase.
- `name` (string, optional) — The name of this phase.
- `jobId` (integer, optional) — The ID of the job this phase belongs to.
- `phaseCode` (string, optional) — The unique code for this phase.
- `createdDate` (datetime, optional) — The date when this phase was created.
- `modifiedDate` (datetime, optional) — The date when this phase was last modified.
- `tasks` (list of JobTaskModel, optional) — A list of tasks within this phase.

### CountryModel

Defines a country as known to Avalara's certificate management system.

- `id` (integer, optional) — The unique ID number of this country as defined in Avalara's certificate management system.
- `name` (string, optional) — The name of this country in US English.
- `initials` (string, optional) — The three-character ISO 3166 code for this country.
- `abbreviation` (string, optional) — The two-character ISO 3166 code for this country.

### JobTaskModel

A task within a certificate job phase.

- `id` (integer, optional) — The unique ID number of this task.
- `phaseId` (integer, optional) — The ID of the phase this task belongs to.
- `name` (string, optional) — The name of this task.
- `taskCode` (string, optional) — The unique code for this task.
- `createdDate` (datetime, optional) — The date when this task was created.
- `modifiedDate` (datetime, optional) — The date when this task was last modified.

## Examples

**Response**

```json
{
  "status": "Exempt",
  "certificate": {
    "signedDate": "2016-02-01",
    "exemptionReason": {
      "name": "RESALE"
    },
    "exposureZone": {
      "name": "Washington"
    },
    "id": 0,
    "expirationDate": "2020-12-31",
    "filename": "cabf02a4-a2db-42e9-a32d-d18478e7b255",
    "documentExists": false,
    "valid": true,
    "verified": false,
    "exemptPercentage": 0,
    "isSingleCertificate": false,
    "exemptionNumber": "Exempt-1234",
    "ecmStatus": "None",
    "createdDate": "2026-07-06T22:06:52.3318709Z",
    "modifiedDate": "2026-07-06",
    "taxNumberType": "FEIN",
    "businessNumberType": "Business Services",
    "pageCount": 0,
    "customers": [
      {
        "companyId": 0,
        "customerCode": "87fc8401-a6c7-420f-9ec4-c3b7bbab0482",
        "name": "Dr. Bob Example",
        "line1": "645 Main Street",
        "city": "Irvine",
        "postalCode": "92614",
        "country": "US",
        "alternateId": "987654321",
        "attnName": "Attn: Receiving",
        "phoneNumber": "(949) 555-1212",
        "faxNumber": "949.555.1213",
        "emailAddress": "dr.bob.example@example.org",
        "contactName": "Alice Smith",
        "lastTransaction": "2008-10-08T00:00:00Z",
        "region": "CA",
        "exposureZones": [
          {
            "name": "Washington"
          }
        ]
      },
      {
        "companyId": 0,
        "customerCode": "9351f925-87b1-423d-9793-c3e8f31641ec",
        "name": "Dr. Bob Example",
        "line1": "645 Main Street",
        "city": "Irvine",
        "postalCode": "92614",
        "country": "US",
        "alternateId": "987654321",
        "attnName": "Attn: Receiving",
        "phoneNumber": "(949) 555-1212",
        "faxNumber": "949.555.1213",
        "emailAddress": "dr.bob.example@example.org",
        "contactName": "Alice Smith",
        "lastTransaction": "2008-10-08T00:00:00Z",
        "region": "CA",
        "exposureZones": [
          {
            "name": "Washington"
          }
        ]
      }
    ],
    "exposureZoneName": "Washington",
    "jobs": [
      {
        "isExplicit": false,
        "isDirect": false,
        "id": 7,
        "phases": [
          {
            "id": 15,
            "tasks": [
              {
                "id": 24
              }
            ]
          }
        ]
      }
    ]
  }
}
```

**SDK Code**

```python
import requests

url = "https://rest.avatax.com/api/v2/companies/1/customers/customerCode/certificates/country/region"

headers = {"Authorization": "<apiKey>"}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript
const url = 'https://rest.avatax.com/api/v2/companies/1/customers/customerCode/certificates/country/region';
const options = {method: 'GET', headers: {Authorization: '<apiKey>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://rest.avatax.com/api/v2/companies/1/customers/customerCode/certificates/country/region"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "<apiKey>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://rest.avatax.com/api/v2/companies/1/customers/customerCode/certificates/country/region")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = '<apiKey>'

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://rest.avatax.com/api/v2/companies/1/customers/customerCode/certificates/country/region")
  .header("Authorization", "<apiKey>")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://rest.avatax.com/api/v2/companies/1/customers/customerCode/certificates/country/region', [
  'headers' => [
    'Authorization' => '<apiKey>',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://rest.avatax.com/api/v2/companies/1/customers/customerCode/certificates/country/region");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "<apiKey>");
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["Authorization": "<apiKey>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://rest.avatax.com/api/v2/companies/1/customers/customerCode/certificates/country/region")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```