The API functionality is in closed beta phase. Currently, the closed beta is available only for select providers. Make sure to direct any questions during the beta phase to your Booking.com contact person via the appropriate channels.
POST https://payments-api.booking.com/connectivity-payments/recon-reportsThe Report API allows you to request a payout report for a given property or a list of properties belonging to the same legal owner (same legal ID). To request a report, you first need to get the list of applicable filters for the given legal entity ID using the Filters API.
You need to be connected with the reservations connection type to use this API.
For more information on the connection types, see Connections API Overview.
Take these expiration times/dates into account:
- Report request: Identical report requests are cached for 1 hour. If a report is requested with the same filters as the previous request within one hour, the previous report is returned (if
READY). If it's still generating, the API will return the statusGENERATING.
The API supports two authorization modes:
- Legal entity-based: If you don't provide
property_idsor leave the parameter empty, you must be authorized (i.e. through your machine account ID) for every property under the specifiedlegal_entity_id. - Property-based: If you provide
property_ids, you must be authorized for each of the listed property IDs.
| Header | Description | Type |
|---|---|---|
api-version | The version of the API. If omitted, defaults to 1.0. | string |
{
"properties": [
{
"legal_entity_id": "LE12345",
"property_ids": [
"ASSET001"
]
}
],
"from_date": "2025-06-01",
"to_date": "2025-06-30",
"report_configurations": [
{
"config_key": "format_type",
"config_value": "JSON"
},
{
"config_key": "locale",
"config_value": "en"
}
],
"report_filters": [
{
"filter_key": "bank_accounts",
"filter_values": ["1234", "5678"]
},
{
"filter_key": "payout_type",
"filter_values": ["NET"]
},
{
"filter_key": "statement_descriptor",
"filter_values": ["12345678", "9101112"]
}
]
}
The following table describes the request elements:
| Element | Description | Type |
|---|---|---|
: properties | Required. Contains the properties for which the report is generated. | array of objects |
:: legal_entity_id | Required. Specifies the identifier assigned to the legal owner of one or more properties on Booking.com for which the report is generated. | string |
:: property_ids | Optional. Specifies the identifier of the property (or the identifiers of multiple properties) for which the report request is sent. The properties must belong to the same legal ID. The maximum of 1000 entries per request is allowed. | array of strings |
: from_date | Required. Specifies the start date of the report. Format: YYYY-MM-DD. Dates are in UTC. Must be within the last 5 years. The earliest supported date is 2019-01-01. | string |
: to_date | Required. Specifies the end date of the report. Format: YYYY-MM-DD. Dates are in UTC. Must be within the last 5 years. | string |
: report_configurations | Optional. Contains the configuration settings for the report: a config_key and config_value pair. The rows below describe the available values. | array |
:: format_type | Optional. Specifies the desired format of the report: JSON, CSV, or XLS. Default is CSV. | string |
:: locale | Optional. Specifies the language of the report. For example, en, fr, de, es. Default is en. The list of available locales is returned when you call the Filters API. | string |
: report_filters | Optional. Contains the filters to apply to the report: a filter_key and filter_values pair. The rows below describe the available values. | array |
:: bank_accounts | Optional. Specifies the last 4 digits of the bank account for filtering. | array of strings |
:: payout_type | Optional. Specifies the payout type for filtering: NET or GROSS. | string |
:: statement_descriptor | Optional. Specifies the statement descriptor for the report. A descriptor is a short, alphanumeric string (max 255 characters). - For bank transfer payouts, the statement descriptor corresponds to the “transfer reference”, which is a unique code generated by Booking.com to help partners trace the origin and nature of the payout on their bank statements. - For Stripe payouts, the descriptor is known as the “Stripe payout statement descriptor”. Stripe generates this text, which may differ from platform-generated references, and partners can use it to match the deposit on their bank statement to the specific payout in their reconciliation report. | string |
{
"meta": {
"ruid": "string"
},
"data": {
"request_id": "UUID-R1234",
"report_status": "GENERATING"
},
"errors": [
{
"description": "string",
"message": "",
"status_code": 0,
"debug_message": "string"
}
],
"warnings": [
{
"message": "string"
}
]
}The following table describes the response elements:
| Element | Description | Type |
|---|---|---|
data | Contains the report request details. | object |
:: request_id | Identifier of the report request for which the status is retrieved. | string |
:: report_status | Status of the request: GENERATING, READY, EMPTY, or ERROR. | string |
errors | Contains potential errors. These can help you understand what went wrong with your request. For more information, see Response codes. | array |
warnings | Contains potential warnings. These can help you improve your requests. | array |
To prevent excessive load on our systems, we limit the number of API calls that a provider can make per minute. For the Report API, the limit is 10 requests per minute.
This table lists and describes the response codes that the API can return.
| Code | Description |
|---|---|
| 202 Accepted | Request successfully received and being processed. |
| 200 OK | Report already exists. |
| 400 Bad request | Invalid parameters provided. |
| 401 Unauthorized | User not authenticated. |
| 403 Forbidden | User not authorized to access the requested resources. |
| 429 Too Many Requests | Rate limit exceeded. |
| 500 Internal server error | An unexpected error occurred. |