---
title: "Get Billing Contract"
method: GET
path: "/billing/contract"
tags: ["Billing", "billing"]
---

# Get Billing Contract

`GET /billing/contract`

## Request

- Base URL: `https://api.openintake.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.openintake.ai/billing/contract`
- Auth: none declared

Get the billing contract for the customer.

Admin only endpoint.

## 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, nullable: NULL while billing_start_pending — billing has not started
  - `number_of_months` integer, nullable: NULL means month-to-month: no fixed term
  - `billing_start_pending` boolean: Billing is on hold until the customer starts taking real calls; nothing is billed
  - `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, nullable: Computed: start_date + number_of_months; NULL when month-to-month or pending
  - `is_active` boolean, required

## Changes

- **2026-10-07** `d443593f5f45`: 6 breaking, 1 info
  - the response property `end_date` became optional for the status `200`
  - the response property `number_of_months` became optional for the status `200`
  - the response property `start_date` became optional for the status `200`
  - response property `end_date` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - …3 more

[Operation history](https://skmtc.dev/openintake/apis/openintake-api/changes/billing/contract/get.md)

---

[API](https://skmtc.dev/openintake/apis/openintake-api.md) - [All operations](https://skmtc.dev/openintake/apis/openintake-api/llms.txt) - [OpenAPI document](https://skmtc.dev/openintake/apis/openintake-api/revisions/de90a8dcbc07?raw)
