For AI agents and LLMs: a structured documentation index is available at /llms.txt. Every page has a Markdown sibling — append .md to any URL.

Skip to content
Docs

Generate reports

Export information from your Paddle account as CSV formatted spreadsheets to better understand your data and reconcile account activity.

AI summary

Generate CSV export reports from your Paddle account for transactions, adjustments, products, discounts, and payout reconciliation — via the dashboard or programmatically via the API.

  • • Reports are async — poll GET /reports/{report_id} for status: 'ready' or listen for the report.updated webhook, then fetch a 72-hour download URL.
  • • Date range filters use the date an entity was last updated, not when it was created — this ensures invoices created months before being issued and paid appear in the correct reporting window.
  • • Report data may be delayed up to 24 hours, and generated CSV files are available for download for 14 days after creation.

Reports in Paddle let you export CSV formatted spreadsheets with your account data.

You can use them as part of your financial processes, like calculating revenue and analyzing trends. They're often used for working with data in other applications, like accounting or ERP solutions.

Reports available

How it works

When you build a report, you can filter to choose the data that you include on it. Reports are always sorted by when they were last updated, and date range filters work using the date an entity was last updated. This is so you always see the most relevant data. For example, invoices created a few months before being issued and paid are included on reports when they're issued and paid.

It might take a little while to generate a report, depending on the amount of data you include on it. The Reports screen in the Paddle dashboard updates when your report is ready, and you'll get an email to let you know, too. Reports are available to download for 14 days once generated.

Reports are CSV files

Paddle produces reports as CSV (comma-separated values) files. CSV files are text files that use commas to separate cells of data. You can open CSV files with any spreadsheet app, like Microsoft Excel, Google Sheets, and Apple Numbers.

Your computer or device may open CSV files in your default text editor. If this happens, open your spreadsheet app and use File > Open to open it, or look for an import option.

Paddle exports CSV files using UTF-8/Unicode character encoding, with a comma as the delimiter.

Generate a report

  1. Go to Paddle > Reports.
  2. Find the report you want to generate under the Build reports tab, then click Build report
  3. Use the options to filter the data you want to include on your report. Check the available filter options to learn more about how they work.
  4. When you're done, click Generate report
  5. Look out for an email from Paddle, then click Download report in the email.

Each report type has different filter options available. See the individual report pages for details on available filters:

Use the Paddle API to generate reports programmatically as part of your workflows.

Generate reports using the API in three steps:

  1. Create your report
    Build a request that includes the kind of report you want to generate and how you want to filter the data.
  2. Check the status of your report
    Wait for Paddle to generate the report.
  3. Download the report
    Send a request to get the download URL for the report, then download the file.

Create report

Send a POST request to the /reports endpoint to create a report.

Include type in your request to specify the report kind.

Optionally include filters to narrow the data. Each filter object needs name and value, and date filters can use an operator for date ranges. If omitted, defaults to data updated in the last 30 days.

The report is created as pending while Paddle processes your data. rows and expires_at are null until it's ready.

POST /reports
Request
{
"type": "transactions",
"filters": [
{
"name": "collection_mode",
"value": ["manual"]
},
{
"name": "updated_at",
"value": "2024-04-15",
"operator": "lt"
},
{
"name": "updated_at",
"value": "2024-01-01",
"operator": "gte"
}
]
}
Response (201 Created)
{
"data": {
"id": "rep_01hvgdhtthn1q35n79dgeqm3pv",
"type": "transactions",
"rows": null,
"status": "pending",
"filters": [
{
"name": "collection_mode",
"value": ["manual"],
"operator": null
},
{
"name": "updated_at",
"value": "2024-04-15",
"operator": "lt"
},
{
"name": "updated_at",
"value": "2024-01-01",
"operator": "gte"
}
],
"expires_at": null,
"created_at": "2024-04-15T08:21:36.209Z",
"updated_at": "2024-04-15T08:21:36.209Z"
},
"meta": {
"request_id": "0774e52b-fcc3-4d7e-8047-b1b1a05a3f27"
}
}

Check report status Optional

Reports are created as pending initially, which means Paddle is processing them. During this stage, Paddle finds records that match your criteria and generates CSV files of your reports.

When Paddle has completed processing your report, its status changes to ready. At this point you can download a CSV file with your data.

You can check to see if a report is ready by:

  • Polling the /reports/{report_id} endpoint, checking to see if the status is ready.
  • Subscribing to the report.updated webhook. Paddle sends a notification when the status for a report changes to ready.

Download file

Send a GET request to the /reports/{report_id}/download-url endpoint to get the download URL for the report.

The download URL expires after 72 hours.

GET /reports/{report_id}/download-url
Response (200 OK)
{
"data": {
"url": "https://reports.paddle.com/transactions-10889-2024-04-15-08-21-37.csv"
},
"meta": {
"request_id": "91899157-4d2a-432c-aa5b-041bb6266b55"
}
}

Was this page helpful?