> For the complete documentation index, see [llms.txt](https://developers.doku.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developers.doku.com/accept-payments/finance-and-settlement/custom-settlement-report.md).

# Custom Settlement Report

Simplify your operational efforts by setting customized parameters suited to your specific use case. Custom settlement report allows you to send your own parameters that will be shown in the settlement report.

#### Case Study <a href="#case-study" id="case-study"></a>

"Toko Toserba" has many branches that span across multiple provinces in Indonesia. They recently launched an online store and wanted to ensure that they settle the funds from the online store to the right branches.

Therefore, they use Custom settlement report to know which transactions to settle to a branch. Their operation team can now see each transactions that will be settled for each branches from the settlement report.

***

### Implementation <a href="#implementation" id="implementation"></a>

To create custom settlement report, please add this `additional_info.report` object into your payment request:

```json
{
...
    "additional_info": {
        "report": [
           {
               "key": "Branch",
               "value": "Toserba Kebon Jeruk"
           },
           {
               "key": "city",
               "value": "Jakarta Barat"
           }
           {
               "key": "Province",
               "value": "DKI Jakarta"
           }
       ]
    }
...
}
```

<table><thead><tr><th width="249">Parameter</th><th width="103">Type</th><th width="126">Mandatory</th><th>Description</th></tr></thead><tbody><tr><td><code>additional_info.report[].key</code></td><td><code>string</code></td><td>Mandatory</td><td>The filter key that will be used to map the filter. This will be the column name in the settlement report file<br>Possible value: <code>alphabetic, numeric, special characters</code><br>Maximum length: <code>64</code></td></tr><tr><td><code>additional_info.report[].value</code></td><td><code>string</code></td><td>Mandatory</td><td>The value of the filter that will attached to the transaction. This will be the value of the particular column in the settlement report file<br>Possible value: <code>alphabetic, numeric, special characters</code><br>Maximum length: <code>128</code></td></tr></tbody></table>

#### Sample usage <a href="#sample-usage" id="sample-usage"></a>

Let's assume you are using the Checkout integration. You can simply add these parameters into your API Initiate Payment:

```json
{
    "order": {
        "invoice_number": "INV-20210231-0001",
        "amount": 90000,
        "line_items": [
            {
                "name": "T-Shirt Red",
                "price": 30000,
                "quantity": 2
            },
            {
                "name": "Polo Navy",
                "price": 30000,
                "quantity": 1
            }
        ],
        "currency": "IDR",
        "callback_url": "https://merchant.com/return-url"     
    },
    "payment": {
        "payment_due_date": 60,
        "payment_method_types": [
            "VIRTUAL_ACCOUNT_BCA",
            "VIRTUAL_ACCOUNT_BANK_MANDIRI",
            "VIRTUAL_ACCOUNT_BANK_SYARIAH_MANDIRI",
            "VIRTUAL_ACCOUNT_DOKU",
            "ONLINE_TO_OFFLINE_ALFA",
            "CREDIT_CARD",
            "DIRECT_DEBIT_BRI"
        ]
    },
    "customer": {
        "id": "CUST-0001",
        "name": "Anton Budiman",
        "email": "anton@example.com",
        "phone": "6285694566147",
        "address": "Menara Mulia Lantai 8",
        "country": "ID"
    },
    "additional_info": {
        "report": [
           {
               "key": "Branch",
               "value": "Toserba Kebon Jeruk"
           },
           {
               "key": "city",
               "value": "Jakarta Barat"
           }
           {
               "key": "Province",
               "value": "DKI Jakarta"
           }
       ]
    }
}
```

***

### Settlement report example <a href="#settlement-report-example" id="settlement-report-example"></a>

Here is the example of settlement report that already added with custom parameter you will received:

Download the sample [here](https://docs.google.com/spreadsheets/d/16PH77oGdi__Nu982blMLO-Q8XoUTV1ty/edit?usp=sharing\&ouid=102052044505696151555\&rtpof=true\&sd=true)

***

### FAQs <a href="#faqs" id="faqs"></a>

#### Can I name the key and value by myself? <a href="#can-i-name-the-key-and-value-by-myself" id="can-i-name-the-key-and-value-by-myself"></a>

Yes, you are freely name the key and value based on your operation case.

#### Can I use this feature with hold & release settlement or split settlement? <a href="#can-i-use-this-feature-with-hold--release-settlement-or-split-settlement" id="can-i-use-this-feature-with-hold--release-settlement-or-split-settlement"></a>

Of course, you can!


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://developers.doku.com/accept-payments/finance-and-settlement/custom-settlement-report.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
