מספר רישום חברה הוא המזהה שהמרשם מעניק לעסק ברגע שהוא נרשם בפנקס, והוא הידית שכל השאר משתמשים בה כדי לאתר שוב את אותו עסק. זה גם השדה שמפיל את מרבית הטפסים, מפני שצוותים ממשיכים לכתוב כללי אימות מול המדינה היחידה שהם מכירים, ואז מגלים ששום דבר במספר הזה אינו אוניברסלי.
מדריך זה מסביר מהו המספר, מדוע צורתו משתנה כל כך, מדוע כלל תבנית נוקשה כל כך часто פוגע במי שחוקק אותו, וכיצד לתכנן שדה שמקבל את העולם במקום מיקוד אחד.
מהו בעצם מספר רישום חברה
כאשר עסק נרשם, המרשם—לשכת חברות, בית משפט מסחרי, פנקס סחר או רשות מס, לפי המדינה—רושם אותו ומעניק לו מספר. מאותו רגע המספר הוא הדרך שבה מצטטים את החברה: בחשבוניות, בחוזים, בהגשות, בבדיקות אשראי ובמסמכים משפטיים.
המספר מזהה. הוא אינו מתאר. אין לקרוא מתוכו את הענף, הגודל, הגיל או כושר האשראי של החברה, ויש לחשוד בכל טענה שמציעה לעשות כן. קידומת מוכרת עשויה לרמוז על המרשם שהנפיק את המספר, אך הספרות שאחריה הן הקצאה ולא קידוד.
נקודה נוספת שראוי לומר במפורש כבר כאן: המספר מונפק בידי רשות ציבורית לצורך הרישום. הוא אינו רישיון, אינו אישור, ואינו ראיה לכך שהעסק במצב תקין היום. מרשמים גם משנים מעמד—חברות נמחקות, מתפרקות ומחליפות שם—בשעה שהמספר נשאר בעינו.
כיצד המספר משתנה ממדינה למדינה?
ההבדל נוגע כמעט לכל היבט שמפתח מתחשב בו: אם מופיעות אותיות, מה האורך, אם סימני פיסוק הם חלק מן המספר, ואם המדינה בכלל מפעילה פנקס לאומי אחד.
במקומות מסוימים המספר הוא רצף ספרות שהוקצה ישירות מן המונה. באחרים הוא נושא קידומת של אותיות שמסמנת את המרשם, את הצורה המשפטית או את האזור. פנקסים אחדים משתמשים ברוחב קבוע וממלאים באפסים מובילים, כך שהערך הוא למעשה מחרוזת אף שהוא נראה כמספר שלם. מדינות אחדות מפעילות פנקסים נפרדים לצורות משפטיות שונות ומנפיקות אפוא סדרות מספרים נפרדות, ובמדינות פדרליות יש גם רישום ברמת המדינה וגם מזהה לאומי, ושניהם מופיעים במסמכים שונים.
אותה מדינה יכולה גם להיכתב באופן שונה בידי אנשים שונים. המרשם עשוי להדפיס מפרידים שאינם חלק מן המספר, בנק עשוי לצטט אותו עם קידומת משל עצמו, ומסמך מתורגם עשוי לתעתק אותו. שום דבר מזה אינו משנה את המספר, אך כל אחד מהם משנה את המחרוזת שמגיעה אל הטופס.
| מה משתנה | מדוע זה חשוב לטופס |
|---|---|
| נוכחות אותיות | כלל שמקבל ספרות בלבד פוסל חלק גדול מן העולם |
| אורך | כל כלל אורך קבוע שגוי מחוץ למדינה שממנה הגיע |
| אפסים מובילים | שמירת הערך כמספר שלם הורסת אותו בשקט |
| פיסוק ורווחים | יש להסיר תבנית לפני ההשוואה, ולעולם לא לפניה |
| פנקס לפי צורה משפטית | מדינה אחת עשויה להשיב ביותר ממזהה תקף אחד |
היכן מחפשים מספר רישום?
מחפשים אותו במקור: בפנקס הרשמי של המדינה שבה החברה מצהירה שהיא רשומה. כל השאר—סוכנות אשראי, אתר ספריה או פרופיל בזירת מסחר—הוא העתק משני עם פיגור עדכון משלו.
החלק המעשי הוא למצוא את הפנקס הנכון. יש לחפש את פנקס החברות של המדינה ולא את החברה עצמה, ויש לזכור שמדינות רבות מפרסמות חיפוש ציבורי חינמי ומספר קטן יותר גובה תשלום עבור מסמכים. במקום שבו אין חיפוש ציבורי חינמי, התשובה הכנה ללקוח היא שאת המספר אפשר לאמת רק על נייר או דרך הערוץ בתשלום של הרשות עצמה.
זו גם הסיבה לכך שאימות צריך להיות שלב נפרד ומפורש בכל תהליך שזקוק לו. טופס יכול לבדוק את הצורה של מספר. רק הפנקס יכול לומר אם החברה קיימת. ההפרדה בין שתי הבדיקות—ואמירה למשתמש איזו מהן נכשלה—היא ההבדל בין שגיאה מועילה לבין תעלומה.
מדוע אין תבנית גלובלית שאליה מאמתים?
מפני שאין מרשם גלובלי. הרישום הוא סמכות לאומית, והחוק של כל מדינה קובע מה הפנקס רושם וכיצד הוא ממספר את הרשומות. תקנים בינלאומיים מכסים שפע של נתונים עסקיים—קודי מדינה, קודי מטבע, תאריכים ומזהים לישויות משפטיות—אך אין מספר רישום עולמי, ואין רשות שתנפיק אותו.
להשלכות על ההנדסה יש צורה קונקרטית.
- אין להתייחס לשום ביטוי רגולרי כאילו הוא תבנית מספר החברה היחידה.
- אין לקבוע מגבלת אורך צמודה כל כך שהיא פוסלת את המספרים של מדינה אחרת.
- אין להניח שקיימת שגרת ספרת ביקורת; במקום שבו מדינה מפרסמת אחת, היא שייכת לאותה מדינה בלבד.
- אין לדווח על כשל אימות כעל הודעה שהחברה אינה קיימת.
מערך בדיקות שנושא את ההנחות האלה יעבור בנוחות על נתונים מקומיים וייפול אצל הלקוח הבינלאומי הראשון, בדרך כלל בייצור ובדרך כלל בשלב ההצטרפות.
עד כמה האימות צריך להיות קפדני?
קפדני מספיק כדי לתפוס טעויות ברורות, ומתירני מספיק כדי שלעולם לא לפסול חברה לגיטימית. שתי המטרות מושכות לכיוונים מנוגדים, והפתרון הוא לאמת בשכבות ולא במעבר אחד.
השכבה הראשונה היא נוכחות וסבירות בסיסית: השדה מלא, אינו רווח לבן, אינו מכיל תווי בקרה, והוא בתוך אורך מרבי נדיב. השכבה השנייה היא בדיקת צורה מודעת מדינה, שמופעלת רק כשהמדינה ידועה בביטחון—ונכתבת כך שתקבל כל דבר סביר ולא שתכפה את הדקדוק של מדינה אחת. השכבה השלישית היא הסמכותית: חיפוש ממשי מול הפנקס, שרץ באופן א-סינכרוני ובעל תוצאה משל עצמו.
אימות בשכבות מניב שגיאות מועילות. ההודעה שלא הצלחנו לאשר את המספר מול הפנקס היא הודעה שאפשר לפעול לפיה. ההודעה שמספר הרישום שגוי אינה כזאת, והיא גם אינה נכונה, מפני שלטופס אין כל מושג אם החברה רשומה—רק שהקלט שלה לא תאם תבנית שמישהו הקליד מן הזיכרון.
למפתחים: לקבל את מספרי הרישום של העולם
יש להתייחס לשדה כמחרוזת אטומה. יש לשמור אותו בדיוק כפי שהלקוח הזין אותו לאחר חיתוך רווחים חיצוניים, ולשמור לצידו עותק מנורמל—אותיות בגודל אחיד ומפרידים שהוסרו—לצורך השוואה וחיפוש. אין לשמור אותו בעמודה של מספר שלם, ואין לתת לאפס מוביל ללכת לאיבוד במעבר דרך גיליון אלקטרוני, ייצוא CSV או מפענח JSON שאינו זהיר עם מחרוזות שנראות כמספרים.
יש לקבוע אורך מרבי בנדיבות; התבניות הלאומיות הארוכות ביותר הן עדיין מחרוזות קצרות, ועלותה של מגבלה מתירנית אינה כלום לעומת העלות של חיתוך מספר אמיתי. יש להתיר אותיות, ספרות ואת המפרידים שאנשים באמת מקלידים, ולנרמל לפני ההשוואה במקום לפסול את מה שלא נצפה מראש.
יש לנתב לפי מדינה ולא לנחש, ויש להפוך את הניתוב למפורש במודל הנתונים: ערך של מספר רישום בלי מדינה הוא רק חצי ערך. במקום שבו המדינה אינה ידועה או אינה נתמכת, יש לחזור לבדיקות הגנריות ולומר זאת בממשק במקום להמציא כלל.
ולבסוף, יש להחזיק ערכים מופקים וערכים אמיתיים נפרדים לעין בכל סביבה שנשלטת בידינו. הערכים שמפיק המחולל באתר הזה הם בדיוניים ואינם שייכים לשום פנקס, וההערה שמלווה אותם אומרת זאת במפורש. מאמר מספר VAT עוסק בשדה השכן, שסובל מאותה בעיית אימות בשכבות ואף ממלכודת משל עצמו: בדיקת תבנית ובדיקת פנקס הן שתי שאלות שונות.
צעדים הבאים
יש לקחת את שדה מספר הרישום במוצר ולהריץ אותו מול קומץ מדינות שתבניותיהן לא נראו מעולם. אם משהו פוסל ערך שאי אפשר להוכיח באופן אישי שהוא פגום, יש להרחיב את הכלל ולהעביר את השיפוט לשלב החיפוש, ששם מקומו. לאחר מכן יש להפיק כמה חברות בדיוניות במחולל נתוני החברה לבדיקה ולוודא שהשדה שורד העתקה, הדבקה, ייצוא וייבוא חוזר בלי לאבד אפס מוביל.