> ## 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.

# Get Quote record

> Retrieve a specific Quote record by its record number with all related data.



## OpenAPI

````yaml /developers/openapi/resources-v2.json get /public/v2/quotes/{record_number}/
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: Account Balances
    description: >-
      Read account balances for one company as of a date, equivalent to a Trial
      Balance report. Balance-sheet accounts report through the date;
      income-statement accounts report from the start of the fiscal year.
  - 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: Quotes
    description: >-
      Create, submit, and send CPQ quotes, with line billing frequencies,
      multi-year ramps, recipients and signing order, and totals by billing
      frequency. Requires the CPQ subscription. Save a quote with
      `record_status` `posted` to submit it for approval; approvers approve or
      reject it in DualEntry. The API does not render quote PDFs.
  - 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 vendor payments and apply them to bills, vendor credits, and
      journal entry lines. Create and update post a general ledger transaction.
      The save also computes realized, rounding, and matching gain or loss,
      posts an elimination transaction for an intercompany vendor, and creates a
      paper check when the payment method requires printing. Send attachments to
      replace the file list. PATCH changes only the sent fields. POST
      /{number}/attachments/ adds files and keeps existing files.
  - 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: Fixed Asset Classes
    description: List fixed asset classes used to set fixed_asset_class_id on an asset.
  - 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/quotes/{record_number}/:
    get:
      tags:
        - Quotes
      summary: Get Quote record
      description: >-
        Retrieve a specific Quote record by its record number with all related
        data.
      operationId: get_Quote_record
      parameters:
        - in: path
          name: record_number
          schema:
            description: The `number` attribute of the record.
            title: Record Number
            type: integer
          required: true
          description: The `number` attribute of the record.
        - in: query
          name: search
          schema:
            title: Search
            type:
              - string
              - 'null'
          required: false
        - in: query
          name: code
          schema:
            title: Code
            items:
              type: string
            type:
              - array
              - 'null'
          required: false
        - in: query
          name: id
          schema:
            title: Id
            items:
              type: integer
            type:
              - array
              - 'null'
          required: false
        - in: query
          name: number
          schema:
            title: Number
            items:
              type: integer
            type:
              - array
              - 'null'
          required: false
        - in: query
          name: company_id
          schema:
            title: Company Id
            items:
              type: integer
            type:
              - array
              - 'null'
          required: false
        - in: query
          name: customer_id
          schema:
            title: Customer Id
            items:
              type: integer
            type:
              - array
              - 'null'
          required: false
        - in: query
          name: record_status
          schema:
            title: Record Status
            items:
              $ref: '#/components/schemas/RecordStatus'
            type:
              - array
              - 'null'
          required: false
        - in: query
          name: valid_until_from
          schema:
            title: Valid Until From
            format: date
            type:
              - string
              - 'null'
          required: false
        - in: query
          name: valid_until_to
          schema:
            title: Valid Until To
            format: date
            type:
              - string
              - 'null'
          required: false
        - in: query
          name: approval_status
          schema:
            title: Approval Status
            items:
              type: string
            type:
              - array
              - 'null'
          required: false
        - in: query
          name: approval_status_scope
          schema:
            title: Approval Status Scope
            items:
              $ref: '#/components/schemas/RecordStatus'
            type:
              - array
              - 'null'
          required: false
        - in: query
          name: updated_after
          schema:
            title: Updated After
            format: date-time
            type:
              - string
              - 'null'
          required: false
        - in: query
          name: updated_before
          schema:
            title: Updated Before
            format: date-time
            type:
              - string
              - 'null'
          required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicQuoteSchemaOut'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
components:
  schemas:
    RecordStatus:
      enum:
        - draft
        - posted
        - archived
      title: RecordStatus
      type: string
    PublicQuoteSchemaOut:
      description: >-
        A quote with its lines, recipients (signing order included), send
        status, and totals by billing frequency.
      properties:
        bill_to_address:
          deprecated: true
          description: >-
            Deprecated: send the structured billing_address / shipping_address
            instead.
          title: Bill To Address
          type: string
        ship_to_address:
          deprecated: true
          description: >-
            Deprecated: send the structured billing_address / shipping_address
            instead.
          title: Ship To Address
          type: string
        billing_address:
          anyOf:
            - $ref: '#/components/schemas/AddressSchemaOut'
            - type: 'null'
        shipping_address:
          anyOf:
            - $ref: '#/components/schemas/AddressSchemaOut'
            - type: 'null'
        created_at:
          format: date-time
          title: Created At
          type: string
        updated_at:
          format: date-time
          title: Updated At
          type: string
        completed_approvals_count:
          default: 0
          title: Completed Approvals Count
          type: integer
        total_approvals_count:
          default: 0
          title: Total Approvals Count
          type: integer
        workflow_status:
          title: Workflow Status
          type:
            - string
            - 'null'
        pending_approvers_count:
          default: 0
          title: Pending Approvers Count
          type: integer
        send_status:
          allOf:
            - $ref: '#/components/schemas/QuoteSendStatus'
          default: draft
        can_send:
          default: false
          title: Can Send
          type: boolean
        approval_info:
          anyOf:
            - $ref: '#/components/schemas/ApprovalInfoSchema'
            - type: 'null'
        approval_chain:
          anyOf:
            - $ref: '#/components/schemas/ApprovalChainSchema'
            - type: 'null'
        bank_match_status:
          title: Bank Match Status
          type:
            - string
            - 'null'
        id:
          title: Id
          type: integer
        number:
          title: Number
          type: integer
        code:
          description: Code from the company quote sequence, e.g. QT-0001
          title: Code
          type:
            - string
            - 'null'
        record_status:
          $ref: '#/components/schemas/RecordStatus'
        valid_until:
          format: date
          title: Valid Until
          type: string
        company_id:
          title: Company Id
          type: integer
        company_name:
          title: Company Name
          type: string
        company_currency:
          title: Company Currency
          type: string
        customer_id:
          title: Customer Id
          type:
            - integer
            - 'null'
        customer_name:
          title: Customer Name
          type:
            - string
            - 'null'
        name:
          title: Name
          type: string
        email:
          title: Email
          type: string
        currency_iso_4217_code:
          title: Currency Iso 4217 Code
          type: string
        term_id:
          title: Term Id
          type:
            - integer
            - 'null'
        term_name:
          title: Term Name
          type: string
        memo:
          title: Memo
          type: string
        close_date:
          format: date
          title: Close Date
          type: string
        contract_start_date:
          format: date
          title: Contract Start Date
          type: string
        contract_end_type:
          $ref: '#/components/schemas/QuoteContractEndType'
        number_of_months:
          title: Number Of Months
          type:
            - integer
            - 'null'
        contract_end_date:
          title: Contract End Date
          format: date
          type:
            - string
            - 'null'
        contract_legal_terms:
          title: Contract Legal Terms
          type:
            - string
            - 'null'
        sent_at:
          title: Sent At
          format: date-time
          type:
            - string
            - 'null'
        document_headline_total:
          $ref: '#/components/schemas/QuoteHeadlineTotal'
        document_total_rows:
          items:
            $ref: '#/components/schemas/QuoteTotalRow'
          title: Document Total Rows
          type: array
        document_year_by_year:
          title: Document Year By Year
          type: boolean
        items:
          items:
            $ref: '#/components/schemas/QuoteItemOut'
          title: Items
          type: array
        recipients:
          items:
            $ref: '#/components/schemas/QuoteRecipientOut'
          title: Recipients
          type: array
        subtotal:
          description: Sum of quantity x rate before discounts and tax
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
          title: Subtotal
          type: string
        discount_total:
          description: Sum of inline line discounts
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
          title: Discount Total
          type: string
        tax_total:
          description: Sum of line tax
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
          title: Tax Total
          type: string
        amount:
          description: >-
            Quote total for one billing period of each line, calculated like an
            invoice total
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
          title: Amount
          type: string
        contract_value:
          description: >-
            Contract amount this quote converts to: quantity x rate over each
            line's term, before discount and tax; approvals compare this
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
          title: Contract Value
          type: string
        totals:
          $ref: '#/components/schemas/QuoteTotalsOut'
          description: Totals by billing frequency
        created_by:
          anyOf:
            - $ref: '#/components/schemas/AuditActorSchemaOut'
            - type: 'null'
        updated_by:
          anyOf:
            - $ref: '#/components/schemas/AuditActorSchemaOut'
            - type: 'null'
      required:
        - bill_to_address
        - ship_to_address
        - created_at
        - updated_at
        - id
        - number
        - record_status
        - valid_until
        - company_id
        - company_name
        - company_currency
        - customer_id
        - customer_name
        - name
        - email
        - currency_iso_4217_code
        - term_id
        - term_name
        - memo
        - close_date
        - contract_start_date
        - contract_end_type
        - number_of_months
        - contract_end_date
        - contract_legal_terms
        - sent_at
        - document_headline_total
        - document_total_rows
        - document_year_by_year
        - items
        - recipients
        - subtotal
        - discount_total
        - tax_total
        - amount
        - contract_value
        - totals
      title: PublicQuoteSchemaOut
      type: object
    ErrorSchema:
      properties:
        success:
          const: false
          default: false
          title: Success
          type: boolean
        errors:
          additionalProperties:
            items:
              type: string
            type: array
          title: Errors
          type: object
        error_code:
          title: Error Code
          type:
            - string
            - 'null'
        error_reason:
          title: Error Reason
          type:
            - string
            - 'null'
      required:
        - errors
      title: ErrorSchema
      type: object
    AddressSchemaOut:
      properties:
        street:
          title: Street
          type: string
        city:
          title: City
          type: string
        state:
          default: ''
          title: State
          type: string
        postal_code:
          title: Postal Code
          type: string
        country:
          anyOf:
            - const: ''
              type: string
            - $ref: '#/components/schemas/SystemCountries'
          default: ''
          title: Country
        second_line:
          default: ''
          title: Second Line
          type: string
        name:
          title: Name
          type:
            - string
            - 'null'
      required:
        - street
        - city
        - postal_code
      title: AddressSchemaOut
      type: object
    QuoteSendStatus:
      enum:
        - draft
        - awaiting_approval
        - approved
        - rejected
      title: QuoteSendStatus
      type: string
    ApprovalInfoSchema:
      description: Schema for complete approval workflow information.
      properties:
        workflow_name:
          title: Workflow Name
          type: string
        workflow_version:
          title: Workflow Version
          type: integer
        step_name:
          title: Step Name
          type: string
        current_substep:
          title: Current Substep
          type: integer
        substeps:
          items:
            $ref: '#/components/schemas/SubstepInfoSchema'
          title: Substeps
          type: array
      required:
        - workflow_name
        - workflow_version
        - step_name
        - current_substep
        - substeps
      title: ApprovalInfoSchema
      type: object
    ApprovalChainSchema:
      description: Full approval chain.
      properties:
        workflow_name:
          title: Workflow Name
          type: string
        workflow_version:
          title: Workflow Version
          type: integer
        steps:
          items:
            $ref: '#/components/schemas/StepChainSchema'
          title: Steps
          type: array
      required:
        - workflow_name
        - workflow_version
        - steps
      title: ApprovalChainSchema
      type: object
    QuoteContractEndType:
      enum:
        - after
        - ongoing
        - date
      title: QuoteContractEndType
      type: string
    QuoteHeadlineTotal:
      enum:
        - tcv
        - annual
        - quarterly
        - monthly
        - first_year
      title: QuoteHeadlineTotal
      type: string
    QuoteTotalRow:
      description: >-
        Total rows on the quote document. Monthly, quarterly and annual are the
        recurring value per period.
      enum:
        - one_time
        - monthly
        - quarterly
        - annual
        - first_year
        - first_invoice
        - tcv
      title: QuoteTotalRow
      type: string
    QuoteItemOut:
      properties:
        item_type:
          title: Item Type
          type:
            - string
            - 'null'
        hsn_sac_code:
          title: Hsn Sac Code
          type:
            - string
            - 'null'
        discount_type:
          anyOf:
            - $ref: '#/components/schemas/DiscountType'
            - type: 'null'
        discount_value:
          title: Discount Value
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,6}0*$
          type:
            - string
            - 'null'
        tax:
          anyOf:
            - $ref: '#/components/schemas/ItemTaxDataOut'
            - type: 'null'
        id:
          title: Id
          type: integer
        item_id:
          title: Item Id
          type: integer
        item_name:
          title: Item Name
          type: string
        quantity:
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,6}0*$
          title: Quantity
          type: string
        rate:
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,10}0*$
          title: Rate
          type: string
        position:
          title: Position
          type: integer
        memo:
          title: Memo
          type: string
        billing_frequency:
          $ref: '#/components/schemas/BillingCadence'
        billing_interval:
          title: Billing Interval
          type: integer
        billing_start_date:
          description: Set only when the line overrides the quote contract start
          title: Billing Start Date
          format: date
          type:
            - string
            - 'null'
        billing_end_date:
          description: Set only when the line overrides the quote contract end
          title: Billing End Date
          format: date
          type:
            - string
            - 'null'
        service_start_date:
          description: >-
            Billing start in effect: the line's own date or the quote contract
            start
          format: date
          title: Service Start Date
          type: string
        service_end_date:
          description: Billing end in effect; null when ongoing
          title: Service End Date
          format: date
          type:
            - string
            - 'null'
        periods_in_term:
          description: Billing periods in the line's service period; null when ongoing
          title: Periods In Term
          type:
            - integer
            - 'null'
        ramp_group_id:
          title: Ramp Group Id
          format: uuid
          type:
            - string
            - 'null'
        net_amount:
          description: Net amount after discount, before tax
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
          readOnly: true
          title: Net Amount
          type: string
        tax_amount:
          description: Calculated tax amount
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
          readOnly: true
          title: Tax Amount
          type: string
        gross_amount:
          description: Calculated total amount including tax
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
          readOnly: true
          title: Gross Amount
          type: string
        amount:
          description: >-
            Calculated total amount including tax named amount for backward
            compatibility
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
          readOnly: true
          title: Amount
          type: string
        discount_amount:
          description: Inline discount amount
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
          readOnly: true
          title: Discount Amount
          type: string
        line_tcv:
          description: Net amount x periods in term, before tax; null when ongoing
          readOnly: true
          title: Line Tcv
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
          type:
            - string
            - 'null'
      required:
        - id
        - item_id
        - item_name
        - quantity
        - rate
        - position
        - memo
        - billing_frequency
        - billing_interval
        - billing_start_date
        - billing_end_date
        - service_start_date
        - service_end_date
        - periods_in_term
        - ramp_group_id
        - net_amount
        - tax_amount
        - gross_amount
        - amount
        - discount_amount
        - line_tcv
      title: QuoteItemOut
      type: object
    QuoteRecipientOut:
      properties:
        id:
          title: Id
          type: integer
        side:
          $ref: '#/components/schemas/QuoteRecipientSide'
        organization_user_id:
          title: Organization User Id
          type:
            - integer
            - 'null'
        customer_id:
          title: Customer Id
          type:
            - integer
            - 'null'
        name:
          title: Name
          type: string
        email:
          title: Email
          type: string
        is_signer:
          title: Is Signer
          type: boolean
        signing_order:
          title: Signing Order
          type:
            - integer
            - 'null'
        position:
          title: Position
          type: integer
      required:
        - id
        - side
        - organization_user_id
        - customer_id
        - name
        - email
        - is_signer
        - signing_order
        - position
      title: QuoteRecipientOut
      type: object
    QuoteTotalsOut:
      properties:
        one_time:
          $ref: '#/components/schemas/QuoteTotalsBucketOut'
        recurring:
          description: >-
            Amounts billed each period, one entry per billing frequency and
            interval, shortest period first
          items:
            $ref: '#/components/schemas/QuoteRecurringTotalsOut'
          title: Recurring
          type: array
        mrr:
          description: >-
            Monthly recurring revenue before tax, calculated like the contract
            MRR
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
          title: Mrr
          type: string
        arr:
          description: >-
            Annual recurring revenue before tax, calculated like the contract
            ARR
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
          title: Arr
          type: string
        first_invoice_amount:
          description: Amount with tax billed on the contract start date
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
          title: First Invoice Amount
          type: string
        first_year_value:
          description: >-
            Value of the periods that start in the first 12 months, net of
            discounts, before tax
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
          title: First Year Value
          type: string
        tcv:
          description: >-
            Total contract value net of discounts, before tax; null when any
            line is ongoing
          title: Tcv
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
          type:
            - string
            - 'null'
        initial_term_tcv:
          description: >-
            Total contract value of the initial term when the quote runs for a
            number of months
          title: Initial Term Tcv
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
          type:
            - string
            - 'null'
        years:
          description: >-
            Value per contract year; the years add up to the TCV. Empty when the
            quote is ongoing
          items:
            $ref: '#/components/schemas/QuoteYearTotalOut'
          title: Years
          type: array
      required:
        - one_time
        - recurring
        - mrr
        - arr
        - first_invoice_amount
        - first_year_value
        - tcv
        - initial_term_tcv
        - years
      title: QuoteTotalsOut
      type: object
    AuditActorSchemaOut:
      description: Schema for audit actor information.
      properties:
        actor_type:
          title: Actor Type
          type:
            - string
            - 'null'
        email:
          title: Email
          type:
            - string
            - 'null'
        first_name:
          title: First Name
          type:
            - string
            - 'null'
        last_name:
          title: Last Name
          type:
            - string
            - 'null'
        timestamp:
          title: Timestamp
          format: date-time
          type:
            - string
            - 'null'
      title: AuditActorSchemaOut
      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
    SubstepInfoSchema:
      description: Schema for individual substep information in approval workflow.
      properties:
        order:
          title: Order
          type: integer
        status:
          $ref: '#/components/schemas/SubstepStatus'
        approve_condition:
          $ref: '#/components/schemas/ApproveCondition'
        approvers:
          items:
            $ref: '#/components/schemas/ApproverSchema'
          title: Approvers
          type: array
        approved_by:
          items:
            $ref: '#/components/schemas/ApproverSchema'
          title: Approved By
          type: array
        rejected_by:
          items:
            $ref: '#/components/schemas/ApproverSchema'
          title: Rejected By
          type: array
      required:
        - order
        - status
        - approve_condition
        - approvers
        - approved_by
        - rejected_by
      title: SubstepInfoSchema
      type: object
    StepChainSchema:
      description: Step in approval chain.
      properties:
        order:
          title: Order
          type: integer
        name:
          title: Name
          type: string
        status:
          $ref: '#/components/schemas/StepStatus'
        approve_condition:
          $ref: '#/components/schemas/ApproveCondition'
        substeps:
          title: Substeps
          items:
            $ref: '#/components/schemas/SubstepChainSchema'
          type:
            - array
            - 'null'
        approvers:
          title: Approvers
          items:
            $ref: '#/components/schemas/ApproverDictSchema'
          type:
            - array
            - 'null'
        approved_by:
          title: Approved By
          items:
            $ref: '#/components/schemas/ApproverDictSchema'
          type:
            - array
            - 'null'
        rejected_by:
          title: Rejected By
          items:
            $ref: '#/components/schemas/ApproverDictSchema'
          type:
            - array
            - 'null'
      required:
        - order
        - name
        - status
        - approve_condition
      title: StepChainSchema
      type: object
    DiscountType:
      enum:
        - PERCENTAGE
        - FIXED
      title: DiscountType
      type: string
    ItemTaxDataOut:
      properties:
        code:
          title: Code
          type: string
        rate:
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,6}0*$
          title: Rate
          type: string
        amount:
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
          title: Amount
          type: string
        is_taxable:
          title: Is Taxable
          type:
            - boolean
            - 'null'
        tax_exempt_amount:
          title: Tax Exempt Amount
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
          type:
            - string
            - 'null'
        vat_rate_id:
          title: Vat Rate Id
          type:
            - integer
            - 'null'
        gst_tax_rate_id:
          title: Gst Tax Rate Id
          type:
            - integer
            - 'null'
        tax_metadata:
          title: Tax Metadata
          additionalProperties: true
          type:
            - object
            - 'null'
        tax_components:
          title: Tax Components
          items:
            $ref: '#/components/schemas/TaxComponentSchema'
          type:
            - array
            - 'null'
        amount_with_tax:
          title: Amount With Tax
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
          type:
            - string
            - 'null'
        rate_name:
          title: Rate Name
          type:
            - string
            - 'null'
        rate_description:
          title: Rate Description
          type:
            - string
            - 'null'
        rate_type:
          title: Rate Type
          type:
            - string
            - 'null'
        tax_treatment:
          title: Tax Treatment
          type:
            - string
            - 'null'
        valid_to:
          title: Valid To
          format: date
          type:
            - string
            - 'null'
      required:
        - code
        - rate
        - amount
      title: ItemTaxDataOut
      type: object
    BillingCadence:
      enum:
        - one_time
        - daily
        - weekly
        - monthly
        - quarterly
        - semi_annually
        - annually
      title: BillingCadence
      type: string
    QuoteRecipientSide:
      enum:
        - company
        - buyer
      title: QuoteRecipientSide
      type: string
    QuoteTotalsBucketOut:
      properties:
        subtotal:
          description: Sum of quantity x rate before discounts and tax
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
          title: Subtotal
          type: string
        discount_total:
          description: Sum of inline line discounts
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
          title: Discount Total
          type: string
        tax_total:
          description: Sum of line tax
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
          title: Tax Total
          type: string
        total:
          description: Subtotal - discount + tax
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
          title: Total
          type: string
      required:
        - subtotal
        - discount_total
        - tax_total
        - total
      title: QuoteTotalsBucketOut
      type: object
    QuoteRecurringTotalsOut:
      properties:
        subtotal:
          description: Sum of quantity x rate before discounts and tax
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
          title: Subtotal
          type: string
        discount_total:
          description: Sum of inline line discounts
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
          title: Discount Total
          type: string
        tax_total:
          description: Sum of line tax
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
          title: Tax Total
          type: string
        total:
          description: Subtotal - discount + tax
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
          title: Total
          type: string
        billing_frequency:
          $ref: '#/components/schemas/BillingCadence'
        billing_interval:
          title: Billing Interval
          type: integer
      required:
        - subtotal
        - discount_total
        - tax_total
        - total
        - billing_frequency
        - billing_interval
      title: QuoteRecurringTotalsOut
      type: object
    QuoteYearTotalOut:
      properties:
        year:
          description: Contract year, starting at 1
          title: Year
          type: integer
        start_date:
          format: date
          title: Start Date
          type: string
        end_date:
          format: date
          title: End Date
          type: string
        total:
          description: >-
            Value of the billing periods that start in this year, net of
            discounts, before tax
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
          title: Total
          type: string
      required:
        - year
        - start_date
        - end_date
        - total
      title: QuoteYearTotalOut
      type: object
    SubstepStatus:
      description: Status of a substep in the approval workflow.
      enum:
        - completed
        - pending
        - not_started
      title: SubstepStatus
      type: string
    ApproveCondition:
      description: Condition for approving a substep.
      enum:
        - any
        - all
      title: ApproveCondition
      type: string
    ApproverSchema:
      description: Schema for approver information.
      properties:
        id:
          title: Id
          type: integer
        first_name:
          title: First Name
          type: string
        last_name:
          title: Last Name
          type: string
        email:
          title: Email
          type: string
        full_name:
          title: Full Name
          type: string
        avatar_url:
          title: Avatar Url
          type:
            - string
            - 'null'
      required:
        - id
        - first_name
        - last_name
        - email
        - full_name
      title: ApproverSchema
      type: object
    StepStatus:
      description: Status of a step in the approval chain.
      enum:
        - completed
        - pending
        - not_started
        - skipped
      title: StepStatus
      type: string
    SubstepChainSchema:
      description: Substep in approval chain.
      properties:
        order:
          title: Order
          type: integer
        status:
          $ref: '#/components/schemas/SubstepStatus'
        approve_condition:
          $ref: '#/components/schemas/ApproveCondition'
        approvers:
          items:
            $ref: '#/components/schemas/ApproverDictSchema'
          title: Approvers
          type: array
        approved_by:
          items:
            $ref: '#/components/schemas/ApproverDictSchema'
          title: Approved By
          type: array
        rejected_by:
          items:
            $ref: '#/components/schemas/ApproverDictSchema'
          title: Rejected By
          type: array
      required:
        - order
        - status
        - approve_condition
        - approvers
        - approved_by
        - rejected_by
      title: SubstepChainSchema
      type: object
    ApproverDictSchema:
      description: Approver info from pre-serialized dict.
      properties:
        id:
          title: Id
          type: integer
        first_name:
          title: First Name
          type: string
        last_name:
          title: Last Name
          type: string
        email:
          title: Email
          type: string
        full_name:
          title: Full Name
          type: string
        avatar_url:
          title: Avatar Url
          type:
            - string
            - 'null'
      required:
        - id
        - first_name
        - last_name
        - email
        - full_name
      title: ApproverDictSchema
      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
    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

````