---
title: "report.created"
method: POST
path: "report.created"
tags: ["Reports"]
---

# report.created

`POST report.created` (webhook)

Occurs when an report is created.

## Headers

- `paddle_signature` string, required

## Payload

- object
  - `event_id` string, required: Unique Paddle ID for this event, prefixed with `evt_`.
  - `event_type` 'address.created' | 'address.imported' | 'address.updated' | 'adjustment.created' | 'adjustment.updated' | 'api_key.created' | 'api_key.expired' | 'api_key.expiring' | 'api_key.revoked' | 'api_key.updated' | 'api_key_exposure.created' | 'business.created' | 'business.imported' | 'business.updated' | 'client_token.created' | 'client_token.revoked' | 'client_token.updated' | 'customer.created' | 'customer.imported' | 'customer.updated' | 'discount.created' | 'discount.imported' | 'discount.updated' | 'discount_group.created' | 'discount_group.updated' | 'payment_method.saved' | 'payment_method.deleted' | 'payout.created' | 'payout.paid' | 'price.created' | 'price.imported' | 'price.updated' | 'product.created' | 'product.imported' | 'product.updated' | 'report.created' | 'report.updated' | 'subscription.activated' | 'subscription.canceled' | 'subscription.created' | 'subscription.imported' | 'subscription.past_due' | 'subscription.paused' | 'subscription.resumed' | 'subscription.trialing' | 'subscription.updated' | 'transaction.billed' | 'transaction.canceled' | 'transaction.completed' | 'transaction.created' | 'transaction.paid' | 'transaction.past_due' | 'transaction.payment_failed' | 'transaction.ready' | 'transaction.revised' | 'transaction.updated', required: Type of event sent by Paddle, in the format `entity.event_type`.
  - `occurred_at` string, date-time, required: RFC 3339 datetime string of when this event occurred.
  - `notification_id` string, required: Unique Paddle ID for this notification, prefixed with `ntf_`.
  - `data` union, required: New or changed entity.
    - object: Report entity when working with adjustments reports.
      - `id` string, required: Unique Paddle ID for this report, prefixed with `rep_`
      - `status` 'pending' | 'ready' | 'failed' | 'expired', required: Status of this report. Set automatically by Paddle. Reports are created as `pending` initially, then move to `ready` when they're available to download.
      - `rows` integer, nullable, required: Number of records in this report. `null` if the report is `pending`.
      - `expires_at` string, date-time, nullable, required: RFC 3339 datetime string.
      - `updated_at` string, date-time, required: RFC 3339 datetime string of when this report was last updated.
      - `created_at` string, date-time, required: RFC 3339 datetime string of when this report was created.
      - `type` 'adjustments' | 'adjustment_line_items', required: Type of report to create.
      - `filters` object[], required: Filter criteria for this report. If no `gte` filter for `updated_at` is passed, reports are filtered to include data updated in the last month. This means `updated_at` is greater than or equal to (`gte`) the same date and time one calendar month before the report was generated, so the window is between 28 and 31 days depending on the month.
        - `name` 'action' | 'currency_code' | 'status' | 'updated_at', required: Field name to filter by.
        - `operator` 'lt' | 'gte', nullable, required: Operator to use when filtering.
        - `value` union, required: Value to filter by. Check the allowed values descriptions for the `name` field to see valid values for a field.
          - string[]
          - string[]
          - string, date-time: RFC 3339 datetime string.
          - string, date
          - string[]
          - string
    - object: Report entity when working with transactions reports.
      - `id` string, required: Unique Paddle ID for this report, prefixed with `rep_`
      - `status` 'pending' | 'ready' | 'failed' | 'expired', required: Status of this report. Set automatically by Paddle. Reports are created as `pending` initially, then move to `ready` when they're available to download.
      - `rows` integer, nullable, required: Number of records in this report. `null` if the report is `pending`.
      - `expires_at` string, date-time, nullable, required: RFC 3339 datetime string.
      - `updated_at` string, date-time, required: RFC 3339 datetime string of when this report was last updated.
      - `created_at` string, date-time, required: RFC 3339 datetime string of when this report was created.
      - `type` 'transactions' | 'transaction_line_items', required: Type of report to create.
      - `filters` object[], required: Filter criteria for this report. If no `gte` filter for `updated_at` is passed, reports are filtered to include data updated in the last month. This means `updated_at` is greater than or equal to (`gte`) the same date and time one calendar month before the report was generated, so the window is between 28 and 31 days depending on the month.
        - `name` 'collection_mode' | 'currency_code' | 'origin' | 'status' | 'updated_at', required: Field name to filter by.
        - `operator` 'lt' | 'gte', nullable, required: Operator to use when filtering.
        - `value` union, required: Value to filter by. Check the allowed values descriptions for the `name` field to see valid values for a field.
          - string[]
          - string
    - object: Report entity when working with the products and prices report.
      - `id` string, required: Unique Paddle ID for this report, prefixed with `rep_`
      - `status` 'pending' | 'ready' | 'failed' | 'expired', required: Status of this report. Set automatically by Paddle. Reports are created as `pending` initially, then move to `ready` when they're available to download.
      - `rows` integer, nullable, required: Number of records in this report. `null` if the report is `pending`.
      - `expires_at` string, date-time, nullable, required: RFC 3339 datetime string.
      - `updated_at` string, date-time, required: RFC 3339 datetime string of when this report was last updated.
      - `created_at` string, date-time, required: RFC 3339 datetime string of when this report was created.
      - `type` 'products_prices', required: Type of report to create.
      - `filters` object[], required: Filter criteria for this report. `product_updated_at` and `price_updated_at` are defaulted independently: a field with no `gte` filter is filtered to include data updated in the last month, even when the other field has one. This means the field is set to greater than or equal to (`gte`) the same date and time one calendar month before the report was generated, so the window is between 28 and 31 days depending on the month.
        - `name` 'product_status' | 'price_status' | 'product_type' | 'price_type' | 'product_updated_at' | 'price_updated_at', required: Field name to filter by.
        - `operator` 'lt' | 'gte', nullable, required: Operator to use when filtering.
        - `value` union, required: Value to filter by.
          - string[]
          - string
    - object: Report entity when working with the discounts report.
      - `id` string, required: Unique Paddle ID for this report, prefixed with `rep_`
      - `status` 'pending' | 'ready' | 'failed' | 'expired', required: Status of this report. Set automatically by Paddle. Reports are created as `pending` initially, then move to `ready` when they're available to download.
      - `rows` integer, nullable, required: Number of records in this report. `null` if the report is `pending`.
      - `expires_at` string, date-time, nullable, required: RFC 3339 datetime string.
      - `updated_at` string, date-time, required: RFC 3339 datetime string of when this report was last updated.
      - `created_at` string, date-time, required: RFC 3339 datetime string of when this report was created.
      - `type` 'discounts', required: Type of report to create.
      - `filters` object[], required: Filter criteria for this report. If no `gte` filter for `updated_at` is passed, reports are filtered to include data updated in the last month. This means `updated_at` is greater than or equal to (`gte`) the same date and time one calendar month before the report was generated, so the window is between 28 and 31 days depending on the month.
        - `name` 'type' | 'status' | 'updated_at', required: Field name to filter by.
        - `operator` 'lt' | 'gte', nullable, required: Operator to use when filtering.
        - `value` union, required: Value to filter by. Check the allowed values descriptions for the `name` field to see valid values for a field.
          - string[]
          - string
    - object: Report entity when working with the balance report. Deprecated.
      - `id` string, required: Unique Paddle ID for this report, prefixed with `rep_`
      - `status` 'pending' | 'ready' | 'failed' | 'expired', required: Status of this report. Set automatically by Paddle. Reports are created as `pending` initially, then move to `ready` when they're available to download.
      - `rows` integer, nullable, required: Number of records in this report. `null` if the report is `pending`.
      - `expires_at` string, date-time, nullable, required: RFC 3339 datetime string.
      - `updated_at` string, date-time, required: RFC 3339 datetime string of when this report was last updated.
      - `created_at` string, date-time, required: RFC 3339 datetime string of when this report was created.
      - `type` 'balance', required: Type of report to create.
      - `filters` object[], required: Filter criteria for this report. If no `gte` filter for `updated_at` is passed, reports are filtered to include data updated in the last month. This means `updated_at` is greater than or equal to (`gte`) the same date and time one calendar month before the report was generated, so the window is between 28 and 31 days depending on the month.
        - `name` 'updated_at', required: Field name to filter by.
        - `operator` 'lt' | 'gte', nullable, required: Operator to use when filtering.
        - `value` union, required: Value to filter by. Check the allowed values descriptions for the `name` field to see valid values for a field.
          - string[]
          - string
    - object: Report entity when working with payout reconciliation reports.
      - `id` string, required: Unique Paddle ID for this report, prefixed with `rep_`
      - `status` 'pending' | 'ready' | 'failed' | 'expired', required: Status of this report. Set automatically by Paddle. Reports are created as `pending` initially, then move to `ready` when they're available to download.
      - `rows` integer, nullable, required: Number of records in this report. `null` if the report is `pending`.
      - `expires_at` string, date-time, nullable, required: RFC 3339 datetime string.
      - `updated_at` string, date-time, required: RFC 3339 datetime string of when this report was last updated.
      - `created_at` string, date-time, required: RFC 3339 datetime string of when this report was created.
      - `type` 'payout_reconciliation', required: Type of report to create.
      - `filters` object[], required: Filter criteria for this report. If none of a `gte` filter for `transaction_updated_at`, a `remittance_reference` filter, or a `balance_movement_date` filter is passed, reports are filtered to include data updated in the last month. This means `transaction_updated_at` is greater than or equal to (`gte`) the same date and time one calendar month before the report was generated, so the window is between 28 and 31 days depending on the month.
        - `name` 'remittance_reference' | 'transaction_updated_at' | 'balance_movement_date' | 'balance_movement_type', required: Field name to filter by.
        - `operator` 'lt' | 'gte', nullable, required: Operator to use when filtering.
        - `value` union, required: Value to filter by. Check the allowed values descriptions for the `name` field to see valid values for a field.
          - string[]
          - string
          - string[]
    - object: Report entity when working with checkouts reports.
      - `id` string, required: Unique Paddle ID for this report, prefixed with `rep_`
      - `status` 'pending' | 'ready' | 'failed' | 'expired', required: Status of this report. Set automatically by Paddle. Reports are created as `pending` initially, then move to `ready` when they're available to download.
      - `rows` integer, nullable, required: Number of records in this report. `null` if the report is `pending`.
      - `expires_at` string, date-time, nullable, required: RFC 3339 datetime string.
      - `updated_at` string, date-time, required: RFC 3339 datetime string of when this report was last updated.
      - `created_at` string, date-time, required: RFC 3339 datetime string of when this report was created.
      - `type` 'checkouts', required: Type of report to create.
      - `filters` object[], required: Filter criteria for this report. If no `gte` filter for `checkout_created_at` is passed, reports are filtered to include checkouts created in the last month. This means `checkout_created_at` is greater than or equal to (`gte`) the same date and time one calendar month before the report was generated, so the window is between 28 and 31 days depending on the month. To filter by a specific date range, pass two `checkout_created_at` filters with `gte` and `lt` operators.
        - `name` 'checkout_created_at' | 'customer_country_code', required: Field name to filter by.
        - `operator` 'lt' | 'gte', nullable, required: Operator to use when filtering.
        - `value` union, required: Value to filter by. Check the allowed values descriptions for the `name` field to see valid values for a field.
          - string[]
          - string
    - object: Report entity when working with subscriptions reports.
      - `id` string, required: Unique Paddle ID for this report, prefixed with `rep_`
      - `status` 'pending' | 'ready' | 'failed' | 'expired', required: Status of this report. Set automatically by Paddle. Reports are created as `pending` initially, then move to `ready` when they're available to download.
      - `rows` integer, nullable, required: Number of records in this report. `null` if the report is `pending`.
      - `expires_at` string, date-time, nullable, required: RFC 3339 datetime string.
      - `updated_at` string, date-time, required: RFC 3339 datetime string of when this report was last updated.
      - `created_at` string, date-time, required: RFC 3339 datetime string of when this report was created.
      - `type` 'subscriptions', required: Type of report to create.
      - `filters` object[], required: Filter criteria for this report. Subscriptions reports have no default date range. If you don't pass a `subscription_created_at` filter, reports include all your subscriptions. To filter by a specific date range, pass two `subscription_created_at` filters with `gte` and `lt` operators.
        - `name` 'subscription_status' | 'subscription_created_at' | 'customer_country_code' | 'subscription_scheduled_change_action', required: Field name to filter by.
        - `operator` 'lt' | 'gte', nullable, required: Operator to use when filtering.
        - `value` union, required: Value to filter by. Check the allowed values descriptions for the `name` field to see valid values for a field.
          - string[]
          - string
          - string[]
          - string[]

## Acknowledgement `200`

Respond with an HTTP 200 status code within 5 seconds to let Paddle know that you successfully received the message.

If your server sends another kind of status code or doesn't respond, Paddle automatically retries using an exponential backoff schedule.

---

[API](https://skmtc.dev/paddlehq/apis/paddle-api.md) - [All operations](https://skmtc.dev/paddlehq/apis/paddle-api/llms.txt) - [OpenAPI document](https://skmtc.dev/paddlehq/apis/paddle-api/revisions/bbc0c72039c8?raw)
