---
title: "Amends a contract"
method: POST
path: "/contracts/{contract_id}/amendments"
tags: ["Contracts"]
---

# Amends a contract

`POST /contracts/{contract_id}/amendments`

Applies a contract amendment when you need to add items, retire items, or change pricing/invoicing after go-live.
Unlike a full PUT update, amendments model business-time changes and preserve historical billing context.

Use preview-contract-amendment to dry-run the financial impact before committing.

## Path parameters

- `contract_id` string, required

## Request body

- union
  - object
    - `amendment_date` string, date, required — It cannot be earlier than the previous amendment date if the contract has already been amended.
    - `amendment_reason` string, required
    - `items` AmendFullContractItemRequest[], required — List of new contract items and new versions of amended contract items. Existing contract items that do not appear in the list will remain unchanged.
      - `product_id` string, uuid, required
      - `price` union, required
        - FixedRecurringPrice
          - `amount` MonetaryAmount, required
            - `amount` string, required — Monetary amount in decimal format, using a period (.) as the decimal separator. (e.g. '1.01' in $ currency represents 1$ and 1 cent.)
            - `currency` string, required — Currency code following ISO-4217
          - `interval_months` integer, required
          - `type` string, required
        - OneTimePrice
          - `amount` MonetaryAmount, required
            - `amount` string, required — Monetary amount in decimal format, using a period (.) as the decimal separator. (e.g. '1.01' in $ currency represents 1$ and 1 cent.)
            - `currency` string, required — Currency code following ISO-4217
          - `type` string, required
        - UsagePrice
          - `interval_months` integer, required
          - `type` string, required
          - `billing_scheme` union, required
            - PerUnitBilling
              - …
            - TieredBilling — All tiers except for the highest have to define a value for upTo. There cannot be more than one tier with the same upTo value.
              - …
      - `quantity` number, required
      - `revenue_pattern` 'DAILY' | 'EVEN_PERIOD', required — DAILY means that the revenue is divided equally per day in the revenue period. EVEN_PERIOD means that the revenue is divided equally for each calendar month in the revenue period.
      - `discount` union
        - AmountDiscount
          - `amount_off` RoundedMonetaryAmount, required — A monetary amount that must be rounded to the currency's default decimal places (e.g., 2 decimal places for USD).
            - `amount` string, required — Monetary amount in decimal format, using a period (.) as the decimal separator. Must be rounded to the currency's default decimal places (e.g. '1.01' in USD represents 1 dollar and 1 cent).
            - `currency` string, required — Currency code following ISO-4217
          - `type` string
        - PercentageDiscount
          - `percentage_off` number, double, required
          - `type` string
      - `tax_rate` TaxRate
        - `percentage` number, required
        - `tax_amount` RoundedMonetaryAmount — A monetary amount that must be rounded to the currency's default decimal places (e.g., 2 decimal places for USD).
          - `amount` string, required — Monetary amount in decimal format, using a period (.) as the decimal separator. Must be rounded to the currency's default decimal places (e.g. '1.01' in USD represents 1 dollar and 1 cent).
          - `currency` string, required — Currency code following ISO-4217
        - `country` string, required — Two-letter country code (ISO 3166-1 alpha-2).
        - `type` 'VAT' | 'SALES_TAX', required
        - `description` string, required
      - `start_date` string, date, required — Must be on or after the amendment date.
      - `end_date` string, date — Defaults to the contract end date
      - `effective_from` 'AS_OF_AMENDMENT_DATE' | 'END_OF_CURRENT_BILLING_CYCLE' — Defines when the amendment takes effect. - `AS_OF_AMENDMENT_DATE`: apply changes as of the amendment date - `END_OF_CURRENT_BILLING_CYCLE`: apply at the end of the current billing cycle
      - `amending` string, uuid — Contract item ID that is being amended. If empty, a new item will be created.
    - `invoicing` union, required
      - MonthlyInvoicing
        - `payment_terms` integer, required
        - `interval` string, required
        - `day` integer, required
      - MonthlyProratedInvoicing — Monthly prorated invoicing is only available for contracts with usage products and a minimum usage commitment.
        - `payment_terms` integer, required
        - `interval` string, required
        - `day` integer, required
      - QuarterlyInvoicing
        - `payment_terms` integer, required
        - `interval` string, required
        - `month_day` string, required — A string in --MM-dd format. Invoices will be created starting on that date and every 3 months.
      - SemiAnnualInvoicing
        - `payment_terms` integer, required
        - `interval` string, required
        - `month_day` string, required — A string in --MM-dd format. Invoices will be created starting on that date and every 6 months.
      - YearlyInvoicing
        - `payment_terms` integer, required
        - `interval` string, required
        - `month_day` string, required — A string in --MM-dd format
    - `scope` 'FULL' | 'REVENUE_RECOGNITION_ONLY', required — The "FULL" scope includes revenue recognition and invoicing handled in Rillet. With the "REVENUE_RECOGNITION_ONLY" scope, invoicing is handled outside Rillet.
  - object
    - `amendment_date` string, date, required — It cannot be earlier than the previous amendment date if the contract has already been amended.
    - `amendment_reason` string, required
    - `items` union[], required — List of new contract items and new versions of amended contract items. Existing contract items that do not appear in the list will remain unchanged. If you want to delete a contract item from the amendment date onwards, use the `TERMINATED_ITEM`."
      - union
        - object
          - `product_id` string, uuid, required
          - `price` MonetaryAmount, required
            - `amount` string, required — Monetary amount in decimal format, using a period (.) as the decimal separator. (e.g. '1.01' in $ currency represents 1$ and 1 cent.)
            - `currency` string, required — Currency code following ISO-4217
          - `discount` union
            - AmountDiscount
              - …
            - PercentageDiscount
              - …
          - `revenue_pattern` 'DAILY' | 'EVEN_PERIOD', required — DAILY means that the revenue is divided equally per day in the revenue period. EVEN_PERIOD means that the revenue is divided equally for each calendar month in the revenue period.
          - `start_date` string, date — By default is the amendment date. If provided, the date has to be on or after the amendment date.
          - `end_date` string, date — End date for the new item. If omitted, defaults to the contract end date. If provided, must be on or after the item's start date.
          - `external_reference` ExternalReference, required — For requests, only pre-defined custom IDs are accepted. In responses, an object imported through an integration (e.g. Stripe) would return the provider's object ID.
            - `type` string, required
            - `id` string, required
            - `url` string, uri
          - `type` string, required
        - object
          - `price` MonetaryAmount, required
            - `amount` string, required — Monetary amount in decimal format, using a period (.) as the decimal separator. (e.g. '1.01' in $ currency represents 1$ and 1 cent.)
            - `currency` string, required — Currency code following ISO-4217
          - `discount` union
            - AmountDiscount
              - …
            - PercentageDiscount
              - …
          - `revenue_pattern` 'DAILY' | 'EVEN_PERIOD' — DAILY means that the revenue is divided equally per day in the revenue period. EVEN_PERIOD means that the revenue is divided equally for each calendar month in the revenue period.
          - `amending_reference` string, required — External Reference of the contract item being amended.
          - `end_date` string, date — New end date for the amended (continuing) item. If omitted, the item keeps its current end date. Must be on or after the amendment date.
          - `type` string, required
        - object
          - `external_reference` string, required — External Reference of the contract item being terminated.
          - `end_date` string, date — Date the item is terminated on. Revenue is recognized through this date. Must be on or after the amendment date. If omitted, the item is terminated as of the amendment date.
          - `type` string, required
    - `invoice_schedule` InvoiceSchedule, required
      - `invoices` InvoiceScheduleInvoice[]
        - `due_date` string, date — Defaults to invoice_date, if not provided
        - `invoice_date` string, date, required
        - `invoice_number` string, required
        - `tax_amount` RoundedMonetaryAmount — A monetary amount that must be rounded to the currency's default decimal places (e.g., 2 decimal places for USD).
          - `amount` string, required — Monetary amount in decimal format, using a period (.) as the decimal separator. Must be rounded to the currency's default decimal places (e.g. '1.01' in USD represents 1 dollar and 1 cent).
          - `currency` string, required — Currency code following ISO-4217
        - `items` InvoiceScheduleInvoiceItem[], required
          - `description` string, required
          - `contract_item_reference` string, required — Refers to the ID of the contract item's external_reference.
          - `quantity` number, required
          - `total_amount` RoundedMonetaryAmount, required — A monetary amount that must be rounded to the currency's default decimal places (e.g., 2 decimal places for USD).
            - `amount` string, required — Monetary amount in decimal format, using a period (.) as the decimal separator. Must be rounded to the currency's default decimal places (e.g. '1.01' in USD represents 1 dollar and 1 cent).
            - `currency` string, required — Currency code following ISO-4217
          - `tax_amount` RoundedMonetaryAmount — A monetary amount that must be rounded to the currency's default decimal places (e.g., 2 decimal places for USD).
            - `amount` string, required — Monetary amount in decimal format, using a period (.) as the decimal separator. Must be rounded to the currency's default decimal places (e.g. '1.01' in USD represents 1 dollar and 1 cent).
            - `currency` string, required — Currency code following ISO-4217
          - `discount_amount` RoundedMonetaryAmount — A monetary amount that must be rounded to the currency's default decimal places (e.g., 2 decimal places for USD).
            - `amount` string, required — Monetary amount in decimal format, using a period (.) as the decimal separator. Must be rounded to the currency's default decimal places (e.g. '1.01' in USD represents 1 dollar and 1 cent).
            - `currency` string, required — Currency code following ISO-4217
          - `external_references` ExternalReference[], required
            - `type` string, required
            - `id` string, required
            - `url` string, uri
        - `external_references` ExternalReference[], required
          - `type` string, required
          - `id` string, required
          - `url` string, uri
    - `scope` 'FULL' | 'REVENUE_RECOGNITION_ONLY', required — The "FULL" scope includes revenue recognition and invoicing handled in Rillet. With the "REVENUE_RECOGNITION_ONLY" scope, invoicing is handled outside Rillet.

## Response `200`

OK

- ExpandedContract
  - `id` string, uuid, required
  - `customer_id` string, uuid, required
  - `subsidiary_id` string, uuid, required
  - `name` string, required
  - `items` ContractItem[], required
    - `id` string, uuid, required
    - `product_id` string, uuid, required
    - `price` union, required
      - FixedRecurringPrice
        - `amount` MonetaryAmount, required
          - `amount` string, required — Monetary amount in decimal format, using a period (.) as the decimal separator. (e.g. '1.01' in $ currency represents 1$ and 1 cent.)
          - `currency` string, required — Currency code following ISO-4217
        - `interval_months` integer, required
        - `type` string, required
      - OneTimePrice
        - `amount` MonetaryAmount, required
          - `amount` string, required — Monetary amount in decimal format, using a period (.) as the decimal separator. (e.g. '1.01' in $ currency represents 1$ and 1 cent.)
          - `currency` string, required — Currency code following ISO-4217
        - `type` string, required
      - UsagePrice
        - `interval_months` integer, required
        - `type` string, required
        - `billing_scheme` union, required
          - PerUnitBilling
            - `type` string, required
            - `amount` MonetaryAmount, required
              - …
            - `units` integer, required
          - TieredBilling — All tiers except for the highest have to define a value for upTo. There cannot be more than one tier with the same upTo value.
            - `type` string, required
            - `mode` 'GRADUATED' | 'METERED', required — In metered tiering, the maximum quantity within a period determines the price. In graduated tiering, pricing changes as the quantity grows – the price from each tier up to the reported quantity is accumulated.
            - `tiers` Tier[], required
              - …
    - `quantity` number, required
    - `total_value` RoundedMonetaryAmount, required — A monetary amount that must be rounded to the currency's default decimal places (e.g., 2 decimal places for USD).
      - `amount` string, required — Monetary amount in decimal format, using a period (.) as the decimal separator. Must be rounded to the currency's default decimal places (e.g. '1.01' in USD represents 1 dollar and 1 cent).
      - `currency` string, required — Currency code following ISO-4217
    - `revenue_pattern` 'DAILY' | 'EVEN_PERIOD', required — DAILY means that the revenue is divided equally per day in the revenue period. EVEN_PERIOD means that the revenue is divided equally for each calendar month in the revenue period.
    - `discount` union
      - AmountDiscount
        - `amount_off` RoundedMonetaryAmount, required — A monetary amount that must be rounded to the currency's default decimal places (e.g., 2 decimal places for USD).
          - `amount` string, required — Monetary amount in decimal format, using a period (.) as the decimal separator. Must be rounded to the currency's default decimal places (e.g. '1.01' in USD represents 1 dollar and 1 cent).
          - `currency` string, required — Currency code following ISO-4217
        - `type` string
      - PercentageDiscount
        - `percentage_off` number, double, required
        - `type` string
    - `tax_rate` TaxRate
      - `percentage` number, required
      - `tax_amount` RoundedMonetaryAmount — A monetary amount that must be rounded to the currency's default decimal places (e.g., 2 decimal places for USD).
        - `amount` string, required — Monetary amount in decimal format, using a period (.) as the decimal separator. Must be rounded to the currency's default decimal places (e.g. '1.01' in USD represents 1 dollar and 1 cent).
        - `currency` string, required — Currency code following ISO-4217
      - `country` string, required — Two-letter country code (ISO 3166-1 alpha-2).
      - `type` 'VAT' | 'SALES_TAX', required
      - `description` string, required
    - `start_date` string, date, required
    - `end_date` string, date
    - `status` 'AMENDED' | 'ACTIVE', required
    - `amending` string, uuid — When set, references the item this item is amending.
    - `fields` object[]
      - `field_id` string, uuid, required
      - `field_value_id` string, uuid, required
    - `external_references` ExternalReference[], required
      - `type` string, required
      - `id` string, required
      - `url` string, uri
    - `usage_minimum_commitment` UsageCommitment
      - `amount` RoundedMonetaryAmount, required — A monetary amount that must be rounded to the currency's default decimal places (e.g., 2 decimal places for USD).
        - `amount` string, required — Monetary amount in decimal format, using a period (.) as the decimal separator. Must be rounded to the currency's default decimal places (e.g. '1.01' in USD represents 1 dollar and 1 cent).
        - `currency` string, required — Currency code following ISO-4217
      - `revenue_account` string, required — The account code found in the Chart of Accounts
  - `status` 'ACTIVE' | 'IN_EFFECT' | 'CANCELLED' | 'ENDED' | 'AMENDED', required
  - `start_date` string, date, required
  - `end_date` string, date
  - `close_date` string, date, required
  - `invoicing` union, required
    - MonthlyInvoicing
      - `payment_terms` integer, required
      - `interval` string, required
      - `day` integer, required
    - MonthlyProratedInvoicing — Monthly prorated invoicing is only available for contracts with usage products and a minimum usage commitment.
      - `payment_terms` integer, required
      - `interval` string, required
      - `day` integer, required
    - QuarterlyInvoicing
      - `payment_terms` integer, required
      - `interval` string, required
      - `month_day` string, required — A string in --MM-dd format. Invoices will be created starting on that date and every 3 months.
    - SemiAnnualInvoicing
      - `payment_terms` integer, required
      - `interval` string, required
      - `month_day` string, required — A string in --MM-dd format. Invoices will be created starting on that date and every 6 months.
    - YearlyInvoicing
      - `payment_terms` integer, required
      - `interval` string, required
      - `month_day` string, required — A string in --MM-dd format
  - `usage_configuration` UsageConfiguration
    - `usage_invoicing` UsageInvoicing, required
      - `frequency` 'MONTHLY' | 'QUARTERLY' | 'SEMI_ANNUAL' | 'YEARLY', required
      - `payment_terms` integer, required
      - `invoice_date` 'FIRST_DAY_OF_NEXT_CYCLE' | 'LAST_DAY_OF_CURRENT_CYCLE', required — When the usage invoice is created in relation to the usage cycle.
      - `cycle` 'CALENDAR' | 'SUBSCRIPTION_ANNIVERSARY', required — When does the invoicing pricing cycle reset and results in an invoice. Calendar option is only allowed when usage invoice frequency is Monthly, and contract does not start on the 1st of the Month.
    - `minimum_commitment_invoicing` MinimumCommitmentInvoicing
      - `frequency` 'MONTHLY' | 'MONTHLY_PRORATED' | 'QUARTERLY' | 'SEMI_ANNUAL' | 'YEARLY', required — MONTHLY_PRORATED is only available for CALENDAR usage invoice cycle. It need to be the same as contract level invoicing frequency.
      - `payment_terms` integer, required
    - `minimum_commitment_cycle` 'MONTHLY' | 'CONTRACT' — Determines how often does the minimum commitment reset.
    - `contract_level_minimum_commitment` UsageCommitment
      - `amount` RoundedMonetaryAmount, required — A monetary amount that must be rounded to the currency's default decimal places (e.g., 2 decimal places for USD).
        - `amount` string, required — Monetary amount in decimal format, using a period (.) as the decimal separator. Must be rounded to the currency's default decimal places (e.g. '1.01' in USD represents 1 dollar and 1 cent).
        - `currency` string, required — Currency code following ISO-4217
      - `revenue_account` string, required — The account code found in the Chart of Accounts
  - `total_value` RoundedMonetaryAmount, required — A monetary amount that must be rounded to the currency's default decimal places (e.g., 2 decimal places for USD).
    - `amount` string, required — Monetary amount in decimal format, using a period (.) as the decimal separator. Must be rounded to the currency's default decimal places (e.g. '1.01' in USD represents 1 dollar and 1 cent).
    - `currency` string, required — Currency code following ISO-4217
  - `external_references` ExternalReference[]
    - `type` string, required
    - `id` string, required
    - `url` string, uri
  - `exchange_rate` ExchangeRate
    - `base` string, required — Currency code following ISO-4217
    - `target` string, required — Currency code following ISO-4217
    - `rate` string, required
    - `date` string, date, required
  - `invoices` ContractInvoice[]
    - `id` string, uuid, required
    - `invoice_number` string, required
    - `invoice_date` string, date, required
    - `due_date` string, date, required
    - `status` 'UNPAID' | 'PAID' | 'PARTIALLY_PAID' | 'UNBILLED' | 'CREDITED' | 'PARTIALLY_CREDITED', required
    - `total` RoundedMonetaryAmount, required — A monetary amount that must be rounded to the currency's default decimal places (e.g., 2 decimal places for USD).
      - `amount` string, required — Monetary amount in decimal format, using a period (.) as the decimal separator. Must be rounded to the currency's default decimal places (e.g. '1.01' in USD represents 1 dollar and 1 cent).
      - `currency` string, required — Currency code following ISO-4217
    - `taxed_amount` RoundedMonetaryAmount, required — A monetary amount that must be rounded to the currency's default decimal places (e.g., 2 decimal places for USD).
      - `amount` string, required — Monetary amount in decimal format, using a period (.) as the decimal separator. Must be rounded to the currency's default decimal places (e.g. '1.01' in USD represents 1 dollar and 1 cent).
      - `currency` string, required — Currency code following ISO-4217
    - `items` InvoiceItem[], required
      - `id` string, uuid, required
      - `description` string, required
      - `revenue` ItemRevenue, required
        - `period` CalendarPeriod
          - `start` string, date, required
          - `end` string, date, required
        - `pattern` 'DAILY' | 'EVEN_PERIOD' — DAILY means that the revenue is divided equally per day in the revenue period. EVEN_PERIOD means that the revenue is divided equally for each calendar month in the revenue period.
        - `account_code` string — The account code found in the Chart of Accounts
      - `total_amount` RoundedMonetaryAmount, required — A monetary amount that must be rounded to the currency's default decimal places (e.g., 2 decimal places for USD).
        - `amount` string, required — Monetary amount in decimal format, using a period (.) as the decimal separator. Must be rounded to the currency's default decimal places (e.g. '1.01' in USD represents 1 dollar and 1 cent).
        - `currency` string, required — Currency code following ISO-4217
      - `total_discount` RoundedMonetaryAmount, required — A monetary amount that must be rounded to the currency's default decimal places (e.g., 2 decimal places for USD).
        - `amount` string, required — Monetary amount in decimal format, using a period (.) as the decimal separator. Must be rounded to the currency's default decimal places (e.g. '1.01' in USD represents 1 dollar and 1 cent).
        - `currency` string, required — Currency code following ISO-4217
      - `taxed_amount` RoundedMonetaryAmount, required — A monetary amount that must be rounded to the currency's default decimal places (e.g., 2 decimal places for USD).
        - `amount` string, required — Monetary amount in decimal format, using a period (.) as the decimal separator. Must be rounded to the currency's default decimal places (e.g. '1.01' in USD represents 1 dollar and 1 cent).
        - `currency` string, required — Currency code following ISO-4217
      - `gross_rate` RoundedMonetaryAmount, required — A monetary amount that must be rounded to the currency's default decimal places (e.g., 2 decimal places for USD).
        - `amount` string, required — Monetary amount in decimal format, using a period (.) as the decimal separator. Must be rounded to the currency's default decimal places (e.g. '1.01' in USD represents 1 dollar and 1 cent).
        - `currency` string, required — Currency code following ISO-4217
      - `quantity` number, required
      - `product_id` string, uuid, required
      - `external_references` ExternalReference[], required
        - `type` string, required
        - `id` string, required
        - `url` string, uri
      - `fields` object[]
        - `field_id` string, uuid, required
        - `field_value_id` string, uuid, required
    - `external_references` ExternalReference[], required
      - `type` string, required
      - `id` string, required
      - `url` string, uri

## Other responses

- `default` — Error

---

[API](https://skmtc.net/rillet/apis/rillet-accounting-api.md) · [All operations](https://skmtc.net/rillet/apis/rillet-accounting-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/rillet/rillet-accounting-api/versions/a2ab794dd5f2/schema)
