Сеттлмент циклдері және cut-off
1) Ұғымдық база
Settlement (сеттлмент) - PSP/Acquirer мен мерчант (оператор) арасындағы есеп айырысу, ол кезде табысты алынған транзакциялар бойынша ақша мерчанттық шотқа аударылады.
Cut-off - нақты есеп айырысу циклына түсетін операциялардың күнделікті «кесіндісі» (әдетте провайдердің таймзонында тіркелген уақыт).
T + N - қаражатты таратуды кідіртудің үлгілік нотациясы: T - cut-off күні, N - нақты есепке алынғанға дейінгі жұмыс күндерінің саны.
- Карталар (Visa/Mastercard): көбінесе T + 2/T + 3 banking days, cut-off 23:00 UTC (шамамен).
- A2A/Open Banking: T + 0-ден T + 1-ге дейін.
- SEPA Credit Transfer: T+1/T+2 (Instant — T+0).
- ACH (US): T+2/T+3; Same Day ACH — T+0/T+1.
- RTP (US): T + 0, бірақ есептер бойынша cut-off болуы мүмкін.
- Крипто: іс жүзінде T + 0 желі бойынша, бірақ PSP меншікті қаржы терезелерін қолдана алады (T + 0/1).
2) cut-off қалай жұмыс істейді және оған не түседі
1. Провайдер жинау терезесін белгілейді (мысалы, 00: 00-23: 00 UTC).
2. Осы терезедегі барлық settled/captured транзакциялар бумаға (batch) түседі.
3. Пакетке қайтарулар, чарджбектер, gross және net funding есептеу үшін түзетулер біріктіріледі.
4. cut-off басталғаннан кейін settlement file қалыптастырылады және есептелгенге дейін T + N таймері басталады.
Маңызды: capture жоқ авторизация пакетке түспейді. Күші жойылған қорытындылар да жоқ.
3) Есеп айырысу түрлері: gross vs net, резервтер мен комиссиялар
Gross settlement - capture жалпы сомасы аударылады (минус комиссияларды жеке есептен шығару).
Net settlement - провайдер fees, chargebacks, refunds, rolling reserve ұстайды және net amount санайды.
Rolling reserve - тәуекелді жабу үшін N күндегі айналымның% -ын ұстап қалу (мысалы, 180 күнге 10%).
Negative carry-over - егер «нетто» бір күнде минус болса, тапшылық келесі циклдармен ауыстырылады және өтеледі.
Ұсыным: екі жазықтықтың да шифрын ашу - operational gross (транзакциялар бойынша) және funding net (провайдердің файлдары бойынша).
4) Таймзондтар, жергілікті демалыс және DST
Cut-off провайдердің таймзонымен анықталады, ол сіздікінен ерекшеленуі мүмкін.
DST (жазғы уақытқа ауысу) ескеріңіз - кесінділер жергілікті уақытқа қатысты ± 1 сағатқа жылжытылуы мүмкін.
Алушы банктің юрисдикциясындағы мерекелер/демалыс күндерi N в T + N-ге әсер етедi (мысалы, T + 2 banking days мерекелер төңiрегiнде T + 4-ке айналады).
Практика: UTC-дегі барлық техникалық уақытты қалыпқа келтіріңіз, сонымен қатар 'provider _ tz _ cutoff _ at' және 'local _ tz _ posted _ at' сақтаңыз.
5) Settlement calendar (funding calendar) және SLA
Тоқсанға арналған кестелер күнтізбесін жасаңыз:- әрбір әдіс/PSP үшін cut-off уақыты және tz,
- стандартты T + N және ерекшеліктер (мерекелер),
- күтілетін сомалар (болжамдар),
- SLA алу: мысалы, «T + 2 күні 12:00 Europe/Kyiv кешіктірмей».
SLA → алерт және Ops/Finance-тегі кез келген ауытқулар.
6) Net Deposits және қорытындылармен өзара байланыс
ND (таза енгізу) settled транзакциялар бойынша есептеледі (байланысты бапты қараңыз).
Қорытындылар (withdrawals) депозиттер бойынша PSP-нің funding-ке қатыспайды, бірақ мерчанттың кассасына әсер етеді.
Өтімділікті жоспарлау: сеттлмент бойынша inflow минус төлемдер/салықтар/операциялық шығыстар бойынша outflow.
7) Салыстыру (reconciliation) және провайдерлердің артефактілері
Әрбір партия үшін ең аз жиынтық (batch):- 'batch _ id/ settlement_id', tz провайдерінде cut-off күні,
- суммы по типам: `captured_deposits`, `refunds`, `chargeback_debits`, `chargeback_credits`, `fees`, `reserve_delta`, `net_funding`,
- ('MID', 'descriptor', 'MCC'),
- транзакциялардың референциялары ('provider _ tx _ id', 'rrn', 'arn' - егер карталар болса),
- CSV/XML/JSON + адам оқитын statement (PDF/HTML).
1. Транзакциялардан файлдарға (біз санағанның бәрі файлға кірді ме?)
2. Файлдардан транзакцияларға дейін (файлдағы барлық нәрсе біздің витринада бар ма? мәртебелері сәйкес келеді ме?)
8) Төлем рельстері бойынша ерекшелік (жалпы сипатта)
Карталар: жиі сценарийлер presentment delay; кеш «chargeback» болуы мүмкін (кейс бойынша 120-540 күнге дейін); interchange & scheme fees файлдарда пайда болады, ND шегерілмейді.
SEPA/ACH: батчилер банк терезелеріне байланысты; күшін жою/қайтарудың өз кодтары бар; Same Day нұсқалары - жеке cut-off.
Open Banking/A2A: T + 0/1, бірақ файлдар post-factum болуы мүмкін; матчтар үшін қатаң RPP/Unique ID қажеттілігі.
RTP/Instant: ақша жылдам келеді, бірақ есеп беру файлы - кесте бойынша.
Крипто: ончейн-сетлмент жылдам, бірақ провайдер жасайды 'payout windows'; 'fx _ at _ settle' сақталсын.
9) Есепке алу, жүргізу және есептілік (FI/Accounting)
9. 1. Аккруал vs кэш әдісі
Басқарушылық есептілік үшін көбінесе аккруал қолданылады: «settled _ at» сәтіндегі түсімді/қозғалысты танимыз.
Қазынашылық/ДДС үшін - кэш-әдіс: 'funded _ at' түсу фактісі бойынша танимыз.
9. 2. Типтік сымдар (оңайлатылған)
'DEPOSIT _ CAPTURED' кезінде:- Дт: PSP-мен есеп айырысудағы ақша қаражаты (AR: PSP)
- Кт: Ойыншы алдындағы міндеттемелер (әмиян/ойыншының балансы)
- Дт: Банк (мерчант кассасы)
- Кт: PSP-мен есеп айырысудағы ақша қаражаты
- Дт: Шығыстар (PSP fees), Дт/Кт: Резервтер (егер өзгерсе)
Іздеу үшін 'transaction _ id → batch_id → funding_id' бумасын сақтаңыз.
10) Тәуекел-менеджмент және тәуекелдер
Missed file: X: YY - P1 дейінгі settlement файлы жоқ.
Funding delay: T + N мерзімі өтіп кетті, ақша жоқ - P1.
Delta thresholds: сәйкессіздік 'our _ gross' vs 'file _ gross'> 0. 5% - P2; 'fees' диапазонынан тыс - P2.
Negative carry-over: теріс нетто-пакеттер сериясы - тергеу.
Holiday impact: күнтізбені есепке ала отырып, автоматты болжам; егер факт <80% болжам - тикет.
11) Деректер моделі (оңайлатылған)
finance. payment_transactions (
id, user_id, method, provider, mid, mcc,
type, status, amount_original, currency_original,
amount_reporting, reporting_currency, fx_rate_at_settle,
authorized_at, captured_at, settled_at,
provider_tx_id, arn, rrn, meta
)
finance. settlement_batches (
batch_id, provider, mid, method,
provider_cutoff_at, provider_tz,
period_start_at, period_end_at,
gross_captured, refunds, cb_debits, cb_credits,
fees, reserve_delta, net_funding_expected,
file_name, file_hash, file_type, meta
)
finance. funding_receipts (
funding_id, provider, bank_account,
received_at, value_date,
currency, amount_received,
batch_id, statement_ref, meta
)
-- Binding showcase:
finance. recon_links (
id, transaction_id, batch_id, funding_id, link_type, created_at
)
12) SQL үлгілерінің үлгілері
12. 1. cut-off бойынша «кесуді» тіркеу
sql
INSERT INTO finance. settlement_batches (
batch_id, provider, mid, method,
provider_cutoff_at, provider_tz,
period_start_at, period_end_at,
gross_captured, refunds, cb_debits, cb_credits,
fees, reserve_delta, net_funding_expected,
file_name, file_hash, file_type, meta
)
VALUES (:batch_id,:provider,:mid,:method,
:cutoff_at,:tz,
:start_at,:end_at,
:gross,:refunds,:cb_deb,:cb_cr,
:fees,:reserve_delta,:net_expected,
:file_name,:file_hash,:file_type,:meta::jsonb);
12. 2. «транзакциядан файлға» салыстыру
sql
WITH tx AS (
SELECT provider, mid, method,
SUM(CASE WHEN type='DEPOSIT' AND status IN ('CAPTURED','SETTLED') THEN amount_reporting ELSE 0 END) AS gross,
SUM(CASE WHEN type='REFUND' AND status='SETTLED' THEN amount_reporting ELSE 0 END) AS refunds,
SUM(CASE WHEN type='CHARGEBACK_DEBIT' AND status='SETTLED' THEN amount_reporting ELSE 0 END) AS cb_deb,
SUM(CASE WHEN type='CHARGEBACK_CREDIT' AND status='SETTLED' THEN amount_reporting ELSE 0 END) AS cb_cr
FROM finance. payment_transactions
WHERE settled_at >=:start_at AND settled_at <:end_at
GROUP BY 1,2,3
)
SELECT b. batch_id, b. provider, b. mid, b. method,
tx. gross AS our_gross, b. gross_captured AS file_gross,
tx. refunds AS our_refunds, b. refunds AS file_refunds,
tx. cb_deb AS our_cb_deb, b. cb_debits AS file_cb_deb,
tx. cb_cr AS our_cb_cr, b. cb_credits AS file_cb_cr
FROM finance. settlement_batches b
LEFT JOIN tx
ON tx. provider=b. provider AND tx. mid=b. mid AND tx. method=b. method
WHERE b. provider_cutoff_at BETWEEN:cutoff_from AND:cutoff_to;
12. 3. Түсімдер болжамы (cash-flow T + N)
sql
SELECT provider, mid, method,
DATE(provider_cutoff_at) AS t_date,
net_funding_expected,
CASE
WHEN EXTRACT (DOW FROM provider_cutoff_at)::int IN (5,6) THEN provider_cutoff_at + INTERVAL '3day' -- conditional example
ELSE provider_cutoff_at + INTERVAL '2 day'
END AS expected_funding_at
FROM finance. settlement_batches
WHERE provider_cutoff_at BETWEEN:from AND:to;
13) Процестер және SLO
SLO 1: импорт settlement-файлдар - T + 0, дейін 08:00 Europe/Kyiv.
SLO 2: бастапқы салыстыру - 09: 00-ге дейін, алерттар айырмашылықтар бойынша> 0. 5%.
SLO 3: cash-flow болжамын жаңарту - 10:00 дейін.
SLO 4: күннің жабылуы - барлық funding-матчтар DWH-де басталды.
14) Edge-cases және оларды қалай өңдеу керек
Late presentment: транзакция келесі batch-ке түсті - «дереккөзді» сақтаңыз ('presented _ in _ batch _ id').
Partial capture: бір авторизацияға бірнеше capture - batch-ке дұрыс біріктіріңіз.
Multi-MID: бір провайдер, гео/брендтер бойынша әртүрлі MIDs - бір партияда араластыруға болмайды.
Reprocessing: 'batch _ revision' нұсқасын және толық қайта салыстыру.
FX-секірістер: курстар - 'settled _ at'; басқа валютадағы funding - 'fx _ at _ funding' және дельтаны ашыңыз.
15) Дашбордтар және KPI
Funding ETA: күтілетін түсу күні/уақыты vs факт.
Hit-rate SLA: уақытында келген файлдардың үлесі.
Delta gross/net провайдерлер, әдістер, MIDs бойынша.
Fees % of volume, Reserve balance, Negative carry-over streak.
Holiday impact: болжам vs мереке апталары бойынша факт.
16) Best practices (қысқаша)
1. UTC уақытын қалыпқа келтіріңіз, бірақ provider_tz cut-off сақтаңыз.
2. operational gross және funding net; ND мен funding-ті шатастырмаңыз.
3. Банктер бойынша алдын ала енгізілген мерекелермен funding calendar енгізіңіз.
4. Settlement файлдарын + SLA/дельтаға импорттауды және салыстырып тексеруді автоматтандырыңыз.
5. Партияларды нұсқалауды ('batch _ revision') және анықталған reprocess іске асырыңыз.
6. single source of truth: linkler 'transaction, batch, funding' енгізіңіз.
7. ARN/RRN және карталарға арналған эквайрингтік өрістерді сақтаңыз - пікірталастар үшін өте маңызды.
8. Демалыс/мереке күндерін, резервтер мен комиссияларды ескере отырып, cash-flow болжаңыз.
17) Енгізу чек-парақтары
Деректер мен схемалар
- Таблицы `payment_transactions`, `settlement_batches`, `funding_receipts`, `recon_links`.
- Таймзон өрістері: UTC + provider_tz.
- Поля FX: `fx_rate_at_settle`, `fx_at_funding`.
Импорт және валидация
- CSV/XML/JSON + хэш парсерлері.
- Сомаларды/валюталарды/күндерді валидациялау; match по `provider_tx_id/ARN`.
- «late presentment», «partial capture», «reversal» хендлерлері.
Операциялар мен тәуекелдер
- SLA-монитор cut-off, missed files, funding delays.
- Delta-шекті алерталар (gross, fees, net).
- Holiday impact және negative carry-over бойынша есеп.
18) FAQ
Q: Неге T + 2 T + 4 болды?
А: Корреспондент банкте немесе алушы банкте демалыс/мереке болды; см. funding calendar.
Q: Net файлында біздің net есебінен аз. Не көруге болады?
A: fees тексеріңіз, reserve_delta, кеш refund/chargeback, және курстардың дұрыстығы.
Q: Крипта қалай ескеріледі?
А: 'settled _ at' фиаттық баламасы бойынша; funding USDT/фиатқа келе алады - жеке 'fx _ at _ funding' сақтаңыз.
Q: Барлық провайдерлер үшін ортақ бір cut-off бола ма?
А: Жоқ, әрбір PSP-нің өз tz/сағаты бар. Олардың кесінділерінің үстінен біріктіруші сөре жасаңыз.
Түйіндеме
Сеттлмент-циклдер мен cut-off - бұл ақшалай логистиканың «скелеті». T + N, таймзондтарды, мерекелерді, резервтер мен комиссияларды дұрыс есепке алу:- провайдерлерді дәл салыстыру,
- өтімділікті болжау және төлемдерді жабу,
- SLA-ны сақтау және операциялық тәуекелдерді қысқарту,
- қаржымен және комплаенспен бір тілде сөйлеу.
Бірыңғай funding calendar, қатаң деректер моделін және автоматтандырылған салыстыруды енгізу арқылы сіз ақша ағынын болжауға және басқаруға болады.