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

# Calculate tax

> Calculate tax for a transaction before you create it.



## OpenAPI

````yaml /developers/openapi/resources-v2.json post /public/v2/taxes/calculate/
openapi: 3.1.0
info:
  title: DualEntry Public API
  version: 2.0.0
  description: ''
servers:
  - url: https://api.dualentry.com
    description: Production environment
  - url: https://api-dev.dualentry.com
    description: Development environment (for testing)
security: []
tags:
  - name: Health
    description: >-
      Monitor API availability and service status. Use these endpoints to verify
      connectivity and check if the API is operational.
  - name: Webhooks
    description: >-
      Register webhook endpoints to receive real-time event notifications when
      records change in your organization. Manage subscriptions, view available
      topics, and inspect delivery history.
  - name: Accounts
    description: >-
      Manage your chart of accounts. Create and maintain the accounts used to
      categorize financial transactions, including assets, liabilities, equity,
      revenue, and expenses.
  - name: Budgets
    description: >-
      Manage financial budgets. Create and track income statement and balance
      sheet budgets with monthly cell values, actuals comparison, and
      classification filtering.
  - name: Companies
    description: >-
      Access and manage company information. Retrieve details about your
      organization including legal name, tax identifiers, addresses, and
      accounting preferences.
  - name: Customers
    description: >-
      Manage customer records. Create, update, and track customers who purchase
      goods or services from your organization, including contact information,
      billing addresses, and payment terms.
  - name: Contracts
    description: >-
      Manage revenue recognition contracts. Create, retrieve, and update
      contracts with performance obligations, manage obligation usage, and
      create change orders (v2).
  - name: Items
    description: >-
      Manage products and services. Define items that appear on invoices and
      bills, including pricing, descriptions, and associated accounts for
      revenue or expense tracking.
  - name: Vendors
    description: >-
      Manage vendor and supplier records. Track businesses and individuals from
      whom you purchase goods or services, including contact details, payment
      terms, and tax information.
  - name: Journal Entries
    description: >-
      Create and manage manual journal entries. Record direct debits and credits
      to accounts for adjustments, accruals, reclassifications, and other
      accounting transactions.
  - name: Invoices
    description: >-
      Manage sales invoices. Create and track invoices sent to customers for
      goods or services rendered, including line items, taxes, discounts, and
      payment status.
  - name: Sales Orders
    description: >-
      Create and manage sales orders. Track customer orders for goods or
      services before invoicing, including line items, quantities, fulfillment
      status, and invoicing progress.
  - name: Bills
    description: >-
      Manage vendor bills and payables. Record and track bills received from
      vendors for goods or services purchased, including line items, due dates,
      and payment tracking.
  - name: Customer Prepayments
    description: >-
      Track advance payments from customers. Access prepayments received before
      goods or services are delivered, which can be applied to future invoices.
  - name: Customer Prepayment Applications
    description: >-
      Apply customer prepayments and credits to invoices. Record applications of
      prepayments or credit memos to reduce invoice balances.
  - name: Customer Deposits
    description: >-
      Manage customer deposit transactions. Record and track deposits received
      from customers as security or partial payment, held in liability accounts
      until earned or refunded.
  - name: Customer Refunds
    description: >-
      Process and track customer refunds. Record refunds issued to customers for
      overpayments, returns, or cancelled transactions.
  - name: Customer Credits
    description: >-
      Manage credit memos for customers. Issue credits for returned goods,
      billing adjustments, or discounts that reduce customer balances or can be
      applied to future invoices.
  - name: Cash Sales
    description: >-
      Record immediate cash sales transactions. Track sales where payment is
      received at the time of sale, including point-of-sale transactions and
      cash receipts.
  - name: Customer Payments
    description: >-
      Record and manage customer payments. Track payments received from
      customers and apply them to outstanding invoices, including partial
      payments and overpayments.
  - name: Recurring Invoices
    description: >-
      Automate recurring billing. Set up and manage templates for invoices that
      are automatically generated on a regular schedule (e.g., monthly
      subscriptions).
  - name: Recurring Bills
    description: >-
      Automate recurring expenses. Configure templates for bills that repeat on
      a regular basis (e.g., monthly rent, subscriptions) to streamline expense
      tracking.
  - name: Recurring Journal Entries
    description: >-
      Automate recurring journal entries. Create templates for journal entries
      that occur regularly (e.g., monthly depreciation, amortization) to ensure
      consistent accounting treatment.
  - name: Classifications
    description: >-
      Manage custom classification dimensions. Create and maintain
      classification categories (e.g., departments, locations, projects) used to
      tag and analyze transactions across multiple dimensions.
  - name: Classifications Lines
    description: >-
      Manage classification values. Define the specific values within each
      classification category that can be assigned to transaction line items for
      detailed reporting and analysis.
  - name: Custom Fields
    description: >-
      Manage custom field definitions. Extend records with organization-specific
      attributes — name, type (text, number, boolean, date, single_select,
      multi_select, currency, link, paragraph), default value, options, and
      which record types (invoice, bill, customer, vendor, etc.) and companies
      the field applies to. Values are set via the `custom_fields` attribute on
      each record's create/update endpoint.
  - name: Purchase Orders
    description: >-
      Create and track purchase orders. Manage formal requests to vendors for
      goods or services, including approval workflows, receiving tracking, and
      bill matching.
  - name: Vendor Payments
    description: >-
      Record and manage vendor payments. Track payments made to vendors and
      apply them to outstanding bills and credits, including partial payments
      and overpayments.
  - name: Vendor Prepayments
    description: >-
      Track advance payments to vendors. Record prepayments made before goods or
      services are received, which can be applied to future bills.
  - name: Vendor Prepayment Applications
    description: >-
      Apply vendor prepayments to bills. Record applications of prepayments to
      reduce bill balances and track amounts owed.
  - name: Vendor Credits
    description: >-
      Manage vendor credit memos. Record credits from vendors for returned
      goods, billing adjustments, or discounts that reduce amounts owed or can
      be applied to future bills.
  - name: Vendor Refunds
    description: >-
      Process and track vendor refunds. Record refunds received from vendors for
      overpayments, returns, or cancelled transactions.
  - name: Paper Checks
    description: >-
      Manage paper check printing. Create, queue, and batch print paper checks
      for vendor payments, direct expenses, vendor prepayments, and customer
      refunds.
  - name: Direct Expenses
    description: >-
      Record direct expense transactions. Track payments made directly from a
      bank or credit card account for expenses, without going through the
      accounts payable process.
  - name: Bank Transfers
    description: >-
      Manage bank-to-bank transfers. Record and track transfers between bank and
      credit card accounts, including multi-currency transfers with exchange
      rate handling.
  - name: Bank Match
    description: >-
      Reconcile bank-feed rows against accounting transactions. List bank rows,
      trigger the matching pipeline, read AI suggestions, and confirm or undo
      matches. V2 API only.
  - name: Bank Connections
    description: >-
      Register and list customer-built inbound bank connection feeds. Create
      connections and accounts with source_type=customer_api, then push
      transactions separately. V2 API only.
  - name: Fixed Assets
    description: >-
      Manage fixed assets and capital equipment. Create, update, and track
      long-lived tangible assets including depreciation schedules, account
      assignments, and asset lifecycle management.
  - name: Intercompany Journal Entries
    description: >-
      Create and manage intercompany journal entries. Record GL activity that
      spans two or more companies within the same organization, with per-line
      company assignment and automatic intercompany elimination.
  - name: Depreciation Books
    description: >-
      Discover available depreciation books for multi-book depreciation. Each
      organization has a posting book (BOOK) and may have additional tax books
      (FEDERAL, AMT, STATE_*). V2 API only.
  - name: VAT Rates
    description: >-
      Look up available VAT (Value Added Tax) rates for your organization. Use
      these IDs as `vat_rate_id` on transaction line items. Rates are scoped by
      country and include standard, reduced, zero-rated, exempt, and reverse
      charge types. V2 API only.
  - name: GST Tax Rates
    description: >-
      Look up available GST (Goods and Services Tax) rates for your
      organization. Use these IDs as `gst_tax_rate_id` on transaction line
      items. Covers AU, NZ, SG, IN, CA GST regimes and MY SST, with
      per-component breakdowns (e.g. CGST+SGST for India). V2 API only.
  - name: Product Tax Codes
    description: >-
      Manage organization product tax codes and discover global product tax
      codes. Use these IDs as `product_tax_code_id` on item payloads. V2 API
      only.
  - name: Approval Policies
    description: >-
      Manage approval workflows and policies. Define approval rules, steps,
      conditions, and approvers for different record types. Monitor workflow
      execution states and view approval history.
  - name: Inbox
    description: >-
      View pending approvals and approval status. Access transactions and
      records awaiting approval across the organization, including full approval
      workflow details, approvers, and action history.
  - name: Data Exports
    description: >-
      Request off-cycle refreshes of your organization's data export to its
      configured destination (for example a Snowflake warehouse) and poll their
      status. Exports also run automatically on a schedule — this is the
      on-demand supplement. Requests are accepted and orchestrated by DualEntry;
      there is no SLA on when a run starts.
paths:
  /public/v2/taxes/calculate/:
    post:
      tags:
        - Taxes
      summary: Calculate tax
      description: >-
        Calculate tax for a transaction before you create it.


        This is the same calculator the DualEntry UI uses. Public invoice create
        does not

        calculate tax. Call this endpoint first, copy the result onto each line
        `tax`

        object, then POST the invoice (or bill).


        Required:

        - `company_id`

        - `customer_id` (money-in) or `vendor_id` (money-out), not both


        Usually also send:

        - `items` with `item_id`, `quantity`, and `unit_price`

        - `transaction_buyer_address` for US sales tax (destination / shipping
        address)

        - `transaction_date` and `currency_code` for US sales tax

        - `supply_date` to filter VAT/GST rates by validity


        The response `type` is `SALES_TAX`, `VAT`, `GST`, or `NONE`. `NONE` is
        HTTP 200

        with a reason (for example a missing buyer address). It is not an error.


        Map each result line onto invoice `items[].tax`:

        - `tax_code` → `tax.code`

        - `tax_rate` → `tax.rate`

        - `tax_amount` → `tax.amount`

        - `is_taxable` → `tax.is_taxable`

        - `tax_exempt_amount` → `tax.tax_exempt_amount`

        - `tax_metadata` → `tax.tax_metadata`

        - `selected_vat_rate_id` → `tax.vat_rate_id`

        - `selected_gst_tax_rate_id` → `tax.gst_tax_rate_id`


        For Canada GST and VAT, the first call returns `available_rates`. Pick a
        rate,

        send `selected_gst_tax_rate_id` or `selected_vat_rate_id` on the line,
        calculate

        again, then create the invoice.


        A shipping address on the invoice payload does not trigger tax. Pass
        that

        address as `transaction_buyer_address` on this calculate call.


        V2 API only.
      operationId: core_api_public_v2_taxes_calculate_tax
      parameters:
        - name: Idempotency-Key
          in: header
          required: false
          schema:
            type: string
            maxLength: 255
          description: >-
            Optional. A unique value (a UUID works well) identifying this
            operation. If the request is repeated with the same key, the
            original response is replayed instead of the operation running
            again, so a retry cannot create a duplicate record. Results are
            replayable for 48 hours. Reusing a key with a different request body
            returns 422.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TaxCalculationV2In'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaxResultV2Out'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaxErrorOut'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '422':
          description: Unprocessable Content
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaxErrorOut'
components:
  schemas:
    TaxCalculationV2In:
      properties:
        company_id:
          description: Company ID
          example: 1
          title: Company Id
          type: integer
        customer_id:
          description: Customer ID (money-in records)
          example: 1
          title: Customer Id
          type:
            - integer
            - 'null'
        vendor_id:
          description: Vendor ID (money-out records)
          example: null
          title: Vendor Id
          type:
            - integer
            - 'null'
        record_type:
          anyOf:
            - $ref: '#/components/schemas/TaxableRecordType'
            - type: 'null'
          description: >-
            Optional taxable record type. Customer/vendor credits use
            ReturnOrder estimates.
          example: invoice
        credit_source:
          anyOf:
            - $ref: '#/components/schemas/CreditSourceIn'
            - type: 'null'
          description: >-
            Optional linked source for customer/vendor credits. Used to pin
            AvaTax taxOverride.taxDate to the original sale/purchase.
          example:
            record_id: 1
            record_type: invoice
        transaction_buyer_address:
          anyOf:
            - $ref: '#/components/schemas/TaxLocationIn'
            - type: 'null'
          description: >-
            Buyer address on the transaction — required for sales tax, ignored
            for VAT
          example:
            city: San Francisco
            country: US
            line1: 123 Main St
            line2: Suite 100
            postal_code: '94105'
            region: CA
        transaction_date:
          description: Transaction date — required for sales tax
          example: '2025-08-29'
          title: Transaction Date
          format: date
          type:
            - string
            - 'null'
        supply_date:
          description: >-
            Tax point / date of supply — filters VAT and GST rates by valid_from
            / valid_to
          example: '2025-08-29'
          title: Supply Date
          format: date
          type:
            - string
            - 'null'
        items:
          description: List of items to calculate tax for
          example:
            - discount_type: PERCENTAGE
              discount_value: '10.00'
              item_id: -1
              quantity: '1.000000'
              unit_price: '100.000000'
            - item_id: -2
              quantity: '2.000000'
              record_level_discount_amount: '5.00'
              selected_vat_rate_id: 1
              unit_price: '50.000000'
          items:
            $ref: '#/components/schemas/TaxedItemIn'
          title: Items
          type: array
        currency_code:
          anyOf:
            - $ref: '#/components/schemas/SystemCurrencies'
            - type: 'null'
          description: Currency code (ISO 4217) — required for sales tax
          example: USD
      required:
        - company_id
      title: TaxCalculationV2In
      type: object
    TaxResultV2Out:
      properties:
        type:
          $ref: '#/components/schemas/TaxResultType'
        data:
          anyOf:
            - $ref: '#/components/schemas/SalesTaxDataOut'
            - $ref: '#/components/schemas/VatDataOut'
            - $ref: '#/components/schemas/GstDataOut'
            - $ref: '#/components/schemas/NoneTaxDataOut'
          title: Data
      required:
        - type
        - data
      title: TaxResultV2Out
      type: object
    TaxErrorOut:
      properties:
        success:
          default: false
          title: Success
          type: boolean
        errors:
          additionalProperties:
            anyOf:
              - items:
                  type: string
                type: array
              - type: string
          title: Errors
          type: object
      required:
        - errors
      title: TaxErrorOut
      type: object
    ErrorSchema:
      properties:
        success:
          const: false
          default: false
          title: Success
          type: boolean
        errors:
          additionalProperties:
            items:
              type: string
            type: array
          title: Errors
          type: object
      required:
        - errors
      title: ErrorSchema
      type: object
    TaxableRecordType:
      enum:
        - invoice
        - cash_sale
        - customer_credit
        - sales_order
        - bill
        - direct_expense
        - vendor_credit
        - purchase_order
      title: TaxableRecordType
      type: string
    CreditSourceIn:
      properties:
        record_type:
          $ref: '#/components/schemas/TaxableRecordType'
          description: >-
            Linked source record type (invoice/cash_sale for customer credits;
            bill/direct_expense for vendor credits).
          example: invoice
        record_id:
          description: Linked source record ID.
          example: 1
          title: Record Id
          type: integer
      required:
        - record_type
        - record_id
      title: CreditSourceIn
      type: object
    TaxLocationIn:
      properties:
        country:
          $ref: '#/components/schemas/SystemCountries'
          description: Country code
          example: US
        region:
          anyOf:
            - $ref: '#/components/schemas/UsRegions'
            - type: string
            - type: 'null'
          description: State/region code
          example: CA
          title: Region
        postal_code:
          description: Postal/ZIP code
          example: '94105'
          title: Postal Code
          type: string
        city:
          description: City name
          example: San Francisco
          title: City
          type:
            - string
            - 'null'
        line1:
          description: Street address line 1
          example: 123 Main St
          title: Line1
          type:
            - string
            - 'null'
        line2:
          description: Street address line 2
          example: Suite 100
          title: Line2
          type:
            - string
            - 'null'
      required:
        - country
        - postal_code
      title: TaxLocationIn
      type: object
    TaxedItemIn:
      properties:
        item_id:
          description: Item ID (null for expense lines)
          example: 1
          title: Item Id
          type:
            - integer
            - 'null'
        quantity:
          anyOf:
            - type: number
            - pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
              type: string
          description: Quantity of the item
          example: '1.000000'
          title: Quantity
        unit_price:
          anyOf:
            - type: number
            - pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
              type: string
          description: Unit price of the item
          example: '100.000000'
          title: Unit Price
        discount_type:
          anyOf:
            - $ref: '#/components/schemas/DiscountType'
            - type: 'null'
          description: Type of discount (PERCENTAGE or FIXED)
          example: PERCENTAGE
        discount_value:
          anyOf:
            - type: number
            - pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
              type: string
            - type: 'null'
          description: Discount value (10 for 10% or 10.00 for $10)
          example: '10.00'
          title: Discount Value
        selected_vat_rate_id:
          description: >-
            Selected VAT rate ID (from available_rates) — used in VAT
            calculations
          title: Selected Vat Rate Id
          type:
            - integer
            - 'null'
        selected_gst_tax_rate_id:
          description: >-
            Selected GST tax rate ID (from available_rates) — used in GST
            calculations
          title: Selected Gst Tax Rate Id
          type:
            - integer
            - 'null'
        record_level_discount_amount:
          anyOf:
            - type: number
            - pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
              type: string
            - type: 'null'
          description: Record-level discount amount allocated to this line
          example: '5.00'
          title: Record Level Discount Amount
      required:
        - quantity
        - unit_price
      title: TaxedItemIn
      type: object
    SystemCurrencies:
      enum:
        - AED
        - AFN
        - ALL
        - AMD
        - ANG
        - AOA
        - ARS
        - AUD
        - AWG
        - AZN
        - BAM
        - BBD
        - BDT
        - BGN
        - BHD
        - BIF
        - BMD
        - BND
        - BOB
        - BRL
        - BSD
        - BTN
        - BWP
        - BYN
        - BZD
        - CAD
        - CDF
        - CHF
        - CLF
        - CLP
        - CNY
        - COP
        - CRC
        - CUP
        - CVE
        - CZK
        - DJF
        - DKK
        - DOP
        - DZD
        - EGP
        - ERN
        - ETB
        - EUR
        - FJD
        - FKP
        - GBP
        - GEL
        - GHS
        - GIP
        - GMD
        - GNF
        - GTQ
        - GYD
        - HKD
        - HNL
        - HTG
        - HUF
        - IDR
        - ILS
        - INR
        - IQD
        - IRR
        - ISK
        - JMD
        - JOD
        - JPY
        - KES
        - KGS
        - KHR
        - KMF
        - KPW
        - KRW
        - KWD
        - KYD
        - KZT
        - LAK
        - LBP
        - LKR
        - LRD
        - LSL
        - LYD
        - MAD
        - MDL
        - MGA
        - MKD
        - MMK
        - MNT
        - MOP
        - MRU
        - MUR
        - MVR
        - MWK
        - MXN
        - MYR
        - MZN
        - NAD
        - NGN
        - NIO
        - NOK
        - NPR
        - NZD
        - OMR
        - PAB
        - PEN
        - PGK
        - PHP
        - PKR
        - PLN
        - PYG
        - QAR
        - RON
        - RSD
        - RUB
        - RWF
        - SAR
        - SBD
        - SCR
        - SDG
        - SEK
        - SGD
        - SHP
        - SLL
        - SOS
        - SRD
        - STN
        - SVC
        - SYP
        - SZL
        - THB
        - TJS
        - TMT
        - TND
        - TOP
        - TRY
        - TTD
        - TWD
        - TZS
        - UAH
        - UGX
        - USD
        - UYU
        - UZS
        - VES
        - VND
        - VUV
        - WST
        - XAF
        - XAG
        - XAU
        - XCD
        - XDR
        - XOF
        - XPD
        - XPF
        - XPT
        - YER
        - ZAR
        - ZMW
        - ZWL
      title: SystemCurrencies
      type: string
    TaxResultType:
      enum:
        - SALES_TAX
        - VAT
        - GST
        - NONE
      title: TaxResultType
      type: string
    SalesTaxDataOut:
      properties:
        items:
          items:
            $ref: '#/components/schemas/TaxItemOut'
          title: Items
          type: array
        total_tax_amount:
          examples:
            - '20'
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
          title: Total Tax Amount
          type: string
        total_with_tax:
          examples:
            - '120'
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
          title: Total With Tax
          type: string
        tax_applicable:
          title: Tax Applicable
          type: boolean
        nexus_detected:
          title: Nexus Detected
          type: boolean
        destination:
          anyOf:
            - $ref: '#/components/schemas/TaxLocationIn'
            - type: 'null'
        tax_rate_for_destination:
          title: Tax Rate For Destination
          examples:
            - '0.2000'
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,6}0*$
          type:
            - string
            - 'null'
        calculation_source:
          title: Calculation Source
          type:
            - string
            - 'null'
      required:
        - items
        - total_tax_amount
        - total_with_tax
        - tax_applicable
        - nexus_detected
        - destination
        - tax_rate_for_destination
      title: SalesTaxDataOut
      type: object
    VatDataOut:
      properties:
        is_vat_applicable:
          title: Is Vat Applicable
          type: boolean
        vat_country:
          title: Vat Country
          type:
            - string
            - 'null'
        company_vat_number:
          title: Company Vat Number
          type:
            - string
            - 'null'
        counterparty_vat_number:
          title: Counterparty Vat Number
          type:
            - string
            - 'null'
        rate_selection:
          $ref: '#/components/schemas/TaxRateSelection'
        available_rates:
          items:
            $ref: '#/components/schemas/VatAvailableRateOut'
          title: Available Rates
          type: array
        items:
          items:
            $ref: '#/components/schemas/VatItemOut'
          title: Items
          type: array
        total_tax_amount:
          title: Total Tax Amount
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
          type:
            - string
            - 'null'
        total_with_tax:
          title: Total With Tax
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
          type:
            - string
            - 'null'
        tax_registration_numbers:
          anyOf:
            - $ref: '#/components/schemas/TaxRegistrationNumbersSnapshot'
            - type: 'null'
        calculation_source:
          anyOf:
            - $ref: '#/components/schemas/TaxCalculationSource'
            - type: 'null'
      required:
        - is_vat_applicable
        - vat_country
        - company_vat_number
        - counterparty_vat_number
        - rate_selection
        - available_rates
        - items
      title: VatDataOut
      type: object
    GstDataOut:
      properties:
        is_gst_applicable:
          title: Is Gst Applicable
          type: boolean
        gst_country:
          title: Gst Country
          type: string
        company_gst_number:
          title: Company Gst Number
          type:
            - string
            - 'null'
        counterparty_gst_number:
          title: Counterparty Gst Number
          type:
            - string
            - 'null'
        company_pst_number:
          description: >-
            Canada (BC/SK/MB/QC): company PST or QST registration for
            place_of_supply; null elsewhere or HST-only provinces.
          title: Company Pst Number
          type:
            - string
            - 'null'
        counterparty_pst_number:
          description: >-
            Canada: counterparty PST or QST for place_of_supply when applicable;
            null otherwise.
          title: Counterparty Pst Number
          type:
            - string
            - 'null'
        place_of_supply:
          title: Place Of Supply
          type:
            - string
            - 'null'
        gst_supply_category:
          anyOf:
            - $ref: '#/components/schemas/GstSupplyCategory'
            - type: 'null'
          description: >-
            India only (today): INTRA_STATE (CGST+SGST) vs INTER_STATE (IGST)
            from seller vs buyer state codes. Null for AU/NZ/SG/CA, and for
            India when the seller state cannot be resolved.
        rate_selection:
          anyOf:
            - $ref: '#/components/schemas/TaxRateSelection'
            - type: 'null'
          description: Reserved for Provider calculated fixed-rate GST
        available_rates:
          items:
            $ref: '#/components/schemas/GstAvailableRateOut'
          title: Available Rates
          type: array
        items:
          items:
            $ref: '#/components/schemas/GstItemOut'
          title: Items
          type: array
        total_tax_amount:
          title: Total Tax Amount
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
          type:
            - string
            - 'null'
        total_with_tax:
          title: Total With Tax
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
          type:
            - string
            - 'null'
        tax_registration_numbers:
          anyOf:
            - $ref: '#/components/schemas/TaxRegistrationNumbersSnapshot'
            - type: 'null'
          description: >-
            Snapshot-shape of all relevant registration numbers for both
            parties.
        calculation_source:
          anyOf:
            - $ref: '#/components/schemas/TaxCalculationSource'
            - type: 'null'
      required:
        - is_gst_applicable
        - gst_country
        - company_gst_number
        - counterparty_gst_number
        - place_of_supply
        - available_rates
        - items
      title: GstDataOut
      type: object
    NoneTaxDataOut:
      properties:
        reason:
          title: Reason
          type: string
      required:
        - reason
      title: NoneTaxDataOut
      type: object
    SystemCountries:
      enum:
        - AA
        - AB
        - AC
        - AD
        - AE
        - AF
        - AG
        - AH
        - AI
        - AJ
        - AK
        - AL
        - AM
        - AN
        - AO
        - AP
        - AQ
        - AR
        - AS
        - AT
        - AU
        - AV
        - AW
        - AX
        - AY
        - AZ
        - BA
        - BB
        - BC
        - BD
        - BE
        - BF
        - BG
        - BH
        - BI
        - BJ
        - BK
        - BL
        - BM
        - BN
        - BO
        - BP
        - BQ
        - BR
        - BS
        - BT
        - BU
        - BV
        - BW
        - BX
        - BY
        - BZ
        - CA
        - CB
        - CC
        - CD
        - CE
        - CF
        - CG
        - CH
        - CI
        - CJ
        - CK
        - CL
        - CM
        - CN
        - CO
        - CP
        - CQ
        - CR
        - CS
        - CT
        - CU
        - CV
        - CW
        - CX
        - CY
        - CZ
        - DA
        - DB
        - DC
        - DD
        - DE
        - DF
        - DG
        - DH
        - DI
        - DJ
        - DK
        - DL
        - DM
        - DN
        - DO
        - DP
        - DQ
        - DR
        - DS
        - DT
        - DU
        - DV
        - DW
        - DX
        - DY
        - DZ
        - EA
        - EB
        - EC
        - ED
        - EE
        - EF
        - EG
        - EH
        - EI
        - EJ
        - EK
        - EL
        - EM
        - EN
        - EO
        - EP
        - EQ
        - ER
        - ES
        - ET
        - EU
        - EV
        - EW
        - EX
        - EY
        - EZ
        - FA
        - FB
        - FC
        - FD
        - FE
        - FF
        - FG
        - FH
        - FI
        - FJ
        - FK
        - FL
        - FM
        - FN
        - FO
        - FP
        - FQ
        - FR
        - FS
        - FT
        - FU
        - FV
        - FW
        - FX
        - FY
        - FZ
        - GA
        - GB
        - GC
        - GD
        - GE
        - GF
        - GG
        - GH
        - GI
        - GJ
        - GK
        - GL
        - GM
        - GN
        - GO
        - GP
        - GQ
        - GR
        - GS
        - GT
        - GU
        - GV
        - GW
        - GX
        - GY
        - GZ
        - HA
        - HB
        - HC
        - HD
        - HE
        - HF
        - HG
        - HH
        - HI
        - HJ
        - HK
        - HL
        - HM
        - HN
        - HO
        - HP
        - HQ
        - HR
        - HS
        - HT
        - HU
        - HV
        - HW
        - HX
        - HY
        - HZ
        - IA
        - IB
        - IC
        - ID
        - IE
        - IF
        - IG
        - IH
        - II
        - IJ
        - IK
        - IL
        - IM
        - IN
        - IO
        - IP
        - IQ
        - IR
        - IS
        - IT
        - IU
        - IV
        - IW
        - IX
        - IY
        - IZ
        - JA
        - JB
        - JC
        - JD
        - JE
        - JF
        - JG
        - JH
        - JI
        - JJ
        - JK
        - JL
        - JM
        - JN
        - JO
        - JP
        - JQ
        - JR
        - JS
        - JT
        - JU
        - JV
        - JW
        - JX
        - JY
        - JZ
        - KA
        - KB
        - KC
        - KD
        - KE
        - KF
        - KG
        - KH
        - KI
        - KJ
        - KK
        - KL
        - KM
        - KN
        - KO
        - KP
        - KQ
        - KR
        - KS
        - KT
        - KU
        - KV
        - KW
        - KX
        - KY
        - KZ
        - LA
        - LB
        - LC
        - LD
        - LE
        - LF
        - LG
        - LH
        - LI
        - LJ
        - LK
        - LL
        - LM
        - LN
        - LO
        - LP
        - LQ
        - LR
        - LS
        - LT
        - LU
        - LV
        - LW
        - LX
        - LY
        - LZ
        - MA
        - MB
        - MC
        - MD
        - ME
        - MF
        - MG
        - MH
        - MI
        - MJ
        - MK
        - ML
        - MM
        - MN
        - MO
        - MP
        - MQ
        - MR
        - MS
        - MT
        - MU
        - MV
        - MW
        - MX
        - MY
        - MZ
        - NA
        - NB
        - NC
        - ND
        - NE
        - NF
        - NG
        - NH
        - NI
        - NJ
        - NK
        - NL
        - NM
        - NN
        - 'NO'
        - NP
        - NQ
        - NR
        - NS
        - NT
        - NU
        - NV
        - NW
        - NX
        - NY
        - NZ
        - OA
        - OB
        - OC
        - OD
        - OE
        - OF
        - OG
        - OH
        - OI
        - OJ
        - OK
        - OL
        - OM
        - 'ON'
        - OO
        - OP
        - OQ
        - OR
        - OS
        - OT
        - OU
        - OV
        - OW
        - OX
        - OY
        - OZ
        - PA
        - PB
        - PC
        - PD
        - PE
        - PF
        - PG
        - PH
        - PI
        - PJ
        - PK
        - PL
        - PM
        - PN
        - PO
        - PP
        - PQ
        - PR
        - PS
        - PT
        - PU
        - PV
        - PW
        - PX
        - PY
        - PZ
        - QA
        - QB
        - QC
        - QD
        - QE
        - QF
        - QG
        - QH
        - QI
        - QJ
        - QK
        - QL
        - QM
        - QN
        - QO
        - QP
        - QQ
        - QR
        - QS
        - QT
        - QU
        - QV
        - QW
        - QX
        - QY
        - QZ
        - RA
        - RB
        - RC
        - RD
        - RE
        - RF
        - RG
        - RH
        - RI
        - RJ
        - RK
        - RL
        - RM
        - RN
        - RO
        - RP
        - RQ
        - RR
        - RS
        - RT
        - RU
        - RV
        - RW
        - RX
        - RY
        - RZ
        - SA
        - SB
        - SC
        - SD
        - SE
        - SF
        - SG
        - SH
        - SI
        - SJ
        - SK
        - SL
        - SM
        - SN
        - SO
        - SP
        - SQ
        - SR
        - SS
        - ST
        - SU
        - SV
        - SW
        - SX
        - SY
        - SZ
        - TA
        - TB
        - TC
        - TD
        - TE
        - TF
        - TG
        - TH
        - TI
        - TJ
        - TK
        - TL
        - TM
        - TN
        - TO
        - TP
        - TQ
        - TR
        - TS
        - TT
        - TU
        - TV
        - TW
        - TX
        - TY
        - TZ
        - UA
        - UB
        - UC
        - UD
        - UE
        - UF
        - UG
        - UH
        - UI
        - UJ
        - UK
        - UL
        - UM
        - UN
        - UO
        - UP
        - UQ
        - UR
        - US
        - UT
        - UU
        - UV
        - UW
        - UX
        - UY
        - UZ
        - VA
        - VB
        - VC
        - VD
        - VE
        - VF
        - VG
        - VH
        - VI
        - VJ
        - VK
        - VL
        - VM
        - VN
        - VO
        - VP
        - VQ
        - VR
        - VS
        - VT
        - VU
        - VV
        - VW
        - VX
        - VY
        - VZ
        - WA
        - WB
        - WC
        - WD
        - WE
        - WF
        - WG
        - WH
        - WI
        - WJ
        - WK
        - WL
        - WM
        - WN
        - WO
        - WP
        - WQ
        - WR
        - WS
        - WT
        - WU
        - WV
        - WW
        - WX
        - WY
        - WZ
        - XA
        - XB
        - XC
        - XD
        - XE
        - XF
        - XG
        - XH
        - XI
        - XJ
        - XK
        - XL
        - XM
        - XN
        - XO
        - XP
        - XQ
        - XR
        - XS
        - XT
        - XU
        - XV
        - XW
        - XX
        - XY
        - XZ
        - YA
        - YB
        - YC
        - YD
        - YE
        - YF
        - YG
        - YH
        - YI
        - YJ
        - YK
        - YL
        - YM
        - YN
        - YO
        - YP
        - YQ
        - YR
        - YS
        - YT
        - YU
        - YV
        - YW
        - YX
        - YY
        - YZ
        - ZA
        - ZB
        - ZC
        - ZD
        - ZE
        - ZF
        - ZG
        - ZH
        - ZI
        - ZJ
        - ZK
        - ZL
        - ZM
        - ZN
        - ZO
        - ZP
        - ZQ
        - ZR
        - ZS
        - ZT
        - ZU
        - ZV
        - ZW
        - ZX
        - ZY
        - ZZ
      title: SystemCountries
      type: string
    UsRegions:
      enum:
        - AL
        - AK
        - AZ
        - AR
        - CA
        - CO
        - CT
        - DE
        - FL
        - GA
        - HI
        - ID
        - IL
        - IN
        - IA
        - KS
        - KY
        - LA
        - ME
        - MD
        - MA
        - MI
        - MN
        - MS
        - MO
        - MT
        - NE
        - NV
        - NH
        - NJ
        - NM
        - NY
        - NC
        - ND
        - OH
        - OK
        - OR
        - PA
        - RI
        - SC
        - SD
        - TN
        - TX
        - UT
        - VT
        - VA
        - WA
        - WV
        - WI
        - WY
        - DC
        - AS
        - GU
        - MP
        - PR
        - VI
        - AE
        - AP
        - AA
      title: UsRegions
      type: string
    DiscountType:
      enum:
        - PERCENTAGE
        - FIXED
      title: DiscountType
      type: string
    TaxItemOut:
      properties:
        item_id:
          title: Item Id
          type:
            - integer
            - 'null'
        product_tax_code:
          title: Product Tax Code
          type:
            - string
            - 'null'
        tax_code:
          title: Tax Code
          type:
            - string
            - 'null'
        provider_tax_code:
          description: Tax rate code returned by an external provider.
          title: Provider Tax Code
          type:
            - string
            - 'null'
        tax_rate:
          title: Tax Rate
          examples:
            - '0.2000'
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,6}0*$
          type:
            - string
            - 'null'
        tax_amount:
          title: Tax Amount
          examples:
            - '20'
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
          type:
            - string
            - 'null'
        amount_with_tax:
          examples:
            - '120'
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
          title: Amount With Tax
          type: string
        is_taxable:
          title: Is Taxable
          type:
            - boolean
            - 'null'
        tax_exempt_amount:
          title: Tax Exempt Amount
          examples:
            - '0'
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
          type:
            - string
            - 'null'
        tax_metadata:
          title: Tax Metadata
          additionalProperties: true
          type:
            - object
            - 'null'
        post_to_gl:
          description: >-
            Projected GL posting accounts and their roles. Null when no
            projection is available.
          title: Post To Gl
          items:
            $ref: '#/components/schemas/TaxGlAccountSchemaOut'
          type:
            - array
            - 'null'
      required:
        - product_tax_code
        - tax_code
        - tax_rate
        - tax_amount
        - amount_with_tax
      title: TaxItemOut
      type: object
    TaxRateSelection:
      enum:
        - SELECTABLE
        - FIXED
      title: TaxRateSelection
      type: string
    VatAvailableRateOut:
      properties:
        id:
          title: Id
          type: integer
        tax_code:
          title: Tax Code
          type: string
        country_code:
          $ref: '#/components/schemas/VatCountries'
        name:
          title: Name
          type: string
        rate:
          examples:
            - '0.2000'
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Rate
          type: string
        rate_type:
          title: Rate Type
          type: string
        tax_type:
          title: Tax Type
          type: string
        valid_from:
          format: date
          title: Valid From
          type: string
        valid_to:
          title: Valid To
          format: date
          type:
            - string
            - 'null'
        is_active:
          title: Is Active
          type: boolean
        is_system:
          title: Is System
          type: boolean
        description:
          title: Description
          type:
            - string
            - 'null'
        post_to_gl:
          description: >-
            Projected GL posting accounts and their roles. Null when no
            projection is available.
          title: Post To Gl
          items:
            $ref: '#/components/schemas/TaxGlAccountSchemaOut'
          type:
            - array
            - 'null'
      required:
        - id
        - tax_code
        - country_code
        - name
        - rate
        - rate_type
        - tax_type
        - valid_from
        - valid_to
        - is_active
        - is_system
        - description
      title: VatAvailableRateOut
      type: object
    VatItemOut:
      properties:
        item_id:
          title: Item Id
          type:
            - integer
            - 'null'
        product_tax_code:
          title: Product Tax Code
          type:
            - string
            - 'null'
        tax_code:
          title: Tax Code
          type:
            - string
            - 'null'
        provider_tax_code:
          description: Tax rate code returned by an external provider.
          title: Provider Tax Code
          type:
            - string
            - 'null'
        tax_rate:
          title: Tax Rate
          examples:
            - '0.2000'
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,6}0*$
          type:
            - string
            - 'null'
        tax_amount:
          title: Tax Amount
          examples:
            - '20'
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
          type:
            - string
            - 'null'
        amount_with_tax:
          title: Amount With Tax
          examples:
            - '120'
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
          type:
            - string
            - 'null'
        is_taxable:
          title: Is Taxable
          type:
            - boolean
            - 'null'
        tax_exempt_amount:
          title: Tax Exempt Amount
          examples:
            - '0'
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
          type:
            - string
            - 'null'
        tax_metadata:
          title: Tax Metadata
          additionalProperties: true
          type:
            - object
            - 'null'
        post_to_gl:
          description: >-
            Projected GL posting accounts and their roles. Null when no
            projection is available.
          title: Post To Gl
          items:
            $ref: '#/components/schemas/TaxGlAccountSchemaOut'
          type:
            - array
            - 'null'
        selected_vat_rate_id:
          title: Selected Vat Rate Id
          type:
            - integer
            - 'null'
        available_rates_ids:
          items:
            type: integer
          title: Available Rates Ids
          type: array
      required:
        - product_tax_code
        - tax_code
        - tax_rate
        - tax_amount
      title: VatItemOut
      type: object
    TaxRegistrationNumbersSnapshot:
      properties:
        company:
          items:
            $ref: '#/components/schemas/TaxRegistrationNumberEntry'
          title: Company
          type: array
        counterparty:
          items:
            $ref: '#/components/schemas/TaxRegistrationNumberEntry'
          title: Counterparty
          type: array
      title: TaxRegistrationNumbersSnapshot
      type: object
    TaxCalculationSource:
      enum:
        - avalara
        - dualentry
      title: TaxCalculationSource
      type: string
    GstSupplyCategory:
      description: 'India GST: intra-state (CGST+SGST) vs inter-state (IGST).'
      enum:
        - INTRA_STATE
        - INTER_STATE
      title: GstSupplyCategory
      type: string
    GstAvailableRateOut:
      properties:
        id:
          title: Id
          type: integer
        tax_code:
          title: Tax Code
          type: string
        country_code:
          $ref: '#/components/schemas/GstCountries'
        name:
          title: Name
          type: string
        rate:
          examples:
            - '0.180000'
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Rate
          type: string
        tax_treatment:
          $ref: '#/components/schemas/GstTreatmentType'
        supply_category:
          anyOf:
            - $ref: '#/components/schemas/GstSupplyCategory'
            - type: 'null'
        region:
          title: Region
          type:
            - string
            - 'null'
        valid_from:
          format: date
          title: Valid From
          type: string
        valid_to:
          title: Valid To
          format: date
          type:
            - string
            - 'null'
        is_active:
          title: Is Active
          type: boolean
        is_system:
          title: Is System
          type: boolean
        description:
          title: Description
          type:
            - string
            - 'null'
        components:
          items:
            $ref: '#/components/schemas/GstTaxRateComponentSchemaOut'
          title: Components
          type: array
        post_to_gl:
          description: >-
            Projected GL posting accounts and their roles. Null when no
            projection is available.
          title: Post To Gl
          items:
            $ref: '#/components/schemas/TaxGlAccountSchemaOut'
          type:
            - array
            - 'null'
      required:
        - id
        - tax_code
        - country_code
        - name
        - rate
        - tax_treatment
        - valid_from
        - valid_to
        - is_active
        - is_system
        - description
        - components
      title: GstAvailableRateOut
      type: object
    GstItemOut:
      properties:
        item_id:
          title: Item Id
          type:
            - integer
            - 'null'
        product_tax_code:
          title: Product Tax Code
          type:
            - string
            - 'null'
        tax_code:
          title: Tax Code
          type:
            - string
            - 'null'
        provider_tax_code:
          description: Tax rate code returned by an external provider.
          title: Provider Tax Code
          type:
            - string
            - 'null'
        tax_rate:
          title: Tax Rate
          examples:
            - '0.2000'
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,6}0*$
          type:
            - string
            - 'null'
        tax_amount:
          title: Tax Amount
          examples:
            - '20'
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
          type:
            - string
            - 'null'
        amount_with_tax:
          title: Amount With Tax
          examples:
            - '120'
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
          type:
            - string
            - 'null'
        is_taxable:
          title: Is Taxable
          type:
            - boolean
            - 'null'
        tax_exempt_amount:
          title: Tax Exempt Amount
          examples:
            - '0'
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
          type:
            - string
            - 'null'
        tax_metadata:
          title: Tax Metadata
          additionalProperties: true
          type:
            - object
            - 'null'
        post_to_gl:
          description: >-
            Projected GL posting accounts and their roles. Null when no
            projection is available.
          title: Post To Gl
          items:
            $ref: '#/components/schemas/TaxGlAccountSchemaOut'
          type:
            - array
            - 'null'
        selected_gst_tax_rate_id:
          title: Selected Gst Tax Rate Id
          type:
            - integer
            - 'null'
        available_rates_ids:
          items:
            type: integer
          title: Available Rates Ids
          type: array
        gst_tax_components:
          title: Gst Tax Components
          items:
            $ref: '#/components/schemas/TaxComponentSchema'
          type:
            - array
            - 'null'
      required:
        - product_tax_code
        - tax_code
        - tax_rate
        - tax_amount
      title: GstItemOut
      type: object
    TaxGlAccountSchemaOut:
      properties:
        account_id:
          title: Account Id
          type: integer
        name:
          title: Name
          type: string
        number:
          title: Number
          type: integer
        role:
          $ref: '#/components/schemas/TaxGlAccountRole'
      required:
        - account_id
        - name
        - number
        - role
      title: TaxGlAccountSchemaOut
      type: object
    VatCountries:
      description: >-
        Countries with a VAT system. Used to restrict API inputs to valid VAT
        jurisdictions.
      enum:
        - AE
        - CH
        - GB
        - KR
        - TH
        - TZ
        - MX
        - FR
        - DE
        - ES
        - IT
        - NL
        - BE
        - IE
        - PT
        - SE
        - AT
        - PL
        - DK
        - FI
        - GR
        - CZ
        - RO
        - HU
        - BG
        - HR
        - SK
        - SI
        - LT
        - LV
        - EE
        - CY
        - MT
        - LU
      title: VatCountries
      type: string
    TaxRegistrationNumberEntry:
      properties:
        type:
          description: >-
            Registration type (e.g. SST_SALES, SST_SERVICE, GST, GSTIN, PST,
            QST).
          title: Type
          type: string
        number:
          description: Frozen-at-snapshot registration number.
          title: Number
          type: string
        region:
          description: >-
            2-letter region code for region-scoped registrations (e.g. Canadian
            PST/QST provinces); null for country-wide registrations.
          title: Region
          type:
            - string
            - 'null'
      required:
        - type
        - number
      title: TaxRegistrationNumberEntry
      type: object
    GstCountries:
      enum:
        - AU
        - NZ
        - SG
        - IN
        - CA
        - MY
      title: GstCountries
      type: string
    GstTreatmentType:
      enum:
        - STANDARD
        - ZERO_RATED
        - EXEMPT
        - IMPORT_GST
        - REVERSE_CHARGE
        - SELF_ASSESSED
        - OUT_OF_SCOPE
      title: GstTreatmentType
      type: string
    GstTaxRateComponentSchemaOut:
      properties:
        id:
          title: Id
          type: integer
        component_type:
          $ref: '#/components/schemas/GstComponentType'
        rate:
          examples:
            - '0.090000'
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Rate
          type: string
        region:
          title: Region
          type:
            - string
            - 'null'
        position:
          title: Position
          type: integer
      required:
        - id
        - component_type
        - rate
        - region
        - position
      title: GstTaxRateComponentSchemaOut
      type: object
    TaxComponentSchema:
      description: Per-component consumption tax breakdown stored on line items.
      properties:
        component_type:
          anyOf:
            - $ref: '#/components/schemas/GstComponentType'
            - $ref: '#/components/schemas/TaxFamily'
          title: Component Type
        rate:
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,6}0*$
          title: Rate
          type: string
        amount:
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
          title: Amount
          type: string
        region:
          title: Region
          type:
            - string
            - 'null'
        position:
          title: Position
          type: integer
      required:
        - component_type
        - rate
        - amount
        - position
      title: TaxComponentSchema
      type: object
    TaxGlAccountRole:
      enum:
        - asset
        - liability
        - non_deductible_cost
      title: TaxGlAccountRole
      type: string
    GstComponentType:
      enum:
        - CGST
        - SGST
        - IGST
        - CESS
        - GST
        - PST
        - HST
        - QST
      title: GstComponentType
      type: string
    TaxFamily:
      description: >-
        Broad classification of a tax rate within the GST module.


        `GST` covers the single-stage value-added-style regimes (AU, NZ, SG, IN,
        CA).

        `SST` covers Malaysia's Sales and Service Tax — a non-creditable
        single-stage

        regime that replaced Malaysia's GST in 2018. SST actually has two
        sub-regimes

        (Sales Tax on goods, Service Tax on services) but they share
        registration

        format (ANN-YYMM-NNNNNNNN, self-identifying by prefix), calculation
        rules, and

        administration — so we don't split them at the family level. The rate's

        ``name`` ("Sales Tax 10%", "Service Tax 8%") carries that human
        distinction.
      enum:
        - GST
        - SST
      title: TaxFamily
      type: string

````