Cykle rozrachunku i odcięcia
1) Podstawa koncepcyjna
Rozrachunek - rozrachunek między PSP/Nabywcą a handlowcem (operatorem), w którym pieniądze za przejęte transakcje są przekazywane na rachunek handlowca.
Odcięcie - dzienny „kawałek” operacji, które wchodzą w określony cykl rozliczeniowy (zwykle ustalony czas w strefie czasowej dostawcy).
T + N - typowa notacja opóźnienia w oddelegowaniu środków: T - data odcięcia, N - liczba dni roboczych przed faktyczną rejestracją.
- Karty (Visa/Mastercard): często T + 2/T + 3 dni bankowych, odcięcie 23:00 UTC (w przybliżeniu).
- Bankowość A2A/Open: T + 0 do T + 1.
- SEPA przelew: T + 1/T + 2 (Instant - T + 0).
- ACH (US): T + 2/T + 3; Ten sam dzień ACH - T + 0/T + 1.
- RTP (US): T + 0, ale odcięcie raportów jest możliwe.
- Crypto: właściwie T + 0 przez sieć, ale PSP może stosować własne okna finansowania (T + 0/1).
2) Jak działa odcięcie i co się do niego dostaje
1. Dostawca naprawia okno kolekcji (na przykład 00: 00-23: 00 UTC).
2. Wszystkie transakcje rozliczone/przechwycone w tym oknie wchodzą w partię.
3. Zwroty, obciążenia zwrotne, korekty są sumowane do pakietu w celu obliczenia finansowania brutto i netto.
4. Po odcięciu plik rozliczeniowy jest generowany, a zegar T + N rozpoczyna się przed rejestracją.
Ważne: autoryzacja bez przechwytywania nie jest zawarta w pakiecie. Anulowane wnioski - również nie.
3) Rodzaje rozrachunku: brutto vs netto, rezerwy i prowizje
Rozrachunek brutto - kwota wychwytywania brutto zostaje przeniesiona (minus oddzielną prowizję).
Rozliczenie netto - dostawca posiada opłaty, obciążenia zwrotne, zwroty, rezerwę bieżącą i wymienia kwotę netto.
Rezerwa bieżąca - wstrzymanie% obrotów za dni N (na przykład 10% za 180 dni) w celu pokrycia ryzyka.
Ujemne przeniesienie - jeżeli „netto” przechodzi w minus dziennie, deficyt jest przenoszony i opłacany w kolejnych cyklach.
Zalecenie: przechowywanie odszyfrowania obu samolotów - operacyjnego brutto (według transakcji) i finansowania netto (według plików dostawców).
4) Strefy czasowe, wyjście lokalne i DST
Odcięcie jest określane przez timezon dostawcy, który może różnić się od twojego.
Zastanów się nad DST (czas oszczędzania światła dziennego) - plasterki mogą przesuwać się o ± 1 godzinę w stosunku do czasu lokalnego.
Wakacje/weekendy w jurysdykcji przyjmującego banku wpływają na N w T + N (na przykład T + 2 dni bankowe stają się T + 4 wokół wakacji).
Praktyka: normalizować wszystkie czasy techniczne w UTC, jednocześnie przechowywać 'provider _ tz _ cutoff _ at' i 'local _ tz _ posted _ at'.
5) Kalendarz rozliczeń (kalendarz finansowania) i SLA
Zrób kalendarz rozliczeń za kwartał:- czas odcięcia i tz dla każdej metody/PSP,
- standardowe T + N i wyjątki (wakacje),
- przewidywane kwoty (prognozy),
- Pokwitowanie SLA: „nie później niż 12:00 Europa/Kijów w dniu T + 2”.
Wszelkie odchylenia SLA → alert i bilet do Ops/Finance.
6) Relacje z depozytami i wynikami netto
Wartość WP (składki netto) liczona jest na transakcjach rozliczonych (zob. artykuł powiązany).
Wnioski (wypłaty) nie uczestniczą w finansowaniu depozytów przez PSP, ale wpływają na pulpit handlowca.
Planowanie płynności: napływ przez rozrachunek minus odpływ przez płatności/podatki/koszty operacyjne.
7) Artefakty pojednawcze i dostawcy
Minimalny zestaw dla każdej partii:- "batch _ id/ settlement_id', data graniczna w tz provider,
- субка тикА,: „Captured _ Deposits”, „Refunds”, „Chargeback _ Debits”, „Chargeback _ Credits”, „Fees”, „Reserve _ Delta”, „Net _ Funding”,
- odszyfrowywanie metodami/rachunkami handlowców („MID”, „deskryptor”, „MCC”),
- odniesienia do transakcji ('provider _ tx _ id',' rrn', 'arn' - jeśli karty),
- plik (-y): CSV/XML/JSON + ludzkie oświadczenie czytelne (PDF/HTML).
1. Od transakcji do plików (wszystko, co myśleliśmy było w pliku?)
2. Od plików do transakcji (wszystko w pliku jest w naszym sklepie? czy statusy pasują?)
8) Specyfikacje szyn płatniczych (w ujęciu ogólnym)
Mapy: częste scenariusze opóźnień w prezentacji; możliwe jest późne obciążenie zwrotne (do 120-540 dni w przypadku); opłaty interchange & scheme pojawiają się w plikach, nie są odliczane w ND.
SEPA/ACH: Partie zależą od okien bankowych; Anulowanie/zwroty mają własne kody Opcje tego samego dnia są oddzielne odcięcia.
Otwórz Banking/A2A: T + 0/1, ale pliki mogą przejść post-factum; potrzeba ścisłego RPP/Unique ID dla meczów.
RTP/Instant: pieniądze przychodzą szybko, ale plik raportu jest w harmonogramie.
Crypto: onchain settlement instant, ale dostawca robi „windows payout”; przechowywać 'fx _ at _ settle'.
9) Rachunkowość (FI/księgowość)
9. 1. Metoda memoriałowa vs cache
Do sprawozdawczości zarządczej często stosuje się zasady memoriałowe: ujmujemy przychód/ruch w czasie 'settled _ at'.
W przypadku skarbu/DDS - metoda pamięci podręcznej: rozpoznajemy fakt otrzymania „funded _ at”.
9. 2. Typowe okablowanie (uproszczone)
Kiedy „DEPOZYT _ PRZEJĘTY”:- JT: Gotówka w rozliczeniu z PSP (AR: PSP)
- KT: Zaangażowanie gracza (saldo torebki/gracza)
- Dt: Bank (biuro kasjera)
- Kt: Gotówka w rozliczeniach z PSP
- JT: Wydatki (opłaty PSP), JT: Rezerwy (jeżeli zostały zmienione)
Przechowujesz transakcję sheaf 'transaction _ id → batch_id → funding_id' do śledzenia.
10) Zarządzanie ryzykiem i wpisy
Brak pliku rozliczeniowego przed X: YY - P1.
Opóźnienie finansowania: T + N wygasło, brak pieniędzy - P1.
Progi delta: wariancja 'our _ gross' vs 'file _ gross'> 0. 5% - P2; „fees” poza zasięgiem - P2.
Negatywne przeniesienie: Seria negatywnych opakowań netto - dochodzenie.
Wpływ na wakacje: automatyczna prognoza uwzględniająca kalendarz; jeśli faktem jest <80% prognozy - bilet.
11) Model danych (uproszczony)
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) Przykłady szablonów SQL
12. 1. Nagrywanie odcięcia
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. Uzgodnienie transakcji z plikiem
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. Prognoza dochodów (przepływy pieniężne 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) Procesy i SLO
SLO 1: import plików rozliczeniowych - T + 0, do 08:00 Europa/Kijów.
SLO 2: wstępne uzgodnienie - do 09:00, warianty> 0. 5%.
SLO 3: Aktualizacja prognozy przepływów pieniężnych - do godz. 10: 00
SLO 4: zamknięcie dnia - wszystkie mecze finansowania prowadzą do DWH.
14) Skrzynie krawędzi i sposób ich obsługi
Późna prezentacja: transakcja trafiła do następnej partii - zachowaj „fakt źródła” ('presented _ in _ batch _ id').
Częściowe przechwytywanie: wielokrotne przechwytywanie na autoryzację - sumowanie poprawnie w partii.
Multi-MID: jeden dostawca, różne MIDs według geo/marki - nie mieszać w jednej partii.
Ponowne przetwarzanie: po zablokowaniu pliku - wersioning 'batch _ revision' i pełne przedłużenie ważności.
Wyścigi FX: kursy - na 'settled _ at'; finansowanie w innej walucie - start 'fx _ at _ funding' i delta.
15) Deski rozdzielcze i KPI
Finansowanie ETA: oczekiwana data/godzina odbioru a rzeczywista.
Hit-rate SLA: procent plików przybywających na czas.
Delta brutto/netto według dostawców, metoda, MIDs.
Opłaty% wolumenu, Saldo rezerwy, Ujemna smuga przeniesienia.
Wpływ na wakacje: prognoza vs rzeczywisty z tygodnia na tydzień z wakacjami.
16) Najlepsze praktyki (krótkie)
1. Normalizować czas do UTC, ale zachować odcięte provider_tz.
2. oddzielne operacyjne brutto i finansowanie netto; nie mylić WD i finansowania.
3. Wdrożenie kalendarza finansowania z wstępnie wprowadzonymi wakacjami bankowymi.
4. Zautomatyzuj import i uzgadnianie plików rozliczeniowych + wpisów do SLA/delt.
5. Wdrożenie rewizji i przeróbki deterministycznej.
6. Wpisz pojedyncze źródło prawdy: linki do „transakcji”
7. Zapisz pola ARN/RRN i zdobywania kart - kluczowe dla sporów.
8. Prognozowany przepływ środków pieniężnych z uwzględnieniem weekendów/wakacji, rezerw i prowizji.
17) Listy kontrolne wdrażania
Dane i schematy
- Таблий „płatności _ transactions”, „settlement _ batches”, „funding _ receipts”, „recon _ links”.
- Pola Timezone to UTC + provider_tz.
- МолА X: 'fx _ rate _ at _ settle', 'fx _ at _ funding'.
Import i walidacja
- Parsery CSV/XML/JSON + hasła plików.
- Zatwierdzanie kwot/walut/dat; dopasowanie „provider _ tx _ id/ARN”.
- Manipulatory „late presentation”, „partial capture”, „reversal”.
Operacje i wpisy
- Odcięcie monitora SLA, pominięte pliki, opóźnienia finansowania.
- Wpisy progowe delta (brutto, opłaty, netto).
- Wakacyjny wpływ i negatywne sprawozdanie przeniesione.
18) FAQ
P: Dlaczego T + 2 stało się T + 4?
Odp.: Były weekendy/wakacje w banku korespondenckim lub w banku przyjmującym; см. kalendarz finansowania.
P: W pliku netto jest mniej niż nasze obliczenia netto. Co oglądać?
Odp.: Sprawdź opłaty, reserve_delta, zwłokę/obciążenie zwrotne oraz poprawność kursów.
P: Jak rozumiesz krypt?
Odp.: przez fiat równoważny „settled _ at”; finansowanie może przychodzić do USDT/fiat - zachować oddzielny 'fx _ at _ funding'.
P: Czy możliwe jest jedno wspólne odcięcie dla wszystkich dostawców?
Odp.: Nie, każdy PSP ma swoje tz/godzinę. Zrób wyświetlacz agregujący na ich plasterkach.
Podsumowanie
Cykle rozrachunku i odcięcia są „szkieletem” logistyki monetarnej. Prawidłowa księgowość T + N, strefy czasowe, wakacje, rezerwy i prowizje pozwala:- dokładne sprawdzenie dostawców,
- prognozowana płynność i pokrycie płatności,
- zgodność z SLA i zmniejszenie ryzyka operacyjnego,
- posługuje się tym samym językiem co finanse i zgodność.
Dzięki wdrożeniu jednego kalendarza finansowania, rygorystycznego modelu danych i zautomatyzowanemu pojednaniu, przepływy pieniężne są przewidywalne i zarządzalne.