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

# Create Change Order

> Create a change order on a contract. Incomplete payloads are saved as drafts. Complete payloads are validated and applied.



## OpenAPI

````yaml /developers/openapi/resources-v2.json post /public/v2/contracts/{contract_id}/change-orders/
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: Journal Entry Lines
    description: >-
      Retrieve journal entry lines across all journal entries. Supports bulk
      retrieval with filtering by date range, journal entry number, and company.
      This is a read-only projection of journal entry data.
  - 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.
paths:
  /public/v2/contracts/{contract_id}/change-orders/:
    post:
      tags:
        - Contracts
      summary: Create Change Order
      description: >-
        Create a change order on a contract. Incomplete payloads are saved as
        drafts. Complete payloads are validated and applied.
      operationId: core_api_public_v2_contracts_create_contract_change_order
      parameters:
        - in: path
          name: contract_id
          schema:
            title: Contract Id
            type: integer
          required: true
        - 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/PublicContractChangeOrderSchemaCreateIn'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContractChangeOrderSchemaOut'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '422':
          description: Unprocessable Content
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
components:
  schemas:
    PublicContractChangeOrderSchemaCreateIn:
      properties:
        effective_date:
          title: Effective Date
          format: date
          type:
            - string
            - 'null'
        memo:
          default: ''
          title: Memo
          type: string
        apply_cumulative_catchup:
          default: false
          title: Apply Cumulative Catchup
          type: boolean
        obligation_modifications:
          default: []
          items:
            $ref: '#/components/schemas/ObligationModificationIn'
          title: Obligation Modifications
          type: array
        obligation_additions:
          default: []
          items:
            $ref: '#/components/schemas/PerformanceObligationIn'
          title: Obligation Additions
          type: array
      title: PublicContractChangeOrderSchemaCreateIn
      type: object
    ContractChangeOrderSchemaOut:
      properties:
        id:
          title: Id
          type: integer
        number:
          title: Number
          type: integer
        company_id:
          title: Company Id
          type: integer
        company_name:
          title: Company Name
          type: string
        contract_id:
          title: Contract Id
          type: integer
        contract_name:
          title: Contract Name
          type: string
        effective_date:
          title: Effective Date
          format: date
          type:
            - string
            - 'null'
        memo:
          title: Memo
          type:
            - string
            - 'null'
        apply_cumulative_catchup:
          title: Apply Cumulative Catchup
          type: boolean
        catchup_amount:
          title: Catchup Amount
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          type:
            - string
            - 'null'
        transaction_id:
          title: Transaction Id
          type:
            - integer
            - 'null'
        record_status:
          $ref: '#/components/schemas/RecordStatus'
        is_incomplete:
          title: Is Incomplete
          type: boolean
        obligation_modifications:
          items:
            additionalProperties: true
            type: object
          title: Obligation Modifications
          type: array
        obligation_additions:
          items:
            $ref: '#/components/schemas/PerformanceObligationIn'
          title: Obligation Additions
          type: array
        change_summary:
          default: []
          items:
            $ref: '#/components/schemas/ObligationChangeSummary'
          title: Change Summary
          type: array
      required:
        - id
        - number
        - company_id
        - company_name
        - contract_id
        - contract_name
        - effective_date
        - memo
        - apply_cumulative_catchup
        - transaction_id
        - record_status
        - is_incomplete
        - obligation_modifications
        - obligation_additions
      title: ContractChangeOrderSchemaOut
      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
    ObligationModificationIn:
      description: Describes a modification to an existing obligation.
      properties:
        obligation_id:
          title: Obligation Id
          type:
            - integer
            - 'null'
        quantity:
          anyOf:
            - type: number
            - pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
              type: string
            - type: 'null'
          title: Quantity
        rate:
          anyOf:
            - type: number
            - pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
              type: string
            - type: 'null'
          title: Rate
        item_id:
          title: Item Id
          type:
            - integer
            - 'null'
        memo:
          title: Memo
          type:
            - string
            - 'null'
        discount_type:
          title: Discount Type
          type:
            - string
            - 'null'
        discount_value:
          anyOf:
            - type: number
            - pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
              type: string
            - type: 'null'
          title: Discount Value
        standalone_selling_price:
          anyOf:
            - type: number
            - pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
              type: string
            - type: 'null'
          title: Standalone Selling Price
        obligation_conditions:
          title: Obligation Conditions
          additionalProperties: true
          type:
            - object
            - 'null'
        cancel:
          default: false
          title: Cancel
          type: boolean
      title: ObligationModificationIn
      type: object
    PerformanceObligationIn:
      description: Input schema for performance obligation (contract line item).
      properties:
        id:
          title: Id
          type:
            - integer
            - 'null'
        item_id:
          title: Item Id
          minimum: 1
          type:
            - integer
            - 'null'
        quantity:
          anyOf:
            - minimum: 0
              type: number
            - pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,6}0*$
              type: string
            - type: 'null'
          title: Quantity
        rate:
          anyOf:
            - type: number
            - pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,10}0*$
              type: string
            - type: 'null'
          title: Rate
        position:
          default: 0
          title: Position
          type: integer
        memo:
          default: ''
          maxLength: 512
          title: Memo
          type: string
        standalone_selling_price:
          anyOf:
            - type: number
            - pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,10}0*$
              type: string
            - type: 'null'
          title: Standalone Selling Price
        term_id:
          title: Term Id
          type:
            - integer
            - 'null'
        billing_group:
          default: 1
          minimum: 1
          title: Billing Group
          type: integer
        recognition_strategy:
          allOf:
            - $ref: '#/components/schemas/RecognitionStrategy'
          default: straight_line
        obligation_conditions:
          additionalProperties: true
          title: Obligation Conditions
          type: object
        classifications:
          default: []
          items:
            $ref: '#/components/schemas/RecordClassificationsSchemaOut'
          title: Classifications
          type: array
        billing_start_date:
          title: Billing Start Date
          format: date
          type:
            - string
            - 'null'
        billing_end_date:
          title: Billing End Date
          format: date
          type:
            - string
            - 'null'
        billing_frequency:
          anyOf:
            - $ref: '#/components/schemas/BillingCadence'
            - type: 'null'
        billing_interval:
          title: Billing Interval
          type:
            - integer
            - 'null'
        sync_billing_with_recognition:
          default: false
          title: Sync Billing With Recognition
          type: boolean
        skip_invoice_generation:
          default: false
          title: Skip Invoice Generation
          type: boolean
        recognition_start_date:
          title: Recognition Start Date
          format: date
          type:
            - string
            - 'null'
        recognition_end_date:
          title: Recognition End Date
          format: date
          type:
            - string
            - 'null'
        recognition_frequency:
          anyOf:
            - $ref: '#/components/schemas/RecognitionCadence'
            - type: 'null'
        recognition_interval:
          title: Recognition Interval
          type:
            - integer
            - 'null'
        discount_type:
          anyOf:
            - $ref: '#/components/schemas/DiscountType'
            - type: 'null'
        discount_value:
          anyOf:
            - exclusiveMinimum: 0
              type: number
            - pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,6}0*$
              type: string
            - type: 'null'
          title: Discount Value
        selected_vat_rate_id:
          title: Selected Vat Rate Id
          type:
            - integer
            - 'null'
        selected_gst_tax_rate_id:
          title: Selected Gst Tax Rate Id
          type:
            - integer
            - 'null'
        is_auto_renewable:
          default: false
          title: Is Auto Renewable
          type: boolean
      title: PerformanceObligationIn
      type: object
    RecordStatus:
      enum:
        - draft
        - posted
        - archived
      title: RecordStatus
      type: string
    ObligationChangeSummary:
      properties:
        predecessor:
          anyOf:
            - $ref: '#/components/schemas/PerformanceObligationOut'
            - type: 'null'
        successor:
          anyOf:
            - $ref: '#/components/schemas/PerformanceObligationOut'
            - type: 'null'
        type:
          $ref: '#/components/schemas/ObligationChangeType'
        changes:
          additionalProperties:
            $ref: '#/components/schemas/ObligationFieldChange'
          default: {}
          title: Changes
          type: object
      required:
        - type
      title: ObligationChangeSummary
      type: object
    RecognitionStrategy:
      enum:
        - straight_line
        - straight_line_start_end_even
        - daily_prorata
        - milestone
        - usage_tiered
        - usage
        - immediate
        - deposit_release
      title: RecognitionStrategy
      type: string
    RecordClassificationsSchemaOut:
      properties:
        id:
          title: Id
          type: integer
        name:
          title: Name
          type: string
        line_id:
          title: Line Id
          type: integer
        line_name:
          title: Line Name
          type: string
        parent_classification_id:
          title: Parent Classification Id
          type:
            - integer
            - 'null'
        parent_classification_line_id:
          title: Parent Classification Line Id
          type:
            - integer
            - 'null'
      required:
        - id
        - name
        - line_id
        - line_name
      title: RecordClassificationsSchemaOut
      type: object
    BillingCadence:
      enum:
        - one_time
        - daily
        - weekly
        - monthly
        - quarterly
        - semi_annually
        - annually
      title: BillingCadence
      type: string
    RecognitionCadence:
      enum:
        - daily
        - weekly
        - monthly
        - quarterly
        - semi_annually
        - annually
      title: RecognitionCadence
      type: string
    DiscountType:
      enum:
        - PERCENTAGE
        - FIXED
      title: DiscountType
      type: string
    PerformanceObligationOut:
      description: Output schema for performance obligation (contract line item).
      properties:
        id:
          title: Id
          type:
            - integer
            - 'null'
        item_id:
          title: Item Id
          type:
            - integer
            - 'null'
        item_type:
          title: Item Type
          type:
            - string
            - 'null'
        item_name:
          title: Item Name
          type:
            - string
            - 'null'
        hsn_sac_code:
          title: Hsn Sac Code
          type:
            - string
            - 'null'
        quantity:
          title: Quantity
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,6}0*$
          type:
            - string
            - 'null'
        rate:
          title: Rate
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,10}0*$
          type:
            - string
            - 'null'
        position:
          title: Position
          type: integer
        memo:
          title: Memo
          type: string
        standalone_selling_price:
          title: Standalone Selling Price
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,10}0*$
          type:
            - string
            - 'null'
        term_id:
          title: Term Id
          type:
            - integer
            - 'null'
        billing_group:
          default: 1
          minimum: 1
          title: Billing Group
          type: integer
        recognition_strategy:
          allOf:
            - $ref: '#/components/schemas/RecognitionStrategy'
          default: straight_line
        obligation_conditions:
          additionalProperties: true
          title: Obligation Conditions
          type: object
        classifications:
          default: []
          items:
            $ref: '#/components/schemas/RecordClassificationsSchemaOut'
          title: Classifications
          type: array
        billing_start_date:
          format: date
          title: Billing Start Date
          type: string
        billing_end_date:
          title: Billing End Date
          format: date
          type:
            - string
            - 'null'
        billing_frequency:
          $ref: '#/components/schemas/BillingCadence'
        billing_interval:
          title: Billing Interval
          type: integer
        sync_billing_with_recognition:
          default: false
          title: Sync Billing With Recognition
          type: boolean
        skip_invoice_generation:
          default: false
          title: Skip Invoice Generation
          type: boolean
        recognition_start_date:
          format: date
          title: Recognition Start Date
          type: string
        recognition_end_date:
          title: Recognition End Date
          format: date
          type:
            - string
            - 'null'
        recognition_frequency:
          $ref: '#/components/schemas/RecognitionCadence'
        recognition_interval:
          title: Recognition Interval
          type: integer
        discount_type:
          anyOf:
            - $ref: '#/components/schemas/DiscountType'
            - type: 'null'
        discount_value:
          title: Discount Value
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,6}0*$
          type:
            - string
            - 'null'
        allocated_amount:
          title: Allocated Amount
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
          type:
            - string
            - 'null'
        selected_vat_rate_id:
          title: Selected Vat Rate Id
          type:
            - integer
            - 'null'
        selected_gst_tax_rate_id:
          title: Selected Gst Tax Rate Id
          type:
            - integer
            - 'null'
        is_auto_renewable:
          default: false
          title: Is Auto Renewable
          type: boolean
        auto_renewal_date:
          title: Auto Renewal Date
          format: date
          type:
            - string
            - 'null'
        renewed_from_id:
          title: Renewed From Id
          type:
            - integer
            - 'null'
        changed_from_id:
          title: Changed From Id
          type:
            - integer
            - 'null'
        change_lineage_root_id:
          title: Change Lineage Root Id
          type:
            - integer
            - 'null'
        is_incomplete:
          readOnly: true
          title: Is Incomplete
          type: boolean
        amount:
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          readOnly: true
          title: Amount
          type: string
        discount_amount:
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          readOnly: true
          title: Discount Amount
          type: string
        net_amount:
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          readOnly: true
          title: Net Amount
          type: string
        qualifies_for_mrr:
          description: Whether this obligation should be included in MRR/ARR calculations.
          readOnly: true
          title: Qualifies For Mrr
          type: boolean
      required:
        - position
        - memo
        - billing_start_date
        - billing_frequency
        - billing_interval
        - recognition_start_date
        - recognition_frequency
        - recognition_interval
        - is_incomplete
        - amount
        - discount_amount
        - net_amount
        - qualifies_for_mrr
      title: PerformanceObligationOut
      type: object
    ObligationChangeType:
      enum:
        - MODIFICATION
        - CANCELLATION
        - ADDITION
      title: ObligationChangeType
      type: string
    ObligationFieldChange:
      properties:
        old_value:
          title: Old Value
          type:
            - string
            - 'null'
        new_value:
          title: New Value
          type:
            - string
            - 'null'
      title: ObligationFieldChange
      type: object

````