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

# Modify Subscription Schedule

> Generate a modified subscription schedule by comparing a new schedule against an existing subscription. Returns the delta between the original and modified schedules, with support for catch-up accounting and contract end date modifications.



## OpenAPI

````yaml https://api.meetcampfire.com/api/schema?format=json post /rr/api/v1/modify-subscription-schedule
openapi: 3.0.3
info:
  title: Campfire Developer APIs
  version: 1.0.0
  description: >
    ## Introduction

    Campfire's developer APIs offer granular access to Campfire's core
    accounting,

    revenue recognition, and financial data features.


    These APIs are designed to be used by developers to build custom
    integrations,

    automate workflows, and perform any other programmatic operations.


    ## Rate limits

    API users can make up to **5 requests per second**. This limit is shared
    across

    all endpoints for the same API user. Requests that exceed the limit receive
    a

    `429 Too Many Requests` response. Wait for the number of seconds specified
    in

    the `Retry-After` response header before retrying.
servers:
  - url: https://api.meetcampfire.com
    description: Production server
security: []
tags:
  - name: Cash Management
    description: Operations related to accounts, transactions, and other bank-related data.
  - name: Core Accounting
    description: >-
      Operations related to core accounting data, such as the chart of accounts,
      entity management, and the general ledger.
  - name: Revenue Recognition
    description: >-
      Operations related to revenue recognition, contract management, and
      contract data aggregation.
  - name: Accounts Receivable
    description: Operations related to invoicing and the AR subledger
  - name: Accounts Payable
    description: Operations related to billing and the AP subledger.
  - name: Financial Statements
    description: Operations related to financial statement generation and data aggregation.
  - name: Settings
    description: Operations related to system and accounting settings configuration.
paths:
  /rr/api/v1/modify-subscription-schedule:
    post:
      tags:
        - Revenue Recognition
      summary: Modify Subscription Schedule
      description: >-
        Generate a modified subscription schedule by comparing a new schedule
        against an existing subscription. Returns the delta between the original
        and modified schedules, with support for catch-up accounting and
        contract end date modifications.
      operationId: modify_subscription_schedule
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GenerageSubscriptionSchedule'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/GenerageSubscriptionSchedule'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/GenerageSubscriptionSchedule'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ContractSubscriptionLine'
          description: ''
components:
  schemas:
    GenerageSubscriptionSchedule:
      type: object
      properties:
        start_date:
          type: string
          format: date
          description: Start date of the subscription period.
        end_date:
          type: string
          format: date
          nullable: true
          description: >-
            End date of the subscription period. Defaults to 1 year from start
            date if not provided.
        total_value:
          type: number
          format: double
          maximum: 1000000000000000000
          minimum: -1000000000000000000
          exclusiveMaximum: true
          exclusiveMinimum: true
          description: Total contract value for the subscription period.
        mrr:
          type: number
          format: double
          maximum: 1000000000000000000
          minimum: -1000000000000000000
          exclusiveMaximum: true
          exclusiveMinimum: true
          description: >-
            Monthly recurring revenue. If not provided, it is calculated from
            total_value and the subscription period.
        use_daily_accounting:
          type: boolean
          default: false
          description: Whether to use daily (vs monthly) revenue recognition.
        proration_method:
          nullable: true
          description: >-
            Proration method. When provided, takes precedence over
            use_daily_accounting (DAILY↔True, STANDARD/THIRTY_DAY↔False).


            * `standard` - Standard (actual month length)

            * `thirty_day` - Fixed 30-day month

            * `daily` - Daily
          oneOf:
            - $ref: '#/components/schemas/ProrationMethodEnum'
            - $ref: '#/components/schemas/NullEnum'
        use_catchup:
          type: boolean
          default: false
          description: Enable catch-up accounting for retroactive amendments.
        catchup_date:
          type: string
          format: date
          nullable: true
          description: >-
            Date from which to apply catch-up adjustments. Required if
            use_catchup is true.
        modified_subscription:
          type: integer
          nullable: true
          description: ID of the existing contract subscription being modified.
        does_modify_contract_end_date:
          type: boolean
          default: false
          description: Whether this modification changes the contract end date.
        apply_prospectively:
          type: boolean
          default: false
          description: >-
            Apply changes prospectively from catchup_date instead of
            retroactively. Only valid when use_catchup is true.
        billing_cadence:
          nullable: true
          oneOf:
            - $ref: >-
                #/components/schemas/GenerageSubscriptionScheduleBillingCadenceEnum
            - $ref: '#/components/schemas/NullEnum'
        billing_timing:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/BillingTiming6e7Enum'
            - $ref: '#/components/schemas/NullEnum'
        first_invoice_date:
          type: string
          format: date
          nullable: true
        revenue_recognition_type:
          nullable: true
          description: >-
            Recognition type of the subscription being previewed. RATABLE keeps
            the monthly recognition schedule and stamps each row with its
            billing date. Omitted means the preview mirrors the billing
            installments.


            * `RATABLE` - Ratable

            * `RELATIVE_TO_PREPAID_COMMIT` - Relative to prepaid commit
          oneOf:
            - $ref: '#/components/schemas/RevenueRecognitionTypeEnum'
            - $ref: '#/components/schemas/NullEnum'
      required:
        - start_date
        - total_value
    ContractSubscriptionLine:
      type: object
      properties:
        id:
          type: integer
          nullable: true
        start_date:
          type: string
          format: date
        end_date:
          type: string
          format: date
        scheduled_invoice_date:
          type: string
          format: date
          nullable: true
        original_value:
          type: number
          format: double
          maximum: 1000000000000000000
          minimum: -1000000000000000000
          exclusiveMaximum: true
          exclusiveMinimum: true
          nullable: true
        total_value:
          type: number
          format: double
          maximum: 1000000000000000000
          minimum: -1000000000000000000
          exclusiveMaximum: true
          exclusiveMinimum: true
        original_mrr:
          type: number
          format: double
          maximum: 1000000000000000000
          minimum: -1000000000000000000
          exclusiveMaximum: true
          exclusiveMinimum: true
          nullable: true
        mrr:
          type: number
          format: double
          maximum: 1000000000000000000
          minimum: -1000000000000000000
          exclusiveMaximum: true
          exclusiveMinimum: true
        original_quantity:
          type: number
          format: double
          maximum: 100000000000000
          minimum: -100000000000000
          exclusiveMaximum: true
          exclusiveMinimum: true
          nullable: true
        quantity:
          type: number
          format: double
          maximum: 100000000000000
          minimum: -100000000000000
          exclusiveMaximum: true
          exclusiveMinimum: true
          nullable: true
        original_rate:
          type: number
          format: double
          maximum: 10000000000000
          minimum: -10000000000000
          exclusiveMaximum: true
          exclusiveMinimum: true
          nullable: true
        rate:
          type: number
          format: double
          maximum: 10000000000000
          minimum: -10000000000000
          exclusiveMaximum: true
          exclusiveMinimum: true
          nullable: true
        billed_amount:
          type: number
          format: double
          maximum: 1000000000000000000
          minimum: -1000000000000000000
          exclusiveMaximum: true
          exclusiveMinimum: true
          nullable: true
        use_daily_accounting:
          type: boolean
          default: false
        is_contract_amendment:
          type: boolean
          default: false
      required:
        - end_date
        - start_date
        - total_value
    ProrationMethodEnum:
      enum:
        - standard
        - thirty_day
        - daily
      type: string
      description: |-
        * `standard` - Standard (actual month length)
        * `thirty_day` - Fixed 30-day month
        * `daily` - Daily
    NullEnum:
      enum:
        - null
    GenerageSubscriptionScheduleBillingCadenceEnum:
      enum:
        - monthly
        - quarterly
        - biannual
        - annual
      type: string
      description: |-
        * `monthly` - Monthly
        * `quarterly` - Quarterly
        * `biannual` - Semiannual
        * `annual` - Annual
    BillingTiming6e7Enum:
      enum:
        - advance
        - arrears
      type: string
      description: |-
        * `advance` - In advance
        * `arrears` - In arrears
    RevenueRecognitionTypeEnum:
      enum:
        - RATABLE
        - RELATIVE_TO_PREPAID_COMMIT
      type: string
      description: |-
        * `RATABLE` - Ratable
        * `RELATIVE_TO_PREPAID_COMMIT` - Relative to prepaid commit

````