Settlement Reporting

Generate and retrieve settlement reports

Settlement reporting gives you visibility into what has settled and where there are mismatches. Reports are generated asynchronously, so you request a report (or list existing ones) and then fetch the results by ID.

When to Use Settlement Reporting

  • Reconcile settled amounts against your internal ledger
  • Identify unmatched settlements that need investigation
  • Produce periodic finance reports for accounting or audit

Report Types

Settlements report

Settlements reports are available once a settlement cycle is complete. Use the Reporting API to list settlement reports and fetch the report by ID.

  • List reports: GET /reports?type=settlements
  • Fetch report: GET /reports/settlements/{id}

Unmatched settlements report

Use this report to find discrepancies between expected and actual settlement records.

  • Create report job: POST /reports/unmatched-settlements
  • Fetch report: GET /reports/unmatched-settlements/{id}

Workflow Overview

  1. Create or locate a report:
    • For settlements, list reports filtered by type=settlements.
    • For unmatched settlements, create a report job.
  2. Poll for completion: Use the report ID to fetch the result once it is ready.
  3. Consume results: Download the report payload or file output from the response.

Examples

Create an unmatched settlements report

$curl --request POST 'https://api.crisscross.money/v1/reports/unmatched-settlements' \
> --header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
> --header 'Content-Type: application/json' \
> --data-raw '{
$ "merchantId": "11111111-2222-3333-4444-555555555555",
$ "name": "Unmatched settlements - Jan 2026",
$ "columns": ["settlementId", "currency", "amount", "status", "createdAt"],
$ "parameters": {
$ "dateRange": {
$ "startDate": "2026-01-01",
$ "endDate": "2026-01-31"
$ }
$ }
$ }'

Example response (job created):

1{
2 "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
3 "name": "Unmatched settlements - Jan 2026",
4 "type": "unmatched-settlements",
5 "status": "PENDING",
6 "createdAt": "2026-01-31T10:15:00Z",
7 "updatedAt": "2026-01-31T10:15:00Z"
8}

Fetch a report by ID

$curl --request GET 'https://api.crisscross.money/v1/reports/unmatched-settlements/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee' \
> --header 'Authorization: Bearer YOUR_ACCESS_TOKEN'

Example response (completed):

1{
2 "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
3 "status": "COMPLETED",
4 "generatedAt": "2026-01-31T10:20:12Z",
5 "rows": [
6 {
7 "settlementId": "set_123",
8 "currency": "NGN",
9 "amount": 250000,
10 "status": "UNMATCHED",
11 "createdAt": "2026-01-15T08:45:22Z"
12 }
13 ],
14 "downloadUrl": "https://files.crisscross.money/reports/settlements/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee.csv"
15}

List settlement report jobs

$curl --request GET 'https://api.crisscross.money/v1/reports?type=settlements' \
> --header 'Authorization: Bearer YOUR_ACCESS_TOKEN'

Example response:

1[
2 {
3 "id": "bbbbbbbb-cccc-dddd-eeee-ffffffffffff",
4 "name": "Settlements - Jan 2026",
5 "type": "settlements",
6 "status": "COMPLETED",
7 "createdAt": "2026-02-01T09:00:00Z",
8 "updatedAt": "2026-02-01T09:02:10Z"
9 }
10]

API Reference

See the Reporting API for request parameters, report columns, and response formats.