---
sidebar_position: 6
title: Penalties
description: What causes a rental-fee deduction, how much is withheld, and how to dispute it.
---

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

# Penalties

When a rental fails because of your node, Lium withholds the rental fees for that rental and
refunds the renter. This page describes what triggers a penalty, what exactly is withheld, and
what to do if you believe a penalty is wrong.

Penalties apply to **rental fees only**. [Subnet emission](./emission.mdx) — the alpha stake that
accrues on your hotkey each tempo — is never touched by a penalty.

## What a penalty withholds

A penalty targets the **single rental** that failed, not your whole fleet, and it covers a window
of : the day the penalty fires (day D)
and the day before it (D-1).

| | Effect |
|---|---|
| Rental fees for that rental, days D and D-1 | Declined — not paid out to you |
| The renter | Refunded the same amount |
| Payouts already settled (D-2 and older) | Untouched — never clawed back |
| Subnet emission on your hotkey | Untouched |
| Your other rentals and other nodes | Untouched |

Payouts are settled with a delay of 2 days (see
[Payouts](./payouts.mdx)), which is what makes this window possible: the affected days are still
unsettled when the penalty fires, so nothing has to be reversed after the fact.

## What triggers a penalty

Three events fire a penalty automatically:

| Reason code | What happened |
|---|---|
| `POD_UNDEPLOY_FAILED` | The pod could not be undeployed or cleaned up on your node after the validator exhausted its retries. |
| `EXECUTOR_INACTIVE_MID_RENTAL` | Your node stopped reporting to the subnet for more than 1 hour while a rental was active. |
| `BROKEN_BY_PROVIDER` | You force-closed a stuck rented pod as broken from the Provider Portal. |

A fourth code, `MANUAL`, marks a penalty applied by the Lium team by hand. It is not an automatic
trigger.

:::note
Force-closing a genuinely stuck pod is still the right action — it frees your node and ends a
rental the renter cannot use. The penalty reflects that the rental failed on your side; the renter
gets their money back for it.
:::

## When a penalty is recorded but not charged

Some events are logged for the record with `dry_run = true` and cost you nothing:

- **Spot-tier rentals.** A rental contracted while the node was [Spot](../portal/node-tier.md) is
  never charged a penalty. The tier is frozen when the rental starts, so a rental that began as
  Secure stays penalisable even if the node later becomes Spot.
- **Scheduled notice periods.** If you set a notice period at least 24 hours ahead and then reclaim
  the node, the resulting undeploy-failure and inactivity penalties are waived, with a short grace
  window past the end of the period to cover detection lag.

A penalty is also skipped when the rental produced no billable usage at all, or when the affected
days have already been paid out.

## Where to see your penalties

The [Penalty Events dashboard](https://grafana.lium.io/d/b7b972f3-a083-415f-886d-ae5b12e2371b/penalty-events?orgId=2)
lists every penalty; filter by your hotkey or node id. The columns that matter:

| Column | Meaning |
|---|---|
| `reason_code` | Which trigger fired |
| `amount_withheld` | How much was declined for that rental |
| `dry_run` | `true` = recorded only, `false` = actually charged |
| `action` | `apply`, or `revert` if the penalty was undone |

See [Grafana Dashboards](../grafana.md#penalty-events) for the rest of the dashboard catalogue.

## Effect on your node tier

Penalties also feed the reliability rule that decides your tier. If your **penalty coverage** — the
share of billed rental revenue over the trailing
 that came from penalised rentals —
rises above , all of your nodes move from
Secure to Spot and stop earning subnet incentive until it falls back. Reverted penalties do not
count toward it. See [Node Tier](../portal/node-tier.md) for the full rule.

## If you think a penalty is wrong

Penalties can be reverted, and a reverted penalty is repaid and drops out of your penalty coverage.
Open a support ticket through the [official Discord support flow](../../security/official-support-and-scams.md#the-safest-way-to-contact-lium-support) with:

- the node id (or hotkey) and the pod id,
- the approximate time the penalty fired, from the dashboard,
- what you believe actually happened — for example the node was reachable the whole time, or the
  pod had already been removed.

The team checks the event against the validator and backend records and reverts it if the trigger
misfired.

## Reducing penalties

- Keep the node reporting: most `EXECUTOR_INACTIVE_MID_RENTAL` events come from the agent or the
  host dropping off the subnet, not from a GPU problem. See
  [Troubleshooting](../troubleshooting.md).
- Schedule a notice period before planned maintenance instead of pulling a rented node offline.
- Switch nodes you cannot keep stable to [Spot](../portal/node-tier.md) — they earn no subnet
  incentive, but interrupted rentals cost you nothing.
