> ## 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.

# UpCloud

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

UpCloud bills servers, storage, backups and managed services per resource each month, so spend is attributed per resource and zone. Starter and Premium servers bill while stopped, so CostGraph flags a stopped server that is still costing money.

CostGraph reads UpCloud as **FOCUS 1.2** records at a grain of month x resource x service.

## 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 UpCloud 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 UpCloud Control Panel, go to **Account > API tokens** and create a token.
* Use an account, main or sub-account, that has the **billing** permission.
* Copy the token. UpCloud displays it only at creation.

## Let CostGraph pull

1. Open **Settings > Integrations** and pick **UpCloud**.
2. Name the connection and pick the tenant these charges belong to.
3. Enter the values you copied. The form lists what UpCloud 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 the
  API token in UpCloud 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 UpCloud 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 upcloud --sink costgraph
```

Your UpCloud 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 UpCloud spend appears in Cost Overview and in anomaly
detection alongside every other provider.


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