KPI töleg tagtasy
TL; DR
Bir daştaw - üç gatlak: Huniniň saglygy (Attempt → Auth → Capture), Maliýe netijeliligi (TtW/TtR, Cost/GGR, FX) we Infrastrukturanyň ygtybarlylygy (Webhook/Latency/Settlement). Syr - dogry hasaplama bazalary, hökmany segmentasiýa (country × provider × method × BIN × ticket _ size × risk), bosagaly SLO we koridorlardan çykanda taýýar pleýbuklar.
1) Kime we haýsy meseleleri ýapýarys
CEO/GM (her gün, 3-5 minut): "Tölegleriň öwrülişigi we yzyna almagyň tizligi kadaly? Pullary kabul etmegiň bahasy gözegçilik astynda?"
Baş of Payments/Treasury (her sagat): "Üpjün ediji/ýurt/usul boýunça pese gaçmak nirede? Derrew tölegler üçin likwidlik ýeterlikmi?"
Fraud/Risk (her gün): "AR antifrody göz öňünde tutup? Abandon на 3DS и Soft declines?»
Support/Operations (onlaýn): "Yzyna almak we yzyna gaýtarmak boýunça haýsy ETA? Webhuklar nirede?"
Finance/Recon (D + 1): "Settlement wagtynda? Komissiýalar we FX meýilnama laýyk gelýärmi?"
2) Baş metrikler we takyk kesgitlemeler
2. 1 Töleg guýrugy
Attempt - başlanan tölegler.
Auth Approved - tassyklanan ygtyýarnamalar.
Captured - üstünlikli ýazyldy.
- `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 Netijeler we yzyna gaýtarmalar
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% - başlangyç usulda yzyna gaýtarmagyň paýy
2. 3 Bahasy we 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 Integrasiýalaryň ygtybarlylygy
Webhook Delivery p95 (сек), Success %
API Latency p95/p99 (auth/capture/refund/payout)
Settlement Timeliness = talap edilen T + N-e gelen batçlar/döwür üçin ähli batçlar
2. 5 3DS/sürtülme (kartoçkalar üçin)
3DS Challenge Share = Challenge / 3DS_Total
Frictionless Share = Frictionless / 3DS_Total
Abandon on 3DS = 3DS_Started − 3DS_Completed
3) Kesikler we süzgüçler (iň az toplum)
Фильтры в шапке: `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`.
Grafiklerdäki/tablisalardaky hökmany kesişler:- country×provider, BIN×country, method×provider, device/os, ticket_size.
4) Esasy ekrany düzmek (Layout)
1. Ýokarky KPI (düýn/şu gün, p7 medianyna deňeşdirme):
`AR_net`, `Capture_Success`, `Payout Success%`, `TtW p95`, `TtR p95`, `Cost/GGR`, `Webhook p95`, `Settlement Timeliness`.
2. Segment saýlamak we şowsuzlyklaryň sebäplerini görkezmek bilen Funnel (Attempt → Auth → Capture) (iň ýokary kodlar ISO/relslerde).
3. Heatmap AR 'country × provider' we top-göwrümi üçin aýratyn BIN heatmap.
4. 3DS paneli: Challenge/Frictionless/Abandon + bench-line deňeşdirme.
5. Payout & Refund Health: Success%, p95 (TtW/TtR), ошибки, Refund_to_Source %.
6. Cost & FX: Cost/GGR usullar boýunça, FX slippage/fees platformalar boýunça.
7. Integrasiýa ygtybarlylygy: Webhook delivery p95/Success%, API latency p95/p99, Duplicate rate, Report delivery SLA.
8. Waka-panel: işjeň alertler (§ 8 serediň), feýlowerleriň ýagdaýy we gazna bellikleri (galyndylar L0, prefund).
5) SLO we alertler (koridorlar)
Görkezmeler (bukjanyň/bazarlaryň aşagynda kalibrlenýär):- 'AR _ gross' 3DS2 kartlary: 82-92% (segment boýunça); 'AR _ net' ≥ 80%
- `Capture_Success` ≥ 98. 5% (sagat)
- `Webhook p95` ≤ 3 с, Success ≥ 99. 9%
- `Payout TtW p95` instant ≤ 120 с; (T + 1) - günde 100% D + 1
- 'Refund TtR p95' kartoçkalary ≤ T + 1 b.e.; instant ≤ 60 с
- `Refund Error %` < 0. 3%
- `Settlement Timeliness` ≥ 99%
- 'Cost/GGR' - usul boýunça aýratyn maksatly koridor
- 'AR _ gross ↓> 3 p.p.' k 7 günlük median (ýurt boýunça/PSP/BIN) → P1/P0
- `Capture_Success < 98%` (час) → P1
- 'Webhook p95> 5 c' ýa-da dublikatlar> 0 → P1
- `Payout TtW p95 > SLO` или Success%<99% → P1
- `Refund Error% > 0. 3%` или `Double Refund > 0` → P0
- `Settlement on-time < 99%` → P1
- 'Cost/GGR' koridordan çykmak → P2
Her alert runbook kartoçkasyny açýar.
6) Hasaplamagyň formulalary we binýatlary (jikme-jiklikler)
Ähli paýlar - aç-açan baza bilen: "denominator" -da görkeziň.
Wagt - UTC; p-kwantili: PERCENTILE_CONT.
'AR _ clean' (operasiýa) = 'Auth _ Approved/( )'
`Net_Conversion` = `Captured_Tx / Auth_Attempted_Tx`
`Refund_to_Source %` = `Refund_to_Original_Method / Total_Refunds`
'Idle Cash%' (gazna kiçi widjetinde) = '(Balance − Target_Balance )/Balance'
7) UX-patternler
Ýokardan KPI-plaşka, aşakda - funnel + heatmaps, aşakda - integrasiýa we maliýe.
Formulaly/esasly/kadadan çykmalar (mysal üçin, "antifroddan soň").
Deňeşdirme çyzygy: p7 mediana we "düýn "/" geçen duşenbe ".
Basmak boýunça Drill-down: heatmap-dan BIN → Issuer → şowsuzlyk kodlary.
RCA üçin snapshotlar: post-mortem üçin häzirki görnüşini "berkitmek" düwmesi.
8) Pleýbuklar (gurlan hereket kartoçkalary)
Auth drop → smart-routing geçiň, BIN-e 3DS-challenge göteriň, retralary çäklendiriň.
Webhook gijikdirmeler → polling, awto-refand/howply awto-tölegleri doňdurmak, idempotentligi güýçlendirmek.
Payout degradasiýa → relsiň feýloweri, treasury top-up, VIP-iň ileri tutulmagy.
Settlement gijikdirme → StressRes, "Suspense" belligi, PSP-de möwjemegi.
Refund ýalňyşlyklary/dubly → refund-freeze, deňeşdirme, ýüz gezek.
(Kartoçkada çek sanawy we eskalasiýa aragatnaşyklary bar.)
9) Maglumatlaryň modeli (iň az ýeterlik)
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
Indeksler: 'provider', 'method _ code', 'country', 'bin', 'event _ ts'.
10) SQL dilimleri (mysal)
10. 1 Huni we 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) Goşmaça ekranlar
BIN Drilldown: AR/decline-codes, 3DS-friksiýa, emitentler boýunça latency.
Provider Scorecard: SLA metrikler, hadysalar, karzlar, Cost/GGR.
Treasury Snapshot: L0/L1 galyndylar, prefund, StressRes, TtF doldurmalar.
Recon View: Settlement Timeliness, Aging tikilmedik gaplar, Fee accuracy.
12) Maglumatlaryň hili
KPI wersiýa sözlügi (formula/baza/kadadan çykmalar).
Ýeke-täk TZ = UTC, p-kwantili - diňe CONT.
Wakalaryň idempotenti we webhuklaryň atasy.
Wagt/mukdar/FX boýunça çydamlylyk syýasaty (deňeşdirmek/gizlinlik üçin).
CI-de data tests: boş bölüjileriň bazalary, wagt bellikleriniň monotonlygy, NULL paýy.
13) Giriş: çek-sanawy
- KPI/formulalar/bazalar kesgitlenildi we sözlükde kesgitlenildi.
- Ingestion we wakalary/registrleri kadalaşdyrmak.
- 'payments _ flat', 'webhooks', 'settlements', 'treasury' penjireleri guruldy.
- heatmaps, funnel, latency, payout/refund panels amala aşyryldy.
- SLO bosagalary we alertler döredildi; pleýbuklar bilen baglanyşykly.
- Giriş rollary: C-level (read-only summary), Ops/Fraud (drill-down).
- Provider Scorecard esasly üpjün edijiler boýunça hepdelik QBR.
- UAT-synag toplumy: demo-dataset, p-kwantilleri barlamak, bazalaryň, alertleriň dogrulygy.
14) Ýygy-ýygydan ýalňyşlyklar
Bazalaryň garyşmagy ('attempt' vs 'capture') → ýalan netijeler.
'ticket _ size' segmentasiýasy ýok → AR ýoýulan surat.
Ignor abandon 3DS → üpjün ediji bilen "aşa" mesele.
Webhook duplicates → iki gezek hereket etmek.
Doly däl vitrin settlement/fees → Cost/GGR bahalandyrylyp bilinmez.
SLO we pleýbuklar bolmasa, dashboard "hereketsiz vitrine" öwrülýär.
Gysgaça maglumat
Töleg KPI daşbordy diňe bir grafika däl, iş guralydyr. Ol hunini, puly we infrastrukturany birleşdirýär, anyk formulalara we segmentasiýa bil baglaýar, awtomatiki signallary berýär we derrew hereketleri hödürleýär. Netijede: ýokarda AR_net, koridorlarda TtW/TtR, gözegçilik astynda Cost/GGR, hadysalar çalt lokallaşdyrylýar we üpjün edijiler bilen gepleşik sanlara esaslanýar.