# 🎛️ ПІКЕР МЕТРИК — усі джерела, згруповані за темами

> **Для замовника:** обери, з якого джерела брати формулу кожної метрики.
> **🥇 Пріоритет — наші звіти halleg** (`reports.halleg.renderhorizon.org`): якщо не обрано інше, береться halleg.
> Решта (lab/Фінанси · BAM · dsfrogboard · dsfrogboard /affiliates · supportzones · Uspacy CRM) — **додаткові метрики**.
> Обране фіксується в ТЗ: `метрика · джерело · формула`. Розбіжності формул-двійників — у каталозі §2.6 A.

**Усього метрик: 261** · згенеровано `2026-09-25 23:30 IST` (авто-оновлення).


## ⏱️ Швидкість / час

### 🥇 halleg (наші звіти — ПРІОРИТЕТ)  (5)

| Метрика | Формула / визначення | Од. |
|---|---|---|
| PayIn speed | P90 (quantileExactInclusive) createdAt→прихід транзакції; без апеляцій/скасованих/перерваних; guard n<4 → «—» | хв |
| PayOut speed | P90 від assignedAt→updatedAt; ті ж винятки й guard | хв |
| AVG speed / Total Time (простий) | AVG(source_updated_at − source_created_at) без відсікань | хв |
| PI/PO median time | MEDIAN(approved_at − source_created_at) | хв |
| %Payin < 5min / %Payout < 30min | частка швидких транзакцій | % |

### BAM  (5)

| Метрика | Формула / визначення | Од. |
|---|---|---|
| PayIn P90 (`kpi_payin_p90`) | 90-й перцентиль времени от создания PayIn-заявки до её успеха: 90% успешных пейинов проходят быстрее этого времени. | — |
| PayOut P90 (`kpi_payout_p90`) | 90-й перцентиль времени прохождения успешной выплаты (создание → успех). | — |
| Merchant List (`p_merchlist`) | Сводка по каждому мерчанту за окно фильтра: объёмы, CR, чеки, скорости. Сортировка по клику на заголовок. | — |
| Payout Queue (`p_queue`) | Текущая очередь выплат (pending/processing): сколько заявок и денег ждут выплаты прямо сейчас. | — |
| UTR и скорость по дням (`p_utr`) | Доля пейинов без UTR (клиент не приложил реквизит платежа) и скорость прохождения (P90) по дням. | — |

### eye-of-god  (6)

| Метрика | Формула / визначення | Од. |
|---|---|---|
| p90 часу виплати | 90-й перцентиль часу payout | хв |
| Швидкість payin (avg / p90) | середнє і 90-й перцентиль часу прийому | хв |
| Якість саппорту | avg/min/max/p90 часу опрацювання | хв |
| Гістограма швидкості | бакети 0-10м · 10-20м · 20-30м · 30-60м · 1-2год · 2-5год · 5-12год · >12год | шт |
| Transit KPI | volume_inr · payout_total/success/cr · payout_p90_min · ‹мерчант›_amount | ₹/% |
| Payout швидкість total/trader | avg_total (повний) vs avg_trader (бік трейдера); різниця=час системи/черги [Daily PayOut] | хв |


## 👥 Сендери / клієнти

### 🥇 halleg (наші звіти — ПРІОРИТЕТ)  (1)

| Метрика | Формула / визначення | Од. |
|---|---|---|
| % First / Second Sender | наближення: counterparty_account, повторний ≈ MAX(cc)≥3 | % |

### BAM  (9)

| Метрика | Формула / визначення | Од. |
|---|---|---|
| CR Button (`kpi_cr_button`) | Конверсия button-пейинов (кнопки Paytm/PhonePe), pending не считаются. | — |
| Сендеры, первинка/вторинка, дедуп (`p_senders`) | Три блока по дням: уникальные отправители, доля новых/повторных, и метрики с дедупликацией повторных попыток (см. «?» у колонок). | — |
| Распределение по кнопкам виджета (`p_j1`) | Какие кнопки нажимают клиенты в платёжном виджете (PhonePe/Paytm/QR/GPay…) и какая конверсия у каждой. Пейины без клика по кнопке (прямой P2P/интент-флоу) исключены. | — |
| Сегменты сендеров по CR (`p_e2`) | Отправители сгруппированы по личной конверсии: High = CR ≥ 50%, Mid = 20–50%, Low < 20%. Показывает качество базы плательщиков. | — |
| Антифрод — нестворенные пейины (`p_antifraud`) | Заявки, которые антифрод не дал создать. Тяжёлый запрос по History — грузится по кнопке. | — |
| Сендеров (`c_senders`) | Уникальные отправители (senderAccount) с пейинами за день. | — |
| Avg payin/sender (`c_avg_ps`) | Сколько пейинов в среднем делает один отправитель за день. | — |
| % первинки (`c_first`) | Доля пейинов от отправителей, которых НИКОГДА раньше не было в системе (первый платёж этого senderAccount за всю историю). | — |
| % вторинки (`c_repeat`) | Доля пейинов от повторных отправителей (уже платили раньше). | — |

### eye-of-god  (1)

| Метрика | Формула / визначення | Од. |
|---|---|---|
| Скоринг сендерів | бакети blacklist<20·risky 20-49·normal 50-79·trusted ≥80 + avg_score/avg_cr [Скоринг сендеров] | score/% |

### supportzones  (1)

| Метрика | Формула / визначення | Од. |
|---|---|---|
| Sender CR | senderConversion — конверсія по відправниках (формулу уточнити в замовника) | % |


## 🛡️ Ризик / статуси / антифрод

### 🥇 halleg (наші звіти — ПРІОРИТЕТ)  (8)

| Метрика | Формула / визначення | Од. |
|---|---|---|
| Active accounts | COUNT(DISTINCT bank_account) з ≥1 успішною трз | шт |
| Unresolved appeals (payin/payout) | COUNT appeals status NOT LIKE 'resolved%' | шт |
| CRBA (CR by bank account) | crba_num / crba_den | % |
| % isBankAccount | 1 − nobank/den | % |
| Balance2dep % | мін. поріг balance/deposit | % |
| Statement % | частка bank_accounts з підвантаженою випискою | % |
| Total Score + субскори | зважене: Volume30 Success20 Activity10 Tenure10 VeloIn10 VeloOut10 Stability10 | балів |
| Tier | Platinum ≥80 / Gold 65–79 / Silver 45–64 / Bronze 30–44 / Inactive <30 | клас |

### lab / Фінанси  (3)

| Метрика | Формула / визначення | Од. |
|---|---|---|
| transit_errors_only_usdt | sumIf(-1 * tx_amount / nullIf(daily_rate, 0), cat_code = 'system_errors' AND bank_name = 'TRANSIT' AND NOT position(purpose, unhex('d097d0b0d187d0b8d181d0bbd0b5d0bdd0bdd0b0d18f')) > 0 AND daily_rate > 0) (base `expense`) | USDT |
| transit_errors_total_usdt | sumIf(-1 * tx_amount / nullIf(daily_rate, 0), cat_code = 'system_errors' AND bank_name = 'TRANSIT' AND daily_rate > 0) (base `expense`) | USDT |
| transit_present_usdt | sumIf(-1 * tx_amount / nullIf(daily_rate, 0), cat_code = 'system_errors' AND bank_name = 'TRANSIT' AND position(purpose, unhex('d097d0b0d187d0b8d181d0bbd0b5d0bdd0bdd0b0d18f')) > 0 AND daily_rate > 0) (base `expense`) | USDT |

### BAM  (4)

| Метрика | Формула / визначення | Од. |
|---|---|---|
| Requests (`kpi_requests`) | Количество созданных PayIn-заявок за окно (все статусы, включая отклонённые). | — |
| Downtime Alerts (`p_downtime`) | Мерчанты, у которых прямо сейчас трафик остановлен или деградировал (по снимкам PSP-включений). Красный = выключен, оранжевый = предупреждение. | — |
| Downtime Timeline (`p_dtl`) | Визуальная лента включений/выключений мерчантов в PSP за выбранное окно: видно, кто когда падал и сколько простоял. Показываются только мерчанты, у которых были отключения в окне. | — |
| Индекс мерчанта (`p_index`) | Композитный скор здоровья мерчанта за rolling 30 дней (объём, CR, стабильность, динамика). Подробная формула — во вкладке «Справка» → «Индекс мерчанта». | — |

### dsfrogboard /affiliates  (2)

| Метрика | Формула / визначення | Од. |
|---|---|---|
| Обсяг мерчанта з привʼязкою аффа (aff_ volume) | volume_inr по мерчанту + режим payin/payout + is_exc/is_scam | ₹ |
| Тариф «по объёму» (tiers) | ставка аффа залежить від місячного обсягу — pct_in не діє | % |

### Uspacy CRM  (5)

| Метрика | Формула / визначення | Од. |
|---|---|---|
| Tier афіліата (a/b/c/d) | affiliates.tier — рівень партнера | tier |
| Статус афіліата (канбан) | New/Risk/Pause/Lost/Reactivation/Active/Success | статус |
| Комісії/ліміти трейдера | treyderis.payin/payout/settle/limit_payin/balansa | %/₹ |
| Статус трейдера (канбан) | Active/Scammer/Suspicious/Restricted/Audit/Paused/Lost/Locked/Success | статус |
| Статус KYC / першого депозиту | deals.status_verifikaciyi_kyc / status_pershogo_depozitu | статус |

### eye-of-god  (3)

| Метрика | Формула / визначення | Од. |
|---|---|---|
| CR (еталон) | success/(success+reject) — лише фінальні статуси; перевірено 12/12 на by-partner | % |
| Capacity (попит vs ємність) | cnt_used/cnt_limit · amt_used/amt_limit · беклог stuck/pending · маржа=fee_sum [Капасити] | шт/₹ |
| CR Bank / Bank-account | success/(success+reject) по банку зарахування / VPA + sum_success, auto_pct [Operations] | %/₹ |

### supportzones  (9)

| Метрика | Формула / визначення | Од. |
|---|---|---|
| Status (Restricted / Suspicious / Locked) | providers.status (через CH-репліку) | статус |
| Limit / % | custom_limit_to_warn_about_overflow; % = balance/limit | ₹ / % |
| Restrict toggle (payin) | restrict_toggle_for_payin (антискам-ознака) | bool |
| Balance-threshold ban | is_restricted_by_balance_threshold | bool |
| Наливи (naliv) | bank_accounts for_client_payin=1 AND not paused AND work_state='work' | шт |
| Комісії payin | feePercentPayin(+High) · feePercentPayinAcq(+High) · feePercentPayinIBAN(+High) · feePercentPayinUpiIntent | % |
| Settlement-налаштування | isSettlementAllowed · custom/overrideSettlementFeePercent · overrideFiatSettlementDailyLimitSum · exchangeRateSettingBuy/Sell | % / ₹ |
| Ліміти провайдера | min/maxPayinAmountLimit · min/maxPayoutAmountLimit · daily/monthlyIncomingTransactionAmount(+Limit) · payoutAmountLimitPercent | ₹ / % |
| Ліміти банк-акаунта | getBankAccountsByBalanceForPayouts: balance · transferLimitDay · numberTransferLimitDay | ₹ / шт |


## 💧 Ліквідність / прогноз / диспути

### dsfrogboard  (4)

| Метрика | Формула / визначення | Од. |
|---|---|---|
| Диспути: total / fin_open / in_progress / need_more_proofs / closed_* | лічильники стану диспутів | шт |
| Прогноз payin/payout (actual+fc) | модель 7д × сезон дня тижня, вікно 8 тижнів | ₹ |
| MAPE (all/p2p/intent) | точність прогнозу | % |
| Ліквідність: USDT-баланси, курси, сеттли, капітал | вкладки main/rates/logistics/settle, таблиці l0–l9 | USDT |


## 💰 Гроші: комісії, settlement, FX, маржа

### 🥇 halleg (наші звіти — ПРІОРИТЕТ)  (7)

| Метрика | Формула / визначення | Од. |
|---|---|---|
| Оборот G-I | AmountIN + \|Settlement\| + PayOut | ₹ |
| CR (Success Rate) | success/final — метод Фінансів (без pending); success=completed+successed_by_partner | % |
| Deposit | SUM(cum_dep) на LAST_DAY періоду (snapshot) | ₹ |
| Settlement | (1) внутр. SUM(expenses.cash_out); (2) зовн. шлюзи −SUM(amount−fee) | ₹ |
| Settle/PayIn % (stl%) | SUM(settlement)/vol | % |
| Merchant ARPU | TotalPayin / Success | ₹ |
| Payout ARPU | Payout / success_payout | ₹ |

### lab / Фінанси  (82)

| Метрика | Формула / визначення | Од. |
|---|---|---|
| payin_usdt_ap_intent_only | sumIf(amount / nullIf(daily_rate, 0), operation = 'payin' AND daily_rate > 0 AND trader_class = 'intent_only') (base `tx`) | USDT |
| payin_usdt_ap_p2p | sumIf(amount / nullIf(daily_rate, 0), operation = 'payin' AND daily_rate > 0 AND trader_class = 'p2p_clean') (base `tx`) | USDT |
| payin_usdt_ap_slu_intent | sumIf(amount / nullIf(daily_rate, 0), operation = 'payin' AND daily_rate > 0 AND trader_class = 'slu_intent') (base `tx`) | USDT |
| payin_usdt_ap_slu_p2p | sumIf(amount / nullIf(daily_rate, 0), operation = 'payin' AND daily_rate > 0 AND trader_class = 'slu_p2p') (base `tx`) | USDT |
| payin_usdt_ap_transit | sumIf(amount / nullIf(daily_rate, 0), operation = 'payin' AND daily_rate > 0 AND trader_class = 'transit') (base `tx`) | USDT |
| prov_aff_usdt_ap_p2p | sumIf(amount * prov_aff_pct / 100.0 / nullIf(daily_rate, 0), operation = 'payin' AND daily_rate > 0 AND trader_class = 'p2p_clean') (base `tx`) | USDT |
| prov_aff_usdt_ap_slu_intent | sumIf(amount * prov_aff_pct / 100.0 / nullIf(daily_rate, 0), operation = 'payin' AND daily_rate > 0 AND trader_class = 'slu_intent') (base `tx`) | USDT |
| prov_aff_usdt_ap_slu_p2p | sumIf(amount * prov_aff_pct / 100.0 / nullIf(daily_rate, 0), operation = 'payin' AND daily_rate > 0 AND trader_class = 'slu_p2p') (base `tx`) | USDT |
| prov_aff_usdt_ap_transit | sumIf(amount * prov_aff_pct / 100.0 / nullIf(daily_rate, 0), operation = 'payin' AND daily_rate > 0 AND trader_class = 'transit') (base `tx`) | USDT |
| prov_fee_tx_usdt_ap_p2p | sumIf(provider_fee_amount / nullIf(daily_rate, 0), operation IN ('payin','payout') AND daily_rate > 0 AND trader_class = 'p2p_clean') (base `tx`) | USDT |
| prov_fee_tx_usdt_ap_slu_intent | sumIf(provider_fee_amount / nullIf(daily_rate, 0), operation IN ('payin','payout') AND daily_rate > 0 AND trader_class = 'slu_intent') (base `tx`) | USDT |
| prov_fee_tx_usdt_ap_slu_p2p | sumIf(provider_fee_amount / nullIf(daily_rate, 0), operation IN ('payin','payout') AND daily_rate > 0 AND trader_class = 'slu_p2p') (base `tx`) | USDT |
| prov_fee_tx_usdt_ap_transit | sumIf(provider_fee_amount / nullIf(daily_rate, 0), operation IN ('payin','payout') AND daily_rate > 0 AND trader_class = 'transit') (base `tx`) | USDT |
| merch_aff_usdt | sumIf(amount * merch_aff_pct / 100.0 / nullIf(daily_rate, 0), operation = 'payin' AND daily_rate > 0) (base `tx`) | USDT |
| merch_aff_usdt_intent | sumIf(amount * merch_aff_pct / 100.0 / nullIf(daily_rate, 0), operation = 'payin' AND daily_rate > 0 AND merchant_type = 'intent') (base `tx`) | INR |
| merch_aff_usdt_p2p | sumIf(amount * merch_aff_pct / 100.0 / nullIf(daily_rate, 0), operation = 'payin' AND daily_rate > 0 AND merchant_type = 'p2p') (base `tx`) | INR |
| merch_aff_usdt_transit | sumIf(amount * merch_aff_pct / 100.0 / nullIf(daily_rate, 0), operation = 'payin' AND daily_rate > 0 AND is_transit) (base `tx`) | INR |
| merch_fee_payin_usdt | sumIf(fee / nullIf(daily_rate, 0), operation = 'payin' AND daily_rate > 0) (base `tx`) | USDT |
| merch_fee_payin_usdt_intent | sumIf(fee / nullIf(daily_rate, 0), operation = 'payin' AND daily_rate > 0 AND merchant_type = 'intent') (base `tx`) | INR |
| merch_fee_payin_usdt_p2p | sumIf(fee / nullIf(daily_rate, 0), operation = 'payin' AND daily_rate > 0 AND merchant_type = 'p2p') (base `tx`) | INR |
| merch_fee_payin_usdt_transit | sumIf(fee / nullIf(daily_rate, 0), operation = 'payin' AND daily_rate > 0 AND is_transit) (base `tx`) | INR |
| merch_fee_payout_usdt | sumIf(fee / nullIf(daily_rate, 0), operation = 'payout' AND daily_rate > 0) (base `tx`) | USDT |
| merch_fee_payout_usdt_intent | sumIf(fee / nullIf(daily_rate, 0), operation = 'payout' AND daily_rate > 0 AND merchant_type = 'intent') (base `tx`) | INR |
| merch_fee_payout_usdt_p2p | sumIf(fee / nullIf(daily_rate, 0), operation = 'payout' AND daily_rate > 0 AND merchant_type = 'p2p') (base `tx`) | INR |
| merch_fee_payout_usdt_transit | sumIf(fee / nullIf(daily_rate, 0), operation = 'payout' AND daily_rate > 0 AND is_transit) (base `tx`) | INR |
| payin_intent_usdt | sumIf(amount / nullIf(daily_rate, 0), operation = 'payin' AND daily_rate > 0 AND merchant_type = 'intent') (base `tx`) | USDT |
| payin_total_usdt | sumIf(amount / nullIf(daily_rate, 0), operation = 'payin' AND daily_rate > 0) (base `tx`) | USDT |
| payin_transit | sumIf(amount, operation = 'payin' AND is_transit) (base `tx`) | INR |
| payin_transit_usdt | sumIf(amount / nullIf(daily_rate, 0), operation = 'payin' AND daily_rate > 0 AND is_transit) (base `tx`) | USDT |
| payin_gateway_intent_usdt | sumIf(amount / nullIf(daily_rate, 0), operation = 'payin' AND daily_rate > 0 AND is_gateway AND merchant_type = 'intent') (base `tx`) | USDT |
| payin_gateway_p2p_usdt | sumIf(amount / nullIf(daily_rate, 0), operation = 'payin' AND daily_rate > 0 AND is_gateway AND merchant_type = 'p2p') (base `tx`) | USDT |
| payout_intent_usdt | sumIf(-1 * amount / nullIf(daily_rate, 0), operation = 'payout' AND daily_rate > 0 AND merchant_type = 'intent') (base `tx`) | USDT |
| payout_p2p_usdt | sumIf(-1 * amount / nullIf(daily_rate, 0), operation = 'payout' AND daily_rate > 0 AND merchant_type = 'p2p') (base `tx`) | USDT |
| payout_total_usdt | sumIf(-1 * amount / nullIf(daily_rate, 0), operation = 'payout' AND daily_rate > 0) (base `tx`) | USDT |
| payout_transit | sumIf(-1 * amount, operation = 'payout' AND is_transit) (base `tx`) | INR |
| payout_transit_usdt | sumIf(-1 * amount / nullIf(daily_rate, 0), operation = 'payout' AND daily_rate > 0 AND is_transit) (base `tx`) | USDT |
| payout_imps_usdt | sumIf(-1 * amount / nullIf(daily_rate, 0), operation = 'payout' AND daily_rate > 0 AND payout_method = 'imps') (base `tx`) | USDT |
| payout_upi_transit | sumIf(-1 * amount, operation = 'payout' AND payout_method = 'upi' AND is_transit) (base `tx`) | INR |
| payout_upi_transit_usdt | sumIf(-1 * amount / nullIf(daily_rate, 0), operation = 'payout' AND daily_rate > 0 AND payout_method = 'upi' AND is_transit) (base `tx`) | USDT |
| payout_upi_usdt | sumIf(-1 * amount / nullIf(daily_rate, 0), operation = 'payout' AND daily_rate > 0 AND payout_method = 'upi') (base `tx`) | USDT |
| prov_aff_usdt | sumIf(amount * prov_aff_pct / 100.0 / nullIf(daily_rate, 0), operation = 'payin' AND daily_rate > 0) (base `tx`) | USDT |
| prov_aff_usdt_gateway_intent | sumIf(amount * prov_aff_pct / 100.0 / nullIf(daily_rate, 0), operation = 'payin' AND daily_rate > 0 AND is_gateway AND merchant_type = 'intent') (base `tx`) | INR |
| prov_aff_usdt_gateway_p2p | sumIf(amount * prov_aff_pct / 100.0 / nullIf(daily_rate, 0), operation = 'payin' AND daily_rate > 0 AND is_gateway AND merchant_type = 'p2p') (base `tx`) | INR |
| prov_aff_usdt_intent | sumIf(amount * prov_aff_pct / 100.0 / nullIf(daily_rate, 0), operation = 'payin' AND daily_rate > 0 AND merchant_type = 'intent') (base `tx`) | INR |
| prov_aff_usdt_p2p | sumIf(amount * prov_aff_pct / 100.0 / nullIf(daily_rate, 0), operation = 'payin' AND daily_rate > 0 AND merchant_type = 'p2p') (base `tx`) | INR |
| prov_aff_usdt_transit | sumIf(amount * prov_aff_pct / 100.0 / nullIf(daily_rate, 0), operation = 'payin' AND daily_rate > 0 AND is_transit) (base `tx`) | INR |
| prov_fee_tx_usdt | sumIf(provider_fee_amount / nullIf(daily_rate, 0), operation IN ('payin','payout') AND daily_rate > 0) (base `tx`) | USDT |
| prov_fee_tx_usdt_gateway_intent | sumIf(provider_fee_amount / nullIf(daily_rate, 0), operation IN ('payin','payout') AND daily_rate > 0 AND is_gateway AND merchant_type = 'intent') (base `tx`) | INR |
| prov_fee_tx_usdt_gateway_p2p | sumIf(provider_fee_amount / nullIf(daily_rate, 0), operation IN ('payin','payout') AND daily_rate > 0 AND is_gateway AND merchant_type = 'p2p') (base `tx`) | INR |
| prov_fee_tx_usdt_intent | sumIf(provider_fee_amount / nullIf(daily_rate, 0), operation IN ('payin','payout') AND daily_rate > 0 AND merchant_type = 'intent') (base `tx`) | INR |
| prov_fee_tx_usdt_intent_quasi | sumIf(provider_fee_amount / nullIf(daily_rate, 0), operation IN ('payin','payout') AND daily_rate > 0 AND merchant_type = 'intent' AND provider_type != 'intent' AND NOT is_gateway) (base `tx`) | INR |
| prov_fee_tx_usdt_intent_real | sumIf(provider_fee_amount / nullIf(daily_rate, 0), operation IN ('payin','payout') AND daily_rate > 0 AND merchant_type = 'intent' AND provider_type = 'intent') (base `tx`) | INR |
| prov_fee_tx_usdt_p2p | sumIf(provider_fee_amount / nullIf(daily_rate, 0), operation IN ('payin','payout') AND daily_rate > 0 AND merchant_type = 'p2p') (base `tx`) | INR |
| prov_fee_tx_usdt_transit | sumIf(provider_fee_amount / nullIf(daily_rate, 0), operation IN ('payin','payout') AND daily_rate > 0 AND is_transit) (base `tx`) | INR |
| payin_p2p_usdt | sumIf(amount / nullIf(daily_rate, 0), operation = 'payin' AND daily_rate > 0 AND merchant_type = 'p2p') (base `tx`) | USDT |
| chargeback_usdt | sumIf(-1 * tx_amount / nullIf(daily_rate, 0), cat_code = 'chargeback' AND provider_empty AND daily_rate > 0) (base `expense`) | USDT |
| chargeback_usdt_intent | sumIf(-1 * tx_amount / nullIf(daily_rate, 0), cat_code = 'chargeback' AND provider_empty AND merchant_type = 'intent' AND daily_rate > 0) (base `expense`) | INR |
| chargeback_usdt_p2p | sumIf(-1 * tx_amount / nullIf(daily_rate, 0), cat_code = 'chargeback' AND provider_empty AND merchant_type = 'p2p' AND daily_rate > 0) (base `expense`) | INR |
| prov_fee_purpose_usdt_ap_p2p | sumIf(-1 * tx_amount / nullIf(daily_rate, 0), cat_code = 'provider_fee' AND match(lower(purpose), '^provider fee') AND daily_rate > 0 AND trader_class = 'p2p_clean') (base `expense`) | USDT |
| prov_fee_purpose_usdt_ap_slu_intent | sumIf(-1 * tx_amount / nullIf(daily_rate, 0), cat_code = 'provider_fee' AND match(lower(purpose), '^provider fee') AND daily_rate > 0 AND trader_class = 'slu_intent') (base `expense`) | USDT |
| prov_fee_purpose_usdt_ap_slu_p2p | sumIf(-1 * tx_amount / nullIf(daily_rate, 0), cat_code = 'provider_fee' AND match(lower(purpose), '^provider fee') AND daily_rate > 0 AND trader_class = 'slu_p2p') (base `expense`) | USDT |
| prov_fee_purpose_usdt_ap_transit | sumIf(-1 * tx_amount / nullIf(daily_rate, 0), cat_code = 'provider_fee' AND match(lower(purpose), '^provider fee') AND daily_rate > 0 AND trader_class = 'transit') (base `expense`) | USDT |
| settle_fee_usdt_ap_p2p | sumIf(provider_fee_amount / nullIf(daily_rate, 0), cat_code = 'settlement' AND daily_rate > 0 AND trader_class = 'p2p_clean') (base `expense`) | USDT |
| settle_fee_usdt_ap_slu_intent | sumIf(provider_fee_amount / nullIf(daily_rate, 0), cat_code = 'settlement' AND daily_rate > 0 AND trader_class = 'slu_intent') (base `expense`) | USDT |
| settle_fee_usdt_ap_slu_p2p | sumIf(provider_fee_amount / nullIf(daily_rate, 0), cat_code = 'settlement' AND daily_rate > 0 AND trader_class = 'slu_p2p') (base `expense`) | USDT |
| settle_fee_usdt_ap_transit | sumIf(provider_fee_amount / nullIf(daily_rate, 0), cat_code = 'settlement' AND daily_rate > 0 AND trader_class = 'transit') (base `expense`) | USDT |
| fx_revenue_usdt | sumIf((-1 * tx_amount / nullIf(daily_rate, 0)) - toFloat64OrZero(replaceAll(purpose, ',', '.')), cat_code = 'merchant_withdraw' AND cash_out != 1 AND match(replaceAll(purpose, ',', '.'), '^[0-9.]+$') AND daily_rate > 0) (base `expense`) | USDT |
| fx_revenue_usdt_intent | sumIf((-1 * tx_amount / nullIf(daily_rate, 0)) - toFloat64OrZero(replaceAll(purpose, ',', '.')), cat_code = 'merchant_withdraw' AND cash_out != 1 AND merchant_type = 'intent' AND match(replaceAll(purpose, ',', '.'), '^[0-9.]+$') AND daily_rate > 0) (base `expense`) | USDT |
| fx_revenue_usdt_p2p | sumIf((-1 * tx_amount / nullIf(daily_rate, 0)) - toFloat64OrZero(replaceAll(purpose, ',', '.')), cat_code = 'merchant_withdraw' AND cash_out != 1 AND merchant_type = 'p2p' AND match(replaceAll(purpose, ',', '.'), '^[0-9.]+$') AND daily_rate > 0) (base `expense`) | USDT |
| prov_fee_purpose_usdt | sumIf(-1 * tx_amount / nullIf(daily_rate, 0), cat_code = 'provider_fee' AND match(lower(purpose), '^provider fee') AND daily_rate > 0) (base `expense`) | USDT |
| prov_fee_purpose_usdt_prov_intent | sumIf(-1 * tx_amount / nullIf(daily_rate, 0), cat_code = 'provider_fee' AND match(lower(purpose), '^provider fee') AND daily_rate > 0 AND position(provider_name, '[Intent]') > 0) (base `expense`) | INR |
| prov_fee_purpose_usdt_prov_p2p | sumIf(-1 * tx_amount / nullIf(daily_rate, 0), cat_code = 'provider_fee' AND match(lower(purpose), '^provider fee') AND daily_rate > 0 AND NOT (position(provider_name, '[Intent]') > 0)) (base `expense`) | INR |
| settle_fee_usdt | sumIf(provider_fee_amount / nullIf(daily_rate, 0), cat_code = 'settlement' AND daily_rate > 0) (base `expense`) | USDT |
| settle_fee_usdt_prov_intent | sumIf(provider_fee_amount / nullIf(daily_rate, 0), cat_code = 'settlement' AND daily_rate > 0 AND position(provider_name, '[Intent]') > 0) (base `expense`) | INR |
| settle_fee_usdt_prov_p2p | sumIf(provider_fee_amount / nullIf(daily_rate, 0), cat_code = 'settlement' AND daily_rate > 0 AND position(provider_name, '[P2P]') > 0) (base `expense`) | INR |
| withdrawal_rev_usdt | sumIf(tx_fee / nullIf(daily_rate, 0), cat_code = 'merchant_withdraw' AND tx_fee != 0 AND daily_rate > 0) (base `expense`) | USDT |
| withdrawal_rev_usdt_intent | sumIf(tx_fee / nullIf(daily_rate, 0), cat_code = 'merchant_withdraw' AND tx_fee != 0 AND merchant_type = 'intent' AND daily_rate > 0) (base `expense`) | INR |
| withdrawal_rev_usdt_p2p | sumIf(tx_fee / nullIf(daily_rate, 0), cat_code = 'merchant_withdraw' AND tx_fee != 0 AND merchant_type = 'p2p' AND daily_rate > 0) (base `expense`) | INR |
| bonus_usdt | sumIf(amount, ilike(purpose, '%bonus%')) (base `sanction`) | USDT |
| sanction_usdt | sumIf(amount, ilike(purpose, '%sunction%')) (base `sanction`) | USDT |
| withdrawal_usdt | sumIf(toFloat64OrZero(replaceAll(purpose, ',', '.')), cat_code = 'merchant_withdraw' AND match(purpose, '^[0-9.,]+$')) (base `expense_direct`) | USDT |
| tx_transit | countIf(is_transit) (base `payment`) | count |

### BAM  (5)

| Метрика | Формула / визначення | Од. |
|---|---|---|
| ARPU (`kpi_arpu`) | Средний чек проводки payin. | — |
| CR by Merchant (payouts) (`p_crmerch`) | Выплаты по каждому мерчанту: количество/суммы всех, успешных и отклонённых, конверсия и средний чек. Переключатель All/UPI/IMPS — метод выплаты. | — |
| PayIn / PayOut Ratio (`p_ratio`) | Баланс входа и выхода per-мерчант: сколько денег заходит против выплат. Перекос показывает, кому не хватает входа или выхода. | — |
| Объём, CR, чеки по дням (`p_days`) | Разбивка окна фильтра по дням: объём, количество, CR, средний чек — динамика внутри периода. | — |
| Причины отмены и реджекта (`p_feedback`) | Причины, которые клиенты указали в фидбеке при отмене/неуспехе платежа, агрегат за период. | — |

### dsfrogboard /affiliates  (2)

| Метрика | Формула / визначення | Од. |
|---|---|---|
| ⭐ Комісія аффа з трейдера (aff_ pct_in) | частка партнера у ставці трейдера; ролі main/aff/manager/team_lead/COP | % |
| Загальний круг (aff_ ring) | pct_in + pct_out + Σ pct_in аффів (крім COP і глобальних); стеля monopoly_round = 5% | % |

### Uspacy CRM  (2)

| Метрика | Формула / визначення | Од. |
|---|---|---|
| PayIn/PayOut/Settle-ставки афіліата | affiliates.payin/payout/settle | % |
| Онбординг трейдера (deals-воронка) | Кандидат→Кваліфікація→Реєстрація→Онбординг→Депозит→Активний | етап |

### eye-of-god  (4)

| Метрика | Формула / визначення | Од. |
|---|---|---|
| ARPU | середній чек успішного прийому | ₹ |
| Net balance | net=payin−payout; net_wo_settle без сеттлу [Daily PayIN/NetBalance] | ₹ |
| Provider ledger | net=deposit+payin−payout−expense−provider_fee−settle [Provider Balance] | ₹ |
| Turnover / Settlement | payin/payout/settle + balance по провайдерах; сеттли INR/USDT [Operations] | ₹/$ |

### supportzones  (3)

| Метрика | Формула / визначення | Од. |
|---|---|---|
| Balance | operational earnings_balance | ₹ |
| Комісії payout | feePercentPayout(+AfterThreshold) · payoutFixedFee · effectivePercent(+ACQ) · nightFeeBonusPercentPayin | % / ₹ |
| Пер-афіліатні фі | aff2…aff10 × PayinFee/PayinACQFee/PayoutFee + affiliatePayin/PayoutFee · feeAffCO/feeAffKV | % |


## 🎯 Конверсія і якість

### 🥇 halleg (наші звіти — ПРІОРИТЕТ)  (9)

| Метрика | Формула / визначення | Од. |
|---|---|---|
| PayIn Volume (vol) | SUM(amount) payin success — усі провайдери (без порога) | ₹ |
| PayOut Volume | SUM(ABS(amount)) payout success | ₹ |
| Total Requests | Success + Reject | шт |
| Change CR / Trend CR | різниця CR (п.п.) поточний − попередній (лише «зрілі») | п.п. |
| % Auto (Auto success) | success AND edited_by_support=false / success | % |
| Appeal % | appeal_cnt / total | % |
| % Success-with-UTR (isUTR) | success / utr_cnt | % |
| Days 20+ Success | к-сть днів з ≥20 успішними | дн |
| Δ до попереднього періоду | семафор good/neutral/bad | — |

### lab / Фінанси  (5)

| Метрика | Формула / визначення | Од. |
|---|---|---|
| payin_intent_quasi | sumIf(amount, operation = 'payin' AND merchant_type = 'intent' AND provider_type != 'intent') (base `tx`) | INR |
| tx_intent_quasi | countIf(merchant_type = 'intent' AND payment_method = 'upi_intent' AND is_quasi_intent) (base `payment`) | count |
| tx_intent_real | countIf(merchant_type = 'intent' AND payment_method = 'upi_intent' AND NOT is_quasi_intent) (base `payment`) | count |
| tx_p2p_quasi | countIf(merchant_type = 'p2p' AND payment_method = 'upi' AND is_quasi_intent) (base `payment`) | count |
| tx_p2p_real | countIf(merchant_type = 'p2p' AND payment_method = 'upi' AND NOT is_quasi_intent) (base `payment`) | count |

### BAM  (15)

| Метрика | Формула / визначення | Од. |
|---|---|---|
| CR P2P (`kpi_cr_p2p`) | Конверсия P2P-пейинов (метод upi): доля успешных среди завершившихся заявок (pending не считаются). | — |
| CR Intent (`kpi_cr_intent`) | Конверсия intent-пейинов (метод upi_intent), pending не считаются. | — |
| Hourly Activity (`p_hourly`) | Пейины по часам за сегодня (IST) в сравнении со вчера: сколько заявок, сколько успешных, CR, а также заявки без UTR и «не выдача» (система не смогла выдать реквизиты). | — |
| Hourly Payout Success (`p_hsuccess`) | Почасовая динамика выплат: заявки, успехи, CR по часам. | — |
| customerRejected и апелляции (`p_g1h1`) | Пейины, где клиент сам отметил «не оплатил/отмена» (customerRejected), их дальнейшая судьба, и доля заявок с апелляциями. | — |
| Намерений (D3) (`c_intents`) | Уникальные «намерения оплатить»: повторные попытки одного клиента схлопнуты по связке день + мерчант + отправитель + сумма. | — |
| Спроб (`c_attempts`) | Сколько всего пейинов (попыток) создали эти намерения — ретраи считаются каждым разом. | — |
| % дублей (`c_dup`) | Доля повторных попыток: сколько пейинов — это ретраи того же намерения. | — |
| CR дедуп % (`c_crdedup`) | Честная конверсия: доля намерений, где ХОТЯ БЫ ОДНА попытка закончилась успехом. Не штрафует за ретраи, в отличие от обычного CR. | — |
| cust.rejected (`c_custrej`) | Пейины, где клиент сам нажал «не оплатил / отмена» в виджете. | — |
| cust.rej → успех (`c_cr_succ`) | Из них всё же закончились успехом (деньги пришли, несмотря на отметку клиента). | — |
| cust.rej → реджект (`c_cr_rej`) | Из них закончились реджектом/отменой. | — |
| Апелляций (`c_appeals`) | Пейины дня, по которым создана апелляция. | — |
| % апелл. (`c_pct_app`) | Доля пейинов с апелляцией от всех пейинов дня. | — |
| Overturn proxy % (`c_overturn`) | Доля апелляций, где пейин в итоге успешен — прокси «апелляция обёрнута в успех». | — |

### Uspacy CRM  (1)

| Метрика | Формула / визначення | Од. |
|---|---|---|
| Ланцюжок COP (parent_affiliate) | ієрархія афіліатів у CRM | звʼязок |

### eye-of-god  (13)

| Метрика | Формула / визначення | Од. |
|---|---|---|
| Конверсія виплат (payout_cr) | успішні виплати / завершені виплати | % |
| % AutoPayin | частка автоматично оброблених payin | % |
| Воронка втрат | cc_true/false · r_auto · r_auto_client — де і скільки втрачаємо | шт/₹ |
| % апеляцій від трафіку | payin_pct / payout_pct — нормалізовано на обсяг | % |
| SMS vs Push CR | inc_cr=inc_ok/inc_tot; окремо sms_inc_cr / push_inc_cr / wd_cr — матч каналів сигналу [SMS/Push] | % |
| Auto-payin CR | auto_payin/inc_ok — частка авто серед успішних пейинів (~99%) [SMS/Push, Автоматика] | % |
| % авто (auto_pct) | auto_success/total_success — авто-підтверджені по методу/трейдеру/банку [Автоматика] | % |
| Методи авто-підтвердження | m_push · m_sms · m_receipt · m_support · m_appeal — чим закрито пейин [UPI/Квази] | шт |
| Квазі vs Шлюз CR | quasi_cr=quasi_succ/quasi_total vs gw_cr — квазі-intent проти платіжного шлюзу [UPI Intent] | % |
| Split (дроблення) | split_cr=split_success/split_total · split_losses · pct_quazi [Квази интент] | %/₹ |
| Fraud rejection % | fraud_rejection/rejected — частка фрод-реджектів [Обзор методов] | % |
| UTR entry | спосіб вводу UTR: paste/typing/mix/other → вплив на success [Обзор методов] | шт/% |
| CR Auto Providers | total_payins · received · cr · sms_pct · effective — ефективність провайдера [Operations] | % |

### supportzones  (1)

| Метрика | Формула / визначення | Од. |
|---|---|---|
| ⭐ CR по годинах (supportzones) | «CR по годинах»: successPayins/totalPayins — ⚠ pending У ЗНАМЕННИКУ; на закритих годинах = наш канон | % |


## 📊 Обсяг і активність

### 🥇 halleg (наші звіти — ПРІОРИТЕТ)  (7)

| Метрика | Формула / визначення | Од. |
|---|---|---|
| Active Traders (tru) | COUNT(DISTINCT provider) з payin>0 | шт |
| AVG Active Traders (tr) | AVG(daily_active_count) | шт |
| Active days | к-сть днів з ≥1 транзакцією | дн |
| Avg PayIn/Trader | vol / SUM(daily_active_count) | ₹ |
| New Traders | перша payin-транзакція у періоді | шт |
| Vol/Dep Ratio | (vol/active_days)/(dep_active×93) — константа 93 з PBI | × |
| Avg Daily Payin/Payout Volume | AmountIN / дні (календарні або активні — уточнити) | ₹ |

### lab / Фінанси  (15)

| Метрика | Формула / визначення | Од. |
|---|---|---|
| payin_intent | sumIf(amount, operation = 'payin' AND merchant_type = 'intent') (base `tx`) | INR |
| payin_p2p | sumIf(amount, operation = 'payin' AND merchant_type = 'p2p') (base `tx`) | INR |
| payin_total | sumIf(amount, operation = 'payin') (base `tx`) | INR |
| payin_gateway_intent | sumIf(amount, operation = 'payin' AND is_gateway AND merchant_type = 'intent') (base `tx`) | INR |
| payin_gateway_p2p | sumIf(amount, operation = 'payin' AND is_gateway AND merchant_type = 'p2p') (base `tx`) | INR |
| payout_intent | sumIf(-1 * amount, operation = 'payout' AND merchant_type = 'intent') (base `tx`) | INR |
| payout_p2p | sumIf(-1 * amount, operation = 'payout' AND merchant_type = 'p2p') (base `tx`) | INR |
| payout_total | sumIf(-1 * amount, operation = 'payout') (base `tx`) | INR |
| payout_imps | sumIf(-1 * amount, operation = 'payout' AND payout_method = 'imps') (base `tx`) | INR |
| payout_upi | sumIf(-1 * amount, operation = 'payout' AND payout_method = 'upi') (base `tx`) | INR |
| tx_all_total | count() (base `tx`) | count |
| payin_intent_real | sumIf(amount, operation = 'payin' AND merchant_type = 'intent' AND provider_type = 'intent') (base `tx`) | INR |
| tx_intent | countIf(merchant_type = 'intent') (base `payment`) | count |
| tx_p2p | countIf(merchant_type = 'p2p') (base `payment`) | count |
| tx_total | count() (base `payment`) | count |

### BAM  (4)

| Метрика | Формула / визначення | Од. |
|---|---|---|
| Amount In (`kpi_amount_in`) | Сумма успешных пополнений (PayIn) в INR за окно фильтра по выбранным мерчантам. | — |
| Amount Out (`kpi_amount_out`) | Сумма успешных выплат (PayOut) в INR за окно фильтра. | — |
| Объём PayIn (`p_payin_ts`) | Суммы успешных пополнений по бакетам времени (час/день/неделя/месяц). Учитывает фильтры мерчантов/виджета/периода. Время — IST. | — |
| Объём PayOut (`p_payout_ts`) | Суммы выплат по бакетам времени, с фильтром метода All/UPI/IMPS. | — |

### dsfrogboard /affiliates  (1)

| Метрика | Формула / визначення | Од. |
|---|---|---|
| Залишок кругу для MONOPOLY | max(0, стеля − payin − payout − Σ інші аффи) — скільки ще можна віддати | % |

### eye-of-god  (3)

| Метрика | Формула / визначення | Од. |
|---|---|---|
| Payout-аналітика | attempts · cum-avg · capacity · stuck-list · pending-by-merchant · source-by-merchant | різне |
| IMPS throwback / attempts | throwback_pct (відкати ≥50хв) · m3_pct (≥3 спроби assigningCount) [IMPS Payouts] | % |
| Vol paid vs total | vol_paid виплачено / vol_total замовлено · stuck · partially [Обзор пейаутов] | ₹ |


## 🗂️ Інше / службові

### 🥇 halleg (наші звіти — ПРІОРИТЕТ)  (1)

| Метрика | Формула / визначення | Од. |
|---|---|---|
| Hour-to-Hour ★ | обрізає історичний період до поточної позиції | — |

### BAM  (1)

| Метрика | Формула / визначення | Од. |
|---|---|---|
| Baseline индекса (`p_baseline`) | Опорные значения для шкалы A1 индекса мерчанта. | — |

### dsfrogboard /affiliates  (4)

| Метрика | Формула / визначення | Од. |
|---|---|---|
| Перебір стелі кругу | скільки трейдерів має круг > monopoly_round (5%) | шт |
| Розходження документ ⇄ система | diffs по трейдеру: kind = pct (різна ставка) / only_doc / only_sys | шт |
| Дублікати імен аффів | групи схожих написань одного аффа (registry/duplicates) | груп |
| Спільні аффи (shared) | афф, що обслуговує кількох «главных»; pinned_main_id вирішує зарахування | шт |

### Uspacy CRM  (5)

| Метрика | Формула / визначення | Од. |
|---|---|---|
| Сервіс-менеджер афіліата (servis_menedzher) | хто веде афіліата — заміна Google-таблиці мапінгу | менеджер |
| % комісії афіліата (komisiyi) | affiliates.komisiyi — ставка комісії | % |
| Джерело залучення афіліата (dzherelo) | реферальна/telegram/сайт/instagram/від афіліата/… | категорія |
| Фактори ризику афіліата (faktori_riziku) | affiliates.faktori_riziku | категорія |
| Робочі зміни трейдера (shift1..12) | treyderis: 12 слотів робочих інтервалів | години |

### eye-of-god  (4)

| Метрика | Формула / визначення | Од. |
|---|---|---|
| Реальні помилки (real_‹мерчант›) | count/sum — на відміну від усіх помилок (‹мерчант›_count/sum) | ₹/шт |
| Present / Antigift | «подарунки» та анти-подарунки: count і sum | ₹/шт |
| Live-стан | review / pending / processing / stuck (+ oldest, суми) | шт/₹ |
| Втрати транзиту (7 кат.) | c1..c7 (n,s₹) × розріз upi/btn/unk/ap; тригер №5 «списання» [Потери транзита] | ₹/шт |

### supportzones  (1)

| Метрика | Формула / визначення | Од. |
|---|---|---|
| Working hours / on-shift | working_hours_from/to + on_shift | год |

