---
title: "Annual billing report — sums N monthly allocations per consumer (#284)"
method: POST
path: "/api/energy-sharing-allocation/annual-billing-report"
tags: ["Energy Sharing Allocation"]
---

# Annual billing report — sums N monthly allocations per consumer (#284)

`POST /api/energy-sharing-allocation/annual-billing-report`

## Request

- Base URL: `https://api.cernion.de`
- URL: `https://api.cernion.de/api/energy-sharing-allocation/annual-billing-report`
- Auth: none declared

Replays and bills each allocation in `allocationIds` (same logic as billingReport, one call per ID) using the same tariffEurPerKWh, then sums the results per consumer. A consumer missing data in some months is summed only over the months that have data — monthsWithData/monthsWithoutData/complete report the coverage transparently, never masking an incomplete year as a complete one.

## Query parameters

- `token` string

## Request body

- object
  - `allocationIds` string[], required: Allocation UUIDs to sum, typically 12 monthly runs.
  - `tariffEurPerKWh` number, required
  - `format` 'json' | 'csv'
  - `token` string: Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided.

## Response `200`

Annual billing report (JSON) or semicolon-delimited CSV export

## Other responses

- `404`: One of the referenced allocations was not found

---

[API](https://skmtc.dev/cernion/apis/cernion-energy-tools-api.md) · [All operations](https://skmtc.dev/cernion/apis/cernion-energy-tools-api/llms.txt) · [OpenAPI document](https://skmtc.dev/cernion/apis/cernion-energy-tools-api/revisions/cdb94473b538?raw)
