Processing Reports

Partners can request an export of processing reports programmatically at an interval that fits their needs. After receiving a report export request, PPRO queues the work and generates the bulk file asynchronously. Once ready, the partner is notified via Webhooks, and a URL becomes available for downloading the CSV file.

1. Request a Payment Report Export

Whenever you want to receive a payments processing report, make a request to PPRO's Reporting API endpoint:

In the request body, specify:

FieldValuesDescription
operationTypeAUTHORIZATION, CAPTURE, REFUND, VOIDThe type of payment charge operation to be included in the report.
startDateExample: "2025-01-01T00:00:00.000Z"The report cutoff start date in ISO 8601 date-time.
endDateExample: "2025-01-01T23:59:59.999Z"The report cutoff end date in ISO 8601 date-time.
webhooksUrlhttps://your-webhooks-notification-url.comThe URL to which the report state changes will be notified along with the download URL

Request:

POST /v1/payment-reports HTTP/1.1
Host: api.sandbox.eu.ppro.com

{
  "operationType": "CAPTURE",
  "startDate": "2025-04-04T00:00:00.000Z",
  "endDate": "2025-04-04T23:59:59.999Z",
  "webhooksUrl": "https://your-webhooks-notification-url.com"
}

Response:

HTTP/1.1 200 OK
Content-Type: application/json

{
    "id": "report_WcJcFBw77BfGezmxJM9i5",
    "status": "PENDING",
    "operationType": "CAPTURE",
    "startDate": "2025-04-04T00:00:00.000Z",
    "endDate": "2025-04-04T23:59:59.999Z",
    "createdAt": "2025-04-07T15:30:34.401Z",
    "updatedAt": "2025-04-07T15:30:34.401Z"
}

2. Download the Report File

After a few minutes, the report status will update to PROCESSED, at which point a downloadUrl becomes available. You can obtain the downloadUrl either from the REPORT_PROCESSED webhook payload or by querying the API using the report ID

Webhook Payload:

{
  "source":"https://www.ppro.com",
  "id":"TW3nbIG40NW73k4mhuW8Y",
  "type":"REPORT_PROCESSED",
  "subject":"REPORT_PROCESSED",
  "time":"2025-04-07T15:05:23.326Z",
  "data":
	{
  	"reportId":"report_0SANgKQDybMOmWvXEnHso",
  	"status":"PROCESSED",
  	"operationType":"CAPTURE",
  	"startDate":"2025-04-04T00:00:00.000Z",
  	"endDate":"2025-04-04T23:59:59.999Z",
  	"downloadUrl":"https://ppro-payment-reports-prod.s3.ppro.com/report_abcd?response-content-disposition=attachment%3Bfilename%3Dreport_abcd.csv",
  	"contentLength":228293
	},
  "specversion":"1.0.2",
  "datacontenttype":"application/json"
}

Querying the payment-reports API with the report id:

Request:

GET /v1/payment-reports/{report-id}

Response:

HTTP/1.1 200 OK
Content-Type: application/json

{
    "id": "report_0SANgKQDybMOmWvXEnHso",
    "status": "PROCESSED",
    "operationType": "CAPTURE",
    "startDate": "2025-04-04T00:00:00.000Z",
    "endDate": "2025-04-04T23:59:59.999Z",
    "contentLength": 228293,
    "downloadUrl": "https://ppro-payment-reports-prod.s3.ppro.com/report_abcd?response-content-disposition=attachment%3Bfilename%3Dreport_abcd.csv",
    "createdAt": "2025-04-07T15:05:05.918Z",
    "updatedAt": "2025-04-07T15:05:23.246Z"
}

Note:

  1. A single payments report can include data for up to 6 months. To retrieve data beyond this range, you'll need to generate multiple reports and consolidate them.
  2. The Payment Report status initially starts as PENDING and will transition to one of the following: PROCESSED, FAILED, or EXPIRED. You can use webhooks to receive notifications for each of these status changes.
  3. The payment report entity will change to EXPIRED and become unavailable 2 hours after creation. Make sure to download the CSV before it expires.