# Age Analysis Report

<mark style="color:blue;">`GET`</mark> `/v2/finplus/debtmanagement/ageanalysis`

Use this endpoint to generate an **age analysis report** for the specified school.

* **Default Behavior**:
  * The report returns **only active accounts** (i.e., current learners or accounts with an outstanding balance).
  * To **include all accounts** (including left learners and zero-balance accounts), set the **`all_accounts`** query parameter to `true` .
* **Grouping Options**:
  * By default, the report is **grouped by family and parent**.
  * Use **`per_learner`** to group the data **per learner**.
  * Use **`per_category`** to group the data **per category**.
  * If **both** `per_learner` and `per_category` are set to `true`, the report will be grouped **per learner, per category**.
* **Filtering Options**:
  * Use **`debtor_code`** to filter by a specific debtor.
  * Use **`learner_id`** to filter by a specific learner.
  * Use **`accountable_person_id`** to filter by a specific accountable person.
  * Use **`category_id`** to filter by a specific category.

The response provides **balances across different aging periods** (`current`, `30 days`, `60 days`, etc.), along with optional **learner-specific** and **category-specific** breakdowns based on the provided parameters.

### Pagination <a href="#pagination" id="pagination"></a>

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.

### Request Headers

<table><thead><tr><th width="208.4571533203125">Name</th><th width="103.085693359375">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="218.028564453125">Name</th><th width="128.142822265625">Type</th><th>Description</th></tr></thead><tbody><tr><td><code>all_accounts</code></td><td>Boolean</td><td>Whether to include <strong>all</strong> accounts</td></tr><tr><td><code>per_learner</code></td><td>Boolean</td><td>Whether to <strong>group</strong> the data <strong>per learner</strong></td></tr><tr><td><code>per_category</code></td><td>Boolean</td><td>Whether to <strong>group</strong> the data <strong>per category</strong> (can be used in conjunction with per_learner)</td></tr><tr><td><code>debtor_code</code></td><td>Integer</td><td>To filter on a specific <strong>Debtor Code</strong></td></tr><tr><td><code>learner_id</code></td><td>Integer</td><td>To filter on a specific <strong>Learner ID</strong></td></tr><tr><td><code>accountable_person_id</code></td><td>Integer</td><td>To filter on a specific <strong>Accountable Person ID</strong></td></tr><tr><td><code>category_id</code></td><td>Integer</td><td>To filter on a specific <strong>Category ID</strong></td></tr><tr><td><code>cursor</code></td><td>String</td><td>To <strong>retrieve</strong> the <strong>next group</strong> of items (if any)</td></tr><tr><td><code>limit</code></td><td>Integer</td><td>To <strong>override</strong> the <strong>default limit</strong> 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 <strong>reverse</strong> the <strong>order</strong> the data is returned in</td></tr></tbody></table>

### Response Examples

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

```json
{
    "data": [
        {
            "debtor_code": "1001",
            "accountable_person_id": "40",
            "date": "2024-04-10",
            "balance_current": "3500.00",
            "balance_30days": "3500.00",
            "balance_60days": "3500.00",
            "balance_90days": "3500.00",
            "balance_120days": "850.00",
            "balance_150days": "5850.00",
            "balance_180days": "4500.00",
            "balance_total": "25200.00"
        },
        {
            "debtor_code": "1002",
            "accountable_person_id": "3",
            "date": "2024-04-10",
            "balance_current": "3500.00",
            "balance_30days": "3500.00",
            "balance_60days": "3500.00",
            "balance_90days": "3500.00",
            "balance_120days": "850.00",
            "balance_150days": "5850.00",
            "balance_180days": "20000.00",
            "balance_total": "40700.00"
        }
    ],
    "meta": {
        "limit": 10,
        "max_allowed_limit": 50,
        "cursor": "eyJpZCI6MjU0NiwiX2JhY2t3YXJkIjpmYWxzZX0"
    }
}
```

{% endtab %}

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

```json
{
    "data": [
        {
            "debtor_code": "1001",
            "accountable_person_id": "40",
            "date": "2024-04-10",
            "balance_current": "3500.00",
            "balance_30days": "3500.00",
            "balance_60days": "3500.00",
            "balance_90days": "3500.00",
            "balance_120days": "850.00",
            "balance_150days": "5850.00",
            "balance_180days": "4500.00",
            "balance_total": "25200.00",
            "learners": [
                {
                    "learner_id": "1",
                    "learner_first_name": "Jordan",
                    "learner_last_name": "Smith",
                    "balance_current": "1750.00",
                    "balance_30days": "1750.00",
                    "balance_60days": "1750.00",
                    "balance_90days": "1750.00",
                    "balance_120days": "0.00",
                    "balance_150days": "850.00",
                    "balance_180days": "4500.00",
                    "balance_total": "12350.00"
                },
                {
                    "learner_id": "2",
                    "learner_first_name": "Samantha",
                    "learner_last_name": "Smith",
                    "balance_current": "1750.00",
                    "balance_30days": "1750.00",
                    "balance_60days": "1750.00",
                    "balance_90days": "1750.00",
                    "balance_120days": "850.00",
                    "balance_150days": "5000.00",
                    "balance_180days": "0.00",
                    "balance_total": "12850.00"
                }
            ]
        },
        {
            "family_code": "1002",
            "accountable_person_id": "3",
            "date": "2024-04-10",
            "balance_current": "3500.00",
            "balance_30days": "3500.00",
            "balance_60days": "3500.00",
            "balance_90days": "3500.00",
            "balance_120days": "850.00",
            "balance_150days": "5850.00",
            "balance_180days": "20000.00",
            "balance_total": "40700.00",
            "learners": [
                {
                    "learner_id": "3",
                    "learner_first_name": "Nick",
                    "learner_last_name": "Webster",
                    "balance_current": "3500.00",
                    "balance_30days": "3500.00",
                    "balance_60days": "3500.00",
                    "balance_90days": "3500.00",
                    "balance_120days": "850.00",
                    "balance_150days": "5850.00",
                    "balance_180days": "20000.00",
                    "balance_total": "40700.00",
                }
            ]
        }
    ],
    "meta": {
        "limit": 10,
        "max_allowed_limit": 50,
        "cursor": "eyJpZCI6MjU0NiwiX2JhY2t3YXJkIjpmYWxzZX0"
    }
}
```

{% endtab %}

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

<pre class="language-json"><code class="lang-json"><strong>{
</strong><strong>    "data": [
</strong>        {
            "debtor_code": "1001",
            "accountable_person_id": "40",
            "date": "2024-04-10",
            "balance_current": "3500.00",
            "balance_30days": "3500.00",
            "balance_60days": "3500.00",
            "balance_90days": "3500.00",
            "balance_120days": "850.00",
            "balance_150days": "5850.00",
            "balance_180days": "4500.00",
            "balance_total": "25200.00",
            "categories": [
<strong>                {
</strong>                    "category_id": "1",
                    "category_name": "School Fees",
                    "balance_current": "2750.00",
                    "balance_30days": "2750.00",
                    "balance_60days": "2750.00",
                    "balance_90days": "2750.00",
                    "balance_120days": "0.00",
                    "balance_150days": "4500.00",
                    "balance_180days": "4500.00",
                    "balance_total": "20000.00"
                },
                {
                    "category_id": "6",
                    "category_name": "Hostel Fees",
                    "balance_current": "500.00",
                    "balance_30days": "500.00",
                    "balance_60days": "500.00",
                    "balance_90days": "500.00",
                    "balance_120days": "500.00",
                    "balance_150days": "500.00",
                    "balance_180days": "0.00",
                    "balance_total": "3000.00"
                },
                {
                    "category_id": "8",
                    "category_name": "Sport",
                    "balance_current": "250.00",
                    "balance_30days": "250.00",
                    "balance_60days": "250.00",
                    "balance_90days": "250.00",
                    "balance_120days": "250.00",
                    "balance_150days": "850.00",
                    "balance_180days": "0.00",
                    "balance_total": "2100.00"
                }
            ]
        },
        {
            "family_code": "1002",
            "accountable_person_id": "3",
            "date": "2024-04-10",
            "balance_current": "3500.00",
            "balance_30days": "3500.00",
            "balance_60days": "3500.00",
            "balance_90days": "3500.00",
            "balance_120days": "850.00",
            "balance_150days": "5850.00",
            "balance_180days": "20000.00",
            "balance_total": "40700.00",
            "categories": [
                {
                    "category_id": "1",
                    "category_name": "School Fees",
                    "balance_current": "3500.00",
                    "balance_30days": "3500.00",
                    "balance_60days": "3500.00",
                    "balance_90days": "3500.00",
                    "balance_120days": "850.00",
                    "balance_150days": "5850.00",
                    "balance_180days": "20000.00",
                    "balance_total": "40700.00",
                }
            ]
        }
    ],
    "meta": {
        "limit": 10,
        "max_allowed_limit": 50,
        "cursor": "eyJpZCI6MjU0NiwiX2JhY2t3YXJkIjpmYWxzZX0"
    }
}
</code></pre>

{% endtab %}

{% tab title="Success: Per learner, per category (200 OK)" %}
**Status:** <mark style="color:green;">`200 OK`</mark>

```json
{
    "data": [
        {
            "debtor_code": "1001",
            "accountable_person_id": "40",
            "date": "2024-04-10",
            "balance_current": "3500.00",
            "balance_30days": "3500.00",
            "balance_60days": "3500.00",
            "balance_90days": "3500.00",
            "balance_120days": "850.00",
            "balance_150days": "5850.00",
            "balance_180days": "4500.00",
            "balance_total": "25200.00",
            "learners": [
                {
                    "learner_id": "1",
                    "learner_first_name": "Jordan",
                    "learner_last_name": "Smith",
                    "balance_current": "1750.00",
                    "balance_30days": "1750.00",
                    "balance_60days": "1750.00",
                    "balance_90days": "1750.00",
                    "balance_120days": "0.00",
                    "balance_150days": "850.00",
                    "balance_180days": "4500.00",
                    "balance_total": "12350.00",
                    "categories": [
                        {
                            "category_id": "1",
                            "category_name": "School Fees",
                            "balance_current": "1000.00",
                            "balance_30days": "1000.00",
                            "balance_60days": "1000.00",
                            "balance_90days": "1000.00",
                            "balance_120days": "0.00",
                            "balance_150days": "0.00",
                            "balance_180days": "4500.00",
                            "balance_total": "8500.00"
                        },
                        {
                            "category_id": "6",
                            "category_name": "Hostel Fees",
                            "balance_current": "500.00",
                            "balance_30days": "500.00",
                            "balance_60days": "500.00",
                            "balance_90days": "500.00",
                            "balance_120days": "0.00",
                            "balance_150days": "500.00",
                            "balance_180days": "0.00",
                            "balance_total": "2500.00"
                        },
                        {
                            "category_id": "8",
                            "category_name": "Sport",
                            "balance_current": "250.00",
                            "balance_30days": "250.00",
                            "balance_60days": "250.00",
                            "balance_90days": "250.00",
                            "balance_120days": "0.00",
                            "balance_150days": "350.00",
                            "balance_180days": "0.00",
                            "balance_total": "1350.00"
                        }
                    ]
                },
                {
                    "learner_id": "2",
                    "learner_first_name": "Samantha",
                    "learner_last_name": "Smith",
                    "balance_current": "1750.00",
                    "balance_30days": "1750.00",
                    "balance_60days": "1750.00",
                    "balance_90days": "1750.00",
                    "balance_120days": "850.00",
                    "balance_150days": "5000.00",
                    "balance_180days": "0.00",
                    "balance_total": "12850.00",
                    "categories": [
                        {
                            "category_id": "1",
                            "category_name": "School Fees",
                            "balance_current": "1000.00",
                            "balance_30days": "1000.00",
                            "balance_60days": "1000.00",
                            "balance_90days": "1000.00",
                            "balance_120days": "0.00",
                            "balance_150days": "4500.00",
                            "balance_180days": "0.00",
                            "balance_total": "8500.00"
                        },
                        {
                            "category_id": "6",
                            "category_name": "Hostel Fees",
                            "balance_current": "500.00",
                            "balance_30days": "500.00",
                            "balance_60days": "500.00",
                            "balance_90days": "500.00",
                            "balance_120days": "500.00",
                            "balance_150days": "500.00",
                            "balance_180days": "0.00",
                            "balance_total": "3000.00"
                        },
                        {
                            "category_id": "8",
                            "category_name": "Sport",
                            "balance_current": "250.00",
                            "balance_30days": "250.00",
                            "balance_60days": "250.00",
                            "balance_90days": "250.00",
                            "balance_120days": "350.00",
                            "balance_150days": "0.00",
                            "balance_180days": "0.00",
                            "balance_total": "1350.00"
                        }
                    ]
                }
            ]
        },
        {
            "family_code": "1002",
            "accountable_person_id": "3",
            "date": "2024-04-10",
            "balance_current": "3500.00",
            "balance_30days": "3500.00",
            "balance_60days": "3500.00",
            "balance_90days": "3500.00",
            "balance_120days": "850.00",
            "balance_150days": "5850.00",
            "balance_180days": "20000.00",
            "balance_total": "40700.00",
            "learners": [
                {
                    "learner_id": "3",
                    "learner_first_name": "Nick",
                    "learner_last_name": "Webster",
                    "balance_current": "3500.00",
                    "balance_30days": "3500.00",
                    "balance_60days": "3500.00",
                    "balance_90days": "3500.00",
                    "balance_120days": "850.00",
                    "balance_150days": "5850.00",
                    "balance_180days": "20000.00",
                    "balance_total": "40700.00",
                    "categories": [
                        {
                            "category_id": "1",
                            "category_name": "School Fees",
                            "balance_current": "3500.00",
                            "balance_30days": "3500.00",
                            "balance_60days": "3500.00",
                            "balance_90days": "3500.00",
                            "balance_120days": "850.00",
                            "balance_150days": "5850.00",
                            "balance_180days": "20000.00",
                            "balance_total": "40700.00",
                        }
                    ]
                }
            ]
        }
    ],
    "meta": {
        "limit": 10,
        "max_allowed_limit": 50,
        "cursor": "eyJpZCI6MjU0NiwiX2JhY2t3YXJkIjpmYWxzZX0"
    }
}    
```

{% 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": {
        "accountable_person_id": "The Accountable person id must be integer",
        "per_category": "The Per category must be a boolean"
    }
}
```

{% endtab %}
{% endtabs %}

### Code Samples

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

```php
<?php

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

// Base API endpoint
$base_url = 'https://integrate.d6plus.co.za/api/v2/finplus/debtmanagement/ageanalysis';

// Query parameters (customize as needed)
$query_params = [
    'all_accounts'          => 1,       // To include all accounts (including left learners and zero-balance accounts)
    'per_learner'           => 1,       // To group by learner
    'per_category'          => 1,       // To group by category
    'debtor_code'           => '1001',  // Filter by specific debtor code
    'learner_id'            => '',      // Filter by specific learner ID (optional)
    'accountable_person_id' => '',      // Filter by specific accountable person ID (optional)
    'category_id'           => '',      // Filter by specific category ID (optional)
];

// Build the full request URL
$url = $base_url . '?' . http_build_query(array_filter($query_params));

// Initialize cURL
$curl = curl_init();

// Set cURL options
curl_setopt_array($curl, [
    CURLOPT_URL            => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT        => 30,  // Prevents 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",
        "Accept: application/json"
    ],
]);

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

// Check for errors
if (curl_errno($curl)) {
    throw new Exception('cURL Error: ' . curl_error($curl));
}

// Close cURL
curl_close($curl);

// Output the response
header('Content-Type: application/json');
echo $response;

```

{% endtab %}

{% tab title="cURL" %}

```bash
curl --request GET 'https://integrate.d6plus.co.za/api/v2/finplus/debtmanagement/ageanalysis?all_accounts=true&per_learner=false&per_category=false' \
     --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/age-analysis-report.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.
