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

# Hetzner Cloud

> Bring Hetzner Cloud cost into CostGraph, pulled by us or pushed by you

Hetzner Cloud rents servers, volumes, snapshots, load balancers, and IP addresses
by the hour, capped at a monthly price.

Hetzner has no billing report to read, so CostGraph **estimates** your cost from what
exists in the project: every resource is priced at its current list price and prorated
for the time it ran. Treat the figures as an estimate that tracks your inventory, not
as the amounts on your Hetzner invoice.

CostGraph reads Hetzner as **FOCUS 1.2** records at a grain of one record per resource
per project.

## Choose how the data reaches us

<CardGroup cols={2}>
  <Card title="CostGraph pulls it" icon="cloud-arrow-down">
    You supply read-only credentials and we call Hetzner Cloud once a day. Nothing to run.
  </Card>

  <Card title="You push it" icon="cloud-arrow-up">
    You send us FOCUS records over the API. Credentials never leave your infrastructure.
  </Card>
</CardGroup>

## Before you begin

* In the Hetzner Console, open your project and go to **Security > API tokens**.
  Create a token. Read access is enough.
* Note the project name as the console shows it. The connect form asks for it.
  Renaming the project later starts a new billing account in CostGraph.

## Let CostGraph pull

1. Open **Settings > Integrations** and pick **Hetzner Cloud**.
2. Name the connection and pick the tenant these charges belong to.
3. Enter the values you copied. The form lists what Hetzner Cloud needs and marks the
   optional ones.
4. Select **Connect**.

CostGraph verifies the credentials with a short fetch before saving, so a wrong
value or a missing permission fails while you are still on the form.

<Note>
  Credentials are encrypted at rest and used only to read billing data. Revoke them in
  Hetzner Cloud at any time and the connection stops; nothing else is affected.
</Note>

## Push it yourself

Send the charges to CostGraph as FOCUS records instead. [Push FOCUS data](/costgraph/integrations/focus-push) covers the connection id,
the `focus:write` key, and the request shape.

## Run the exporter

Rather than build that request yourself, run our exporter. It reads Hetzner Cloud on a
schedule and pushes the records for you, wherever you want to run it: a container, a
Kubernetes `CronJob`, or a binary on a machine you already have.

```bash theme={null}
focus-exporter --provider hetzner --sink costgraph
```

Your Hetzner Cloud credential stays where you put it, and only the finished FOCUS records
reach CostGraph. [Run the exporter](/costgraph/integrations/exporter) covers the three
ways to run it and the variables it reads.

## What CostGraph does with it

Records land as raw billing rows, are normalised into line items, and roll up into
daily cost. From there Hetzner spend appears in Cost Overview and in anomaly detection
alongside every other provider. Each record carries whether the resource is attached
and what state it is in, so unattached volumes, IPs, and load balancers stand out as
waste.


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