---
title: "List contracts"
method: GET
path: "/v1/contracts"
tags: ["Contracts"]
---

# List contracts

`GET /v1/contracts`

List all contracts for your business, optionally filtered by customer or status. Results are ordered by creation date (newest first).

> **Requires a secret key (`sk_*`) with the `ADMIN` role.**

## Query parameters

- `customerId` string
- `status` 'ACTIVE' | 'PAUSED' | 'EXPIRED' | 'CANCELLED'

## Response `200`

List of contracts

- object — List of contracts
  - `contracts` object[], required — List of contracts ordered by creation date (newest first)
    - `id` string, required — Unique identifier for the contract
    - `businessId` string, required — Business that owns this contract
    - `customerId` string, required — Customer this contract applies to (must be created via POST /customers first)
    - `name` string, required — Human-readable name for the contract
    - `status` 'ACTIVE' | 'PAUSED' | 'EXPIRED' | 'CANCELLED', required — Current contract status. Only ACTIVE contracts affect billing. Transitions: ACTIVE → PAUSED, EXPIRED, or CANCELLED.
    - `startDate` string, date-time, required — When the contract takes effect (ISO 8601)
    - `endDate` string, date-time, nullable — When the contract expires (ISO 8601). Null means the contract is perpetual.
    - `minimumUsdc` string, nullable — Minimum committed spend in USDC for the contract period. If the customer spends less, they are still billed for the minimum.
    - `maximumUsdc` string, nullable — Maximum spend cap in USDC for the contract period. Charges that would exceed this cap are blocked.
    - `discountPct` string, nullable — Percentage discount applied to all charges under this contract (0-100, up to 2 decimal places)
    - `prepaidAmountUsdc` string, nullable — Total prepaid commit amount in USDC. This is the initial balance loaded into the contract.
    - `prepaidBalanceUsdc` string, nullable — Remaining prepaid balance in USDC. Decreases as charges are applied. When depleted, charges fall back to normal billing.
    - `prepaidRollover` boolean, required — Whether unused prepaid balance rolls over to the next billing period
    - `includedUnits` object, nullable — Free unit allocations per usage type per billing period. Usage within these limits is not charged. Keys are unit types, values are quantities.
    - `metadata` object, nullable — Arbitrary key-value metadata for your own tracking (e.g., Salesforce deal ID, internal notes)
    - `createdAt` string, date-time, required — When the contract was created
    - `updatedAt` string, date-time, required — When the contract was last updated
    - `priceOverrides` object[], required — Custom per-unit-type pricing that overrides default pricing plans for this customer
      - `id` string, required — Unique identifier for the price override
      - `unitType` string, required — The usage type this override applies to (must match a pricing plan `unitType`)
      - `unitPriceUsd` string, required — Custom price per unit in USD (string for decimal precision, up to 6 decimal places)

## Other responses

- `401` — Unauthorized — missing or invalid API key
- `403` — Forbidden — API key does not have ADMIN role

---

[API](https://skmtc.net/usedrip/apis/drip-api.md) · [All operations](https://skmtc.net/usedrip/apis/drip-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/usedrip/drip-api/revisions/2cb1567969ca/schema)
