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

# Comfy Router billing

> How Comfy Router charges for model calls, what the catalog's policy-refusal billing field means, and how to reconcile usage.

You are billed when the provider bills Comfy. The same rule applies to synchronous and [queued](/development/comfy-router/queue#idempotency-and-billing) calls, and a same-key [retry](/development/comfy-router/errors#retry-outcomes) that replays a result is not a second charge.

## Model billing facts

`GET /v2/models` and the model detail response include `billing.charges_on_policy_rejection`. This describes a policy refusal, not every failure or a price estimate.

| Value     | Meaning                                                             |
| --------- | ------------------------------------------------------------------- |
| `yes`     | A policy refusal is charged.                                        |
| `no`      | A policy refusal is not charged.                                    |
| `unknown` | Nobody has established the behavior yet. Treat it as maybe charged. |

Compare these strings explicitly: `"no"` is truthy in Python and JavaScript. Treat any unrecognized value as `unknown`. A request refused for lack of credits reports `insufficient_credits`.

## Reconcile charges

Provider payloads may include their own cost or usage numbers; those are not the Comfy charge. `X-Comfy-Credits-Used` may appear for an allowlist of providers but is not universal and is not replayed. Use [workspace usage and invoices](https://platform.comfy.org) for reconciliation. Preserve the request ID when investigating a charge.

## Next

* [Limitations](/development/comfy-router/limitations#comfy-charges-and-usage): what Router does and does not report about charges.
* [Errors and retries](/development/comfy-router/errors): retry without creating a second billable call.
