Վճարումների և PBS վճարումների կրճատումը
TL; DR
Սա ձեր դահուկորդի և իրադարձությունների ամենօրյա ավտոմատացված կարիքն է (auth/capture/refund/payout) 'PBS/ecwayers/բանկերի զեկույցներով։ Հաջողության բանալին 'տվյալների միասնական մոդել, դետերմինացված բանալիներ, խիստ գաղափարախոսություն, սումիի/FX/ժամանակի տոլերանսներ, DLQ-ի հերթը' վիճահարույց միջադեպերի և ավտոկանգառների համար։ KPI: Recon Mismatch Rate↓, Aging of Unreconciled↓, Auto-match%↑.
1) Ինչո՞ ւ և ի՞ նչ ենք անում
Նպատակները 'եկամտի և պարտքի հաստատումը, կաղնու/կորստի հայտնաբերումը, ճիշտ settl.ru օրերով և արժույթներով, refund-to-source վերահսկողությունը, ենթածրագրի/կարգավորիչի համապատասխանությունը։
Օբյեկտները։
Deposits: `auth → capture → settle`
Refunds: fox/partial, արձաններ և գումարներ
Payouts/Withdrawals-ը 'վճարման վճարումներ
Fees & Adjustments: www.PMS, intercheinge սխեմաներ, ww.ru
Chargebacks/Winputes: Ձեր նախաձեռնությունից դուրս
FX/Convertation 'դասընթացներ, սպրեդներ, ամրագրման պահ
2) Տվյալների աղբյուրները
Systal Events (ձեր) 'իրադարձությունների ավտոբուս/Kafka, «payments _ flat», «refunds», «payouts», ձեր Ledger.
PSP Reports (SFTP/API/webhook dump):- Transactions (վիրահատական տպագրություններ)
- Settlements/Batches (T + N)
- Fees/Statements (1934, 1934)
- Chargebacks/Disputes
- Payouts/OCT/RTP/SEPA կիսագնդի
- Bank Statements: MT940/CSV/ISO20022 CAMT, հանցագործությունների ավելացում։
3) Կոդավորման բանալիները (matching keys)
Առաջնային ծառը (ճշգրտության սպանում)
1. provider _ txid provider _ txid (եզակի ID PSA)
2. idempotency _ key/merchect _ reference (եթե PBS կայուն է)
3. (amount, currency, timestamp_bucket, last4/bin, auth_code)
4. Fuzzy շերտ: wwww.tolerans գումարի/ժամանակի, BIN/issuer country, status family
Առաջարկություններ
Պահեք երկուսն էլ '«payment _ id» և «provider _ txid»։
Partial/refund-ի համար ավելացրեք «sequence _ index» կամ «refund _ բանաձև _ id»։
Для payouts — `payout_batch_id + line_id`.
FX-ի համար '«exec _ id» (փոխարկումը) և դասընթացի աղբյուրը։
4) Տվյալների մոդելը (նորմալացված շերտ)
json
{
"source": "INTERNAL PSP_TX PSP_SETTLEMENT BANK",
"provider": "Acquirer_A",
"payment_id": "pay_123",
"provider_txid": "psp_tx_789",
"kind": "AUTH CAPTURE REFUND PAYOUT FEE SETTLEMENT CHARGEBACK",
"sequence": 0,
"amount": 100. 00,
"currency": "EUR",
"fee_amount": 1. 20,
"fx_rate": 1. 0000,
"fx_src": "PSP ECB BANK",
"status": "APPROVED CAPTURED SUCCESS FAILED SETTLED",
"event_ts": "2025-11-03T12:00:00Z",
"settlement_date": "2025-11-05",
"account": "PSP_MERCHANT_CARD_A",
"matching_keys": {
"provider_txid": "psp_tx_789",
"merchant_ref": "mr_456",
"idem_key": "idem_abc"
},
"hash_row": "sha256(...)"
}
5) Հավաքման գործընթացը (ETL/նվագախումբ)
1. Ingest: Մենք վերցնում ենք PTP (SFTP/API) հաշվետվությունները, առաջնորդում ենք սխեման/ստորագրությունը, պահպանում ենք «r.ru» -ում։
2. Normalize: mapim դաշտերը միավորված ձևաչափով (currency III, decimals, UTC թայմզոն)։
3. Match։ Ալգորիթմը պատրաստված է ծառի միջոցով։
4. Post-match: Մենք ձևավորում ենք diff (տարբերություններ) և journal entries ժապավենի/ուղղումների համար։
5. Settle: Մենք կարում ենք «PMS _ SETTLMS no BANK» (հաշիվ), ցրում ենք օրեր/մարտեր։
6. Reault: dashbord, alerta; վիճելի DLQ-ում ձեռքի բաժանման/ինքնաառաջադրման վրա։
Idempotention: յուրաքանչյուր ֆայլի/էջի վրա '«ingest _ id»։ Կրկնվող բեռնումը չի փոխում արդյունքը։
6) Տոլերանսները (tolerances) և կանոնները
Ժամանակը ՝ «3515 րոպե» գործարքների համար, «351 դն» settl.ru համար։
Գումարը ՝ «07 0»։ 01 'ռուսական արժույթ կամ «07 10 bps» FX/fee տարբերությունների համար։
FX 'Մենք թույլ ենք տալիս բաժանվել բանկի հետ, եթե դասընթացի աղբյուրը տարբեր է։ ամրագրում ենք 'fx _ ww.c'։
Partial/Multiple: partial/refund գծերի գումարը պետք է հավասար լինի ներքին մնացորդին։
7) Տարբերությունների մշակումը (diff taxonomy)
8) Ledger & Accounting (1942)
Capture: `DR Accounts Receivable / CR Revenue` и `DR Cash (upon settle) / CR Accounts Receivable`
Fee: `DR Fees / CR Cash or Payable`
Refund: Հակառակ կոմպոզիցիաները համամասնորեն partial
Chargeback 'առանձին հաշիվներ և պահուստներ վեճերի տակ
FX reval: AR/kash մնացորդի ամենօրյա վերագնահատումը '«fx _ 0c _ policy»
9) KPI և նպատակներ
System-match% = ինքնաբերաբար համեմատված տողեր/բոլոր տողերը (նպատակը 3695%)
Recon Mismatch Rate = diff-տողեր/բոլոր տողերը (361-2%)
Aging of Unreconciled: p50/p95 օր DLQ-ում (p95 353 դն)
Settlair Timeliness-ը 'D-օրվա բանկի հետ կարված մարտերի մասը (3699%)
Fee Accuracy-ը 'պրովայդերների տարբերությունները (240)։ 1% 2019)
Duplicate/Orphan Incidents: Ձգտում է 0
10) SQL կտրվածքներ
10. 1 Հիմնական համեմատություն ըստ provider _ txid
sql
WITH i AS (
SELECT provider, provider_txid, kind, amount, currency, event_ts
FROM internal_norm
),
p AS (
SELECT provider, provider_txid, kind, amount, currency, event_ts
FROM psp_norm
)
SELECT
COALESCE(i. provider_txid, p. provider_txid) AS txid,
COALESCE(i. provider, p. provider) AS provider,
i.kind AS kind_internal, p. kind AS kind_psp,
i.amount AS amount_internal, p. amount AS amount_psp,
i.currency, p. currency,
CASE
WHEN i.provider_txid IS NULL THEN 'MISSING_INTERNAL'
WHEN p. provider_txid IS NULL THEN 'MISSING_PSP'
WHEN ABS(i. amount - p. amount) > 0. 01 THEN 'AMOUNT_MISMATCH'
ELSE 'MATCHED'
END AS recon_status
FROM i
FULL OUTER JOIN p USING (provider, provider_txid);
10. 2 Settlement ↔ Bank
sql
SELECT s. settlement_date, s. batch_id, s. currency,
s. amount_settled, b. amount_bank,
(b. amount_bank - s. amount_settled) AS diff
FROM psp_settlements s
LEFT JOIN bank_statements b
ON b. value_date = s. settlement_date
AND b. currency = s. currency
AND ABS(b. amount_bank - s. amount_settled) <= 0. 5;
10. 3 Aging DLQ
sql
SELECT diff_type,
COUNT() AS cnt,
PERCENTILE_CONT(0. 5) WITHIN GROUP (ORDER BY AGE(NOW(), created_at)) AS p50_age,
PERCENTILE_CONT(0. 95) WITHIN GROUP (ORDER BY AGE(NOW(), created_at)) AS p95_age
FROM recon_dlq
GROUP BY diff_type
ORDER BY cnt DESC;
11) Ռելսերի/քեյսների առանձնահատկությունները
Քարտեզներ ՝ տարբերություններ «auth» և «capture» միջև, ուշ «settlection», intercheingge/սխեմայի fee-ի միջև 'առանձին գծեր։
A2A/Open Banking/RTP: ակնթարթային ապացույցներ, բայց հնարավոր է «reversal»; իջեցրեք «payout» և բարձրացրեք։
Դրամապանակներ ՝ հաճախ կատարյալ «provider _ txid», արագ «refund»; հետևեք fee գծերին։
Վաուչերներ 'ոչ սիմետրիկ refund, արտացոլեք ճիշտ քաղաքականության և հաշվետվությունների մեջ։
Կրիպտո 'նա chain hash provider _ txid; rma N; Ցանցերի և հնարավոր ռեբեյթների իրականացումը; դասընթացը փոխակերպման պահին է։
12) Վիրահատական պլեյբուկները
MISSING _ MSAL-ի աճը 'ստուգել webhuks/retraev կորուստը, վերարտադրել ingestion, ներառել API-ի կիսագունդը։
AMOUNT _ MISMATCH-ը մեկ PBS-ում 'համեմատել թաղամասերը/ԱԱՀ/fee-մոդելը, խնդրել շտկող ստատոմը։
Settlast-ը չի կարվում բանկի հետ 'ստուգել value date, բանկի պաշտպանություն, T + N ուշացում։ ժամանակավորապես տեղադրել Suspense Account-ում։
Զանգվածային REFUND _ OVER-ը 'Auto Refands-ի չարտոնված կանգառը, idempotenty աուդիտը, ձեռքով ուղղումը։
FX _ DRIFT 'ամրագրել դասընթացի աղբյուրը (ECB/PSA/BANK), հաշվել P&L տարբերությունը։
13) Վերահսկողություն և անվտանգություն
Idempotention ingestion: «բանաձև _ id + www.ksum» և բեռնման ամսագիր։
Հասանելի (RBAC) և 4-աչքի վերահսկողություն 'ձեռքի պարամետրերի/ամսագրերի վրա։
Աուդիտ-թրեյլ 'բոլոր խաղերը/դիֆերը/2019 - անփոփոխ ամսագրում։
Տվյալների որակը 'սխեմաներ, պարտադիր դաշտեր, վալիդացիա/սկեյլա։
14) Dashbord և alerta
Տեսիլքներ ՝ Match-Match%, Mismatch Rate, Aging DLQ, Settlant Timeliness, Fee Accuracy, լավագույն PBS դիֆներով, diff տեսակի քարտեզը։
Ալերտա
«Master-match% <90%» պրովայդեր/օր P1
"Aging p95> 3 դն 'P2
`AMOUNT_MISMATCH spike` → P1
«Bank wwww.Settl.ru» գումարով/www.P0
15) Թեստային քեյսները (UAT/Lenta.ru)
1. Նույն ֆայլի կրկնվող բեռնումը 0 կողմնակի էֆեկտներ (idempotention)։
2. Մասնակի ռեֆանդները (3 տող) համընկնում են, sequence խաղը։
3. FX-փոխարկումը 'դասընթացի տարանջատումը տոլերանսի սահմաններում ճիշտ match է։
4. Կրկնօրինակները provider _ txid-ում են dedup և alert-ում։
5. Webhook capture-ը փակեց gap-ը, կարգավիճակը հավասար է։
6. Settlight-ը fee-գծի հետ ճիշտ բաժանումն է Revenue/Fee/Net-ում։
16) Հաճախակի սխալներ և ինչպես խուսափել
Համեմատության պարամետրերի խառնուրդը (compare 'attempt' vs 'capture ") նախատեսվում է պահել նույն գրանուլյացիան։
«Provider _ txid» -ի բացակայությունը խաղի ճշգրտությունը կորցնում է։
Թայմզոնի անտեսումը հիմնված է սեթլերի ամսաթվերի վրա։
Ոչ DLQ/retrav-ը բացատրում է «հավերժական» տարբերությունները։
Առանց ամսագրի ձեռքով ձեռքերը հեշտացնում են աուդիտի հետ անհամապատասխանությունը։
Տարօրինակ հրեշները կամ փետուր-խաղը, կամ «ամեն ինչ DLQ-ում»։
17) Ստուգման չեկի ցուցակ
- Նորմալացման և PFC/մեթոդների/հաշիվների միասնական սխեմա։
- Ծառը merchect _ ref defuzzy) (txid merchect _ ref)
- Toleransa գումարով/ժամանակ/FX, դասընթացի աղբյուրի քաղաքականություն
- Idempotent ingestion, DLQ, retrai, alerts
- Sevka Settlant no Bank, Suspense Account քաղաքականություն
- Dashbord KPI, ֆինանսական հաշվետվություններ/2019
- Պլեյբուկին և SLA վերլուծությունը diff-cass
Ռեզյումե
Սա ինժեներական առարկա է 'նորմալացում, հուսալի բանալիներ, տոլերանսներ, ավտոմատ խաղեր և թափանցիկ պարամետրեր։ Այս կոնտուրով դուք կայունացնում եք եկամուտներն ու վճարումները, նվազագույնի հասցնում եք «սև անցքերը», արագացնում եք վերջնական ժամանակահատվածը և անցնում աուդիտ առանց ցավի ՝ Master-match%, Mismatch, Aging 2019։