> ## 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 Sub Accounts

> Sub-accounts / instalments / line items under a Borrower Account

| Property      | Value                                              |
| ------------- | -------------------------------------------------- |
| Dataset code  | `D03`                                              |
| Section code  | `S1` — Customers & Accounts                        |
| Endpoint path | `/exports/S1/D03`                                  |
| Cursor field  | `updated_at`                                       |
| Page size     | `1`–`1000` (default `500`)                         |
| Availability  | Available (v1.2)                                   |
| Pagination    | Via (variable page size — joined through a parent) |

Each row is one sub-account / instalment / line item under a Borrower Account. It's used by lenders whose accounts split into discrete obligations (for example, BNPL instalment plans).

## Fields

| Field                      | Type   | Description                                          | Notes                                             |
| -------------------------- | ------ | ---------------------------------------------------- | ------------------------------------------------- |
| `public_id`                | string | Stable per-row identifier (string-cast Mongo `_id`). | Use as the warehouse primary key                  |
| `sub_account_reference_id` | string | Lender-provided sub-account reference.               |                                                   |
| `total_amount`             | number | Total amount for this sub-account.                   | Minor units (fils/cents)                          |
| `balance_amount`           | number | Outstanding balance.                                 | Minor units                                       |
| `actual_balance_amount`    | number | Realised balance after adjustments.                  | Minor units                                       |
| `paid_amount`              | number | Amount paid to date.                                 | Minor units                                       |
| `balance_principal_amount` | number | Principal still owed.                                | Minor units                                       |
| `balance_interest`         | number | Interest still owed.                                 | Minor units                                       |
| `balance_fee`              | number | Fees still owed.                                     | Minor units                                       |
| `submitted_date`           | string | When the sub-account was onboarded.                  | **`DD/MM/YYYY`** — stored as-is, **not** ISO-8601 |
| `due_date`                 | string | Current due date.                                    | **`DD/MM/YYYY`** — stored as-is, **not** ISO-8601 |
| `dpd_bucket_start`         | number | DPD bucket lower bound.                              |                                                   |
| `dpd_bucket_end`           | number | DPD bucket upper bound.                              |                                                   |
| `created_at`               | string | Record creation timestamp (ISO-8601).                |                                                   |
| `updated_at`               | string | Last-modified timestamp (ISO-8601).                  | Cursor field                                      |

## Sample row

```json theme={null}
{
  "public_id": "6981c9b35d7a418f2261aa07",
  "sub_account_reference_id": "SUB-2026-44817-03",
  "total_amount": 375000,
  "balance_amount": 250000,
  "actual_balance_amount": 250000,
  "paid_amount": 125000,
  "balance_principal_amount": 220000,
  "balance_interest": 25000,
  "balance_fee": 5000,
  "submitted_date": "01/02/2026",
  "due_date": "15/06/2026",
  "dpd_bucket_start": 1,
  "dpd_bucket_end": 30,
  "created_at": "2026-02-01T09:15:34.000Z",
  "updated_at": "2026-05-29T07:20:55.000Z"
}
```

<Note>
  **Date formats differ by field.** `submitted_date` and `due_date` are returned exactly as stored — `DD/MM/YYYY` strings (e.g. `15/06/2026`), **not** ISO-8601. The system timestamps `created_at` / `updated_at` *are* ISO-8601. See [Date & time formats](/api-reference/exports/overview#date-and-time-formats).
</Note>

## Pagination characteristics

This dataset is **via** — it is filtered to your tenant by joining through its parent (`borrower_account_id` → `BorrowerAccounts`). On multi-tenant databases a single response may contain **fewer rows than your `limit`** even when more data exists. The cursor still advances correctly — keep paging until `nextCursor` is `null`. See [Pagination → Variable page size](/api-reference/exports/pagination).

<Note>
  This is the highest-volume `via` dataset (millions of rows per multi-tenant DB). For interactive use, always pass a `since` window to bound the scan. A time window is also required when using `?includeTotal=true`.
</Note>

## Use cases

* Instalment-level balance trail.
* Per-plan reconciliation against payments.
* Delinquency-bucket movement over time.

***

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