Submerchantlar və kaskadlar
1) Konsepsiya bazası
Submerchant - baş satıcı/provayder (PayFac/platforma/operator) vasitəsilə ödənişləri qəbul edən hüquqi şəxs. Pul axını master-MID/platforma hesabına gedir, sonra platforma submerchant (split/sweep) ödəyir.
Cascading - bir neçə PSP/ekvayer/MID qaydaları (GEO, BIN, tarif, risk, yük) vasitəsilə əməliyyatın ardıcıl və ya paralel marşrutlaşdırılması strategiyası.
PayFac modeli - «mini-ekvayer» kimi platforma: submerchant onbordinq (KYB/PCI), alt-MID təyinatı, KYC/AML və disputların vahid qaydaları, mərkəzləşdirilmiş settlement və ödənişlər.
2) iGaming-də harada və nə vaxt lazımdır
Multibrand/white-label: bir operator, onlarla alt brend/studiya → MIDs/deskriptor və hesabat aparmaq daha asandır.
Məzmun bazarı: platforma - MoR/PayFac, studiyalar - submerchantlar (revshare, split).
Yüksək risk/geo-qarışıq: PSP kaskadları uğursuzluqları, hadisələrin şoklarını və ödənişlərin dəyərini azaldır.
Yerli ödəniş metodları/dəhlizləri: uçuş və fallback üçün provayder seçimi lazımdır.
3) Məsuliyyət və rollar
4) MID və deskriptorların iyerarxiyası
Master MID (platforma)
─ Sub-MID brendlər/geo/metodlar üzrə
└─ Routing Profiles (PSP1→PSP2… kaskad)
Tövsiyələr:- Alt-MID-də ayrı-ayrı deskriptorlar: daha az mübahisə.
- təmiz analitika və ehtiyat nəzarət üçün alt-MID/A2A/lokal metodları kart bölmək.
- A/B üçün routing profillərini (v1/v2) versiyası
5) Kaskadlar: necə qurulur
5. 1. Uçuş həlli
Avtorizasiya zamanı: qaydalara uyğun marşrut seçin (GEO, BIN/IIN, brand, debit/kredit kartı, risk sinfi, PSP limiti, cari AR/DR, tarif/FX, SLA hadisələri).
5. 2. Kaskad növləri
Ardıcıl: PSP_A → (soft decline) → PSP_B → PSP_C.
Paralel (split-traffic): benchmarking və dekorelyasiya üçün müxtəlif PSP trafik%.
Sticky BIN: Ən yaxşı PSP üçün uğurlu BIN hovuzunun bərkidilməsi.
5. 3. Məhdudiyyətlər
idempotency hesab (capture ikiqat deyil).
PSP təkrar cəhdləri ilə əlaqələndirin (retry window, soft codes).
Hər marşrutda 3DS siyasəti və liability shift nəzərə.
6) Settlement, T + N, ehtiyat və split
Hər bir PSP/ekvayerin öz cut-off/T + N və öz rolling reserve var.
Platforma alt-MID səviyyəsində gəlirləri yığır və release təqvimi ilə reserve-ledger aparır.
Submerchantlara ödənişlər: hesabat dövründə net of fees & reserve + onların payı (revshare/CPA).
Split əməliyyatları (platform/studio/affiliate/tax) və ya dövrdən sonra saxlayın.
7) Antifrod, 3DS və submerchant səviyyəsində limitlər
A/B/C bazar sinifləri üçün müxtəlif skoring-eşik.
BIN/geo/çek üzrə 3DS qaydaları (yüklü/yumşaq/step-up).
Velocity limitləri (giriş/nəticə, kart cəhdləri) və submerchant caps.
«Boz» submerchantlar: daha sərt limitlər, yalnız ağ üsullar və gecikmiş ödənişlər.
8) Tariflər və take-rate
PSP fees (interchange/scheme/markup/fixed) + FX slippage + platforma payı + ehtiyat effekti.
Cascade blended dəyərini azaltmaq üçün IC++ və BIN-routing istifadə edin.
9) Data və minimum model
sql
-- Directories
CREATE TABLE ref. submerchants (
sub_id BIGSERIAL PRIMARY KEY,
legal_name TEXT, brand TEXT, country TEXT, risk_class TEXT, status TEXT,
created_at TIMESTAMP, meta JSONB
);
CREATE TABLE ref. routing_profiles (
profile_id BIGSERIAL PRIMARY KEY,
name TEXT, version TEXT, enabled BOOLEAN, meta JSONB
);
CREATE TABLE ref. routing_rules (
rule_id BIGSERIAL PRIMARY KEY,
profile_id BIGINT REFERENCES ref. routing_profiles,
method TEXT, geo TEXT, bin_from TEXT, bin_to TEXT,
psp TEXT, mid TEXT, require_3ds BOOLEAN,
priority INT, soft_codes JSONB, enabled BOOLEAN, meta JSONB
);
-- Transactions linked to a sub-merchant and a route
CREATE TABLE payments. transactions (
id BIGSERIAL PRIMARY KEY,
sub_id BIGINT REFERENCES ref. submerchants,
profile_id BIGINT, rule_id BIGINT,
provider TEXT, mid TEXT, method TEXT, brand TEXT,
status TEXT, decline_code TEXT,
amount_original NUMERIC(18,6), currency_original TEXT,
amount_reporting NUMERIC(18,6), reporting_currency TEXT,
fx_reference_rate NUMERIC(18,10), fx_effective_rate NUMERIC(18,10),
authorized_at TIMESTAMP, captured_at TIMESTAMP, settled_at TIMESTAMP, funded_at TIMESTAMP,
user_id BIGINT, country_player TEXT, bin TEXT, three_ds_used BOOLEAN,
idempotency_key TEXT UNIQUE, meta JSONB
);
-- Phi and reserves for sub-merchant/provider/period
CREATE TABLE finance. settlement_fees (
sub_id BIGINT, provider TEXT, mid TEXT,
period_start TIMESTAMP, period_end TIMESTAMP,
interchange_amt NUMERIC, scheme_amt NUMERIC, markup_amt NUMERIC,
auth_amt NUMERIC, refund_amt NUMERIC, cb_amt NUMERIC, gateway_amt NUMERIC,
fx_spread_amt NUMERIC, reserve_delta NUMERIC, total_fees NUMERIC, currency TEXT
);
CREATE TABLE finance. reserve_ledger (
id BIGSERIAL PRIMARY KEY,
sub_id BIGINT, provider TEXT, mid TEXT,
hold_date DATE, release_due_date DATE,
hold_amount NUMERIC, released_amount NUMERIC,
cb_consumed NUMERIC, fines_consumed NUMERIC,
status TEXT, meta JSONB
);
-- Submerchant payments
CREATE TABLE payouts. submerchant_settlements (
sub_id BIGINT, period_start TIMESTAMP, period_end TIMESTAMP,
gross_sales NUMERIC, refunds NUMERIC, chargebacks NUMERIC,
fees_total NUMERIC, reserve_delta NUMERIC, revshare NUMERIC,
net_payable NUMERIC, currency TEXT, paid_at TIMESTAMP, statement_ref TEXT
);
10) SQL şablonları
10. 1. Submerchant üzrə effektiv qiymət
sql
SELECT t. sub_id,
SUM(t. amount_reporting) AS volume_rep,
SUM(f. total_fees) AS fees_rep,
100. 0 SUM(f. total_fees) / NULLIF(SUM(t. amount_reporting),0) AS take_rate_pct
FROM payments. transactions t
JOIN finance. settlement_fees f
ON f. sub_id=t. sub_id
AND t. settled_at BETWEEN f. period_start AND f. period_end
WHERE t. settled_at BETWEEN:from AND:to
GROUP BY 1
ORDER BY take_rate_pct DESC;
10. 2. Qaydalara görə kaskadın effektivliyi (AR/DR)
sql
SELECT r. profile_id, r. psp, r. mid,
COUNT() FILTER (WHERE t. status='APPROVED') AS approvals,
COUNT() FILTER (WHERE t. status='DECLINED') AS declines,
ROUND(100. 0 COUNT() FILTER (WHERE t. status='APPROVED') / NULLIF(COUNT(),0), 2) AS ar_pct
FROM payments. transactions t
JOIN ref. routing_rules r ON r. rule_id=t. rule_id
WHERE t. authorized_at BETWEEN:from AND:to
GROUP BY 1,2,3
ORDER BY ar_pct DESC;
10. 3. Submerchant üzrə ehtiyat balans
sql
SELECT sub_id,
SUM(hold_amount - released_amount - cb_consumed - fines_consumed) AS reserve_balance
FROM finance. reserve_ledger
WHERE hold_date <=:as_of
GROUP BY 1;
10. 4. Hesablama net payable submerchant
sql
SELECT s. sub_id,
SUM(s. gross_sales - s. refunds - s. chargebacks
- s. fees_total + s. reserve_delta - s. revshare) AS net_payable
FROM payouts. submerchant_settlements s
WHERE s. period_start >=:from AND s. period_end <:to
GROUP BY 1;
11) Daşbordlar və KPI
AR/DR: GEO/BIN/PSP metodu, 3DS payı, soft-decline paylaşımı.
Take-Rate% və submerchant fees komponent yığın.
Alt-MID-də CB Ratio/Refund Rate.
Reserve Balance & Release ETA submerchant/PSP.
Settlement SLA: T+N hit-rate, funding delays.
Payout Health: submerchant ödəmə tezliyi və məbləğləri, gecikmələr.
FX Slippage (effective vs reference).
12) Alertlər və eşiklər
Routing Degradation: qaydada AR> Y bps saat-saat düşməsi.
CB Spike: Çarjbeklərin böyüməsi submerchant> X bps w/w.
Reserve Imbalance: ehtiyat ledger uyğun deyil - P1.
Settlement Delay: PSP → avto-switch-də T + N pozuntusu.
Take-Rate Spike: qiymət artımı> eşik (fees və ya FX).
Policy Drift: profile/rule/idempotency - P1.
Payout Delay: submerchant üçün gecikmə> SLA.
13) Onbording və submerchants komplayens
KÜV/sanksiyalar/RER: sənəd paketləri, benefisiarlar, vəsait mənbələri.
PCI/təhlükəsizlik: tokenizasiya, submerchant PAN saxlamaq qadağan.
Geri qaytarma/bonus siyasəti: vahid standartlar, SLA biletləri.
Yığılmış hesabat: brendlər, geolar, metodlar üzrə ayrı-ayrılıqda.
Limitlər/kapplar: gündəlik/həftəlik dövriyyələr, payout-caps, yüksək risk üçün gecikmiş ödənişlər.
14) Best practices (qısa)
1. Routing profillərini versiya edin və explain-log həllərini saxlayın.
2. Sticky BIN və A/B PSP testlərini AR sabitliyi və qiyməti üçün saxlayın.
3. Mappite fees/FX/ehtiyat submerchant səviyyəsinə qədər; SLA ilə net-of-fees ödəyin.
4. Idempotency + retry-policy yalnız soft-decline; PSP limitlərinə riayət edin.
5. Deskriptorlar və alt-MIDs marka/geo üçün unikaldır: daha az mübahisə.
6. Release təqvimi və missed-release alertləri ilə ehtiyat ledger.
7. submerchant üçün şəffaf hesabatlar: fees deşifrə, reserve, FX, mübahisələr.
8. Failover playbook: PSP/koridorun düşməsi - ani reroute.
15) Giriş çek siyahısı
- 'submerchants', 'routing _ profiles', 'routing _ rules'.
- KYB/KYC/AML protokolları və status saxlama.
- idempotency və soft-decline-məntiq ilə router.
- PSP settlement fayllarının idxalı → 'settlement _ fees' + reserve-ledger.
- submerchants payouts mexanizmi + aktlar/statments.
- Daşbordlar AR/DR/CB/fees/reserve + alert.
- Sənədlər: mübahisə siyasəti, 3DS qaydaları, limitlər və SLA.
Xülasə
Submerchantlar miqyas və çeviklik, kaskadlar isə sabitlik, dönüşüm və idarə olunan dəyər verir. MID iyerarxiyası, versiyalaşdırıla bilən routing profilləri, şəffaf fees/ehtiyat uçotu və ciddi komplayans arxitekturası mürəkkəb multi-GEO ödəniş dövrünü proqnozlaşdırıla bilən sistemə çevirir: yüksək avtorizasiya, aşağı take-rate, sürətli ödənişlər və minimum risk sürprizləri.