---
title: "Create Or Update Billing Contract"
method: POST
path: "/billing/contract"
tags: ["Billing", "billing"]
---

# Create Or Update Billing Contract

`POST /billing/contract`

Create or update the billing contract for the customer.

This is managed from the developer portal.

Admin only endpoint.

## Request body

- CreateBillingContractRequest — Request to create or update billing contract (admin only).
  - `start_date` string, date-time, required
  - `number_of_months` integer, required — Contract length in months
  - `items` CreateBillingContractItemRequest[], required — Contract line items
    - `item_type` 'base_rate' | 'outbound_call_over_quota' | 'monthly_minimum' | 'per_call_rate', required — Billing contract item types.
    - `price` union, required — Price in dollars
      - number
      - string
    - `quota` integer, nullable — Quota (e.g., number of included calls)
    - `min_call_duration_seconds` integer, nullable — Per-call rate only: calls shorter than this many seconds are not billed
    - `count_voicemails` boolean, nullable — Per-call rate only: whether outbound calls that hit voicemail are billed

## Response `200`

Successful Response

- BillingContractResponse — Response with billing contract details.
  - `billing_contract_id` string, uuid, required
  - `customer_id` string, uuid, required
  - `start_date` string, date-time, required
  - `number_of_months` integer, required
  - `items` BillingContractItemResponse[], required
    - `billing_contract_item_id` string, uuid, required
    - `billing_contract_id` string, uuid, required
    - `item_type` 'base_rate' | 'outbound_call_over_quota' | 'monthly_minimum' | 'per_call_rate', required — Billing contract item types.
    - `price` string, required
    - `quota` integer, nullable
    - `min_call_duration_seconds` integer, nullable
    - `count_voicemails` boolean, nullable
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required
  - `end_date` string, date-time, required
  - `is_active` boolean, required

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/openintake/apis/fastapi.md) · [All operations](https://skmtc.dev/openintake/apis/fastapi/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/openintake/fastapi/revisions/4a81645b59f6/schema)
