Skip to navigation

Amendments & Lifecycle

View as Markdown

Contract terms change over time — customers upgrade, downgrade, add products, or end commitments early. How you handle a change in Tabs depends on the scope.

Choosing the right approach

ChangeRecommended action
New deal or major restructureCreate a new contract
Contract term is ending and should continueApprove its Renewal rather than creating a new contract manually
Stop billing for one product mid-contractTerminate the billing term at a specific date
End an entire commitment after invoicing has startedTerminate the commitment and all associated billing terms
Reorganize existing billing terms across contractsMove the billing term to another contract

Create a new contract

When a customer upgrades, downgrades, or changes terms in a way that represents a new deal, create a new contract. This preserves a clean audit trail and keeps billing and revenue history intact.

You can create contracts via the Tabs app, CRM sync, or the Contracts API.

Terminate a billing term

Use this when you need to stop billing for a single product or service without ending the entire contract. When you set a termination date on a billing term, Tabs will:

  • Shorten the final invoice service period to the termination date
  • Remove future invoice line items so they do not regenerate
  • Respect billing timing (e.g. in arrears, end of period) automatically

If the invoice for the affected period has not been finalized, it reflects the updated service period. If the invoice has already been finalized, reset and resend it to reflect the changes.

If the termination date falls within a closed books period, the action will fail.

Move a billing term to another contract

Use this when the billing structure is correct but it lives on the wrong contract — for example, terms that were ingested onto a single contract but belong on separate ones, or an amendment that should be consolidated onto the original contract.

Moving a billing term reparents it along with its invoice items and performance obligations, so billing and revenue history follow the term to the destination contract.

You can move a billing term from the contract’s billing view in the Tabs app or via API.

Rules to be aware of:

  • The destination contract must belong to the same customer as the source contract
  • Billing terms that share a billing term group or a usage commitment must move together — a move that would split a group is rejected
  • A move is not a termination, so nothing is shortened, zeroed out, or rebuilt

This replaces the older workaround of deleting the billing term and recreating it on the target contract, which lost invoice and revenue history.

Terminate a commitment

Use this when contract terms change after invoicing has started and you need to end an active commitment and all associated billing terms as of a specific date. Commitment data cannot be edited retroactively, so termination is the supported way to modify commitments after invoicing.

When you terminate a commitment:

  • The commitment, all associated billing terms, and performance obligations end up to and including the termination date
  • Revenue is recognized based on the updated service window
  • Any activity after the termination date must be recreated under a new commitment

Terminating a billing term or commitment is a destructive action. Tabs does not automatically recreate remaining terms — you must manually rebuild any replacement billing structure.

Boundary-based termination (at the end of a billing or commitment period) is strongly preferred. Mid-period termination is supported but requires manual reconstruction — for example, calculating how much of a commitment has been used and creating a new commitment for the remaining balance.

Delete a contract

You can delete a contract from the customer page or the Documents view in the Tabs app. Deleting a contract also deletes all associated billing terms linked to it.

You can only delete a contract if all associated invoices are still in Draft. Once any invoice has been sent, deletion is not available — use termination workflows instead.