---
title: Тарифы и цены
description: Тариф — главный объект покупки; права его наполняют; цена — офер на пейволе.
---

# Тарифы и цены

**Тариф (plan) — центр модели.** Пользователь покупает тариф (через цену на пейволе).  
**Права** привязаны к тарифу и выдаются при успешной оплате / ключе.  
**Цена (plan_price)** — конкретный офер (месяц / год / lifetime / free) на витрине.

```text
Пейвол
  └── plan_price  ← то, что выбирают и передают в createPayment
        └── plan  ← тариф (срок, lifetime, название)
              └── entitlements[]  ← что откроется после покупки
```

## Тариф (plan)

| Поле | Заметки |
| --- | --- |
| `code` | Стабильный id (`arken_pro_year`, `free`) |
| `name` | На пейволе |
| `billing_type` | `one_time` \| `recurring` \| `lifetime` \| `free` |
| `duration_days` | Срок для временных тарифов |
| `is_lifetime` | Без expiry |
| `status` | На публичный пейвол — `active` |
| entitlements | Какие права даёт этот тариф |

## Цена (plan_prices)

| Поле | Заметки |
| --- | --- |
| `amount` | Реальная сумма. `0` = free |
| `currency` | например `RUB` |
| `discount_percent` | Только UI (зачёркнутая цена) |
| `payment_provider` | `yookassa` или `free` |
| `is_active` | Должен быть true |

В ответе API: `compare_at_amount`, `has_discount`, `display`, `is_free`, `requires_purchase`, `works_offline`.

## Free

- `billing_type: free` и/или `amount: 0`
- На пейволе для сравнения
- **Не покупается** — `createPayment` → `free_plan_offline`
- Базовые фичи free — локально в приложении

## Платный

- `amount > 0`
- Успех → subscription-период + выдача **прав тарифа**
- Доступ **добавляется** к free-локальным фичам

## Что делать в SDK

1. `getPaywall` — показать офферы (тарифы/цены).
2. Для UI буллетов читать `plan.plan_entitlements` / entitlement codes.
3. `createPayment({ plan_price_id })` — только платные.
4. После оплаты — `getMyEntitlements` / `hasEntitlement(code)` для гейтов.
