Integration GuideAPI Reference
Integration Guide

Reconciliation: Request a Report

Start generation of a reconciliation report for a period, choosing which transaction types and statuses to include.

Related API Reference

Overview

This is the first step of getting a report through the API. The request describes what goes into the report. The response confirms that generation has started and returns a reportId, which you use in the next steps.

POST {API_BASE_URL}/reconciliation/api/v2/outgoing-reconciliations/settlement-accounts/{SETTLEMENT_ACCOUNT_ID}/reports/on-demand
Authorization: Bearer {ACCESS_TOKEN}
Content-Type: application/json

Request Fields

FieldRequiredDescription
periodStartYesFirst day of the period, YYYY-MM-DD. The period starts at 00:00:00 in the given timezone.
periodEndYesLast day of the period, YYYY-MM-DD, inclusive. The period ends at 23:59:59 in the given timezone. Maximum 40 days in total.
timezoneYesTimezone in IANA format, for example Europe/Moscow. It sets the period boundaries and the dates shown in the report.
transactionTypeAndStatusYesAt least one item. Defines which transactions get into the report (see below).
fileFormatNoXLSX (default) or CSV.

transactionTypeAndStatus

Each item is a transaction type and the list of statuses to include for it.

FieldDescription
transactionTypePAYMENT, DISBURSEMENT or REFUND.
statusesTransaction statuses to include, for example ["CAPTURED"]. Only transactions in these statuses get into the report.

Available statuses:

Transaction typeStatuses
PAYMENTACCEPTED, AUTHORIZATION_REQUESTED, AUTHORIZATION_PENDING, AUTHORIZED, CAPTURE_REQUESTED, CAPTURED, CANCELLATION_REQUESTED, CANCELLED, EXPIRED, DECLINED, ERROR, PARTNER_RECONCILED, SETTLED
DISBURSEMENTACCEPTED, DISBURSEMENT_REQUESTED, PAID_OUT, DECLINED, ERROR
REFUNDACCEPTED, REFUND_REQUESTED, REFUND_ISSUED, REFUNDED, REFUND_FAILED, DECLINED, ERROR

Example

Report with successful payments only, for 1–7 October 2026:

curl -X POST \
  "$API_BASE_URL/reconciliation/api/v2/outgoing-reconciliations/settlement-accounts/SA1234567890/reports/on-demand" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "periodStart": "2026-10-01",
    "periodEnd": "2026-10-07",
    "timezone": "Europe/Moscow",
    "transactionTypeAndStatus": [
      { "transactionType": "PAYMENT", "statuses": ["CAPTURED"] }
    ]
  }'

Payments and disbursements in one report, as CSV:

{
  "periodStart": "2026-10-01",
  "periodEnd": "2026-10-31",
  "timezone": "UTC",
  "fileFormat": "CSV",
  "transactionTypeAndStatus": [
    { "transactionType": "PAYMENT", "statuses": ["CAPTURED", "DECLINED"] },
    { "transactionType": "DISBURSEMENT", "statuses": ["PAID_OUT"] }
  ]
}

Response

The API responds with 202 Accepted. At this point the file does not exist yet, so s3Key, s3DownloadPath, fileName and fileUrl are empty and fileSize is 0.

{
  "reportId": "OREC366168819952398336",
  "status": "GENERATION_STARTED",
  "s3Key": "",
  "s3DownloadPath": "",
  "fileSize": 0,
  "fileName": "",
  "fileUrl": "",
  "generationDate": "2026-10-08T05:12:41.318Z",
  "startDate": "2026-09-30T21:00:00Z",
  "endDate": "2026-10-07T20:59:59Z",
  "clientTimezone": "UTC+3",
  "generatedBy": "john.doe",
  "transactionTypes": ["PAYMENT"]
}

Save the reportId, then check the report status.

📌

The report is generated in the background. Use the status and download steps to get the file.

Errors

HTTP codeMessage exampleWhat to do
400Period length is 45 days, which is invalid or exceeds the maximum allowed of 40 daysRequest a shorter period, or split it into several reports.
400At least one transaction type must be selectedPass at least one item in transactionTypeAndStatus.
400Invalid date or timezoneUse YYYY-MM-DD dates and an IANA timezone.
403Access Denied to SA1234567890!Check that the token belongs to the owner of the account.
429A report for settlement account SA1234567890 is already being generated ...Wait until the previous report is GENERATED or ERROR.

Did this page help you?