> ## Documentation Index
> Fetch the complete documentation index at: https://docs.command.cleargrid.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Borrower Deals

> Collections cases (deals) open or recently closed for a borrower

| Property      | Value                       |
| ------------- | --------------------------- |
| Dataset code  | `D16`                       |
| Section code  | `S3` — Collections Cases    |
| Endpoint path | `/exports/S3/D16`           |
| Cursor field  | `updated_at`                |
| Page size     | `1`–`1000` (default `500`)  |
| Availability  | Available (v1.2)            |
| Pagination    | Direct (constant page size) |

Each row is one collections case (deal) currently open or recently closed for a borrower. It includes the pipeline stage, communications pipeline, promise-to-pay (PTP) signals from both human agents and AI calls, and the do-not-contact flag.

## Fields

| Field                   | Type    | Description                                                    | Notes                                                                                                   |
| ----------------------- | ------- | -------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- |
| `public_id`             | string  | Case identifier.                                               | Source: `user_lender_detail_public_id`. **Renamed from `case_public_id` in v1.2.** See the caveat below |
| `deal_stage_id`         | string  | Current pipeline stage.                                        |                                                                                                         |
| `pipeline`              | string  | Pipeline name.                                                 |                                                                                                         |
| `comms_pipeline`        | string  | Communications pipeline name.                                  |                                                                                                         |
| `amount`                | number  | Deal amount.                                                   | Minor units (fils/cents)                                                                                |
| `assigned_user_name`    | string  | Assigned agent display name.                                   |                                                                                                         |
| `dpd_due_date`          | string  | DPD calculation anchor (due date).                             | **`DD/MM/YYYY`** — stored as-is, **not** ISO-8601. See the field-name note below                        |
| `last_due_date`         | string  | Last due date observed.                                        | **`DD/MM/YYYY`** — stored as-is, **not** ISO-8601                                                       |
| `ptp_date_human`        | string  | PTP date set by a human agent (ISO-8601).                      |                                                                                                         |
| `ptp_date_ai`           | string  | PTP date set by an AI call (ISO-8601).                         |                                                                                                         |
| `broken_ptp_date_human` | string  | When the human-set PTP was broken (ISO-8601).                  |                                                                                                         |
| `broken_ptp_date_ai`    | string  | When the AI-set PTP was broken (ISO-8601).                     |                                                                                                         |
| `hasReachedRpcOrBeyond` | boolean | `true` if at least one RPC (right-party contact) has happened. |                                                                                                         |
| `do_not_contact`        | boolean | Do-not-contact flag.                                           |                                                                                                         |
| `created_at`            | string  | Record creation timestamp (ISO-8601).                          |                                                                                                         |
| `updated_at`            | string  | Last-modified timestamp (ISO-8601).                            | Cursor field                                                                                            |

<Warning>
  **`public_id` on this dataset is the case/link identifier, not the deal document's own id.** It is sourced from `user_lender_detail_public_id` (the borrower-×-lender link). It was named `case_public_id` while `D16` was unavailable; from v1.2 it follows the same convention as every other dataset and is exposed as `public_id`. See the [Changelog](/api-reference/exports/changelog).

  Because the value identifies the borrower-×-lender link rather than the deal row, **do not assume it is unique per `D16` row** if a borrower can have more than one deal. If you need a guaranteed per-row key for upserts, deduplicate on `public_id` + another distinguishing field (e.g. `created_at`) or contact support before relying on it as a sole primary key.
</Warning>

## Sample row

```json theme={null}
{
  "public_id": "7c1e9a02-5d38-4b6f-9012-a3e8c5d7b461",
  "deal_stage_id": "stage_negotiation",
  "pipeline": "Early Collections",
  "comms_pipeline": "Standard Outreach",
  "amount": 920000,
  "assigned_user_name": "Mariam Al-Shehri",
  "dpd_due_date": "01/05/2026",
  "last_due_date": "01/06/2026",
  "ptp_date_human": "2026-06-05T00:00:00.000Z",
  "ptp_date_ai": null,
  "broken_ptp_date_human": null,
  "broken_ptp_date_ai": null,
  "hasReachedRpcOrBeyond": true,
  "do_not_contact": false,
  "created_at": "2026-04-18T10:05:12.000Z",
  "updated_at": "2026-05-31T13:48:30.000Z"
}
```

<Note>
  **Date formats differ by field.** `dpd_due_date` and `last_due_date` are returned exactly as stored — `DD/MM/YYYY` strings (e.g. `01/06/2026`), **not** ISO-8601. The PTP / broken-PTP fields and the system timestamps `created_at` / `updated_at` *are* ISO-8601. Parse them with separate format handling. See [Date & time formats](/api-reference/exports/overview#date-and-time-formats).
</Note>

<Warning>
  **Known field-name issue on `dpd_due_date`.** The export currently emits this field under the name **`dpd_due_date_timestamp`**, which does not match the source column (`dpd_due_date`). A service-side fix to correct the emitted key is pending. Until it ships, map the `dpd_due_date_timestamp` key in the response to `dpd_due_date` in your warehouse. The value is unaffected (`DD/MM/YYYY`).
</Warning>

## Pagination characteristics

This dataset is **direct** — filtered to your tenant by `lender_id` on the collection itself, so each page returns a constant number of rows until the last page.

## Use cases

* Collections pipeline reporting and stage-funnel analysis.
* PTP / broken-PTP tracking across human and AI channels.
* DNC suppression upstream of marketing and outreach.

***

<Snippet file="snippets/support-info.mdx" />
