# How one schedule is performing

The schedule's report, computed at read time from the instalments themselves: total expected, total received, what has been missed, what has been waived, penalties, the variance, the collection rate, how many payments were made, missed, waived and still unreconciled, plus the money split by allocation type (principal, interest, fee, penalty, commission, buyout, other). Nothing is stored, so nothing can be stale. Reach for it to answer how much of this deal has actually been collected and what is still outstanding; `get_payment_schedules_id` has the TERMS, and `get_portfolio_aging` asks the same question across the whole book.

Access class: `workspace`.

## Endpoint

`GET /v1/payment-schedules/{id}/reconciliation`

## Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| id | path | string | Yes |
| body | query | null | No |
| params | query | object | No |
| query | query | object | No |

## Responses

### 200

the action's answer

Content type: `application/json`.

```json
{
  "data": {
    "allocations": [
      {
        "allocationType": "string",
        "amountMinor": "string"
      }
    ],
    "collectionRate": "string",
    "currency": "string",
    "outstandingMinor": 1,
    "paymentsMade": 1,
    "paymentsMissed": 1,
    "paymentsRemaining": 1,
    "paymentsUnreconciled": 1,
    "paymentsWaived": 1,
    "scheduleId": 1,
    "totalExpectedMinor": 1,
    "totalMissedMinor": 1,
    "totalPaybackMinor": 1,
    "totalPenaltyMinor": 1,
    "totalReceivedMinor": 1,
    "totalWaivedMinor": 1,
    "varianceMinor": 1
  }
}
```

### default

a refusal: `{"error": "<what a person needs to read>"}`. 401 no credential, 402 the plan does not include this, 403 the seat does not, 404 the thing does not exist or is not yours to see.

Content type: `application/json`.

```json
{
  "error": "string"
}
```
