# Tarife und Einheiten

> Preis pro kWh, Startgebühr, Servicegebühr, Standzeitgebühr, Zeitfenster und Höchstbetrag. Mit allen Einheiten.

Ein Tarif besteht aus kombinierbaren Bestandteilen. Tarife sind versioniert: Jede Änderung ergibt eine neue Version, laufende Sitzungen behalten ihre Version.

## Einheiten

> **Achtung:** Die API rechnet immer mit Ganzzahlen. Achte besonders auf den Energiepreis: Er ist in Hundertstel-Rappen pro kWh angegeben.

<table>
  <thead>
    <tr><th>Grösse</th><th>Einheit</th><th>Beispiel</th></tr>
  </thead>
  <tbody>
    <tr><td>Beträge</td><td>Rappen</td><td>`250` = CHF 2.50</td></tr>
    <tr><td>Energie</td><td>Wattstunden (Wh)</td><td>`12400` = 12.4 kWh</td></tr>
    <tr><td>Energiepreis</td><td>Hundertstel-Rappen pro kWh</td><td>`4500` = 45 Rappen pro kWh = 0.45 CHF/kWh</td></tr>
    <tr><td>Leistung</td><td>Watt</td><td>`11000` = 11 kW</td></tr>
    <tr><td>Standzeitgebühr</td><td>Rappen pro angefangene Minute</td><td>`10` = 10 Rappen pro Minute</td></tr>
    <tr><td>MWST-Satz</td><td>Basispunkte</td><td>`810` = 8.1 %</td></tr>
  </tbody>
</table>

Gerundet wird erst der Endbetrag: in CHF auf 5 Rappen, in EUR auf 1 Cent.

## Bestandteile

- **`energyPrice`**: Preis pro kWh ausserhalb von Zeitfenstern. Pflicht.
- **`startFee`**: Startgebühr pro Sitzung in Rappen.
- **`serviceFee`**: Servicegebühr der Betreibenden pro Sitzung in Rappen. Sie wird separat ausgewiesen.
- **`timeWindows`**: Zeitfenster nach Wochentag (1 = Montag bis 7 = Sonntag) und Uhrzeit mit eigenem Energiepreis, zum Beispiel ein Niedertarif in der Nacht. Die Energie wird anhand der Zählerstände den Fenstern zugeordnet.
- **`idleFee`**: Standzeitgebühr mit `pricePerMinute`, `graceMinutes`, `trigger` (`after_charging` ab Ladeende oder `after_start` ab Beginn), optional `maxAmount` und ruhigen Zeiten `quietHours`.
- **`maxAmount`**: Höchstbetrag pro Sitzung in Rappen.
- **`timeZone`**: Zeitzone für Zeitfenster und ruhige Zeiten, Standard `Europe/Zurich`.

## Tarif anlegen

```bash
curl -X POST https://api.ladehase.com/v1/tariffs \
  -H "Authorization: Bearer lh_test_…" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Gäste",
    "rules": {
      "energyPrice": 4500,
      "serviceFee": 50,
      "timeWindows": [
        { "days": [1,2,3,4,5,6,7], "from": "22:00", "to": "06:00", "energyPrice": 3000, "label": "Nacht" }
      ],
      "idleFee": {
        "pricePerMinute": 10,
        "graceMinutes": 120,
        "trigger": "after_charging",
        "quietHours": { "from": "22:00", "to": "07:00" }
      }
    }
  }'
```

## Vorschau

Mit `POST /v1/tariffs/preview` berechnest du für einen Entwurf, was Ladungen mit bestimmten Energiemengen kosten, ohne einen Tarif zu speichern:

```bash
curl -X POST https://api.ladehase.com/v1/tariffs/preview \
  -H "Authorization: Bearer lh_test_…" \
  -H "Content-Type: application/json" \
  -d '{ "rules": { "energyPrice": 4500, "serviceFee": 50 }, "energy_wh": [10000, 20000, 40000] }'
```

Für 20 kWh ergibt das 20 × 45 Rappen + 50 Rappen = CHF 9.50.

## MWST

Ist die Organisation mehrwertsteuerpflichtig, sind alle Preise inklusive MWST. Die Sitzung weist den Anteil in `vat_amount` aus.
