# Get Promise To Pay Record(s)

<mark style="color:blue;">`GET`</mark> `/v2/finplus/debtmanagement/debtornotes/promisetopays` `(/{id})`

This call provides a convenient way to **retrieve all promise-to-pay records**, regardless of the debtor notes they are associated with.

* To fetch a specific promise-to-pay record, include the **ID** of the promise-to-pay record in the URL.
* To find records associated with a particular person, use the `debtor_code` or `accountable_person_id` query parameters.
* You can filter records based on their completion status using the `promise_completed` query parameter. Possible values are `"Yes"`, `"No"`, and `"Partial"`.
* To retrieve records for a specific year, use the `year_promised` query parameter.
* To include details of the debtor note associated with the promise-to-pay record in the response, provide the `include_debtor_note` query parameter.

{% hint style="info" %}
By default, this endpoint returns a **collection of records**, wrapped in a `data` array. To retrieve a **single record**, provide its **ID in the URL**, which will return a **single object** instead of a collection.
{% endhint %}

### Pagination

The response data includes a `meta` object that contains **pagination-specific metadata**. You can use the following query parameters to **control pagination**:

* **limit**: This parameter allows you to override the default limit of records returned, up to the `max_allowed_limit` specified in the response's `meta` object.
* **cursor**: If the `meta` object contains a `next_cursor` field, it indicates that more records are available. To fetch the next set of records, include the `cursor` parameter in your request with the value of `next_cursor`. If the `next_cursor` field is not present, it means there are no more records to retrieve.
* **reverse\_order**: This parameter can be used to reverse the order in which the data is returned, useful for fetching the latest records first.

### Path Parameters

<table><thead><tr><th width="145.3714599609375">Name</th><th width="137.7427978515625">Type</th><th>Description</th></tr></thead><tbody><tr><td><code>{id}</code></td><td>Integer</td><td>Optional ID of the promise-to-pay item to retrieve a single record</td></tr></tbody></table>

### Request Headers

<table><thead><tr><th width="203.8856201171875">Name</th><th width="119.71429443359375">Type</th><th>Description</th></tr></thead><tbody><tr><td><code>HTTP-X-USERNAME</code><mark style="color:red;">*</mark></td><td>String</td><td>As provided by d6</td></tr><tr><td><code>HTTP-X-PASSWORD</code><mark style="color:red;">*</mark></td><td>String</td><td>As provided by d6</td></tr><tr><td><code>HTTP-X-SCHOOLID</code><mark style="color:red;">*</mark></td><td>Integer</td><td>The unique identifier of the school for which the data is being queried.</td></tr></tbody></table>

### Query Parameters

<table><thead><tr><th width="231.7142333984375">Name</th><th width="107.88580322265625">Type</th><th>Description</th></tr></thead><tbody><tr><td><code>accountable_person_id</code></td><td>Integer</td><td>To only return a specific accountable person's promise to pays</td></tr><tr><td><code>debtor_code</code></td><td>Integer</td><td>To only return a specific debtor code's promise to pays</td></tr><tr><td><code>promise_completed</code></td><td>String</td><td>To filter on the status of the promise to pay</td></tr><tr><td><code>year_promised</code></td><td>Integer</td><td>To filter on a specific year</td></tr><tr><td><code>include_debtor_note</code></td><td>Boolean</td><td>Whether to include debtor note data in the response</td></tr><tr><td><code>cursor</code></td><td>String</td><td>To retrieve the next group of items (if any)</td></tr><tr><td><code>limit</code></td><td>Integer</td><td>To override the default limit of records returned (up to the <code>max_allowed_limit</code> provided in the response metadata).</td></tr><tr><td><code>reverse_order</code></td><td>Boolean</td><td>To reverse the order the data is returned in</td></tr></tbody></table>

### Response Examples

{% tabs %}
{% tab title="Success - Collection (200 OK)" %}
**Status:** <mark style="color:green;">`200 OK`</mark>

```json
{
    "data": [
        {
            "promise_to_pay_id": 8,
            "accountable_person_id": 40,
            "accountable_person": "Mr James, John",
            "debtor_code": "1001",
            "debtor_reference": "James",
            "date_promised": "2024-03-31",
            "amount_promised": "1000.00",
            "amount_paid": "1000.00",
            "promise_completed": "Yes"
        },
        {
            "promise_to_pay_id": 10,
            "accountable_person_id": 40,
            "accountable_person": "Mr James, John",
            "debtor_code": "1001",
            "debtor_reference": "James",
            "date_promised": "2024-04-30",
            "amount_promised": "1000.00",
            "amount_paid": "750.00",
            "promise_completed": "Partial"
        },
        {
            "promise_to_pay_id": 12,
            "accountable_person_id": 40,
            "accountable_person": "Mr James, John",
            "debtor_code": "1001",
            "debtor_reference": "James",
            "date_promised": "2020-05-31",
            "amount_promised": "1000.00",
            "amount_paid": "",
            "promise_completed": "No"
        }
    ],
    "meta": {
        "limit": 10,
        "max_allowed_limit": 50,
        "cursor": "eyJpZCI6MjU0NiwiX2JhY2t3YXJkIjpmYWxzZX0"
    }
}
```

{% endtab %}

{% tab title="Success- Including Debtor Note (200 OK)" %}
**Description:** When including the associated debtor notes (`include_debtor_note`)

**Status:** <mark style="color:green;">`200 OK`</mark>

```json
{
    "data": [
        {
            "promise_to_pay_id": 8,
            "accountable_person_id": 40,
            "accountable_person": "Mr James, John",
            "debtor_code": "1001",
            "debtor_reference": "James",
            "date_promised": "2024-03-31",
            "amount_promised": "1000.00",
            "amount_paid": "1000.00",
            "promise_completed": "Yes",
            "debtor_note": {
                "note_id": 6,
                "date": "2024-03-03",
                "note_type_id": 2,
                "note_type": "Promise to Pay",
                "communication_type_id": 2,
                "communication_type": "E-mail",
                "note": "Payment arrangement of R1000 to be paid off on outstanding school fees"
            }
        },
        {
            "promise_to_pay_id": 10,
            "accountable_person_id": 40,
            "accountable_person": "Mr James, John",
            "debtor_code": "1001",
            "debtor_reference": "James",
            "date_promised": "2024-04-30",
            "amount_promised": "1000.00",
            "amount_paid": "750.00",
            "promise_completed": "Partial",
            "debtor_note": {
                "note_id": 6,
                "date": "2024-03-03",
                "note_type_id": 2,
                "note_type": "Promise to Pay",
                "communication_type_id": 2,
                "communication_type": "E-mail",
                "note": "Payment arrangement of R1000 to be paid off on outstanding school fees"
            }
        },
        {
            "promise_to_pay_id": 12,
            "accountable_person_id": 40,
            "accountable_person": "Mr James, John",
            "debtor_code": "1001",
            "debtor_reference": "James",
            "date_promised": "2020-05-31",
            "amount_promised": "1000.00",
            "amount_paid": "",
            "promise_completed": "No",
            "debtor_note": {
                "note_id": 6,
                "date": "2024-03-03",
                "note_type_id": 2,
                "note_type": "Promise to Pay",
                "communication_type_id": 2,
                "communication_type": "E-mail",
                "note": "Payment arrangement of R1000 to be paid off on outstanding school fees"
            }
        }
    ],
    "meta": {
        "limit": 10,
        "max_allowed_limit": 50,
        "cursor": "eyJpZCI6MjU0NiwiX2JhY2t3YXJkIjpmYWxzZX0"
    }
}
```

{% endtab %}

{% tab title="Success - Resource (200 OK)" %}
**Description:** When querying a specific promise-to-pay ID

**Status:** <mark style="color:green;">`200 OK`</mark>

```json
{
    "promise_to_pay_id": 8,
    "accountable_person_id": 40,
    "accountable_person": "Mr James, John",
    "debtor_code": "1001",
    "debtor_reference": "James",
    "date_promised": "2024-03-31",
    "amount_promised": "1000.00",
    "amount_paid": "1000.00",
    "promise_completed": "Yes"
}
```

{% endtab %}

{% tab title="ID Not Found Error (404 Not Found)" %}
**Description:** When the promise-to-pay ID provided does not exist

**Status:** <mark style="color:red;">`404 Not Found`</mark>

```json
{
    "success": false,
    "message": "Promise To Pay does not exist"
}
```

{% endtab %}

{% tab title="Validation Error (400 Bad Request)" %}
**Description:** When validation failed for one or more fields

**Status:** <mark style="color:red;">`400 Bad Request`</mark>

```json
{
    "success": false,
    "message": "Validation Failed",
    "validation_errors": {
        "include_debtor_note": "The Include debtor note must be a boolean",
        "promise_completed": "The Promise completed only allows 'Yes', 'No', or 'Partial'",
        "limit": "The Limit maximum is 50"
    }
}
```

{% endtab %}
{% endtabs %}

### Code Samples

{% tabs %}
{% tab title="PHP" %}

```php
<?php

// API Credentials
$api_username = 'your_username';
$api_password = 'your_password';
$school_id = 'the_school_id';

// Base API endpoint
define('BASE_URL', 'https://integrate.d6plus.co.za/api/v2/finplus/debtmanagement/debtornotes/promisetopays');

// Optional: Set an ID to fetch a specific note type (or leave empty for all)
$id = '';

$url = BASE_URL;
if (!empty($id)) {
    $url .= '/' . $id;
}

// Query parameters (optional)
$query_params = [
    'accountable_person_id' => 380,
    'debtor_code' => '1270',
    'promise_completed' => 'No',
    'year_promised' => 2024,
    'include_debtor_note' => 1,
    'reverse_order' => 1,
    'limit' => 50,
    'cursor' => 'eyJpZCI6NTMsIl9iYWNrd2FyZCI6ZmFsc2V9',
];

if (!empty($query_params)) {
    $url .= '?' . http_build_query($query_params);
}

// Initialize cURL
$curl = curl_init();

// Set cURL options
curl_setopt_array($curl, [
    CURLOPT_URL            => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT        => 30,  // Set timeout to prevent hanging requests
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION   => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST  => 'GET',
    CURLOPT_HTTPHEADER     => [
        "HTTP-X-USERNAME: $api_username",
        "HTTP-X-PASSWORD: $api_password",
        "HTTP-X-SCHOOLID: $school_id"
    ],
]);

// Execute request
$response = curl_exec($curl);

// Check for errors
$error = curl_error($curl);
if ($error) {
    curl_close($curl);
    throw new Exception("cURL Error: $error");
}

// Close cURL and output response
curl_close($curl);
echo $response;
```

{% endtab %}

{% tab title="cURL" %}

```bash
curl --location 'https://integrate.d6plus.co.za/api/v2/finplus/debtmanagement/debtornotes/promisetopays?accountable_person_id=380&debtor_code=1270&promise_completed=No&year_promised=2024&include_debtor_note=1&reverse_order=1&limit=50' \
     --header 'HTTP-X-USERNAME: your_username' \
     --header 'HTTP-X-PASSWORD: your_password' \
     --header 'HTTP-X-SCHOOLID: the_school_id'
```

{% endtab %}
{% endtabs %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://apidocs.d6plus.co.za/v2/reference/finance+/debt-management/debtor-notes/get-promise-to-pay-record-s.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
