Субмерчанттар мен каскадтар
1) Ұғымдық база
Субмерчант - бас мерчант/провайдер (PayFac/платформа/оператор) арқылы төлемдерді қабылдайтын заңды тұлға. Ақша ағындары платформаның мастер-MID/шотына барады, одан кейін платформа субмерчантқа (split/sweep) төлейді.
Каскад (cascading) - авторизацияларды арттыру және құнын төмендету үшін ережелер (GEO, BIN, тариф, тәуекел, жүктеме) бойынша бірнеше PSP/эквайерлер/MID арқылы транзакцияның тізбекті немесе параллельді роутингінің стратегиясы.
PayFac-моделі - «шағын эквайер» ретінде платформа: субмерчанттың онбордингі (KYB/PCI), суб-MID беру, KYC/AML және пікірталастардың бірыңғай ережелері, орталықтандырылған settlement және төлемдер.
2) Ол iGaming қажет қайда және қашан
Мультибренд/white-label: бір оператор, ондаған суббрендтер/студиялар → MIDs/дескрипторларды және есептілікті жүргізу оңай.
Контент базары: платформа - MoR/PayFac, студиялар - субмерчанттар (revshare, сплиттер).
Жоғары тәуекел/гео-микс: PSP бойынша каскадтар істен шығуларды, инциденттер бойынша шоктарды және төлемдердің құнын азайтады.
Жергілікті төлем әдістері/дәліздері: ұшуда провайдерді таңдау және fallback қажет.
3) Жауапкершілік және рөлдер
4) MID және дескрипторлар иерархиясы
Master MID (платформа)
─ Sub-MID (тер) брендтер/гео/әдістер бойынша
└─ Routing Profiles (PSP1→PSP2… каскад)
Ұсынымдар:- Суб-MID-дегі жеке дескрипторлар: диспуттардан аз.
- Таза талдау және резервті бақылау үшін/A2A/жергілікті суб-MID әдістерін бөліңіз.
- A/B үшін routing профильдерін (v1/v2) нұсқалаңыз
5) Каскадтар: қалай салу керек
5. 1. «Ұшу» шешімі
Авторизациялау кезінде: қағидалар бойынша маршрут таңдау (GEO, BIN/IIN, brand, debit/credit картасы, тәуекел-класс, PSP лимиті, ағымдағы AR/DR, тариф/FX, инциденттердің SLA).
5. 2. Каскадтардың түрлері
Тізбекті: PSP_A → (soft decline) → PSP_B → PSP_C.
Параллель (split-traffic): бенчмаркинг және декорреляция үшін әртүрлі PSP трафигі%.
Sticky BIN: үздік PSP үшін табысты BIN-пулды бекіту.
5. 3. Шектеулер
idempotency деп санау (capture екі еселенбес үшін).
Қайталау әрекеттерін PSP-мен келісу (retry window, soft codes).
Әр бағытта 3DS саясаты мен liability shift ескерілсін.
6) Settlement, T + N, резервтер мен сплиттер
Әрбір PSP/эквайердің өзінің cut-off/T + N және өзінің rolling reserve бар.
Платформа түсімдерді суб-MID деңгейінде біріктіреді және release-күнтізбесі бар reserve-ledger жүргізеді.
Субмерчанттарға төлемдер: net of fees & reserve + есепті кезең бойынша олардың үлесі (revshare/CPA).
Транзакция бойынша (platform/studio/affiliate/tax) немесе кезең бойынша баптар бойынша сплиттерді қолдаңыз.
7) Антифрод, 3DS және субмерчант деңгейіндегі лимиттер
Нарықтардың A/B/C кластары үшін әртүрлі скоринг-шекті.
BIN/гео/чек бойынша 3DS-ережелер (жүктеме/жұмсақ/step-up).
Velocity-лимиттер (енгізулер/қорытындылар, карталар әрекеті) және субмерчант бойынша caps.
«Сұр» субмерчанттар: қатаң лимиттер, тек ақ әдістер мен кейінге қалдырылған төлемдер.
8) Тарифтер және take-rate
PSP fees (interchange/scheme/markup/fixed) + FX slippage + платформа үлесі + резерв-эффект субмерчанты бойынша effective take-rate деп есептеңіз.
Каскадтағы blended құнын төмендету үшін IC++ және BIN-routing пайдаланыңыз.
9) Деректер және ең аз модель
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 үлгілері
10. 1. Қосалқы мердігер бойынша тиімді құн
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. Қағидалар бойынша каскадтың тиімділігі (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. Қосалқы мердігер бойынша резерв-баланс
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. net payable субмерчантын есептеу
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) Дашбордтар және KPI
AR/DR каскады бойынша: GEO/BIN/PSP әдісі бойынша, 3DS үлесі, soft-decline share.
Take-Rate% және қосалқы мердігер бойынша fees компоненттік стек.
CB Ratio/Refund Rate суб-MID.
Субмерчанттар/PSP бойынша Reserve Balance & Release ETA.
Settlement SLA: T+N hit-rate, funding delays.
Payout Health: субмерчанттарға төлемдердің жиілігі мен сомасы, кідірістер.
Каскадтардағы FX Slippage (effective vs reference).
12) Алерттар мен табалдырықтар
Routing Degradation: ережеде AR> Y bps сағат-сағат.
CB Spike: субмерчанттағы шарджбектердің өсуі> X bps w/w.
Reserve Imbalance: резерв леджері жоқ - P1.
Settlement Delay: каскадта PSP → авто-switch-те T + N бұзылуы.
Take-Rate Spike: бағаның өсуі> шегі (fees немесе FX).
Policy Drift: profile/rule/idempotency - P1 байланыстырылмаған транзакциялар.
Payout Delay: субмерчантқа төлемді кешіктіру> SLA.
13) Субмерчанттардың онбордингі және комплаенс
ЕАВ/санкциялар/ТӨ: құжаттар пакеті, бенефициарлар, қаражат көздері.
PCI/қауіпсіздік: субмерчанттың PAN-ын токендеу, сақтауға тыйым салу.
Қайтарымдар/бонустар саясаты: бірыңғай стандарттар, SLA тикеттер.
Агрегатталған есептілік: брендтер, геоәдістер бойынша бөлек.
Лимиттер/каппалар: күндізгі/апталық айналымдар, payout-caps, high-risk үшін кейінге қалдырылған төлемдер.
14) Best practices (қысқаша)
1. routing профильдерін нұсқалаңыз және explain-logs шешімдерін сақтаңыз.
2. AR тұрақтылығы мен бағасы үшін sticky BIN және A/B PSP тесттерін ұстаңыз.
3. Маппите fees/FX/резерві субмерчант деңгейіне дейін; SLA бойынша net-of-fees төлеңіз.
4. Idempotency + retry-policy тек soft-decline бойынша; PSP лимиттерін сақтаңыз.
5. Дескрипторлар мен суб-MIDs - бренд/гео үшін бірегей: пікірталастар аз.
6. Release-күнтізбесі және missed-release алерті бар резерв леджері.
7. Субмерчанттың мөлдір есептері: fees, reserve, FX, пікірталастардың мағынасын ашу.
8. Failover-playbook: PSP/дәліздің құлауы - жедел reroute.
15) Енгізу чек-парағы
- 'submerchants', 'routing _ profiles', 'routing _ rules' анықтамалықтары.
- KYB/KYC/AML хаттамалары және мәртебелерді сақтау.
- idempotency және soft-decline-логикасы бар маршрутизатор.
- PSP settlement файлдарын импорттау → 'settlement _ fees' + reserve-ledger.
- Субмерчанттарға арналған payouts тетігі + актілер/стейтменттер.
- AR/DR/CB/fees/reserve + алерт дашбордтары.
- Құжаттар: пікірталас саясаты, 3DS-ережелер, лимиттер және SLA.
Түйіндеме
Субмерчанттар ауқым мен икемділікті, ал каскадтар - тұрақтылықты, конверсияны және басқарылатын құнды береді. MIDs иерархиясынан, нұсқаланатын routing-профильдерден, fees/резервтердің мөлдір есебі мен қатаң комплаенстен сәулет күрделі multi-GEO төлем контурын болжамды жүйеге айналдырады: жоғары авторизация, төмен take-rate, жылдам төлемдер және тәуекелдер бойынша ең аз тосын сый.