# Credits, prices and refunds

Inspect `x-request-cost` and any `x-credit-rule` before calling; read `billing` for actual settlement. One HTTP request can contain multiple billable items, so HTTP request count is not always credit count.

## Plans

| Plan | PLN/month | Credits | Seats | Overage |
| --- | --- | --- | --- | --- |
| `free` (Darmowy) | 0.00 | configured | 1 | - |
| `start` (Start) | 79.00 | 300 | 1 | - |
| `pro` (Profesjonalny) | 249.00 | 1 500 | 1 | - |
| `team` (Zespół) | 799.00 | 6 000 | 5 | - |
| `developer` (Developer) | 99.00 | 10 000 | 1 | 0.01 PLN/credit |
| `platform` (Platforma) | from 1 499.00 | individual agreement | 1 | - |


Prices are generated from the billing implementation's catalogue. [GET /v1/billing/plans](../../operations/billing_plans.md) returns the account-facing current catalogue. This revision's catalogue and Checkout are Stripe test-mode only; these docs do not certify live payments. Recurring subscriptions support cards; recurring Przelewy24 is refused. Do not infer tax or an invoice total from the catalogue table.

## Charging rules

| Operation | Credits | Unit |
| --- | --- | --- |
| `account_keys_list` | 0 | call |
| `account_keys_create` | 0 | call |
| `account_keys_revoke` | 0 | call |
| `account_keys_rotate` | 0 | call |
| `account_ledger` | 0 | call |
| `account_usage` | 0 | call |
| `ask` | 1 | call |
| `billing_account_delete` | 0 | call |
| `billing_account` | 0 | call |
| `billing_checkout` | 0 | call |
| `billing_plans` | 0 | call |
| `billing_stripe_webhook` | 0 | call |
| `billing_team` | 0 | call |
| `billing_team_accept` | 0 | call |
| `billing_team_invite` | 0 | call |
| `billing_team_revoke_invite` | 0 | call |
| `billing_team_remove` | 0 | call |
| `billing_team_role` | 0 | call |
| `check` | 1 | call |
| `check_batch` | 0 | call |
| `check_job` | 0 | call |
| `check_job_results` | 0 | call |
| `events` | 1 | call |
| `events_query` | 1 | call |
| `gmina_planning_lookup` | 1 | call |
| `gmina_planning` | 1 | call |
| `layer` | 1 | call |
| `openapi` | 0 | call |
| `parcel` | 1 | call |
| `parcel_batch` | 1 | item |
| `places` | 0 | call |
| `resolve` | 1 | call |
| `search` | 1 | call |
| `search_polygon` | 1 | call |
| `sources` | 0 | call |
| `watch_list` | 0 | call |
| `watch_create` | 0 | call |
| `watch_delete` | 0 | call |
| `watch_get` | 0 | call |
| `watch_update` | 0 | call |
| `watch_attempts` | 0 | call |
| `watch_webhook_remove` | 0 | call |
| `watch_webhook_configure` | 0 | call |
| `watch_secret_rotate` | 0 | call |


`billing.cost` is the operation cost or reservation, depending on the operation. `charged` and v2 `credits` are the consumed credits; `refunded` is the refund. Informative `covered_no_data` results and ambiguous candidate lists are charged. Invalid 400, unauthorized 401 and matching ETag 304 responses charge nothing. 4xx, 5xx and uncovered layer responses follow refund rules. One uncovered layer inside a multi-layer parcel card does not necessarily refund the entire card: inspect that response's `billing`.

Parcel batches settle per item. Ask reserves `max_credits`, releases the unused part, and charges public tools plus 1 credit for a completed answer. In ask-v2, a budget-stopped turn is entirely free, including earlier reads. See [ask/SSE](ask-sse.md).

## Expiry and uncertain settlement

In the current implementation subscription credits expire at the exclusive UTC period end without rollover. Refunds retain original expiry. This describes the mechanism, not additional contractual terms. Zespół (team) shares its pool across at most five seats including the owner. Developer overage counts contract billing units, including batch items.

429 can mean insufficient credits or another limit. Disconnect does not prove a refund. Keep `meta.request_id`, inspect the account and request reconciliation before replaying consequential work. API credit refunds are not a promise of card-payment refunds.
