---
title: "Update Contract"
method: PUT
path: "/rr/api/v1/contracts/{id}"
tags: ["Revenue Recognition"]
---

# Update Contract

`PUT /rr/api/v1/contracts/{id}`

## Path parameters

- `id` integer, required

## Request body

- Contract
  - `id` integer, required
  - `entity_name` string, required
  - `client_name` string, required
  - `client_terms` string, required
  - `department_name` string, required
  - `parent_department_name` string, required
  - `parent_department` integer, required
  - `tags` string
  - `total_revenue` number, double, required
  - `total_mrr` number, double, required
  - `total_deferred_revenue` number, double, required
  - `currency` string
  - `entity_currency` string
  - `attachments` File[], required
    - `id` integer, required
    - `customer` integer, required
    - `created_at` string, date-time, required
    - `created_by` integer, nullable, required
    - `created_by_name` string, required
    - `created_by_email` string, required
    - `last_modified_at` string, date-time, required
    - `name` string, required
    - `url` string, required
    - `s3_content_type` string, nullable
    - `s3_content_length` integer, nullable
    - `s3_path` string, required
    - `object_id` integer, nullable
    - `app` string, required
    - `model` string, required
    - `is_deleted` boolean, required
    - `deleted_at` string, date-time, nullable, required
  - `prepaid_commits` NestedContractPrepaidCommit[]
    - `entity` integer, nullable
    - `product` integer, nullable
    - `name` string, required
    - `description` string
    - `currency` string, nullable
    - `exchange_rate` number, double, nullable
    - `exchange_rate_book` number, double, nullable
    - `total_value` number, double, required
    - `discount_percentage` number, double
    - `rate` number, double, nullable
    - `start_date` string, date, required
    - `expiration_date` string, date, nullable
    - `priority` integer
    - `subledger` integer, nullable
    - `overage_invoice_cadence` 'monthly' | 'quarterly' | 'biannual' | 'annual' | 'one_time' | 'custom' — * `monthly` - Monthly * `quarterly` - Quarterly * `biannual` - Bi Annualy * `annual` - Annual * `one_time` - One Time * `custom` - Custom
    - `auto_send_overage_invoices` boolean
    - `overage_invoice_start_month` string, date, nullable
    - `department` integer, nullable
    - `tags` integer[]
  - `contract_end_date` string, date, nullable — Fixed end date for standard contracts. Leave null for evergreen contracts (is_evergreen=true).
  - `is_evergreen` boolean — Set true for evergreen contracts (no fixed end date). Evergreen contracts cannot also be auto-renew. Auto-renew is a legacy method to extend contracts.
  - `auto_send_invoices` boolean — When true, generated invoices are automatically sent on their invoice date.
  - `skip_evergreen_invoice_generation` boolean — For Evergreen contracts only. Set at contract creation; existing contracts cannot change this setting. False means current behavior. True skips only Campfire's auto-generated evergreen invoices; revenue transactions still generate; existing invoices are not cleaned up.
  - `auto_apply_customer_stripe_config_to_invoices` boolean — Evergreen contracts only. When true, evergreen-generated invoices inherit stripe_connection and use_stripe_auto_bill from the contract customer.
  - `last_modified_at` string, date-time, required
  - `is_deleted` string, required
  - `deleted_at` string, required
  - `usage_tiers` string
  - `has_invoices` boolean, required
  - `has_journal_entries` boolean, required
  - `has_credit_memos` boolean, required
  - `effective_end_date` string, date, required — Rolling horizon end date for active evergreen contracts. It will be auto-generated by Campfire backend. Null for standard contracts.
  - `working_end_date` string, date, required — Canonical end date used by the system. Equals contract_end_date for standard or terminated contracts, and effective_end_date for active evergreen contracts.
  - `evergreen_locked_date` string, date, nullable, required — Inclusive lock date for evergreen contracts based on paid invoices and close books date. Dates on or before this value are immutable. Null for non-evergreen contracts, or when no financial locking events exist.
  - `search_vector` string, nullable, required
  - `search_text` string, nullable, required
  - `billing_frequency` 'monthly' | 'quarterly' | 'biannual' | 'annual' | 'one_time' | 'custom' — * `monthly` - Monthly * `quarterly` - Quarterly * `biannual` - Bi Annualy * `annual` - Annual * `one_time` - One Time * `custom` - Custom
  - `deal_name` string, nullable
  - `deal_id` string, nullable
  - `consultant` string, nullable
  - `closed_date` string, date, nullable
  - `total_contract_value` number, double, nullable
  - `contract_start_date` string, date, nullable
  - `exchange_rate` number, double, nullable
  - `exchange_rate_book` number, double, nullable
  - `crm_link` string, nullable
  - `contract_link` string, nullable
  - `status` 'ACTIVE' | 'PENDING' | 'COMPLETED' | 'DELETED' — * `ACTIVE` - Active * `PENDING` - Pending * `COMPLETED` - Completed * `DELETED` - Deleted
  - `source` 'SALESFORCE' | 'HUBSPOT' | 'STRIPE' | 'MANUAL' — * `SALESFORCE` - Salesforce * `HUBSPOT` - Hubspot * `STRIPE` - Stripe * `MANUAL` - Manual
  - `source_deal_data` unknown
  - `created_at` string, date-time, required
  - `auto_renew` boolean
  - `auto_renew_duration` integer, nullable
  - `auto_renew_invoice` boolean
  - `tag_ids` integer[]
  - `tag_group_ids` integer[]
  - `minimum_monthly_commitment_amount` number, double, nullable — Minimum monthly commitment amount (allowance threshold)
  - `minimum_monthly_commitment_quantity` number, double, nullable — Minimum monthly commitment quantity (allowance threshold in units)
  - `purchase_order_number` string, nullable
  - `customer` integer, required
  - `entity` integer, nullable
  - `client` integer, nullable
  - `department` integer, nullable
  - `journal_entries` integer[]

## Response `200`

- Contract
  - `id` integer, required
  - `entity_name` string, required
  - `client_name` string, required
  - `client_terms` string, required
  - `department_name` string, required
  - `parent_department_name` string, required
  - `parent_department` integer, required
  - `tags` string
  - `total_revenue` number, double, required
  - `total_mrr` number, double, required
  - `total_deferred_revenue` number, double, required
  - `currency` string
  - `entity_currency` string
  - `attachments` File[], required
    - `id` integer, required
    - `customer` integer, required
    - `created_at` string, date-time, required
    - `created_by` integer, nullable, required
    - `created_by_name` string, required
    - `created_by_email` string, required
    - `last_modified_at` string, date-time, required
    - `name` string, required
    - `url` string, required
    - `s3_content_type` string, nullable
    - `s3_content_length` integer, nullable
    - `s3_path` string, required
    - `object_id` integer, nullable
    - `app` string, required
    - `model` string, required
    - `is_deleted` boolean, required
    - `deleted_at` string, date-time, nullable, required
  - `prepaid_commits` NestedContractPrepaidCommit[]
    - `entity` integer, nullable
    - `product` integer, nullable
    - `name` string, required
    - `description` string
    - `currency` string, nullable
    - `exchange_rate` number, double, nullable
    - `exchange_rate_book` number, double, nullable
    - `total_value` number, double, required
    - `discount_percentage` number, double
    - `rate` number, double, nullable
    - `start_date` string, date, required
    - `expiration_date` string, date, nullable
    - `priority` integer
    - `subledger` integer, nullable
    - `overage_invoice_cadence` 'monthly' | 'quarterly' | 'biannual' | 'annual' | 'one_time' | 'custom' — * `monthly` - Monthly * `quarterly` - Quarterly * `biannual` - Bi Annualy * `annual` - Annual * `one_time` - One Time * `custom` - Custom
    - `auto_send_overage_invoices` boolean
    - `overage_invoice_start_month` string, date, nullable
    - `department` integer, nullable
    - `tags` integer[]
  - `contract_end_date` string, date, nullable — Fixed end date for standard contracts. Leave null for evergreen contracts (is_evergreen=true).
  - `is_evergreen` boolean — Set true for evergreen contracts (no fixed end date). Evergreen contracts cannot also be auto-renew. Auto-renew is a legacy method to extend contracts.
  - `auto_send_invoices` boolean — When true, generated invoices are automatically sent on their invoice date.
  - `skip_evergreen_invoice_generation` boolean — For Evergreen contracts only. Set at contract creation; existing contracts cannot change this setting. False means current behavior. True skips only Campfire's auto-generated evergreen invoices; revenue transactions still generate; existing invoices are not cleaned up.
  - `auto_apply_customer_stripe_config_to_invoices` boolean — Evergreen contracts only. When true, evergreen-generated invoices inherit stripe_connection and use_stripe_auto_bill from the contract customer.
  - `last_modified_at` string, date-time, required
  - `is_deleted` string, required
  - `deleted_at` string, required
  - `usage_tiers` string
  - `has_invoices` boolean, required
  - `has_journal_entries` boolean, required
  - `has_credit_memos` boolean, required
  - `effective_end_date` string, date, required — Rolling horizon end date for active evergreen contracts. It will be auto-generated by Campfire backend. Null for standard contracts.
  - `working_end_date` string, date, required — Canonical end date used by the system. Equals contract_end_date for standard or terminated contracts, and effective_end_date for active evergreen contracts.
  - `evergreen_locked_date` string, date, nullable, required — Inclusive lock date for evergreen contracts based on paid invoices and close books date. Dates on or before this value are immutable. Null for non-evergreen contracts, or when no financial locking events exist.
  - `search_vector` string, nullable, required
  - `search_text` string, nullable, required
  - `billing_frequency` 'monthly' | 'quarterly' | 'biannual' | 'annual' | 'one_time' | 'custom' — * `monthly` - Monthly * `quarterly` - Quarterly * `biannual` - Bi Annualy * `annual` - Annual * `one_time` - One Time * `custom` - Custom
  - `deal_name` string, nullable
  - `deal_id` string, nullable
  - `consultant` string, nullable
  - `closed_date` string, date, nullable
  - `total_contract_value` number, double, nullable
  - `contract_start_date` string, date, nullable
  - `exchange_rate` number, double, nullable
  - `exchange_rate_book` number, double, nullable
  - `crm_link` string, nullable
  - `contract_link` string, nullable
  - `status` 'ACTIVE' | 'PENDING' | 'COMPLETED' | 'DELETED' — * `ACTIVE` - Active * `PENDING` - Pending * `COMPLETED` - Completed * `DELETED` - Deleted
  - `source` 'SALESFORCE' | 'HUBSPOT' | 'STRIPE' | 'MANUAL' — * `SALESFORCE` - Salesforce * `HUBSPOT` - Hubspot * `STRIPE` - Stripe * `MANUAL` - Manual
  - `source_deal_data` unknown
  - `created_at` string, date-time, required
  - `auto_renew` boolean
  - `auto_renew_duration` integer, nullable
  - `auto_renew_invoice` boolean
  - `tag_ids` integer[]
  - `tag_group_ids` integer[]
  - `minimum_monthly_commitment_amount` number, double, nullable — Minimum monthly commitment amount (allowance threshold)
  - `minimum_monthly_commitment_quantity` number, double, nullable — Minimum monthly commitment quantity (allowance threshold in units)
  - `purchase_order_number` string, nullable
  - `customer` integer, required
  - `entity` integer, nullable
  - `client` integer, nullable
  - `department` integer, nullable
  - `journal_entries` integer[]

---

[API](https://skmtc.net/campfire/apis/campfire-developer-apis.md) · [All operations](https://skmtc.net/campfire/apis/campfire-developer-apis/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/campfire/campfire-developer-apis/versions/6945ebc3180e/schema)
