> ## Documentation Index
> Fetch the complete documentation index at: https://docs.paylead.fr/llms.txt
> Use this file to discover all available pages before exploring further.

# Rewards report

> Export every Reward generated by your Program to CSV for accounting, reconciliation, and BI. Filter by date, status, Offer, Brand, or Campaign.

export const RequiredRoles = ({roles}) => <Note>
    <strong>Required Shift role:</strong> {roles}. See <a href="/program/shift/access-and-roles">Users management</a> for the full role matrix.
  </Note>;

<RequiredRoles roles="Reporting" />

The **Reporting** section in [Shift](/glossary#shift) lists every [Reward](/glossary#reward) generated by your [Program](/glossary#program) and lets you export the filtered list as CSV. Use it for monthly accounting, reconciliation against the [Ventilation](/glossary#ventilation) file, or to feed your BI pipeline.

## Which report you need

Reporting opens on the **Rewards** report, which covers ALO Rewards, [Gifts](/glossary#gift), and Reward LBS. Programs that run vouchers get a second tab, where voucher purchases are tracked.

| Question | Where to look |
| - | - |
| How much [Cashback](/glossary#cashback) did my Program generate, and on which Offers? | **Rewards**, this page. |
| How much do I owe my Consumers for a Ventilation cycle? | **Rewards**, filtered on `Status = Paid`. |
| How many vouchers did Consumers buy, and for how much? | [Vouchers report](/program/shift/vouchers-report). |

## Generate a report

<Steps>
  <Step title="Open the Rewards report">
    Click **Reporting** in the Shift sidebar. On a Program that runs vouchers, select the **Rewards** tab.
  </Step>

  <Step title="Set filters">
    Stack any combination of the filters below, then click **Apply filters**. Shift writes them into the page URL, so the address bar is a shareable link to that exact selection, and returns you to page 1 of the results.
  </Step>

  <Step title="Review the summary">
    Check the aggregated totals for the filtered set: **Reward amount**, **Total rewards**, **Total consumers**, **Total commissions**.
  </Step>

  <Step title="Export">
    Click **Export**, above the results table, to download the filtered list as CSV, named `export-reports.csv`.
  </Step>
</Steps>

### Available filters

| Filter | What it does |
| - | - |
| Date range | Pick which date the range applies to: **Created** (the default, when the Reward was created), **Updated**, or **Executed** (when the Consumer's transaction took place). Then set the **Date From** and **Date to** fields. |
| **Brand** | Restrict to Rewards generated from Offers tied to a specific [Brand](/glossary#brand). |
| **Status** | Restrict to one Reward status: `Cancelled`, `Pending validation`, `Validated`, `Pool`, `Paid`. |
| **Offer** | Restrict to Rewards generated from one [Offer](/glossary#offer). |
| **Invoice** | Filter by the invoice reference number tied to the Reward's commission. |
| **Campaign** | Restrict to Rewards generated from one [Campaign](/glossary#campaign). |
| **Type** | Restrict to one Reward type: **ALO Rewards**, **Gifts**, or **Reward LBS**. |
| **Only valid rewards** | On by default. Keeps `Pending validation`, `Validated`, `Pool`, and `Paid`, and hides the `Cancelled` Rewards. Turn it off to investigate cancellations. |

The report always covers a date range: it opens on the last 7 days and can start at most 365 days in the past. To cover a longer history, export several ranges and concatenate them.

Click **Reset** to drop every filter at once and return to the default selection: date type back to **Created**, **Only valid rewards** back on, and the **Brand**, **Offer**, **Invoice**, and **Campaign** fields emptied. The date range stays in place.

To reconcile against a Ventilation cycle, filter on `Status = Paid` over the cycle date range. The **Reward amount** total should match the cycle's **Total amount to allocate**. See [Ventilations](/program/shift/ventilations) to download the file and pay out the reconciled Cashbacks.

## Report columns

The list pane shows one row per Reward with these columns:

| Column | What it represents |
| - | - |
| **Created** | Reward creation date. |
| **Brand** | Brand attached to the originating Offer. |
| **Campaign** | Campaign the Offer was derived from. |
| **Offer ref.** | Offer reference. |
| **Consumer ID** | Stable Consumer identifier. |
| **Executed** | Date the underlying transaction was carried out by the Consumer. |
| **Transaction** | Amount of the matched transaction. |
| **Reward Rate** | Cashback rate configured on the Offer. |
| **Reward** | Cashback amount due to the Consumer. |
| **Commission** | Commission due to the [Program Manager](/glossary#program-manager). |
| **Updated** | Date of the last Reward status change. |
| **Type** | Reward type. |
| **Status** | Current status. |

For what each **Status** value means and the technical status behind it, see [Status reference](/program/shift/status-reference#rewards).

## CSV export

The CSV is the full record: every column of the list pane, plus the identifiers you need to join Rewards to your own data (`transaction_external_id`, `payout_id`, `invoice_reference`) and one timestamp per status transition.

| Field | Description |
| - | - |
| `id` | Reward ID. |
| `created_at` | Reward creation date. |
| `updated_at` | Date of the latest status change. |
| `status` | Current Reward status. |
| `transaction_id` | ID of the transaction that triggered the Reward. |
| `transaction_executed_at` | Date the Consumer's purchase was executed. |
| `transaction_amount` | Amount of the matched transaction. |
| `strategy_reference` | Reference of the Campaign tied to the Brand. |
| `strategy_id` | Campaign ID. |
| `brand_id` | Brand ID. |
| `brand_name` | Brand name. |
| `brand_reference` | Brand reference. |
| `type` | Reward type. |
| `amount` | Reward amount due to the Consumer. |
| `fees` | Commission amount due to the Program Manager. |
| `playground` | Total amount transferred to the Program Manager ([playground](/glossary#playground): Reward + Program fees). |
| `consumer_id` | Consumer ID. |
| `payout_id` | ID of the payment that transferred this Reward to the Consumer. |
| `offer_id` | Offer ID. |
| `offer_name` | Offer name. |
| `offer_reference` | Offer reference. |
| `offer_cashback_rate` | Cashback rate configured on the Offer. |
| `invoice_reference` | Reference of the invoice tied to this Reward's commission. |
| `transaction_external_id` | Transaction reference provided by the Program Manager at injection time. |
| `segments` | [Segment(s)](/glossary#segment) the Consumer belonged to at transaction time and that matched the Offer's targeting. |
| `cancelled_date` | Timestamp when the Reward switched to `cancelled`. |
| `pending_validation_date` | Timestamp when the Reward switched to `pending_validation`. |
| `validated_date` | Timestamp when the Reward switched to `validated`. |
| `paid_in_date` | Timestamp when the Reward switched to `paid_in`. |
| `paid_out_date` | Timestamp when the Reward switched to `paid_out`. |
| `cancellation_reason` | Cancellation reason provided by the Brand. |

<Warning>
  This export describes your own customers. Handle the file as personal data, under your bank's own data protection rules.
</Warning>

<Warning>
  The CSV reflects the **current** state of each Reward, not a point-in-time snapshot. A Reward marked `Validated` last week and `Cancelled` today appears as `Cancelled` in today's export, so re-exporting the same date range next month returns different figures. For audit-grade history, subscribe to [Webhooks](/glossary#webhooks) and persist each event in your own store. See [Webhooks](/program/shift/webhooks) to set up that subscription in Shift.
</Warning>

## What's next

<CardGroup cols={2}>
  <Card title="Vouchers report" icon="ticket" href="/program/shift/vouchers-report">
    The equivalent export for voucher-based Rewards.
  </Card>

  <Card title="Ventilations" icon="hand-coins" href="/program/shift/ventilations">
    Pay out Cashbacks to your Consumers from the reconciled Ventilation data.
  </Card>
</CardGroup>
