Submerçantlar we kaskadlar
1) Düşünje binýady
Submerçant - baş söwdagär/üpjün ediji (PayFac/platforma/operator) arkaly tölegleri kabul edýän ýuridik şahs. Pul akymy platformanyň master-MID/hasabyna gidýär, soňra platforma submerçantany (split/sweep) töleýär.
Kaskad (cascading) - ygtyýarnamalary ýokarlandyrmak we bahany arzanlatmak üçin birnäçe PSP/ekweýerleriň/MID-iň (GEO, BIN, nyrh, töwekgelçilik, ýük) üsti bilen geleşigiň yzygiderli ýa-da paralel marşrutlanmagynyň strategiýasy.
"PayFac" modeli - "mini-satyn alyjy" hökmünde platforma: submerchant onbording (KYB/PCI), submid bellemek, KYC/AML we jedelleriň bitewi düzgünleri, merkezleşdirilen settlement we tölegler.
2) iGaming-de nirede we haçan gerek
Multibrand/white-label: bir operator, onlarça subbrend/studiýa → MIDs/deskriptorlary we hasabatlary saklamak has aňsat.
Mazmun bazary: platforma - MoR/PayFac, studiýalar - submerchantlar (revshare, split).
Ýokary töwekgelçilik/geo-garyndy: PSP boýunça kaskadlar şowsuzlyklary, hadysalar boýunça şoklary we tölegleriň bahasyny azaldýar.
Ýerli töleg usullary/koridorlary: uçuş üçin üpjün edijini saýlamak we fallback gerek.
3) Jogapkärçilik we rollar
4) MID we deskriptorlaryň iýerarhiýasy
Master MID (platforma)
─ Sub-MID (ler) markalar/geo/usullar boýunça
└─ Routing Profiles (PSP1→PSP2… kaskad)
Teklipler:- Submid-de aýry-aýry deskriptorlar: az jedel.
- Arassa analitika we ätiýaçlyk gözegçiligi üçin/A2A/ýerli submid usullaryny bölüň.
- A/B üçin ugrukdyryjy profilleri (v1/v2) wersiýa ediň
5) Kaskadlar: nädip gurmaly
5. 1. "Uçuş" çözgüdi
Ygtyýarnama berlende: düzgünlere laýyklykda ugry saýlamak (GEO, BIN/IIN, brand, debit/credit kartasy, töwekgelçilik synpy, PSP çägi, häzirki AR/DR, nyrh/FX, SLA hadysalary).
5. 2. Kaskad görnüşleri
Yzygiderli: PSP_A → (soft decline) → PSP_B → PSP_C.
Paralel (split-traffic): bençmarking we bezeg üçin dürli PSP-lere% traffik.
Sticky BIN: Iň oňat PSP üçin üstünlikli BIN-howuzy berkitmek.
5. 3. Çäklendirmeler
idempotency (capture goşmak üçin)
Gaýtalanýan synanyşyklary PSP bilen utgaşdyrmak (retry window, soft codes).
Her marşrutda 3DS syýasatyny we liability shift-i göz öňünde tutuň.
6) Settlement, T + N, ätiýaçlyklar we bölünmeler
Her PSP/satyn alyjynyň öz kesmek/T + N we öz rolling reserve bar.
Platforma girdejileri alt-MID derejesinde jemleýär we release-senenamasy bilen reserve-ledger ýöredýär.
Submerçantlara tölegler: net of fees & reserve + hasabat döwri boýunça olaryň paýy (revshare/CPA).
Geleşik boýunça bölünişikleri (platform/studio/affiliate/tax) ýa-da döwürden başlap saklaň.
7) Antifrod, 3DS we submerçant derejesindäki çäkler
Bazarlaryň A/B/C synplary üçin dürli skoring bosagalary.
BIN/geo/çek boýunça 3DS düzgünleri (ýüki/ýumşak/step-up).
"Velocity-limitleri" (kartlary girizmek/çykarmak synanyşyklary) we submerchant boýunça caps.
"Çal" submerçantlar: has berk çäkler, diňe ak usullar we gijikdirilen tölegler.
8) Nyrhlar we take-rate
PSP fees (interchange/scheme/markup/fixed) + FX slippage + platforma paýy + ätiýaçlyk effekti.
Kaskaddaky blended-bahany azaltmak üçin IC + we BIN-routing ulanyň.
9) Maglumatlar we iň pes 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 şablonlary
10. 1. Submerçant boýunça netijeli baha
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. Kadalara laýyklykda kaskadyň netijeliligi (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. Submerçant boýunça ätiýaçlyk-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. Submerchant üçin net payable hasaplama
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 we KPI
AR/DR kaskady boýunça: GEO/BIN/PSP usuly boýunça, 3DS paýy, soft-decline paýy.
Take-Rate% we submerchant fees komponentli yığını.
CB Ratio/Refund Rate submid.
Submerchantlar/PSP boýunça Reserve Balance & Release ETA.
Settlement SLA: T+N hit-rate, funding delays.
Töleg saglygy: submerçantlara tölegleriň ýygylygy we mukdary, gijikdirmeler.
FX Slippage kaskadlarda (effective vs reference).
12) Alertler we bosagalar
Routing Degradation: AR> Y bps sagada-sagada düşýär.
CB Spike: submerçantda çarjbekleriň ösüşi> X bps w/w.
Reserve Imbalance: ätiýaçlyk dolandyryjysy - P1.
Settlement Delay: kaskadda PSP → awto-switch-de T + N-iň bozulmagy.
Take-Rate Spike: bahanyň ýokarlanmagy> bosagasy (fees ýa-da FX).
Policy Drift: profile/rule/idempotency - P1.
"Payout Delay": submerchant tölegini gijikdirmek> SLA.
13) Onbording we submerçantlaryň utgaşmasy
CUV/sanksiýalar/PP: resminamalaryň bukjalary, benefisiarlar, serişdeleriň çeşmeleri.
PCI/howpsuzlyk: tokenizasiýa, PAN-y submerchantda saklamagy gadagan etmek.
Yzyna gaýtarmak/bonus syýasaty: ýeke-täk standartlar, SLA biletleri.
Jemlenen hasabat: markalar, geolar, usullar boýunça aýratynlykda.
Çäklendirmeler/kapplar: gündelik/hepdelik dolanyşyklar, payout-caps, ýokary töwekgelçilik üçin yza süýşürilen tölegler.
14) Iň oňat amallar (gysgaça)
1. Routing profillerini wersiýa ediň we explain-logini saklaň.
2. Sticky BIN we A/B PSP synaglaryny AR durnuklylygy we bahasy üçin saklaň.
3. Mappite fees/FX/ätiýaçlyk submerçant derejesine çenli; SLA boýunça net-of-fees töläň.
4. Idempotency + retry-policy diňe soft-decline; PSP çäklerini berjaý ediň.
5. Deskriptorlar we alt-MIDs - marka/geo üçin özboluşly: az jedel.
6. Release-senenamasy we missed-release alertleri bilen ätiýaçlyk ledjeri.
7. Submerchant üçin aç-açan hasabatlar: fees, reserve, FX, jedel.
8. Failover playbook: PSP/koridoryň ýykylmagy - derrew reroute.
15) Girizmegiň çek-sanawy
- Gollanmalar 'submerchants', 'routing _ profiles', 'routing _ rules'.
- KYB/KYC/AML protokollary we statuslary saklamak.
- Idempotency we soft-decline-logika bilen marşrutizator.
- PSP settlement faýllaryny import etmek → 'settlement _ fees' + reserve-ledger.
- Submerchantam üçin töleg mehanizmi + aktlar/statmentler.
- Daşbordlar AR/DR/CB/fees/reserve + alert.
- Resminamalar: jedeller syýasaty, 3DS düzgünleri, çäkleri we SLA.
Gysgaça maglumat
Submerçantlar masştab we çeýeligi, kaskadlar bolsa durnuklylygy, öwrülişigi we dolandyrylýan gymmaty berýär. MID-leriň iýerarhiýasyndan, dolandyrylýan profillerden, fees/ätiýaçlyklary aç-açan hasaba almakdan we berk laýyklykdan arhitektura çylşyrymly multi-GEO töleg konturyny öňünden aýdyp boljak sistema öwürýär: ýokary ygtyýarlylyk, pes take-rate, çalt tölegler we töwekgelçilikler boýunça garaşylmadyk ýagdaýlar.