GH GambleHub

Структура комиссий: MDR, scheme, PSP

1) Карта понятий и из чего складывается MDR

MDR (Merchant Discount Rate) — совокупная стоимость приема платежей, обычно выраженная в % от оборота + фикс. сбор за транзакцию. Классический стек для карт:

1. Interchange (банк-эмитенту): процент по типу карты/региона/категории.

2. Scheme fees (платежные системы): assessment, processing, cross-border, brand usage и т. п.

3. Acquirer/PSP markup: надбавка эквайрера/провайдера (процент + фикс).

4. Доп. сборы: chargeback fee, refund fee, representment, retrieval, auth-fee, gateway-fee, rolling reserve (не комиссия, но влияет на кэш-флоу), FX-спред при конверсии.

Итоговая стоимость для мерчанта = Interchange + Scheme + Markup + Фиксированные сборы + FX-эффекты ± Резерв.

2) Модели ценообразования

2.1. Blended (flat)

Один процент + фикс. сбор “все включено”. Просто, но непрозрачно: скрывает interchange/ scheme и FX-спред.

2.2. IC++ (Interchange++ / Interchange pass-through)

Interchange и scheme идут «как есть», сверху — фиксированный markup провайдера. Прозрачно, легче сверять, выгодно при «дешевом» портфеле карт.

2.3. Tiered/Pricing buckets

Несколько «корзин» (domestic, intra-EEA, inter-regional, commercial, premium). Удобно для отчетности, может маскировать реальную себестоимость.

2.4. Альтернативные методы (A2A/Wallet/Крипто)

Чаще flat-fee или % ниже карт; отдельные сборы сети/провайдера и FX-эффект при конвертации.

3) Где и когда возникает комиссия

Auth/Validation: плата за попытку авторизации (усп./неусп.).
Capture/Settle: основная доля MDR.
Refund/Partial refund: возвраты часто тарифицируются отдельно (+ перерасчет scheme).
Chargeback/Representment: фикс. сборы за кейс/этап.
Gateway/Platform: ежемесячная абонплата, fee за вебхуки, отчетность, токенизацию карт.
FX/Conversion: implicit-маржа PSP/банка (спред), если конвертация на их стороне.
Календарные: minimum monthly fee, early termination, PCI-плата, 3DS-fee, fraud-suite fee.

4) Надбавки и корректоры тарифов

Cross-border (эмитент ≠ эквайрер страна), CNP (card-not-present), premium/commercial карты.
High-risk verticals (iGaming) — повышенные markup/резерв.
Схемные штрафы/пороговые метрики: превышение CBR → дополнительные сборы.
SCA/3DS: отдельный fee за транзакцию/попытку.
Minimum ticket/Small ticket: повышенные фикс. сборы при маленьких чеках.

5) Gross vs Net settlement и «куда ушли проценты»

Gross settlement: вал поступает на расчет с PSP, комиссии снимаются отдельной строкой (легче сверять).
Net settlement: приходят net funding = оборот − interchange − scheme − markup − фикс. сборы − резерв.
В net-сценариях критично импортировать разбивку компонент, иначе take-rate «прыгает».

6) Формулы и «эффективные» метрики

6.1. Effective take-rate (по методу/PSP)


take_rate_effective_% = (Σ Fees_all_components) / (Σ Captured_Gross) 100

6.2. Разложение на компоненты


Fees_all = Interchange + Scheme + Markup + Auth + Refund + Chargeback + Gateway
+ FX_spread_effect (if applicable)

6.3. Стоимость отказов (Decline cost)


Cost_per_approval = (Σ Auth_Fees + Σ Decline_Fees )/( Number of successful payments)

6.4. Impact FX


FX_slippage = Σ (Settlement_amount_in_rep - Original_amount FX_reference_rate)

6.5. Стоимость чарджбеков


CB_cost_total = Σ (CB_fee + Representment_fee + Scheme_penalties) + Lost_principal (если не отбит)

7) Модель данных (упрощенно)


ref. fee_components (
code PK, name, category, -- INTERCHANGE      SCHEME      MARKUP      AUTH      REFUND      CHARGEBACK      GATEWAY      FX_SPREAD unit,          -- PCT      FIX      MIXED is_variable, is_settlement_level
)

finance. psp_pricing (
provider, method, region, bin_range, card_type, card_category,
model,      -- BLENDED      IC++     TIERED pct_rate, --% rate (if applicable)
fix_fee,     -- фикс за trx cross_border_bps, premium_bps, cnp_bps,
refund_fix, cb_fix, auth_fix, gateway_monthly,
valid_from, valid_to, meta
)

finance. settlement_fees (
batch_id, provider, mid, method, period_start_at, period_end_at,
interchange_amt, scheme_amt, markup_amt,
auth_amt, refund_amt, cb_amt, gateway_amt,
fx_spread_amt, reserve_delta, total_fees, currency
)

dw. transactions_flat (
tx_id, provider, method, status, bin, brand, category, region,
amount_original, currency_original, amount_reporting, reporting_currency,
settled_at, funded_at, is_refund, is_cb, fx_reference_rate, fx_effective_rate, meta
)

8) Сверка: от транзакций к файлу и обратно

8.1. Tx → File (проверяем, что насчитали «как в файле»)

Аггрегируйте оборот по корзинам (BIN/регион/тип карты) × правилам pricing.
Примените ставки interchange/scheme/markup/фикс.
Сверьте с `settlement_fees.total_fees` по batch. Дельта > порога → тикет.

8.2. File → Tx (проверяем, что в файле нет «лишнего»)

Распределите batch-fee пропорционально обороту/кол-ву транзакций до уровня tx (при blended/нет детализации).
Обнаружьте неожиданные позиции (extra fee line, penalty, minimum monthly top-up).

9) Примеры SQL-шаблонов

9.1. Расчет effective take-rate по методам/PSP

sql
SELECT provider, method,
SUM(amount_reporting)              AS volume_rep,
SUM(f. interchange_amt + f. scheme_amt + f. markup_amt +
f. auth_amt + f. refund_amt + f. cb_amt + f. gateway_amt + f. fx_spread_amt) AS fees_rep,
100. 0 SUM(f. interchange_amt + f. scheme_amt + f. markup_amt +
f. auth_amt + f. refund_amt + f. cb_amt + f. gateway_amt + f. fx_spread_amt)
/ NULLIF(SUM(amount_reporting),0)     AS take_rate_effective_pct
FROM dw. transactions_flat t
JOIN finance. settlement_fees f
ON f. provider = t. provider
AND t. settled_at BETWEEN f. period_start_at AND f. period_end_at
GROUP BY 1,2
ORDER BY take_rate_effective_pct DESC;

9.2. Перераспределение batch-fee на транзакции (blended)

sql
WITH vol AS (
SELECT provider, batch_id, SUM(amount_reporting) AS batch_volume
FROM dw. transactions_flat
GROUP BY 1,2
)
SELECT t. tx_id, t. provider, t. batch_id,
(f. total_fees t. amount_reporting / NULLIF(v. batch_volume,0)) AS fee_allocated
FROM dw. transactions_flat t
JOIN finance. settlement_fees f USING (provider, batch_id)
JOIN vol v USING (provider, batch_id);

9.3. Стоимость отказов и стоимость одобрения

sql
SELECT provider, method,
SUM(CASE WHEN status='DECLINED' THEN auth_fee ELSE 0 END) AS decline_cost,
SUM(CASE WHEN status='APPROVED' THEN auth_fee ELSE 0 END) AS approval_auth_cost,
COUNT() FILTER (WHERE status='APPROVED') AS approvals,
(SUM(auth_fee) / NULLIF(COUNT() FILTER (WHERE status='APPROVED'),0)) AS cost_per_approval
FROM dw. auth_events;

9.4. Выделение FX-спреда (если есть effective rate)

sql
SELECT provider, DATE(settled_at) AS d,
SUM((fx_effective_rate - fx_reference_rate) amount_original) AS fx_slippage_rep
FROM dw. transactions_flat
WHERE fx_effective_rate IS NOT NULL
GROUP BY 1,2;

10) KPI и дашборды

Effective Take-Rate % по PSP/методу/MID/стране.
Компонентный стэк: Interchange %, Scheme %, Markup %, Fixed per trx.
Cost-per-Approval и Decline-burden (сколько обходятся отказы).
FX Slippage (bps и в валюте отчета).
Refund/CB Cost на 1000 транзакций.
Penalty/Minimum-monthly инциденты.
Reserve as % of GMV (для понимания влияния на кэш-флоу).

11) Алерты и пороги

Take-rate spike: рост > X bps d/d или > Y bps w/w.
Scheme delta: расхождение рассчитанных scheme-fees с файлом > 0.3–0.5%.
FX slippage: > 80 bps для мажоров или > 150 bps для миноров.
Decline cost surge: всплеск стоимости одобрения при снижении AR.
Unmapped fee line: новая строка в файле без маппинга компонента.
Minimum monthly shortfall: недобор оборота до минималки (впереди доплата).

12) Переговоры и снижение стоимости

1. Перейти на IC++, если портфель благоприятный (domestic, consumer debit).
2. BIN-routing/Smart-routing: разбивайте потоки по гео/типу карт к «дешевым» эквайрерам.
3. A2A/Open Banking/Local methods для снижения доли дорогих карт.
4. Tiered volume discounts: зафиксировать пороги и ревью ежеквартально.
5. Cap на fixed-fees для micro-ticket сегментов.
6. Transparent FX: reference-rate + фиксированный spread_bps, отчеты по effective FX.
7. Penalty shields: оговорить лимиты/условия scheme-штрафов и их доказательную базу.
8. Отдельные MIDs для high-risk/low-risk портфелей — не «заражать» тарифы.
9. Performance-clauses: SLA по авторизациям/3DS, иначе — снижение markup.

13) Edge-cases

Fan-out авторизаций (повторные попытки) → auth-fees взлетают. Включить rate-limit/soft-decline-стратегии.
Partial capture: схемные расчеты пересчитываются; важно правильно аггрегировать.
Ex-post repricing: задним числом провайдер пересчитал fees — хранить версии файлов и ревизии batch.
Refunds позже cutoff: попали в следующий цикл — скорректировать отчеты.
Карты корпоративные/premium: следите за долей — «вытягивает» средний interchange.

14) Best practices (коротко)

1. Движок расчета fees на вашей стороне + маппинг всех линий файла к компонентам.
2. IC++ и прозрачный FX там, где это выгодно; blended — только при реальной скидке.
3. Smart-routing по BIN/гео/типу карты; A/B-тесты PSP.
4. Раздельный учет фиксированных сборов и процента; не смешивать с FX-прибылью/убытком.
5. Версионирование pricing и файлов; детерминированный reprocess.
6. Еженедельные «variance-reports» по take-rate компонентам.
7. Переговоры раз в квартал с пакетом метрик: CBR, 3DS pass-rate, AR, fraud-rate, share of domestic.

15) Чек-лист внедрения

  • Справочник `fee_components` и `psp_pricing` с версиями и периодами действия.
  • Импорт `settlement_fees` с детализацией Interchange/Scheme/Markup/Fixed.
  • ETL расчета нашей версии fee по tx и сверка с файлом.
  • Дашборды take-rate и компонентного стэка.
  • Алерты: spike, mismatch, FX slippage, minimum monthly.
  • Процедуры переговоров: ежеквартальная ревизия и roadmap по снижению.

Резюме

MDR — это не «один процент», а набор слоев: interchange, scheme, markup, фикс-платы и FX. Прозрачная модель данных, собственный расчет «эталонных» комиссий, регулярная сверка с файлами PSP и осмысленная маршрутизация платежей превращают стоимость приема в управляемый KPI. С такой дисциплиной вы видите реальный take-rate, находите «утечки» в FX и фикс-сборах и уверенно снижаете TCO платежей.

Contact

Свяжитесь с нами

Обращайтесь по любым вопросам или за поддержкой.Мы всегда готовы помочь!

Начать интеграцию

Email — обязателен. Telegram или WhatsApp — по желанию.

Ваше имя необязательно
Email необязательно
Тема необязательно
Сообщение необязательно
Telegram необязательно
@
Если укажете Telegram — мы ответим и там, в дополнение к Email.
WhatsApp необязательно
Формат: +код страны и номер (например, +380XXXXXXXXX).

Нажимая кнопку, вы соглашаетесь на обработку данных.