Age Analysis Report

GET /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

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

Name
Type
Description

HTTP-X-USERNAME*

String

As provided by d6

HTTP-X-PASSWORD*

String

As provided by d6

HTTP-X-SCHOOLID*

Integer

The unique identifier of the school for which the data is being queried.

Query Parameters

Name
Type
Description

all_accounts

Boolean

Whether to include all accounts

per_learner

Boolean

Whether to group the data per learner

per_category

Boolean

Whether to group the data per category (can be used in conjunction with per_learner)

debtor_code

Integer

To filter on a specific Debtor Code

learner_id

Integer

To filter on a specific Learner ID

accountable_person_id

Integer

To filter on a specific Accountable Person ID

category_id

Integer

To filter on a specific Category ID

cursor

String

To retrieve the next group of items (if any)

limit

Integer

To override the default limit of records returned (up to the max_allowed_limit provided in the response metadata).

reverse_order

Boolean

To reverse the order the data is returned in

Response Examples

Status: 200 OK

{
    "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"
    }
}

Code Samples

<?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;