# GetCertificate

Retrieve a single certificate

`GET /api/v2/companies/{companyId}/certificates/{id}`

**API:** AvaTax API
**Tag:** Certificates
**API Version:** v2
**Base URL:** https://sandbox-rest.avatax.com/
**Accepts:** `application/json`
**Authentication:** API Key (`Authorization` in header) or OAuth 2.0 or Basic (username + license key)

Source: https://developer.avalara.com/products/avatax/api/methods/Certificates/GetCertificate/

## Description

Get the current certificate identified by this URL.
            
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.
            
You can use the `$include` parameter to fetch the following additional objects for expansion:
            
* customers - Retrieves the list of customers linked to the certificate.
* po_numbers - Retrieves all PO numbers tied to the certificate.
* attributes - Retrieves all attributes applied to the certificate.
* histories - Retrieves the certificate update history
* jobs - Retrieves the jobs for this certificate
* jobs.phases - Retrieves the jobs along with their phases
* jobs.tasks - Retrieves the jobs along with their phases and the tasks within each phase
* logs - Retrieves the certificate log
* invalid_reasons - Retrieves invalid reasons for this certificate if the certificate is invalid
* custom_fields - Retrieves custom fields set for this certificate
* jurisdictions - Retrieves the list of jurisdictions associated with the certificate
            
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.

## Parameters

| Name | Type | In | Required | Description |
|---|---|---|---|---|
| `companyId` | integer | path | Yes | The ID number of the company that recorded this certificate |
| `id` | integer | path | Yes | The unique ID number of this certificate |
| `$include` | string | query | No | OPTIONAL: A comma separated list of special fetch options.  You can specify one or more of the following:
            
             * customers - Retrieves the list of customers linked to the certificate.
             * po_numbers - Retrieves all PO numbers tied to the certificate.
             * attributes - Retrieves all attributes applied to the certificate.
             * histories - Retrieves the certificate update history
             * jobs - Retrieves the jobs for this certificate
             * jobs.phases - Retrieves the jobs along with their phases
             * jobs.tasks - Retrieves the jobs along with their phases and the tasks within each phase
             * logs - Retrieves the certificate log
             * invalid_reasons - Retrieves invalid reasons for this certificate if the certificate is invalid
             * custom_fields - Retrieves custom fields set for this certificate
             * jurisdictions - Retrieves the list of jurisdictions associated with the certificate |
| `X-Avalara-Client` | string | header | No | 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/) . |

## Responses

| Status | Description | Schema |
|---|---|---|
| 200 | Success | `CertificateModel` |
| 400 | Bad Request | `ProblemDetails` |
| 401 | Unauthorized | `ProblemDetails` |
| 404 | Not Found | `ProblemDetails` |

### 200 Response: `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.

| Property | Type | Required | Description |
|---|---|---|---|
| `id` | integer | No | The unique ID number of this certificate. Example: `0`. |
| `companyId` | integer | No | The unique ID number of the AvaTax company that recorded this certificate. |
| `signedDate` | string | **Yes** | The date when this certificate was signed. Example: `2016-02-01T00:00:00`. |
| `expirationDate` | string | No | Expiration date when this certificate will no longer be valid. Example: `2020-12-31T00:00:00`. |
| `filename` | string | No | 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. Example: `c5586485-cc41-43c6-8251-f67a6ef926c4`. |
| `documentExists` | boolean | No | 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. Example: `false`. |
| `valid` | boolean | No | 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. Example: `true`. |
| `verified` | boolean | No | 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. Example: `false`. |
| `exemptPercentage` | number | No | 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. Example: `0`. |
| `isSingleCertificate` | boolean | No | 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. Example: `false`. |
| `exemptionNumber` | string | No | Indicates the tax number passed in for the certificate. Example: `Exempt-1234`. |
| `validatedExemptionReason` | ExemptionReasonModel | No | The exemption reason that CertCapture audit/internal logic identifies for created certificate. |
| `exemptionReason` | ExemptionReasonModel | **Yes** | The exemption reason associated with this certificate.  For example, the reason code for exemption
for purposes of resale is `RESALE`.
            
For a list of exemption reasons, call `ListCertificateExemptReasons`. |
| `status` | string | No | The status of the certificate.
Possible values for status COMPLETE,PENDING,PENDING-FUTURE,PENDING-MULTI,PENDING-SINGLE,REVOKED |
| `ecmStatus` | string | No | The status of the certificate as displayed on https://exemptions.avalara.com. The values in `CertificateEcmStatus` include all the possible status values. Values: `None`, `Expired`, `Invalid`, `Valid`, `PendingFuture`. Example: `None`. |
| `createdDate` | string | No | The date/time when this record was created. Example: `2026-07-02T04:05:03.9993Z`. |
| `modifiedDate` | string | No | The date/time when this record was last modified. Example: `2026-07-02T04:05:03.9992867Z`. |
| `taxNumberType` | string | No | The tax number type for the certificate. For example, `FEIN`, `Social Security Number`, or `Employer Identification Number`. Example: `FEIN`. |
| `businessNumberType` | string | No | Description of business for the certificate. For example, `Retail trade`, `Professional services`, or `Construction`. Example: `Business Services`. |
| `pageCount` | integer | No | The number of pages contained within this certificate. Example: `0`. |
| `customers` | object[] | No | 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` | PoNumberModel[] | No | 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. |
| `exposureZone` | ExposureZoneModel | **Yes** | The exposure zone where this certificate is valid. |
| `exposureZoneName` | string | No | The name of the exposure zone where this certificate is valid.
This is a computed property for filtering purposes. Example: `Washington`. |
| `jurisdictions` | CertificateJurisdictionModel[] | No | 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` | CertificateAttributeModel[] | No | 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` | HistoryModel[] | No | A list of update histories for this certificate.
            
You can fetch this data by specifying `$include=histories` when calling a certificate fetch API. |
| `jobs` | CertificateJobModel[] | No | 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` | CertificateLogModel[] | No | A list of logs for this certificate.
            
You can fetch this data by specifying `$include=logs` when calling a certificate fetch API. |
| `invalidReasons` | CertificateInvalidReasonModel[] | No | 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` | CustomFieldModel[] | No | 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 | No | The unique ID number of current AvaTax Exemption Certificate that refers this certificate. |
| `ecmsStatus` | string | No | The status of current AvaTax Exemption Certificate  that refers to this certificate. |
| `pdf` | string | No | 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` | string[] | No | 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. |

## Example Request

```bash
curl -X GET "https://sandbox-rest.avatax.com/api/v2/companies/{companyId}/certificates/{id}" \
  -H "Authorization: Basic <credentials>" \
  -H "Accept: application/json"
```