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

# Income & Tax Report

> Daily validator income valued at historical fiat prices, with CSV exports for your tax return or tax software

The [income report](https://beaconcha.in/monitoring/income-report) shows what your validators earned on each UTC day of a period you choose. Every amount is shown in ETH and in a fiat currency of your choice, valued at that day's historical price, and you can export the result as CSV. You don't need the API or any code.

<Info>
  **Requirements:** a Premium monitoring plan ([Guppy, Dolphin or Orca](https://beaconcha.in/pricing?product=monitoring)). Without one, the page shows a demo report with sample data for 10 validators.
</Info>

<Warning>
  **Disclaimer:** The report is provided for informational purposes only and does not constitute tax, legal, or accounting advice. Consult a qualified tax professional for how staking rewards are taxed in your jurisdiction.
</Warning>

## Create a report

1. Open the [income report](https://beaconcha.in/monitoring/income-report). On any validator page you can also click **Generate Income Report** to start with that validator filled in.
2. Choose the validators:
   * **Dashboard:** pick one of your [validator dashboards](/validator-dashboard/introduction) and, optionally, one of its groups. Reports cover up to 10,000 validators this way.
   * **Validators:** enter up to 20 validator indices or public keys, separated by commas, spaces, or new lines. For more, save them in a dashboard first.
3. Choose the **Date range**. It defaults to the previous calendar year (January 1 to December 31) and can span up to 366 days.
4. Choose the **Currency**: ETH, or one of the fiat currencies in the list.
5. Click **Generate Report**.

## What the report shows

* **Period totals:** total income, the average per day, the APR for the period, and your capital movements (deposits, withdrawals, consolidations).
* **Daily breakdown:** one row per UTC day with the validator count, start and end balance, consensus layer (CL) rewards, execution layer (EL) rewards, total rewards, deposits, withdrawals, incoming and outgoing consolidations, and scheduled and proposed blocks. The default **Compact** view hides some of these columns; switch to **Detailed** to see them all.
* **Chart:** CL and EL rewards over time by day, week, or month, with an optional cumulative line.

Each fiat amount uses the historical price for that UTC day, with the ETH amount shown beneath it. If no historical price is available for some days, the report says so and the fiat totals cover only the priced days.

The APR is the period's total rewards divided by the average daily balance, scaled to 365 days:

```
APR = total_rewards / average_daily_balance × (365 / days_in_period) × 100
```

<Note>
  System deposits and withdrawals, the protocol-internal balance movements that never leave your validator, are excluded from the report. See [System deposits and withdrawals](/faqs/system-deposits-and-withdrawals).
</Note>

## Export to CSV

Open the **Export** menu above the daily breakdown and choose one of two files:

| Export | Rows | Columns |
| - | - | - |
| **Income report** (daily aggregate) | One per UTC day | Validator count, start and end balance, CL, EL and total rewards, deposits, withdrawals, incoming and outgoing consolidations (count and amount), scheduled and proposed blocks. Every amount has an ETH column and, when you choose a fiat currency, a matching fiat column. |
| **Transactions** (per event) | One per deposit or withdrawal, and one per side of a consolidation (a consolidation between two of your validators gives a sent and a received row) | Date, type, validator index, received, sent and net-worth amounts with their currencies, from and to addresses, transaction hash, slot, event index, and a description. The generic column names fit the column-mapping step of crypto tax software. |

Both files end with metadata rows: report version, generation time, network, date range, currency, and the dashboard or validators the report covers. The `report_version` value changes when columns are added, removed, renamed, or reordered. The fiat columns that come and go with your currency choice don't change it, so check it together with the currency row if you import the files automatically.

## Days and time zones

The report counts in UTC days, and each day uses the historical price for that UTC date. If your tax year follows a local time zone, the boundary days at the start and end of the year can differ by a few hours. See [Tax Year Calculations](/use-cases/rewards-tax-calculations) if you need exact local boundaries.

## Using the API instead

The income report is a website feature and is not available through the API. The API's reward amounts are in wei or gwei, without fiat values. To build your own report, see [Tax Year Calculations](/use-cases/rewards-tax-calculations).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.