# Pricing (/guides/concepts/pricing)

A revision is free, has a flat Price, or has a variable Price based on its variables. recuut owns the payment policy around that choice: accepted payment methods, settlement coordination, and payout policy.

Your application identifies the resource and reports its execution. It never accepts a price, amount, or payment method from caller input.

## Free

A revision is free when **Require payment** is off, or when it has no Price. Access returns HTTP `200` with a null `transaction_id` and a `RECUUT-RESOURCE-EXECUTION-ID` header. Your application performs the work, returns the result, and reports the execution with [Complete a free resource execution](/api-reference/resources/resources.complete_execution/). recuut records the reported status, elapsed milliseconds, media type, and size of each free execution, never the response body. Framework integrations report it for you.

## Flat

A fixed Price charges the same amount for every paid request. The guides use a fixed **0.01 USD** Price. recuut denominates settlement in USDC at 1:1, so the payer receives a requirement for **10,000 Base Sepolia USDC atomic units**. USDC uses six decimal places, so 1 USDC is 1,000,000 atomic units.

The wallet must have at least the required amount, and its approval limit must be at least that amount. [Test a paid request](/guides/test-paid-request/) uses a 100,000-unit limit (0.10 USDC), which covers the example without approving an open-ended amount. This wallet limit is separate from a variable Price maximum.

## Variable

A usage-based Price adds a base fee to charges for the revision's variables, up to a Price maximum.

Before access, your application sends every revision value whose source is **Input**. recuut validates those values against the published revision and adds the base fee and input charges. Missing or unknown inputs are rejected, and a calculated charge above the Price maximum is rejected before your handler runs.

After the handler runs, your application completes the transaction with the full truthful usage: the same input values plus values whose source is **Output**. recuut adds the reported charges. If the full calculated charge exceeds the authorized maximum, recuut records the calculated charge and excess, settles only the maximum, and returns the receipt that allows your application to release the successful result. Your application does not clamp or omit usage to fit the maximum.

An input rejection and a capped completion are grouped into the same maximum-charge dashboard alert. recuut sends email when that alert opens, not for every occurrence.

If a calculated USD amount has more than six decimal places, recuut rounds the final total up once to the next atomic unit.

## Prices and revisions

Prices and revisions change independently:

| Change | Consequence |
| --- | --- |
| Change a price | Future payers receive new payment requirements. The execution reporting contract stays the same. |
| Publish a new revision | Future executions use new reporting rules. Historical transactions keep the revision that described them. |

The payment requirements returned to a payer include the active price. An x402-capable wallet uses those requirements when it prepares payment proof. The wallet does not receive the merchant API key or choose the merchant policy. Test payment requirements use Base Sepolia (`eip155:84532`) and test USDC.

[See the x402 payment retry →](/guides/concepts/x402-payment-retry/)
