---
title: "List Contract Payments"
method: GET
path: "/api/v1/admin/block/contract-payments"
tags: ["Admin APIs", "block-data-approvals"]
---

# List Contract Payments

`GET /api/v1/admin/block/contract-payments`

Payment triage across Block contracts, for account management.

Finance asked for "dashboarding so account management can see the status of
the block payments and escalate outreach" — while being explicit that an
overdue invoice never revokes access. So this view exists precisely so the
escalation is human.

Wider than the Active Contracts tab on purpose: it keeps terminal contracts
with money still outstanding, and contracts inside the access grace window —
which is exactly when a contract vanishes from every "active" view while the
customer is still being served.

100% DB-backed, so it stays usable when Stripe is degraded. Counts are
computed server-side so the chips and badges cannot disagree.

## Query parameters

- `payment_state` string, nullable — Filter to one payment state (paid/due/overdue/...).
- `in_grace` boolean, nullable
- `unpaid_after_term` boolean, nullable
- `sort` string
- `order` string
- `q` string, nullable — Client or dataset substring.

## Response `200`

Successful Response

- BlockContractPaymentListResponse
  - `items` BlockContractPaymentRow[], required
    - `block_request_id` string, uuid, required
    - `client_id` string, uuid, required
    - `client_name` string, nullable
    - `stripe_customer_id` string, nullable
    - `dataset_id` string, required
    - `dataset_label` string, nullable
    - `cut` string, nullable
    - `fee_type` string, nullable
    - `contract_status` string, required
    - `stripe_subscription_id` string, nullable
    - `annual_amount` string, nullable
    - `monthly_amount` string, nullable
    - `pricing_mode` string, nullable
    - `contract_started_at` string, date-time, nullable
    - `contract_ended_at` string, date-time, nullable
    - `next_invoice_date` string, date-time, nullable
    - `last_invoice_id` string, nullable
    - `last_invoice_status` string, nullable
    - `last_invoice_due_date` string, date-time, nullable
    - `payment_state` string, required
    - `days_overdue` integer, nullable
    - `invoice_amount_cents` integer, nullable
    - `invoice_positive_subtotal_cents` integer, nullable
    - `invoice_tokens_applied_cents` integer, nullable
    - `invoice_net_cents` integer, nullable
    - `invoice_review_state` string, nullable
    - `invoice_currency` string, nullable
    - `hosted_invoice_url` string, nullable
    - `payment_seen_at` string, date-time, nullable
    - `access_ends_at` string, date-time, nullable
    - `in_grace` boolean
    - `grace_days_remaining` integer, nullable
    - `grace_extended_until` string, date-time, nullable
    - `grace_extended_by` string, nullable
  - `total` integer, required
  - `counts` object

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/carbonarc/apis/carbon-arc-client-admin-api.md) · [All operations](https://skmtc.net/carbonarc/apis/carbon-arc-client-admin-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/carbonarc/carbon-arc-client-admin-api/revisions/a8ca30023371/schema)
