AvaTax APIs

The AvaTax API is a set of application programming interfaces provided by Avalara that allows businesses to integrate automated, real-time sales and use tax, VAT, and GST calculations directly into their own software applications. This allows for seamless and accurate tax compliance for every transaction, regardless of jurisdiction or product type.

OpenAPI Specification

avalara-avatax-rest-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Avalara AvaTax REST API
  description: >-
    The AvaTax REST API v2 is Avalara's enterprise tax service providing
    real-time sales tax, use tax, VAT, and GST calculations. It supports
    tax calculation for transactions, address validation, exemption
    certificate management, company and nexus configuration, and
    comprehensive tax content definitions across all US and international
    jurisdictions.
  version: '2.0'
  contact:
    name: Avalara Developer Relations
    url: https://developer.avalara.com/
    email: [email protected]
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
  termsOfService: https://legal.avalara.com/#siteterms
externalDocs:
  description: AvaTax REST API v2 Documentation
  url: https://developer.avalara.com/api-reference/avatax/rest/v2/
servers:
- url: https://rest.avatax.com
  description: AvaTax Production
- url: https://sandbox-rest.avatax.com
  description: AvaTax Sandbox
tags:
- name: Accounts
  description: Manage AvaTax accounts and license keys
- name: Addresses
  description: Validate and resolve addresses for tax jurisdiction determination
- name: Batches
  description: Submit and manage batch transaction processing
- name: Certificates
  description: Manage exemption certificates and CertExpress invitations
- name: Companies
  description: Manage company profiles, settings, and configurations
- name: Customers
  description: Manage customer records and their certificate associations
- name: Definitions
  description: Query tax content definitions, rates, and jurisdictions
- name: Free
  description: Free tax rate lookup endpoints
- name: Items
  description: Manage product items and their tax classification
- name: Locations
  description: Manage company locations and jurisdictions
- name: MultiDocument
  description: Multi-document transaction management
- name: Nexus
  description: Manage tax nexus declarations for companies
- name: Reports
  description: Generate and retrieve tax reports
- name: Settings
  description: Manage company settings
- name: Subscriptions
  description: Query account subscriptions
- name: TaxRules
  description: Manage tax rules and overrides for companies
- name: Transactions
  description: Create, adjust, commit, and void tax transactions
- name: Utilities
  description: Utility endpoints including ping and health checks
security:
- basicAuth: []
- bearerAuth: []
paths:
  /api/v2/transactions/create:
    post:
      operationId: createTransaction
      summary: Avalara Create a New Transaction
      description: >-
        Creates a new tax transaction. This is the primary method for calculating
        tax on a sale, purchase, or other taxable event. The transaction can be
        committed immediately or saved as a temporary document.
      tags:
      - Transactions
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateTransactionModel'
      responses:
        '200':
          description: Transaction created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionModel'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /api/v2/companies/{companyCode}/transactions/{transactionCode}:
    get:
      operationId: getTransactionByCode
      summary: Avalara Retrieve a Single Transaction by Code
      description: >-
        Retrieves a transaction by its company code and transaction code,
        optionally including line item details and summary information.
      tags:
      - Transactions
      parameters:
      - $ref: '#/components/parameters/companyCode'
      - name: transactionCode
        in: path
        required: true
        schema:
          type: string
        description: The transaction code to retrieve
      - name: $include
        in: query
        schema:
          type: string
        description: >-
          Comma-separated list of optional data to include
          (e.g., Lines, Details, Summary)
      responses:
        '200':
          description: Transaction retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionModel'
        '404':
          $ref: '#/components/responses/NotFound'
  /api/v2/companies/{companyCode}/transactions/{transactionCode}/adjust:
    post:
      operationId: adjustTransaction
      summary: Avalara Adjust a Committed Transaction
      description: >-
        Adjusts a committed transaction by replacing it with a modified version.
        The original transaction is voided and a new adjusted transaction is created.
      tags:
      - Transactions
      parameters:
      - $ref: '#/components/parameters/companyCode'
      - name: transactionCode
        in: path
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdjustTransactionModel'
      responses:
        '200':
          description: Transaction adjusted successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionModel'
  /api/v2/companies/{companyCode}/transactions/{transactionCode}/commit:
    post:
      operationId: commitTransaction
      summary: Avalara Commit a Transaction
      description: >-
        Marks a transaction as committed, indicating it has been finalized
        and should be reported to tax authorities.
      tags:
      - Transactions
      parameters:
      - $ref: '#/components/parameters/companyCode'
      - name: transactionCode
        in: path
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CommitTransactionModel'
      responses:
        '200':
          description: Transaction committed successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionModel'
  /api/v2/companies/{companyCode}/transactions/{transactionCode}/void:
    post:
      operationId: voidTransaction
      summary: Avalara Void a Transaction
      description: >-
        Voids an existing transaction, removing it from tax reporting.
        Only uncommitted or committed transactions can be voided.
      tags:
      - Transactions
      parameters:
      - $ref: '#/components/parameters/companyCode'
      - name: transactionCode
        in: path
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VoidTransactionModel'
      responses:
        '200':
          description: Transaction voided successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionModel'
  /api/v2/transactions/{transactionCode}/refund:
    post:
      operationId: refundTransaction
      summary: Avalara Create a Refund for a Transaction
      description: >-
        Creates a refund transaction based on an existing committed transaction.
        Supports full, partial, percentage, and tax-only refund types.
      tags:
      - Transactions
      parameters:
      - name: transactionCode
        in: path
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RefundTransactionModel'
      responses:
        '200':
          description: Refund transaction created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionModel'
  /api/v2/addresses/resolve:
    post:
      operationId: resolveAddress
      summary: Avalara Resolve and Validate an Address
      description: >-
        Validates and resolves an address to a standardized format with
        latitude, longitude, and tax jurisdiction information.
      tags:
      - Addresses
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddressValidationInfo'
      responses:
        '200':
          description: Address resolved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddressResolutionModel'
  /api/v2/companies:
    get:
      operationId: queryCompanies
      summary: Avalara List All Companies
      description: >-
        Retrieves a list of companies associated with the authenticated account,
        with support for filtering, sorting, and pagination.
      tags:
      - Companies
      parameters:
      - $ref: '#/components/parameters/filter'
      - $ref: '#/components/parameters/top'
      - $ref: '#/components/parameters/skip'
      - $ref: '#/components/parameters/orderBy'
      responses:
        '200':
          description: List of companies
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FetchResult_CompanyModel'
    post:
      operationId: createCompany
      summary: Avalara Create a New Company
      description: >-
        Creates a new company within the authenticated account. A company
        represents a legal entity that can calculate and report taxes.
      tags:
      - Companies
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CompanyModel'
      responses:
        '201':
          description: Company created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompanyModel'
  /api/v2/companies/{id}:
    get:
      operationId: getCompany
      summary: Avalara Retrieve a Company by ID
      tags:
      - Companies
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
      - name: $include
        in: query
        schema:
          type: string
      responses:
        '200':
          description: Company details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompanyModel'
    put:
      operationId: updateCompany
      summary: Avalara Update a Company
      tags:
      - Companies
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CompanyModel'
      responses:
        '200':
          description: Company updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompanyModel'
    delete:
      operationId: deleteCompany
      summary: Avalara Delete a Company
      tags:
      - Companies
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: Company deleted
  /api/v2/companies/initialize:
    post:
      operationId: initializeCompany
      summary: Avalara Initialize a New Company with Recommended Defaults
      description: >-
        Creates a new company with all recommended default settings, nexus,
        and tax configurations for the specified jurisdictions.
      tags:
      - Companies
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CompanyInitializationModel'
      responses:
        '200':
          description: Company initialized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompanyModel'
  /api/v2/companies/{companyId}/nexus:
    get:
      operationId: listNexusByCompany
      summary: Avalara List Nexus for a Company
      description: Retrieves all nexus declarations for the specified company.
      tags:
      - Nexus
      parameters:
      - $ref: '#/components/parameters/companyId'
      - $ref: '#/components/parameters/filter'
      - $ref: '#/components/parameters/top'
      - $ref: '#/components/parameters/skip'
      responses:
        '200':
          description: List of nexus declarations
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FetchResult_NexusModel'
    post:
      operationId: createNexus
      summary: Avalara Create Nexus for a Company
      tags:
      - Nexus
      parameters:
      - $ref: '#/components/parameters/companyId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/NexusModel'
      responses:
        '201':
          description: Nexus created
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/NexusModel'
  /api/v2/companies/{companyId}/certificates:
    get:
      operationId: queryCertificates
      summary: Avalara List Certificates for a Company
      description: >-
        Retrieves exemption certificates associated with the specified company.
      tags:
      - Certificates
      parameters:
      - $ref: '#/components/parameters/companyId'
      - $ref: '#/components/parameters/filter'
      - $ref: '#/components/parameters/top'
      - $ref: '#/components/parameters/skip'
      responses:
        '200':
          description: List of certificates
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FetchResult_CertificateModel'
    post:
      operationId: createCertificate
      summary: Avalara Create a New Certificate
      tags:
      - Certificates
      parameters:
      - $ref: '#/components/parameters/companyId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/CertificateModel'
      responses:
        '201':
          description: Certificate created
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CertificateModel'
  /api/v2/companies/{companyId}/customers:
    get:
      operationId: queryCustomers
      summary: Avalara List Customers for a Company
      tags:
      - Customers
      parameters:
      - $ref: '#/components/parameters/companyId'
      - $ref: '#/components/parameters/filter'
      - $ref: '#/components/parameters/top'
      - $ref: '#/components/parameters/skip'
      responses:
        '200':
          description: List of customers
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FetchResult_CustomerModel'
    post:
      operationId: createCustomer
      summary: Avalara Create a New Customer
      tags:
      - Customers
      parameters:
      - $ref: '#/components/parameters/companyId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/CustomerModel'
      responses:
        '201':
          description: Customer created
  /api/v2/companies/{companyId}/items:
    get:
      operationId: queryItems
      summary: Avalara List Items for a Company
      tags:
      - Items
      parameters:
      - $ref: '#/components/parameters/companyId'
      - $ref: '#/components/parameters/filter'
      - $ref: '#/components/parameters/top'
      - $ref: '#/components/parameters/skip'
      responses:
        '200':
          description: List of items
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FetchResult_ItemModel'
    post:
      operationId: createItems
      summary: Avalara Create Items for a Company
      tags:
      - Items
      parameters:
      - $ref: '#/components/parameters/companyId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/ItemModel'
      responses:
        '201':
          description: Items created
  /api/v2/companies/{companyId}/locations:
    get:
      operationId: queryLocations
      summary: Avalara List Locations for a Company
      tags:
      - Locations
      parameters:
      - $ref: '#/components/parameters/companyId'
      - $ref: '#/components/parameters/filter'
      - $ref: '#/components/parameters/top'
      - $ref: '#/components/parameters/skip'
      responses:
        '200':
          description: List of locations
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FetchResult_LocationModel'
    post:
      operationId: createLocations
      summary: Avalara Create Locations for a Company
      tags:
      - Locations
      parameters:
      - $ref: '#/components/parameters/companyId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/LocationModel'
      responses:
        '201':
          description: Locations created
  /api/v2/definitions/taxcodes:
    get:
      operationId: listTaxCodes
      summary: Avalara List All Tax Codes
      description: >-
        Retrieves the full list of Avalara-supported tax codes for product
        and service classification.
      tags:
      - Definitions
      parameters:
      - $ref: '#/components/parameters/filter'
      - $ref: '#/components/parameters/top'
      - $ref: '#/components/parameters/skip'
      responses:
        '200':
          description: List of tax codes
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FetchResult_TaxCodeModel'
  /api/v2/definitions/nexus/{country}:
    get:
      operationId: listNexusByCountry
      summary: Avalara List Nexus Options for a Country
      tags:
      - Definitions
      parameters:
      - name: country
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Nexus options for country
  /api/v2/definitions/jurisdictions:
    get:
      operationId: listJurisdictions
      summary: Avalara List All Jurisdictions
      tags:
      - Definitions
      parameters:
      - $ref: '#/components/parameters/filter'
      - $ref: '#/components/parameters/top'
      - $ref: '#/components/parameters/skip'
      responses:
        '200':
          description: List of jurisdictions
  /api/v2/definitions/countries:
    get:
      operationId: listCountries
      summary: Avalara List All Countries Supported by AvaTax
      tags:
      - Definitions
      parameters:
      - $ref: '#/components/parameters/filter'
      - $ref: '#/components/parameters/top'
      - $ref: '#/components/parameters/skip'
      responses:
        '200':
          description: List of countries
  /api/v2/definitions/entityusecodes:
    get:
      operationId: listEntityUseCodes
      summary: Avalara List All Entity Use Codes
      description: >-
        Returns the full list of entity use codes that can be applied to
        transactions to indicate exemptions or special tax handling.
      tags:
      - Definitions
      parameters:
      - $ref: '#/components/parameters/filter'
      - $ref: '#/components/parameters/top'
      - $ref: '#/components/parameters/skip'
      responses:
        '200':
          description: List of entity use codes
  /api/v2/taxrates/byaddress:
    get:
      operationId: taxRatesByAddress
      summary: Avalara Get Tax Rates by Address
      description: >-
        Free tax rates lookup by street address. Returns the estimated
        combined tax rate for a given location.
      tags:
      - Free
      parameters:
      - name: line1
        in: query
        required: true
        schema:
          type: string
        description: Street address line 1
      - name: city
        in: query
        schema:
          type: string
      - name: region
        in: query
        required: true
        schema:
          type: string
        description: State or province code
      - name: postalCode
        in: query
        required: true
        schema:
          type: string
      - name: country
        in: query
        required: true
        schema:
          type: string
        description: Two-character ISO 3166 country code
      responses:
        '200':
          description: Tax rate information
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaxRateModel'
  /api/v2/taxrates/bypostalcode:
    get:
      operationId: taxRatesByPostalCode
      summary: Avalara Get Tax Rates by Postal Code
      description: >-
        Free tax rates lookup by postal code. Returns estimated
        combined tax rate for a given postal code.
      tags:
      - Free
      parameters:
      - name: country
        in: query
        required: true
        schema:
          type: string
      - name: postalCode
        in: query
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Tax rate information
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaxRateModel'
  /api/v2/companies/{companyId}/batches:
    get:
      operationId: listBatches
      summary: Avalara List Batches for a Company
      tags:
      - Batches
      parameters:
      - $ref: '#/components/parameters/companyId'
      - $ref: '#/components/parameters/filter'
      - $ref: '#/components/parameters/top'
      - $ref: '#/components/parameters/skip'
      responses:
        '200':
          description: List of batches
    post:
      operationId: createBatch
      summary: Avalara Create a New Batch
      tags:
      - Batches
      parameters:
      - $ref: '#/components/parameters/companyId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BatchModel'
      responses:
        '201':
          description: Batch created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BatchModel'
  /api/v2/companies/{companyId}/taxrules:
    get:
      operationId: listTaxRules
      summary: Avalara List Tax Rules for a Company
      tags:
      - TaxRules
      parameters:
      - $ref: '#/components/parameters/companyId'
      - $ref: '#/components/parameters/filter'
      - $ref: '#/components/parameters/top'
      - $ref: '#/components/parameters/skip'
      responses:
        '200':
          description: List of tax rules
    post:
      operationId: createTaxRules
      summary: Avalara Create Tax Rules for a Company
      tags:
      - TaxRules
      parameters:
      - $ref: '#/components/parameters/companyId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/TaxRuleModel'
      responses:
        '201':
          description: Tax rules created
  /api/v2/companies/{companyId}/settings:
    get:
      operationId: listSettings
      summary: Avalara List Settings for a Company
      tags:
      - Settings
      parameters:
      - $ref: '#/components/parameters/companyId'
      - $ref: '#/components/parameters/filter'
      - $ref: '#/components/parameters/top'
      - $ref: '#/components/parameters/skip'
      responses:
        '200':
          description: List of settings
  /api/v2/accounts/{id}:
    get:
      operationId: getAccount
      summary: Avalara Retrieve a Single Account
      tags:
      - Accounts
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
      - name: $include
        in: query
        schema:
          type: string
      responses:
        '200':
          description: Account details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountModel'
  /api/v2/accounts:
    get:
      operationId: queryAccounts
      summary: Avalara List All Accounts
      tags:
      - Accounts
      parameters:
      - $ref: '#/components/parameters/filter'
      - $ref: '#/components/parameters/top'
      - $ref: '#/components/parameters/skip'
      responses:
        '200':
          description: List of accounts
  /api/v2/accounts/{id}/subscriptions:
    get:
      operationId: listSubscriptionsByAccount
      summary: Avalara List Subscriptions for an Account
      tags:
      - Subscriptions
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
      - $ref: '#/components/parameters/filter'
      responses:
        '200':
          description: List of subscriptions
  /api/v2/companies/{companyId}/reports:
    get:
      operationId: listReports
      summary: Avalara List Reports for a Company
      tags:
      - Reports
      parameters:
      - $ref: '#/components/parameters/companyId'
      responses:
        '200':
          description: List of reports
  /api/v2/reports/{id}:
    get:
      operationId: getReport
      summary: Avalara Retrieve a Single Report
      tags:
      - Reports
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: Report details
  /api/v2/multidocument/transactions/create:
    post:
      operationId: createMultiDocumentTransaction
      summary: Avalara Create a Multi-document Transaction
      description: >-
        Creates a transaction that spans multiple companies or jurisdictions,
        managing related documents as a single group.
      tags:
      - MultiDocument
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateMultiDocumentModel'
      responses:
        '200':
          description: Multi-document transaction created
  /api/v2/utilities/ping:
    get:
      operationId: ping
      summary: Avalara Test Connectivity and Authentication
      description: >-
        Tests connectivity to the AvaTax service and validates
        authentication credentials.
      tags:
      - Utilities
      security: []
      responses:
        '200':
          description: Ping successful
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PingResultModel'
  /api/v2/utilities/subscriptions:
    get:
      operationId: listMySubscriptions
      summary: Avalara List Subscriptions for the Current Account
      tags:
      - Utilities
      responses:
        '200':
          description: Subscriptions for authenticated account
components:
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: >-
        Use your AvaTax username/password or accountId/licenseKey
        as basic auth credentials
    bearerAuth:
      type: http
      scheme: bearer
      description: OAuth 2.0 bearer token
  parameters:
    companyCode:
      name: companyCode
      in: path
      required: true
      schema:
        type: string
      description: The company code identifying the company
    companyId:
      name: companyId
      in: path
      required: true
      schema:
        type: integer
      description: The numeric ID of the company
    filter:
      name: $filter
      in: query
      schema:
        type: string
      description: OData filter expression for result filtering
    top:
      name: $top
      in: query
      schema:
        type: integer
        default: 1000
      description: Maximum number of results to return
    skip:
      name: $skip
      in: query
      schema:
        type: integer
        default: 0
      description: Number of results to skip for pagination
    orderBy:
      name: $orderBy
      in: query
      schema:
        type: string
      description: Field name for sorting results
  responses:
    BadRequest:
      description: Invalid request parameters
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResult'
    Unauthorized:
      description: Authentication credentials missing or invalid
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResult'
    NotFound:
      description: Requested resource not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResult'
  schemas:
    CreateTransactionModel:
      type: object
      required:
      - type
      - companyCode
      - date
      - customerCode
      - lines
      properties:
        type:
          type: string
          enum:
          - SalesOrder
          - SalesInvoice
          - PurchaseOrder
          - PurchaseInvoice
          - ReturnOrder
          - ReturnInvoice
          description: The type of document to create
        companyCode:
          type: string
          description: Company code of the company creating this transaction
        date:
          type: string
          format: date
          description: Date of the transaction
        customerCode:
          type: string
          description: Unique code identifying the customer
        commit:
          type: boolean
          default: false
          description: Whether to commit the transaction immediately
        currencyCode:
          type: string
          description: Three-character ISO 4217 currency code
        addresses:
          type: object
          properties:
            shipFrom:
              $ref: '#/components/schemas/AddressInfo'
            shipTo:
              $ref: '#/components/schemas/AddressInfo'
            pointOfOrderOrigin:
              $ref: '#/components/schemas/AddressInfo'
            pointOfOrderAcceptance:
              $ref: '#/components/schemas/AddressInfo'
        lines:
          type: array
          items:
            $ref: '#/components/schemas/LineItemModel'
          description: Line items for the transaction
    TransactionModel:
      type: object
      properties:
        id:
          type: integer
          format: int64
          description: Unique ID of the transaction
        code:
          type: string
          description: Transaction code
        companyId:
          type: integer
          description: Company ID that owns this transaction
        date:
          type: string
          format: date
          description: Date of the transaction
        status:
          type: string
          enum:
          - Temporary
          - Saved
          - Posted
          - Committed
          - Cancelled
          - Adjusted
          description: Current status of the transaction
        type:
          type: string
          description: Document type
        totalAmount:
          type: number
          format: double
          description: Total amount of the transaction before tax
        totalTax:
          type: number
          format: double
          description: Total tax calculated for the transaction
        totalTaxable:
          type: number
          format: double
          description: Total taxable amount
        totalExempt:
          type: number
          format: double
          description: Total exe

# --- truncated at 32 KB (51 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/avalara/refs/heads/main/openapi/avalara-avatax-rest-openapi.yml