KPI төлем дашборды
TL; DR
Бір дашборд - үш қабат: Воронканың денсаулығы (Attempt → Auth → Capture), Қаржылық тиімділік (TtW/TtR, Cost/GGR, FX) және Инфрақұрылымның сенімділігі (Webhook/Latency/Settlement). Құпия - есептеудің дұрыс базалары, міндетті сегментация (country × provider × method × BIN × ticket _ size × risk), шекті SLO және дәлізден шығу кезіндегі дайын плейбуктер.
1) Кімге және қандай мәселелерді жабамыз
CEO/GM (күн сайын, 3-5 мин): "Төлемдер конверсиясы және шығару жылдамдығы қалыпты? Ақшаны қабылдау құны бақылауда ма?"
Head of Payments/Treasury (әр сағат сайын): "Провайдер/ел/әдіс бойынша құлдырау қайда? Жедел төлемдер үшін өтімділік жеткілікті ме?"
Fraud/Risk (күн сайын): "AR антифрод есебімен? Abandon на 3DS и Soft declines?»
Support/Operations (онлайн): "Шығару және қайтару бойынша қандай ETA? Вебхактар қайда ілініп тұр?"
Finance/Recon (D + 1): "Settlement уақытында? Комиссия мен FX жоспарға сәйкес келе ме?"
2) Бас метриктер және нақты анықтамалар
2. 1 Төлем құйғышы
Attempt - бастамашыл төлемдер.
Auth Approved - мақұлданған авторизациялар.
Captured - табысты есептен шығарылған.
- `AR_gross = Auth_Approved / Auth_Attempted`
- `AR_net = Captured_Tx / Auth_Attempted`
- `Capture_Success = Captured_Tx / Capture_Attempted_Tx`
- `Capture_Latency_p95 = p95(capture_ts - auth_ts)`
2. 2 Қорытындылар мен қайтарымдар
Payout Success % = Success_Payouts / Attempted_Payouts
TtW p95 = p95(payout_credited_at - payout_initiated_at)
Refund Rate = Refunded_Tx / Captured_Tx
TtR p95 = p95(refund_credit_at - refund_initiated_at)
Refund Error % = Refund_Failed / Refund_Attempted
Refund_to_Source% - бастапқы әдіске қайтару үлесі
2. 3 Құны және FX
Cost/Tx = Fee_fixed + AmountFee_pct + FX_Spread
Cost/GGR = ΣCost / GGR
FX Slippage (bps) = (exec_px − mid_px)/mid_px × 10 000
2. 4 Интеграцияның сенімділігі
Webhook Delivery p95 (сек), Success %
API Latency p95/p99 (auth/capture/refund/payout)
Settlement Timeliness = мәлімделген T + N/кезеңдегі барлық батчиге келген батчилер
2. 5 3DS/фрикция (карталар үшін)
3DS Challenge Share = Challenge / 3DS_Total
Frictionless Share = Frictionless / 3DS_Total
Abandon on 3DS = 3DS_Started − 3DS_Completed
3) Тіліктер мен сүзгілер (ең аз жиынтық)
Фильтры в шапке: `date range (UTC)`, `country`, `provider`, `method_group`, `BIN`, `device/os`, `ticket_size bucket (≤€50 / €50–200 / >€200)`, `risk_segment`, `kyc_tier`, `new_vs_returning`, `affiliate`.
Кестелердегі/кестелердегі міндетті қималар:- country×provider, BIN×country, method×provider, device/os, ticket_size.
4) Негізгі экранды белгілеу (Layout)
1. KPI жоғарғы плашкасы (кеше/бүгін, p7 медианмен салыстыру):
`AR_net`, `Capture_Success`, `Payout Success%`, `TtW p95`, `TtR p95`, `Cost/GGR`, `Webhook p95`, `Settlement Timeliness`.
2. Сегментті таңдаумен және істен шығу себептерін көрсетумен Funnel (Attempt → Auth → Capture) (ISO топ-кодтары/рельстерде).
3. Heatmap AR 'country × provider' бойынша және топ-көлем үшін жеке BIN heatmap.
4. 3DS панелі: Challenge/Frictionless/Abandon + бенч-сызық салыстыру.
5. Payout & Refund Health: Success%, p95 (TtW/TtR), ошибки, Refund_to_Source %.
6. Cost & FX: әдістер бойынша Cost/GGR, алаңдар бойынша FX slippage/fees.
7. Интеграциялық сенімділік: Webhook delivery p95/Success%, API latency p95/p99, Duplicate rate, Report delivery SLA.
8. Инцидент-панель: белсенді алерталар (§ 8 қараңыз), фейловерлер мәртебесі және қазынашылық жазбалары (L0, prefund қалдықтары).
5) SLO және алерталар (дәліздер)
Бағдарлар (портфельге/нарықтарға қарай калибрленеді):- 'AR _ gross' 3DS2 карталары: 82-92% (сегмент бойынша); 'AR _ net' ≥ 80%
- `Capture_Success` ≥ 98. 5% (сағаттық)
- `Webhook p95` ≤ 3 с, Success ≥ 99. 9%
- `Payout TtW p95` instant ≤ 120 с; (T + 1) - күніне 100% D + 1
- 'Refund TtR p95' карталары ≤ T + 1 б.д.; instant ≤ 60 с
- `Refund Error %` < 0. 3%
- `Settlement Timeliness` ≥ 99%
- 'Cost/GGR' - әдіс бойынша жеке мақсатты дәліз
- 7 күндік медианаға 'AR _ gross ↓> 3 п.т.' (ел бойынша/PSP/BIN) → P1/P0
- `Capture_Success < 98%` (час) → P1
- 'Webhook p95> 5 c' немесе қайталаулар> 0 → P1
- `Payout TtW p95 > SLO` или Success%<99% → P1
- `Refund Error% > 0. 3%` или `Double Refund > 0` → P0
- `Settlement on-time < 99%` → P1
- 'Cost/GGR' дәлізден → P2 әдісі бойынша шығу
Әрбір алерт runbook 'a карточкасын ашады (әрекеттер/эскалациялар/фейловер).
6) Есептеу формулалары мен базалары (нақтылау)
Барлық үлестер - айқын базамен: 'denominator' деген данада көрсетіңіз.
Уақыт - UTC; p-квантили: PERCENTILE_CONT.
'AR _ clean' (операциялық) = 'Auth _ Approved/( )'
`Net_Conversion` = `Captured_Tx / Auth_Attempted_Tx`
`Refund_to_Source %` = `Refund_to_Original_Method / Total_Refunds`
'Idle Cash%' (қазынашылық шағын виджетте) = '(Balance − Target_Balance )/Balance'
7) UX-үлгілер
Жоғарыдан KPI-плашка, төменнен - funnel + heatmaps, төменнен - интеграция және қаржы.
Формуласы/базасы/ерекшелігі бар тултиптер (мысалы, «антифродтан кейін»).
Салыстырмалы сызық: p7 медиана және «кеше «/» өткен дүйсенбі ».
Drill-down басу бойынша: heatmap-тен BIN → Issuer кестесіне → істен шығу кодтары.
RCA үшін снэпшоттар: пост-мортемаға арналған ағымдағы көріністі «бекіту» түймешігі.
8) Плейбуктер (кіріктірілген іс-қимыл карточкалары)
Auth drop → smart-routing ауысу, BIN-ге 3DS-challenge көтеру, ретрацияны шектеу.
Webhook кідірістері → polling қосыңыз, авто-рефандтарды/қауіпті авто-төлемдерді мұздату, демпотенттілікті күшейту.
Payout деградациясы → рельс фейловері, treasury top-up, VIP басымдығы.
Settlement кідірісі → StressRes, «Suspense» белгісі, PSP-дегі эскалация.
Refund қателер/дубль → refund-freeze, салыстыру, сторно дубль.
(Карточкада чек-парақ және эскалация байланыстары бар.)
9) Деректер моделі (ең аз жеткілікті)
events/payments_flat:
payment_id, user_id, country, provider, method_code, action(deposit/refund/payout),
attempt_ts, auth_status, auth_ts, three_ds(flow, challenge_flag, started_ts, completed_ts),
capture_status, capture_amount, capture_ts, partial_flag,
refund_status, refund_amount, refund_initiated_ts, refund_credit_ts,
payout_status, payout_amount, payout_initiated_ts, payout_credited_ts,
fees_fixed, fees_pct, fx_spread, currency, amount,
risk_segment, kyc_tier, bin, asn, device_os, ticket_bucket
events/webhooks:
provider, event_kind, event_ts, delivered_ts, retries, duplicate_flag, idempotency_key
settlements/reports:
provider, batch_id, settlement_date, amount_settled, currency, fee_amount, status
treasury/pockets (mini-widget):
pocket_id, counterparty, currency, balance, target_balance, low_watermark, updated_at
Индекстер: 'provider', 'method _ code', 'country', 'bin', 'event _ ts' бойынша.
10) SQL кесінділері (мысал)
10. 1 Huni және AR
sql
WITH base AS (
SELECT
DATE_TRUNC('hour', attempt_ts) AS h,
country, provider, method_code,
COUNT() FILTER (WHERE auth_status='ATTEMPTED') AS auth_attempted,
COUNT() FILTER (WHERE auth_status='APPROVED') AS auth_approved,
COUNT() FILTER (WHERE capture_status='CAPTURED') AS captured_tx
FROM payments_flat
WHERE action='deposit'
GROUP BY 1,2,3,4
)
SELECT h, country, provider, method_code,
auth_approved::decimal / NULLIF(auth_attempted,0) AS ar_gross,
captured_tx::decimal / NULLIF(auth_attempted,0) AS ar_net
FROM base;
10. 2 Webhook SLA
sql
SELECT
DATE_TRUNC('hour', event_ts) AS h, provider,
PERCENTILE_CONT(0. 95) WITHIN GROUP (ORDER BY EXTRACT(EPOCH FROM (delivered_ts - event_ts))) AS wb_p95_sec,
AVG(CASE WHEN retries=0 AND NOT duplicate_flag THEN 1 ELSE 0 END) AS wb_success
FROM webhooks
GROUP BY 1,2;
10. 3 Refund & Payout Health
sql
SELECT
DATE_TRUNC('day', COALESCE(refund_initiated_ts, payout_initiated_ts)) d,
method_code, provider,
COUNT() FILTER (WHERE refund_status='ATTEMPTED') AS refund_attempted,
COUNT() FILTER (WHERE refund_status='SUCCESS') AS refund_success,
PERCENTILE_CONT(0. 95) WITHIN GROUP (ORDER BY EXTRACT(EPOCH FROM (refund_credit_ts - refund_initiated_ts))) AS ttr_p95_sec,
COUNT() FILTER (WHERE payout_status='ATTEMPTED') AS payout_attempted,
COUNT() FILTER (WHERE payout_status='SUCCESS') AS payout_success,
PERCENTILE_CONT(0. 95) WITHIN GROUP (ORDER BY EXTRACT(EPOCH FROM (payout_credited_ts - payout_initiated_ts))) AS ttw_p95_sec
FROM payments_flat
GROUP BY 1,2,3;
10. 4 Cost/GGR
sql
SELECT
DATE_TRUNC('day', capture_ts) d,
method_code, provider,
SUM(fees_fixed + amountfees_pct + fx_spread) AS total_cost,
SUM(capture_amount) AS total_captured,
(SUM(fees_fixed + amountfees_pct + fx_spread) / NULLIF(SUM(total_captured),0)) AS cost_to_captured
FROM payments_flat
WHERE capture_status='CAPTURED'
GROUP BY 1,2,3;
11) Қосымша экрандар
BIN Drilldown: AR/decline-codes, 3DS-фрикция, эмитенттер бойынша latency.
Provider Scorecard: SLA-метриктер, оқиғалар, кредиттер, Cost/GGR.
Treasury Snapshot: L0/L1 қалдықтары, prefund, StressRes, TtF толықтырулары.
Recon View: Settlement Timeliness, Aging тігілмеген батч, Fee accuracy.
12) Деректердің сапасы
Нұсқасы бар KPI сөздігі (формулалар/база/ерекшеліктер).
Бірыңғай TZ = UTC, p-квантили - тек CONT.
Оқиғалар мен веб-хуктардың дедупі.
Уақыт/сома/FX бойынша толеранстар саясаты (салыстыру/жасырындылық үшін).
CI-дегі Data tests: бөлгіштердің бос емес базалары, уақыт белгілерінің біркелкілігі, NULL үлесі.
13) Енгізу: чек-парақ
- KPI/формулалар/базалар анықталып, сөздікте бекітілген.
- ingestion және оқиғаларды/тізілімдерді қалыпқа келтіру теңшелді.
- 'payments _ flat', 'webhooks', 'settlements', 'treasury' сөрелері жасалды.
- Іске асырылған heatmaps, funnel, latency, payout/refund panels.
- SLO табалдырығы мен алерта орнатылған; плейбуктермен байланысты.
- Кіру рөлдері: C-level (read-only summary), Ops/Fraud (drill-down).
- Provider Scorecard негізінде провайдерлер бойынша апта сайынғы QBR.
- UAT-тесттер жиынтығы: демо-датасет, р-квантильдерді тексеру, базалардың, алерттердің дұрыстығы.
14) Жиі қателер
Базаларды араластыру ('attempt' vs 'capture') → жалған қорытындылар.
'ticket _ size' сегментациясы жоқ → AR суреті бұрмаланған.
Ignor abandon 3DS → провайдермен «жоғары» проблема.
Бақылау жоқ webhook duplicates → қос әрекеттер.
settlement/fees → бойынша толық емес витринаны Cost/GGR бағалау мүмкін емес.
SLO мен плейбуксыз дашборд «әрекетсіз витринаға» айналады.
Түйіндеме
KPI төлем дашборды - жай графиктер емес, операциялық құрал. Ол құйғышты, ақшаны және инфрақұрылымды біріктіреді, нақты формулалар мен сегменттеуге сүйенеді, автоматты сигналдар береді және бірден іс-қимылдарды ұсынады. Нәтижесінде: жоғарыдағы AR_net, дәліздердегі TtW/TtR, бақылаудағы Cost/GGR, тосын оқиғалар тез арада оқшауланады, ал провайдерлермен диалог сандарға негізделеді.