מה זה עושה
ייבוא קובץ בנק או אשראי לקסטור אמור לתת תמונה מדויקת בלי לעבור ידנית על כל שורה. קסטור מזהה את הפורמט של הקובץ אוטומטית, ובודק כל שורה מול מה שכבר שמור בחשבון: ייבוא חוזר של אותו קובץ לא יוצר כפילות, ושורת סיכום מהבנק שמתארת חיוב כרטיס אשראי מותאמת מול הדוח המפורט של אותו כרטיס עצמו, כך שהחיוב לא נספר פעמיים.
קובץ בנק כולל גם שורות זיכוי — כסף שנכנס לחשבון — וקסטור מסווג אותן כהכנסה ולא כהוצאה; בדיקת הכפילויות פועלת עליהן באותו אופן בדיוק. הנה איך כל שלב בתהליך עובד בפועל.
זיהוי הקובץ בהעלאה
כשמעלים קובץ, קסטור בודק את המבנה שלו ומזהה אוטומטית אם הוא תואם אחד מהפורמטים שהמערכת כבר מכירה. הפורמטים המוכרים כיום:
- לאומי (גם בנק וגם אשראי)
- ישראכרט
- מקס
- כאל
- דיסקונט
- יהב
הרשימה הזו לא סופית — קסטור ממשיך להוסיף פורמטים נוספים של בנקים וחברות אשראי בישראל.
כשהפורמט מזוהה, קסטור כבר יודע בדיוק אילו עמודות בקובץ מייצגות תאריך, שם עסק וסכום — אין שום הגדרה ידנית לעשות. משם הקובץ ממשיך לשלב הבדיקה מול מה שכבר שמור במערכת — חוץ ממקרה אחד: קובץ שכולל שורות של עסקות תשלומים עוצר לרגע לבחירה, לפני שבדיקת הכפילויות רצה, כמתואר בהמשך.
קובץ שלא מזוהה
לא כל קובץ בנק או אשראי תואם אחד מהפורמטים האלה, וזה לא עוצר את הייבוא. קובץ CSV או Excel שקסטור לא מזהה עדיין נכנס למערכת, דרך מיפוי עמודות חד-פעמי: שלב שבו מציינים אילו עמודות בקובץ מייצגות תאריך, שם עסק וסכום. עמודת הסכום יכולה להיות עמודה בודדת, או פיצול לשתי עמודות נפרדות של חיוב וזיכוי — שתי הצורות נתמכות. עמודת הערות היא אופציונלית ואפשר לדלג עליה.
אחרי שהמיפוי הוגדר פעם אחת, הקובץ ממשיך לאותו מסלול בדיוק כמו קובץ שזוהה אוטומטית: הוא נבדק מול מה שכבר שמור בחשבון, לפי אותם כללי כפילויות שמתוארים למטה. אין מסלול נפרד או פחות קפדני לקבצים שעברו מיפוי ידני.
זיהוי כפילויות
כל שורה בקובץ שמיובא נבדקת מול הנתונים שכבר שמורים בחשבון של משק הבית. ההתאמה מבוססת על:
- תאריך
- סכום
- שם העסק
- מספר אסמכתא — כשהקובץ כולל אותו
שלושת הפרמטרים הראשונים נבדקים תמיד. מספר האסמכתא הוא שכבה נוספת: כשהוא קיים בקובץ, הוא מצטרף לבדיקה ומחזק את ההתאמה, אבל הוא לא תחליף לשאר הפרמטרים ולא נדרש כדי שהבדיקה תעבוד.
שורה שתואמת עסקה קיימת בכל הפרמטרים האלה מדולגת אוטומטית: היא לא נכנסת שוב לרשימת ההוצאות, ולא נדרשת שום פעולה כדי שזה יקרה. המשמעות המעשית: אפשר לייבא את אותו קובץ פעמיים, שלוש פעמים, כמה שנדרש — הפעולה אידמפוטנטית, ולא יוצרת עותקים נוספים.
חיוב חוזר אמיתי לא נבלע לתוך הבדיקה הזו. אם הקובץ המקורי כולל, למשל, שתי הוראות קבע זהות באותו יום ובאותו סכום, שתיהן נשמרות כשתי עסקאות נפרדות — וגם כשהקובץ מיובא שוב, קסטור שומר על אותה כמות בדיוק. הבדיקה לא שואלת רק אם עסקה כזאת קיימת, אלא כמה פעמים היא קיימת, ומשווה בין הכמות בקובץ לכמות שכבר שמורה במערכת.
זה נכון גם לקובצי בנק וגם לקובצי אשראי — שני הסוגים עוברים את אותה בדיקה, לפי אותם כללים, בלי הבדל בין אם הקובץ הגיע בפורמט מוכר או עבר מיפוי ידני.
יש מקרה אחד שבו קסטור לא מדלג אוטומטית: חיוב באותו סכום ובאותו תאריך, אבל תחת עסק אחר. זה יכול להיות באמת שתי עסקאות שונות, ולכן המערכת לא מוחקת ולא מתעלמת — היא מסמנת את השורה לבדיקה, וההחלטה נשארת ידנית, לא אוטומטית.
אותה בדיקת דילוג אוטומטי לא נעצרת רק מול מה שכבר שמור בחשבון — היא פועלת גם בין קבצים שמיובאים יחד באותו ייבוא, לפי אותם כללי ההתאמה: תאריך, סכום, שם עסק (ומספר אסמכתא כשקיים). שורה שמתאימה לשורה כזאת בקובץ אחר, תחת זהות קובץ שונה, מדולגת אוטומטית — בדיוק כמו התאמה מול שורה ששמורה כבר. הבדיקה מבוססת על זהות הקובץ שממנו הגיעה כל שורה, לא רק על תוכן השורה, ולכן כפילות אמיתית בתוך אותו קובץ עצמו אף פעם לא נתפסת בטעות.
תיקון תאריכי תשלומים
דוח אשראי ישראלי מדפיס כל תשלום בעסקת תשלומים עם תאריך הרכישה המקורי — לא עם החודש שבו הוא בפועל מחויב. המשמעות: תשלום שני בעסקה של שלושה תשלומים נראה בדוח זהה לתשלום הראשון — אותו תאריך, אותו סכום, אותו שם עסק.
קסטור מזהה שורות של עסקות תשלומים, ולפני שהוא מריץ את בדיקת הכפילויות שתוארה למעלה, מציע לתקן את התאריך של כל תשלום לחודש החיוב האמיתי שלו — קידום של חודש קלנדרי אחד לכל מספר תשלום (האפשרות המומלצת), או להשאיר את תאריך הרכישה המקורי. כשהתיקון מתבצע לפני הבדיקה, לתשלומים יש תאריכים שונים באמת ברגע שבדיקת הכפילויות משווה ביניהם — ולכן תשלום שני אמיתי לא מזוהה בטעות ככפילות של הראשון, ולא נמחק בשקט.
התיקון הזה מזוהה כיום רק מקבצי לאומי אשראי וישראכרט — קסטור עדיין לא מפרש את נתוני התשלומים מקבצי מקס וכאל.
שורת סיכום מהבנק מול דוח כרטיס מפורט
מנגנון נפרד לגמרי מטפל במקרה ספציפי: כשקובץ מהבנק כולל שורה אחת שמסכמת את כל החיוב החודשי של כרטיס אשראי. שני מצבים מפעילים את הבדיקה הזו — דוח מפורט של אותו כרטיס כבר נמצא במערכת מייבוא קודם, או שהוא מיובא באותו זמן, יחד עם קובץ הבנק.
במקרה הזה קסטור בודק אם השורה המסכמת מהבנק תואמת את הסכום הכולל שהכרטיס עצמו הצהיר עליו, לפי שני תנאים:
- סכום — בטווח של עד ₪1 או 0.5% מהסכום (הגבוה מביניהם)
- זמן — בטווח של עד 45 יום, כשמדובר בסכום כרטיס ששמור כבר מקודם במערכת
אם יש התאמה בשני התנאים, שורת הסיכום מהבנק יורדת — כדי שהחיוב לא ייספר פעמיים: פעם כסכום כולל ופעם כפירוט של אותו כרטיס.
אם אין התאמה, שורת הסיכום נשארת כהוצאה אחת רגילה. היא לא נעלמת בשקט ולא נמחקת רק כי היא נראית כמו מועמדת סבירה לאיחוד — כסף אף פעם לא נמחק בלי סיבה ברורה. במקום זה היא מסומנת פנימית, כך שאם דוח כרטיס מפורט מגיע מאוחר יותר ומתאים לשורה שכבר קיימת, קסטור יכול לזהות את ההתאמה גם אז, לא רק ברגע הייבוא המקורי. גם במקרה הזה, ההסרה של השורה הישנה נשארת פעולה שדורשת אישור — היא לא קורית מעצמה, אפילו כשהמערכת כבר זיהתה התאמה אפשרית.
שני מנגנונים נפרדים, לא אחד
זיהוי הכפילויות בין קבצים (שתואר למעלה) והתאמת שורת הסיכום מהבנק מול דוח כרטיס מפורט הם שני מנגנונים נפרדים, ושווה להבדיל ביניהם. התאמת בנק-מול-כרטיס מטפלת בשתי צורות שונות של אותו חיוב — שורה מסכמת אחת מול עשרות שורות מפורטות שמסתכמות לאותו סכום. זיהוי הכפילויות בין קבצים מטפל בשורה זהה שמופיעה פעמיים, תחת שני קבצים שונים.
קובץ בנק אף פעם לא כולל עסקאות כרטיס מפורטות בנפרד, רק את השורה המסכמת החודשית — ולכן חפיפה כזאת בין קובץ בנק לקובץ אשראי לא יכולה לקרות מלכתחילה; זה תמיד המקרה שהתאמת הסיכום-מול-הפירוט מטפלת בו. החפיפה שזיהוי הכפילויות בין קבצים תופס היא מסוג אחר: שני קבצים חדשים של אותו חשבון או כרטיס, עם תקופות שמצטלבות — כמו בדוגמה למעלה.