פיוס של תשלומי PSP ודיווחים
TL; DR
פיוס הוא התפר האוטומטי היומי של ספר החשבונות והאירועים שלכם (auth/capture/refund/payout) עם דוחות PSP/רוכש/בנק. המפתח להצלחה: מודל נתונים יחיד, מפתחות התאמה דטרמיניסטיים, אידמפוטנטיות קפדנית, סובלנות סכום/FX/זמן, תור DLQ למקרים שנויים במחלוקת וספרי משחק לתיקון אוטומטי. KPI: Recon Mismatch Rate, Aging of Unpressed, Auto-game% lind.
1) מדוע ומה אנו בודקים
מטרות: אישור הכנסות ועמלות, שכפול/איתור הפסד, הסדר נכון לפי ימים ומטבעות, החזר למקור, ציות לביקורת/רגולטור.
אובייקטי פיוס:- הפיקדונות: 'auth' לכידת auth like &fost
- החזרים: מלא/חלקי, סטטוסים וסכומים
- תשלומים/משיכות: תשלומי שיטה יוצאים
- עמלות והתאמות: עמלות PSP, תוכניות החלפה, תיקונים
- צ ”רג” בקס/סכסוכים: מעבר ליוזמה שלך
- FX/Conversions: תעריפים, התפשטות, תיקון נקודה
2) מקורות נתונים
אירועים פנימיים: אוטובוס אירועים/קפקא, ”תשלומים _ שטוחים”, ”החזר”, ”תשלום”, ”לדג 'ר” שלך.
דוחות PSP (SFTP/API/webhook dump):- עסקאות (הצהרות מבצעיות)
- התנחלויות/חבורות
- עמלות/הצהרות
- טעמים/סכסוכים
- רישומי תשלומים/הטה "א/RTP/SEPA
- הצהרות בנק: CAMT MT940/CSV/ISO20022, מתיחת אשראי.
3) מקשים תואמים
עץ מפתח עדיפות (יורד בדיוק):1. provider_txid ↔ provider_txid (זיהוי PSP ייחודי)
2. idempotency_key/ merchant_reference (אם יציב ב-PSP)
3. (סכום, מטבע, timestamp_bucket, לאסט4/bin, auth_code)
4. שכבה מעורפלת: סובלנות על ידי סכום/זמן, ארץ בין/איסר, משפחה במצב
המלצות:- שמור גם את התשלום _ id וגם את הספק _ txid.
- עבור החלקי/החזר, הוסף 'רצף _ index' or 'refund _ line _ id'.
- תשלום מלא - 'payout _ catch _ 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. בלע: אנחנו לוקחים דוחות PSP (SFTP/API), לאמת את התרמית/חתימות, לשמור ל ”גלם”.
2. נרמול: מפים של השדה לפורמט המאוחד (מטבע ISO, עשרוני, אזור זמן UTC).
3. התאמה: אלגוריתם להתאמת עץ המפתח עם סובלנות.
4. Post-game: form diff (אי התאמות) ו-journal instructions עבור ספר החשבונות/תיקונים.
5. פשרה: תפר 'PSP _ Settlement ↔ Bank' (זיכוי לחשבון), פיזור ביום/אצווה.
6. דיווח: לוח מחוונים, התראות; שנוי במחלוקת ב-DLQ לניתוח ידני/שחזור אוטומטי.
Idempotence: עבור כל קובץ/דף - "inbleget _ id'. טעינה מחדש לא משנה את התוצאה.
6) סובלנות וכללים
זמן: ”ny15 min” לעסקאות, ”pan1 יום” להסדר.
כמות: 'על סדר גודל 0. 01 'מטבע בסיס או' לום 10 bps' להבדלי FX/דמי.
FX: אנו מאפשרים אי התאמה עם הבנק אם מקור שער החליפין שונה; Fix _ src.
חלק/מרובה: סכום שורות ההחזר החלקי חייב להיות שווה לשיווי המשקל הפנימי.
7) מיפוי טקסונומי
8) פנקס & חשבונאות
לכידה: 'DR חשבונות מתקבלים/CR הכנסות' DR Cash (לאחר פשרה )/CR חשבונות קבלה &post
אגרה: "DR עמלות/CR מזומן או תשלום &fost
החזר: הפוך פרסומים פרו ראטה חלקי
חשבונות נפרדים ושמורה למחלוקות
FX reval: חידוש יומי של שיווי משקל AR/מטמון ב- "fx _ src _ policyme &pos
9) KPIs ויעדים
התאמה אוטומטית% = קווי התאמה אוטומטית/כל הקווים (95% מטרה)
Recon Mismatch Rate = diff lines/all lines (1-2%)
הזדקנות בלתי מבוקרת: p50/p95 ימים ב ־ DLQ (p95, 3 ימים)
זמן הסדר: פרופורציה של חבורות שנתפרו עם בנק די-דיי (99%)
פי דיוק: אי התאמות דמי ספק (סימון 0. 1% תחלופה)
תקריות שכפול/יתום: מכוון ל ־ 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 בנק ↔ התיישבותי
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 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” ו ”לכידה”, התאמות מאוחר ”יישוב”, החלפה/תשלום מעגל - קווים נפרדים.
A2A/Open בנקאות/RTP: אישורים מיידיים, אבל ”היפוך” אפשרי; לבדוק ”תשלום” ולהחזיר.
ארנקים: לרוב מושלמים "ספק _ txid'," החזר מהיר "; שמור על קווי התשלום.
שוברים: אין החזר סימטרי - שיקוף נכון במדיניות ובדו "חות.
חשיש על שרשרת ↔ provider_txid; אישור N; חשבונאות של עמלות רשת והנחות אפשריות; שער חליפין בזמן ההמרה.
12) חוברות משחק מבצעיות
Surge in MISSING_INTERNAL: לבדוק אובדן של קורות אינטרנט/מגשים מחדש, בליעה חוזרת, לאפשר סקרי API.
AMOUNT_MISMATCH מ-PSP אחד: השוו מודל עיגול/מע "מ/אגרה, בקשו הצהרת תיקון.
ההסדר אינו קשור לבנק: תאריך שווי צ 'ק, עמלות בנק, עיכובים של T + N; הכנס באופן זמני את ”חשבון המתח”.
REFUND_OVER המונית: עצירה מיידית אוטומטית, ביקורת אידמפוטנטיות, תיקון ידני.
FX_DRIFT: תיקון המדיניות של מקור שער החליפין (ECB/PSP/BANK), חישוב מחדש של הבדלי P&L.
13) שליטה ובטיחות
אידמפוטנטיות של בליעה: ”file _ id + checksum” והורדת ההיסטוריה.
גישה (RBAC) ובקרת 4-עין: לתיקונים ידניים/רשומות בכתב עת.
שביל ביקורת: כל התאמות/דיפרסיה/תיקונים ביומן בלתי ניתן לשינוי.
איכות נתונים: תוכניות, שדות חובה, אימות מטבע/קנה מידה.
14) לוח מחוונים והתראות
Widgets: התאמה אוטומטית%, Mismatch Rate, Aging DLQ, Settlement Time, Fe Accuracy, top PSP by diff, diff-type map.
התראות:- התאמה אוטומטית% <90% על ידי ספק/יום * P1
- 'הזדקנות p95> 3 ימים' # P2
- ”כמות _ ספייק MISMATCH” = P1
- ”בנק להסדר” לפי כמות/מטבע * P0
15) מקרי מבחן (UAT/Prod)
1. טעינה מחדש של אותו קובץ = 0 תופעות לוואי (idempotency).
2. Reflands חלקי (3 קווים) = התאמה, התאמה לפי רצף.
3. המרת FX: אי התאמת שער החליפין בתוך התאמה נכונה.
4. לשכפל את provider_txid בדו "ח * dedup והתראה.
5. הסקרים הסוגרים את הפער, המעמד מיושר.
6. קבוצת פיצויים עם קו עמלה = = פירוט נכון על הכנסות/פי/נט.
16) טעויות תכופות וכיצד להימנע
השווה בין ”ניסיון” נגד ”לכידה” * שמור על אותה גרנולריות.
ההיעדר של "ספק _ txid' בלוג ה-" active log "מאבד את הדיוק של הגפרור.
התעלמו מאזורי הזמן. תקוזזו בתאריכי הסדר.
אין אי התאמות ”נצחיות” של DLQ/retras.
עריכה ידנית ללא יומן * חוסר עקביות עם ביקורת.
סובלנות מעורפלת = או התאמה מחדש או ”הכל ב-DLQ”.
17) רשימת מימושים
[ ] נורמליזציה אחידה וספריות PSP/שיטה/חשבון
[ ] מיפוי עץ מפתח (txid _ merchant_ref ac.prozy)
[ ] כמות/זמן Tolerances/FX, מדיניות מקור הקורס
[ ] בליעה אידמפוטנטית, DLQ, retrai, התראות
[ ] Settlement↔Bank פיוס, מדיניות חשבון המתח
[ ] Dashboard KPI, דיווח פיננסי/ביקורת
[ ] ספרי משחקים ותיקים של SLA
תקציר
פיוס הוא משמעת הנדסית: נורמליזציה, מפתחות אמינים, סובלנות, התאמות אוטומטיות ותיקונים שקופים. עם קונטוור כזה, אתה לייצב הכנסות ועמלות, למזער ”חורים שחורים”, להאיץ סגירת תקופה ולקבל ביקורת ללא כאב: Auto- להתאים% duction, Mismatch Extening.