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

# Create exemption certificate

> Create an exemption certificate for a customer with one or more jurisdiction exemptions

## Request body

<ParamField body="customer_id" type="string" required>
  The unique identifier of the customer this exemption certificate belongs to.
</ParamField>

<ParamField body="file_id" type="string">
  The unique identifier of the file associated with this exemption certificate (e.g., scanned certificate document).
</ParamField>

<ParamField body="effective_date" type="string" required>
  The date when the exemption certificate becomes effective. Format: ISO 8601 date (YYYY-MM-DD).
</ParamField>

<ParamField body="type" type="string" required>
  The type of exemption certificate. Valid values:

  * `SINGLE_STATE`: Certificate valid for a single state (maximum 1 jurisdiction)
  * `MULTI_STATE`: Certificate valid for multiple states
  * `BLANKET`: Blanket exemption certificate
</ParamField>

<ParamField body="exemption_certificate_number" type="string">
  The certificate number assigned by the issuing authority. Maximum 20 characters.
</ParamField>

<ParamField body="jurisdictions" type="array" required>
  Array of jurisdiction exemptions. Must contain at least one jurisdiction.

  <Expandable title="Jurisdiction object properties">
    <ParamField body="identification_type" type="string" required>
      Type of identification. Valid values:

      * `FEIN`: Federal Employer Identification Number
      * `STATE_ISSUED_EXEMPTION_ID`: State-issued exemption ID
      * `DRIVERS_LICENSE`: Driver's license
      * `FOREIGN_DIPLOMAT_ID`: Foreign diplomat ID
    </ParamField>

    <ParamField body="identification_number" type="string" required>
      The identification number corresponding to the identification type.
    </ParamField>

    <ParamField body="country" type="string" required>
      ISO 3166-1 alpha-2 country code (e.g., "US"). Currently only US is supported.
    </ParamField>

    <ParamField body="state" type="string" required>
      ISO 3166-2 subdivision code (e.g., "CA", "NY", "TX").
    </ParamField>

    <ParamField body="reason" type="string" required>
      Reason for the exemption. Valid values:

      * `PURPOSE_RESALE`: Resale exemption
      * `PURPOSE_MANUFACTURING`: Manufacturing exemption
      * `PURPOSE_AGRICULTURE`: Agricultural exemption
      * `ENTITY_GOVERNMENT`: Government entity
      * `ENTITY_NONPROFIT`: Non-profit organization
      * `ENTITY_EDUCATION`: Educational institution
      * `ENTITY_RELIGIOUS`: Religious organization
    </ParamField>

    <ParamField body="end_date" type="string">
      Optional expiration date for the exemption. Format: ISO 8601 date (YYYY-MM-DD).
    </ParamField>

    <ParamField body="is_active" type="boolean">
      Whether the exemption is currently active. Defaults to true if not specified.
    </ParamField>
  </Expandable>
</ParamField>

## Response

<ResponseField name="data" type="object">
  <Expandable title="ExemptionCertificate object">
    <ResponseField name="id" type="string">
      Unique identifier for the exemption certificate.
    </ResponseField>

    <ResponseField name="customer_id" type="string">
      The customer ID this certificate belongs to.
    </ResponseField>

    <ResponseField name="file_id" type="string">
      The file ID associated with this certificate, if any.
    </ResponseField>

    <ResponseField name="type" type="string">
      The type of exemption certificate (SINGLE\_STATE, MULTI\_STATE, or BLANKET).
    </ResponseField>

    <ResponseField name="verification_status" type="string">
      Current verification status of the certificate:

      * `NOT_READY`: No certificate file is attached
      * `VERIFICATION_PENDING`: Awaiting verification
      * `VERIFICATION_SUCCESS`: Successfully verified
      * `VERIFICATION_FAILED`: Verification failed
    </ResponseField>

    <ResponseField name="exemption_certificate_number" type="string">
      The certificate number, if provided.
    </ResponseField>

    <ResponseField name="effective_date" type="string">
      The effective date of the certificate (ISO 8601 date).
    </ResponseField>

    <ResponseField name="created_at" type="integer">
      Unix timestamp when the certificate was created.
    </ResponseField>

    <ResponseField name="jurisdictions" type="array">
      Array of jurisdiction exemptions associated with this certificate.

      <Expandable title="Jurisdiction object">
        <ResponseField name="country" type="string">
          ISO 3166-1 alpha-2 country code.
        </ResponseField>

        <ResponseField name="state" type="string">
          ISO 3166-2 subdivision code.
        </ResponseField>

        <ResponseField name="reason" type="string">
          Reason for the exemption.
        </ResponseField>

        <ResponseField name="is_active" type="boolean">
          Whether the exemption is currently active.
        </ResponseField>

        <ResponseField name="end_date" type="string">
          Expiration date, if applicable.
        </ResponseField>

        <ResponseField name="identification_type" type="string">
          Type of identification used.
        </ResponseField>

        <ResponseField name="identification_number" type="string">
          The identification number.
        </ResponseField>

        <ResponseField name="is_expired" type="boolean">
          Whether the exemption has expired.
        </ResponseField>

        <ResponseField name="created_at" type="integer">
          Unix timestamp when the jurisdiction exemption was created.
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="message" type="string">
  Success message.
</ResponseField>


## OpenAPI

````yaml POST /exemption-certificates
openapi: 3.0.1
info:
  title: Commenda Public APIs
  description: >-
    APIs for Commenda entity management, partner incorporation, indirect tax,
    compliance, and corporate operations.
  license:
    name: NONE
    url: NONE
  version: 1.0.0
servers:
  - url: https://api.prod.commenda.io/api/v1
    description: Commenda platform APIs, including Partner Incorporation and Commenda OS.
  - url: https://transaction-tax.api.in.commenda.io/api/v1
    description: Global Indirect Tax API.
security:
  - bearerAuth: []
paths:
  /exemption-certificates:
    post:
      summary: Create an exemption certificate
      description: Create an exemption certificate for a customer
      operationId: createExemptionCertificate
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateExemptionCertificateRequest'
      responses:
        '200':
          description: Successful exemption certificate creation
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/ExemptionCertificateResponse'
                  message:
                    type: string
                    example: Successfully created exemption certificate.
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    CreateExemptionCertificateRequest:
      type: object
      required:
        - customer_id
        - effective_date
        - type
        - jurisdictions
      properties:
        customer_id:
          type: string
          description: The unique identifier of the customer.
        file_id:
          type: string
          description: Identifier of the file to use as the exemption certificate.
        effective_date:
          type: string
          format: date
          description: ISO 8601 formatted date string indicating the effective date.
        type:
          $ref: '#/components/schemas/ExemptionCertificateType'
        exemption_certificate_number:
          type: string
          maxLength: 20
          description: The exemption certificate number.
        jurisdictions:
          type: array
          items:
            $ref: '#/components/schemas/CreateExemptionRequest'
    ExemptionCertificateResponse:
      type: object
      properties:
        customer_id:
          type: string
          format: uuid
          description: The unique identifier of the customer.
        file_id:
          type: string
          format: uuid
          nullable: true
          description: Identifier of the file to use as the exemption certificate.
        type:
          $ref: '#/components/schemas/ExemptionCertificateType'
        verification_status:
          type: string
          description: Verification status of the exemption certificate.
        exemption_certificate_number:
          type: string
          description: The exemption certificate number.
        effective_date:
          type: string
          format: date
          description: ISO 8601 formatted date string indicating the effective date.
        created_at:
          type: integer
          format: int64
          description: Timestamp in UTC when this exemption certificate was created.
        jurisdictions:
          type: array
          items:
            $ref: '#/components/schemas/JurisdictionExemption'
          description: List of jurisdictions where the exemption is applicable.
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          properties:
            type:
              type: string
              description: 'Specific Error type. Example: CLIENT_INVALID_REQUEST_BODY.'
              example: CLIENT_INVALID_REQUEST_BODY
            doc_url:
              type: string
              description: >-
                A link to the docs with details about this error. Example:
                https://sales-tax-docs.commenda.io/
              example: https://sales-tax-docs.commenda.io/
            title:
              type: string
              description: >-
                A short title describing the error. Example: Missing query
                parameters.
              example: Failed to validate the request body
            detail:
              type: string
              description: >-
                A json string with a description on how to fix the error.
                Example {"description":"Please pass in a valid corporation_id"}
            status:
              type: number
              description: >-
                The status code. It should be the same as the HTTP protocol
                status code. Example: 200
              example: 400
            instance:
              type: string
              description: >-
                The relative path that was hit by the user. Example:
                /api/v1/corporations/1
            Errors:
              type: array
              items:
                type: object
                properties:
                  details:
                    type: string
                    description: More details on how to solve this particular error.
                  pointer:
                    type: string
                    description: >-
                      Relative reference to missing or invalid piece of passed
                      information.
    ExemptionCertificateType:
      type: string
      enum:
        - SINGLE_STATE
        - SST
        - MTC
      description: >-
        Enum representing the type of the exemption certificate (Streamlined
        Sales Tax, Multistate Tax Commission, or single state). More details
        [here](/api-reference/global-indirect-tax/exemptions/exemption-certificates/exemption-certificates#certificate-types).
    CreateExemptionRequest:
      type: object
      required:
        - identification_type
        - identification_number
        - country
        - state
        - reason
      properties:
        identification_type:
          $ref: '#/components/schemas/ExemptionIdentificationType'
        identification_number:
          type: string
          description: Identification number for the exemption.
        country:
          type: string
          description: ISO 3166-1 alpha-2 country code.
        state:
          type: string
          description: ISO 3166-2 subdivision code.
        reason:
          $ref: '#/components/schemas/ExemptionReason'
        end_date:
          type: string
          format: date
          description: >-
            ISO 8601 formatted date string indicating the expiration date of
            this particular exemption. For multistate exemption certificates,
            the expiration date can be different in different states..
        is_active:
          $ref: '#/components/schemas/IsExemptionActive'
    JurisdictionExemption:
      type: object
      properties:
        country:
          type: string
          description: ISO 3166-1 alpha-2 country code.
        state:
          type: string
          description: ISO 3166-2 subdivision code.
        reason:
          $ref: '#/components/schemas/ExemptionReason'
        is_active:
          $ref: '#/components/schemas/IsExemptionActive'
        end_date:
          type: string
          format: date
          nullable: true
          description: >-
            ISO 8601 formatted date string indicating the expiration date of
            this particular exemption. For multistate exemption certificates,
            the expiration date can be different in different states..
        identification_type:
          $ref: '#/components/schemas/ExemptionIdentificationType'
        identification_number:
          type: string
          description: Identification number for the exemption.
        is_expired:
          type: boolean
          description: Indicates if the exemption is expired.
        created_at:
          type: integer
          format: int64
          description: Timestamp in UTC when this jurisdiction exemption was created.
    ExemptionIdentificationType:
      type: string
      enum:
        - FEIN
        - TIN
        - DL
        - OTHER
      description: >-
        Enum representing the type of identification number used for the
        exemption. Federal EIN, Taxpayer Id Number, or Drivers License are
        common values for this field. "Other" is also accepted.
    ExemptionReason:
      type: string
      enum:
        - PURPOSE_RESALE
        - ENTITY_TYPE_NONPROFIT
        - GOVERNMENT
        - MANUFACTURER
        - AGRICULTURAL
        - OTHER
        - EXEMPT_PRODUCT
      description: Enum representing the reason for the exemption.
    IsExemptionActive:
      type: boolean
      description: >
        Indicates whether the exemption should be taken into account when
        performing tax calculations.  When `true`, applicable transactions will
        be exempted from tax (unless the certificate is expired).
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````