<!-- ZenPays documentation · https://docs.zenpayz.com/docs/reference/objects/report -->

# The Report object

Represents a generated or in-progress report. Reports are generated asynchronously. Poll the status until it reaches 'completed' to get the download URL.

## Fields

<ParamTable
  label="Field"
  rows={[
    { name: "id", type: "string", required: true, desc: "Unique identifier for the report" },
    { name: "merchantId", type: "string", required: true, desc: "ID of the merchant who requested the report" },
    { name: "type", type: "ReportType", required: true, desc: "Type of report [ReportType](/docs/reference/enums/report-types)" },
    { name: "format", type: "ReportFormat", required: true, desc: "Output format of the report [ReportFormat](/docs/reference/enums/report-types)" },
    { name: "status", type: "'pending' | 'processing' | 'completed' | 'failed'", required: true, desc: "Current generation status" },
    { name: "downloadUrl", type: "string", required: false, desc: "URL to download the report (when completed)" },
    { name: "expiresAt", type: "string", required: false, desc: "ISO 8601 timestamp when the download URL expires" },
    { name: "filters", type: "Record<string, unknown>", required: false, desc: "Filters that were applied to generate the report" },
    { name: "createdAt", type: "string", required: true, desc: "ISO 8601 timestamp when the report was requested" },
    { name: "completedAt", type: "string", required: false, desc: "ISO 8601 timestamp when the report generation completed" },
  ]}
/>

## Example

```json
{
  "id": "obj_1a2b3c",
  "merchantId": "merchant_1a2b3c",
  "type": "transactions",
  "format": "csv",
  "status": "pending",
  "downloadUrl": "string",
  "expiresAt": "2026-01-15T09:30:00Z",
  "filters": {},
  "createdAt": "2026-01-15T09:30:00Z"
}
```
