# Charges

> What a sale costs your wallet, and why it is not the amount the customer receives.

Source: https://useroutegate.com/docs/concepts/charges

A sale has two numbers. `amount` is what the customer receives. `price` is what your wallet is charged: the plan's charges, a fee Routegate staff set per plan or per data type. A flat charge is the same on every sale; a percentage is taken on the amount sold, and such a plan has `fee_type` `percentage` and `fee_basis_points`.

The airtime or data itself is paid for by the line that sends it, or by your account with the vendor. Your wallet pays only the charges.

[Pricing plans](/docs/api/public/getPublicPricingPlans) lists every plan with its `charges`. Read them there rather than keeping your own copy.

## A plan with no charges

| Mode | What happens                                                                                             |
| ---- | -------------------------------------------------------------------------------------------------------- |
| Live | Refused with `400 VALIDATION_FAILED`: "This plan is not sellable from lines: no charges are set for it". |
| Test | Sold for `0.00`, so an empty test wallet can pass.                                                       |

So a plan that works in test can still be refused live. Check that it has `charges` before you offer it.

## What is held

The wallet holds `price` when the sale is accepted, settles it on success and releases it on failure. A sale [Routegate Reserve](/docs/concepts/vendor-links) may serve also holds its `platform_fee`, which is taken only if the Reserve delivers it. See [wallet and funding](/docs/concepts/wallet).

A sale that delivers [part of the order](/docs/concepts/transactions#partial-delivery) still pays its charges in full.
