דלג לתוכן

מחולל ומאמת CNPJ - כלי זיהוי עסקי ברזילאי

צור מספרי CNPJ תקפים לבדיקה או אמת מספרי זיהוי עסקיים ברזילאיים באופן מיידי. כלי חינמי עם אימות ספרת בדיקה למפתחים העובדים עם Cadastro Nacional da Pessoa Jurídica.

יוצר ומאמת CNPJ ברזילאי

יוצר CNPJ

צור מספר CNPJ ברזילאי תקף למטרות בדיקה.

מאמת CNPJ

בדוק אם מספר CNPJ ברזילאי תקף.

מחשבון טעינה...
📚

תיעוד

הבנת מספרי CNPJ הברזילאיים

CNPJ (Cadastro Nacional da Pessoa Jurídica) הוא הגרסה הברזילאית של מזהה מס תאגידי - מספר בן 14 ספרות המזהה כל ישות עסקית חוקית במדינה. אם אתה בונה תוכנה שמטפלת בנתוני עסקים ברזילאיים, תיתקל במהרה במספרים אלה בטפסי רישום, חשבוניות ואינטגרציות API.

הנה מה שהופך כלי זה לפרקטי: הוא יוצר CNPJ תקפים מבחינה מתמטית לבדיקות מבלי להשתמש במזהי חברות אמיתיים. כאשר אתה מכין מסד נתונים לבדיקה עם 1,000 רשומות או מנפה באגים בשגרת אימות ב-2 לפנות בוקר, אתה צריך CNPJ שעוברים בדיקות אלגוריתמיות אך לא תואמים במקרה חברות קיימות. זה בדיוק מה שנוצר כאן.

המספרים הנוצרים כאן עוקבים אחר אלגוריתם האימות הרשמי של Receita Federal (שירות ההכנסות הפדרלי הברזילאי). יש להם ספרות בדיקה נכונות ועיצוב תקין - הם פשוט לא רשומים במאגר הנתונים הממשלתי. חשוב בהם כנתוני בדיקה תחביריים נכונים שלא יצרו בעיות תאימות בסביבת הפיתוח שלך.

מהו CNPJ וחשיבותו

CNPJ משמש כמזהה תאגידי של ברזיל - דומה ל-EIN בארצות הברית או למספר רישום חברה בבריטניה. כל ישות עסקית הפועלת באופן חוקי בברזיל חייבת להחזיק אחד, המונפק על ידי הרסייטה פדרל (שירות ההכנסות הפדרלי).

תיתקל ב-CNPJ כאשר:

  • מעבד תשלומים: שערי תשלום ברזילאיים דורשים אימות CNPJ לחשבונות סוחרים
  • ציות מס: כל חשבונית המונפקת בברזיל חייבת לכלול CNPJ תקף
  • רישום עסקי: סוכויות ממשלתיות משתמשות ב-CNPJ כדי לעקוב אחר ישויות משפטיות במערכות
  • פעולות בנקאיות: פתיחת חשבונות תאגידיים או עיבוד העברות בינלאומיות
  • יבוא/ייצוא: תיעוד מכס דורש אימות CNPJ
  • חוזי ממשלה: מערכות מכרזים ציבוריים מאמתות CNPJ לפני קבלת הצעות

מניסיוני בעבודה עם פלטפורמות מסחר אלקטרוני ברזילאיות, אחד מנקודות השילוב הנפוצות ביותר היא זרימת התשלום שבה משתמשים מזינים את ה-CNPJ שלהם לרכישות תאגידיות. הלוגיקה שלך לאימות צריכה לתפוס שגיאות בעיצוב לפני שמעבד התשלומים יעשה זאת - אחרת תראה עסקאות שנכשלו שניתן היה למנוע.

מבנה ותבנית CNPJ

CNPJ מורכב מ-14 ספרות בתבנית: XX.XXX.XXX/YYYY-ZZ

פירוק המבנה:

  1. 8 הספרות הראשונות (XX.XXX.XXX): מספר הרישום הבסיסי המוקצה באופן ייחודי לחברה
  2. 4 הספרות הבאות (/YYYY): מזהה סניף או מיקום—/0001 מציין משרד ראשי, בעוד /0002, /0003 מייצגים סניפים
  3. 2 הספרות האחרונות (-ZZ): ספרות אימות המחושבות באמצעות אלגוריתם משוקלל

דוגמה: 12.345.678/0001-95

מה שמעניין לגבי מזהה הסניף: כאשר חברה פותחת מספר מיקומים, כל אחד מקבל את אותן 8 הספרות הראשונות אך מספר סניף שונה. כך שאם רשת קמעונאית יש 50 חנויות, יהיו להם CNPJ המסתיימים ב-/0001 עד /0050, כולם חולקים את אותו מספר בסיסי. זה הופך את הזיהוי של כך שמספרי CNPJ מרובים שייכים לאותה חברה אם.

ספרות הבדיקה אינן אקראיות—הן מחושבות באמצעות אלגוריתם מודולוס-11 עם רצפי משקל ספציפיים. בחירת עיצוב זו, נפוצה במסמכים מנהליים ברזילאיים, הופכת את זה מבחינה מתמטית קשה לזייף מספרים תקפים או ליצור בטעות מספרים תקפים דרך שגיאות הקלדה.

כיצד אימות CNPJ עובד בפועל

אלגוריתם האימות משתמש בחישוב מודולוס-11 ממושקל. הנה ההיגיון מאחוריו:

חישוב ספרת הביקורת הראשונה

  1. קח את 12 הספרות הראשונות והכפל כל אחת במשקלות: 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2
  2. חבר את כל המכפלות
  3. חלק את הסכום ב-11 וקבל את השארית
  4. אם השארית < 2, ספרת הביקורת היא 0; אחרת היא 11 - השארית

חישוב ספרת הביקורת השנייה

  1. קח את 13 הספרות הראשונות (כולל ספרת הביקורת הראשונה) והכפל במשקלות: 6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2
  2. חבר את כל המכפלות
  3. חלק ב-11 וקבל את השארית
  4. אם השארית < 2, ספרת הביקורת היא 0; אחרת היא 11 - השארית

מדוע גישה זו עובדת: מערכת ההכפלה הממושקלת יוצרת קשר ייחודי בין כל 12 הספרות הבסיסיות וספרות הביקורת הנובעות מהן. שינוי אפילו ספרה אחת במספר הבסיסי מייצר ספרות ביקורת שונות, מה שתופס שגיאות העתקה נפוצות כמו החלפת שתי ספרות (הקלדת 12.345 במקום 12.354).

הערה מעשית: CNPJ עם ספרות זהות (כמו 11.111.111/1111-11) נחשבים אוטומטית כלא תקפים, גם אם הם עוברים את הבדיקה המתמטית. רשות המס (Receita Federal) מוציאה במפורש דפוסים אלה כדי למנוע מקרים טריוויאליים.

כיצד להשתמש במחולל ומאמת CNPJ

יצירת CNPJ לבדיקות

צריך CNPJ תקף עבור מסד הנתונים שלך? הנה כיצד:

  1. לחץ על "צור CNPJ"
  2. הכלי יוצר מספר תקף מבחינה מתמטית מיידית
  3. לחץ על "העתק" כדי להעתיק אותו ללוח
  4. הדבק אותו בטפסי בדיקה, זרעי מסד נתונים או בדיקות יחידה

כל CNPJ שנוצר עובר את כל בדיקות האימות האלגוריתמיות אך אינו רשום ברשות הפדרלית. משמעות הדבר שניתן להשתמש בהם בחופשיות בפיתוח מבלי לדאוג לשימוש בזיהוי של חברה אמיתית.

אימות מספרי CNPJ

יש לך CNPJ שאתה צריך לאמת? המאמת מטפל בכך:

  1. הדבק או הקלד את ה-CNPJ בשדה הקלט
  2. אל תדאג לעיצוב—זה עובד עם 12345678000195 או 12.345.678/0001-95
  3. לחץ על "אמת"
  4. קבל משוב מיידי על נכונות ספרות הבדיקה

מה המאמת בודק: אורך נכון (14 ספרות), חישובי ספרות בדיקה נכונים, והוצאה של תבניות לא תקפות כמו ספרות זהות. מה הוא לא בודק: האם ה-CNPJ רשום במסד הנתונים הממשלתי—זה דורש שאילתה ישירה לרשות הפדרלית.

שימושים מעשיים למחולל ומאמת CNPJ

פיתוח תוכנה ובדיקות

זריעת מסד נתונים: בעת הקמת סביבת staging עם נתוני בדיקה ריאליסטיים, אתה צריך עשרות או מאות CNPJ תקפים. יצירת אלה באופן ידני היא מייגעת, ושימוש במזהי חברות אמיתיים מעורר חששות פרטיות. CNPJ שנוצרו פותרים את שני הבעיות.

בדיקת יחידה של מקרי קצה: פונקציית האימות שלך צריכה לדחות 00.000.000/0000-00 אך לקבל 11.222.333/0001-81. קיום מחולל מאפשר לך ליצור במהירות מקרי בדיקה תקפים ובמכוון לא תקפים כדי לאמת שההיגיון שלך מטפל בתנאי גבול בצורה נכונה.

בדיקות רגרסיה של QA: בעת בדיקת טפסי הרשמה או זרימות תשלום B2B, צוותי QA צריכים נתוני בדיקה טריים לכל הרצה. בעיה נפוצה שראיתי: סביבות בדיקה מתלכלכות עם אותם 5-6 CNPJ המשמשים שוב ושוב, מה שמסתיר באגים המופיעים רק עם דפוסי ספרות מסוימים.

בדיקות אינטגרציית API: אם אתה משתמש בעיבוד תשלומים ברזילאיים כמו PagSeguro או Mercado Pago, סביבות הסנדבוקס שלהם דורשות לעתים קרובות עיצוב CNPJ תקף. החישוב צריך להיות נכון גם אם אינך פוגע במסדי נתונים של הפקה.

עיבוד ואימות נתונים

ניקוי נתונים מיובאים: קיבלת CSV עם 10,000 רשומות חברות ברזילאיות. לפני עיבוד, אתה צריך לזהות אילו CNPJ פגומים. הרצת אלה דרך המאמת מסמנת רשומות עם שגיאות הקלדה, קיצור או ספרות בדיקה שגויות - וחוסך שעות של איתור באגים.

אימות טופס בצד הלקוח: תפיסת CNPJ לא תקפים לפני שליחת טופס משפרת את חוויית המשתמש. אף אחד לא רוצה למלא טופס הרשמה בן 20 שדות רק כדי לקבל שגיאה בשליחה בגלל החלפת שתי ספרות ב-CNPJ שלו.

אנונימיזציה של נתונים לניתוח: בעת הכנת נתוני הפקה לשיתוף עם צוותי אנליטיקה או שותפים חיצוניים, אתה צריך להחליף CNPJ אמיתיים עם כאלה תקפים אך מזויפים. זה שומר על שלמות הפניות בסט הנתונים שלך תוך הגנה על זהויות עסקיות בפועל.

פעולות עסקיות בינלאומיות

הבנת דרישות ברזילאיות: אם אתה מתרחב לשוק הברזילאי, תיתקל בדרישות CNPJ בחוזים, חשבוניות ותיעוד משלוח. קיום כלי לניסוי בפורמט עוזר לך להבין מה המערכות שלך צריכות לטפל.

מפרטי אינטגרציה של צד שלישי: בעת סקירת תיעוד API של ספקי SaaS ברזילאיים, תראה לעתים קרובות שדות CNPJ בדוגמאות מטען. היכולת ליצור ערכי בדיקה תקפים מסייעת לך לייצר אינטגרציות מהר יותר.

גישות אלטרנטיביות לאימות CNPJ

ספריות תכנות

אם אתה צריך אימות CNPJ כחלק מהגיון היישום שלך, הספריות הבאות מיישמות את אלגוריתם ספרת הביקורת:

ספריות אלה בדרך כלל מטפלות בעיצוב, ניתוח ואימות עבור סוגי מסמכים ברזילאיים שונים (CPF, CNPJ וכו').

ממשקי API לאימות רשמיים

עבור מערכות ייצור הזקוקות לאימות רישום עסקי בפועל:

  • שירות ציבורי של רשות המס הברזילאית: ה-Consulta CNPJ API מאפשר אימות מול מסד הנתונים הרשמי (דורש הרשאה מתאימה והגבלת קצב)
  • ספקי נתונים צד שלישי: שירותים כמו Serasa Experian ו-Boa Vista SCPC מציעים ממשקי API מסחריים המחזירים פרטי חברה, סטטוס רישום ומידע על אשראי

הערה: שירותים אלה בודקים רישום בפועל, ולא רק תקפות מתמטית. תזדקק להרשאה מתאימה ויש לצפות בעלויות ממשק API לשימוש בייצור.

מתי להשתמש בכל גישה

השתמש בכלי דפדפן זה כאשר: אתה צריך אימות מהיר ללא התקנת תלויות, יצירת נתוני בדיקה להדגמות, או ללמידת אופן פעולת אימות CNPJ.

השתמש בספרייה כאשר: אתה בונה יישום הזקוק לאימות בצד הלקוח או השרת כחלק מעיבוד טופס.

השתמש בממשק API רשמי כאשר: אתה צריך לאמת שCNPJ תואם לישות עסקית אמיתית ופעילה עם סטטוס רישום נוכחי.

פרטי יישום טכני

כלי זה פועל באופן מלא בדפדפן שלך באמצעות JavaScript - ללא בקשות שרת, ללא העברת נתונים מהמכשיר שלך. הנה כיצד האלגוריתמים עובדים מאחורי הקלעים, עם קוד שתוכל להתאים לפרויקטים שלך:

אלגוריתם יצירת CNPJ

1function generateCNPJ() {
2  // יצירת 12 הספרות הראשונות באופן אקראי
3  const digits = Array.from({ length: 12 }, () => Math.floor(Math.random() * 10));
4  
5  // חישוב ספרת הביקורת הראשונה
6  const firstCheckDigit = calculateCheckDigit(digits);
7  digits.push(firstCheckDigit);
8  
9  // חישוב ספרת הביקורת השנייה
10  const secondCheckDigit = calculateCheckDigit(digits);
11  digits.push(secondCheckDigit);
12  
13  // עיצוב ה-CNPJ
14  return formatCNPJ(digits.join(''));
15}
16
17function calculateCheckDigit(digits) {
18  const weights = digits.length < 13 
19    ? [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2] 
20    : [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];
21  
22  const sum = digits.reduce((acc, digit, index) => {
23    return acc + digit * weights[index];
24  }, 0);
25  
26  const remainder = sum % 11;
27  return remainder < 2 ? 0 : 11 - remainder;
28}
29

אלגוריתם אימות CNPJ

1function validateCNPJ(cnpj) {
2  // הסרת תווים לא-נומריים
3  const cleanCNPJ = cnpj.replace(/\D/g, '');
4  
5  // בדיקת אורך נכון
6  if (cleanCNPJ.length !== 14) return false;
7  
8  // בדיקת דפוסים לא חוקיים (כל הספרות זהות)
9  if (/^(\d)\1+$/.test(cleanCNPJ)) return false;
10  
11  // המרה למערך ספרות
12  const digits = cleanCNPJ.split('').map(Number);
13  
14  // בדיקת ספרת הביקורת הראשונה
15  const expectedFirstDigit = calculateCheckDigit(digits.slice(0, 12));
16  if (digits[12] !== expectedFirstDigit) return false;
17  
18  // בדיקת ספרת הביקורת השנייה
19  const expectedSecondDigit = calculateCheckDigit(digits.slice(0, 13));
20  if (digits[13] !== expectedSecondDigit) return false;
21  
22  return true;
23}
24

פונקציית עיצוב CNPJ

1function formatCNPJ(cnpj) {
2  // הסרת תווים לא-נומריים
3  const cleanCNPJ = cnpj.replace(/\D/g, '');
4  
5  // עיצוב על פי אורך
6  if (cleanCNPJ.length <= 2) {
7    return cleanCNPJ;
8  } else if (cleanCNPJ.length <= 5) {
9    return `${cleanCNPJ.slice(0, 2)}.${cleanCNPJ.slice(2)}`;
10  } else if (cleanCNPJ.length <= 8) {
11    return `${cleanCNPJ.slice(0, 2)}.${cleanCNPJ.slice(2, 5)}.${cleanCNPJ.slice(5)}`;
12  } else if (cleanCNPJ.length <= 12) {
13    return `${cleanCNPJ.slice(0, 2)}.${cleanCNPJ.slice(2, 5)}.${cleanCNPJ.slice(5, 8)}/${cleanCNPJ.slice(8)}`;
14  } else {
15    return `${cleanCNPJ.slice(0, 2)}.${cleanCNPJ.slice(2, 5)}.${cleanCNPJ.slice(5, 8)}/${cleanCNPJ.slice(8, 12)}-${cleanCNPJ.slice(12, 14)}`;
16  }
17}
18

הפונקציות הליבתיות הללו ניתן ליישם בשפות תכנות אחרות בהתאם לאותו הגיון. להלן דוגמאות ב-Python וב-Java:

יישום Python

1import random
2
3def calculate_check_digit(digits):
4    weights = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2] if len(digits) < 13 else [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]
5    
6    total = 0
7    for i in range(len(digits)):
8        total += digits[i] * weights[i]
9    
10    remainder = total % 11
11    return 0 if remainder < 2 else 11 - remainder
12
13def generate_cnpj():
14    # יצירת 12 הספרות הראשונות באופן אקראי
15    digits = [random.randint(0, 9) for _ in range(12)]
16    
17    # חישוב ספרת הביקורת הראשונה
18    first_check = calculate_check_digit(digits)
19    digits.append(first_check)
20    
21    # חישוב ספרת הביקורת השנייה
22    second_check = calculate_check_digit(digits)
23    digits.append(second_check)
24    
25    # עיצוב ה-CNPJ
26    cnpj = ''.join(map(str, digits))
27    return f"{cnpj[:2]}.{cnpj[2:5]}.{cnpj[5:8]}/{cnpj[8:12]}-{cnpj[12:]}"
28
29def validate_cnpj(cnpj):
30    # הסרת תווים לא-נומריים
31    cnpj = ''.join(filter(str.isdigit, cnpj))
32    
33    # בדיקת אורך
34    if len(cnpj) != 14:
35        return False
36    
37    # בדיקה אם כל הספרות זהות
38    if len(set(cnpj)) == 1:
39        return False
40    
41    # המרה למערך מספרים שלמים
42    digits = [int(d) for d in cnpj]
43    
44    # אימות ספרת הביקורת הראשונה
45    first_check = calculate_check_digit(digits[:12])
46    if digits[12] != first_check:
47        return False
48    
49    # אימות ספרת הביקורת השנייה
50    second_check = calculate_check_digit(digits[:13])
51    if digits[13] != second_check:
52        return False
53    
54    return True
55

יישום Java

1import java.util.Random;
2
3public class CNPJUtils {
4    
5    public static String generateCNPJ() {
6        Random random = new Random();
7        int[] digits = new int[14];
8        
9        // יצירת 12 הספרות הראשונות באופן אקראי
10        for (int i = 0; i < 12; i++) {
11            digits[i] = random.nextInt(10);
12        }
13        
14        // חישוב ספרת הביקורת הראשונה
15        digits[12] = calculateCheckDigit(digits, 12);
16        
17        // חישוב ספרת הביקורת השנייה
18        digits[13] = calculateCheckDigit(digits, 13);
19        
20        // עיצוב ה-CNPJ
21        return String.format("%02d.%03d.%03d/%04d-%02d",
22                digits[0] * 10 + digits[1],
23                digits[2] * 100 + digits[3] * 10 + digits[4],
24                digits[5] * 100 + digits[6] * 10 + digits[7],
25                digits[8] * 1000 + digits[9] * 100 + digits[10] * 10 + digits[11],
26                digits[12] * 10 + digits[13]);
27    }
28    
29    private static int calculateCheckDigit(int[] digits, int length) {
30        int[] weights = length < 13 
31            ? new int[]{5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2}
32            : new int[]{6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2};
33        
34        int sum = 0;
35        for (int i = 0; i < length; i++) {
36            sum += digits[i] * weights[i];
37        }
38        
39        int remainder = sum % 11;
40        return remainder < 2 ? 0 : 11 - remainder;
41    }
42    
43    public static boolean validateCNPJ(String cnpj) {
44        // הסרת תווים לא-נומריים
45        cnpj = cnpj.replaceAll("\\D", "");
46        
47        // בדיקת אורך
48        if (cnpj.length() != 14) {
49            return false;
50        }
51        
52        // בדיקה אם כל הספרות זהות
53        boolean allDigitsSame = true;
54        for (int i = 1; i < cnpj.length(); i++) {
55            if (cnpj.charAt(i) != cnpj.charAt(0)) {
56                allDigitsSame = false;
57                break;
58            }
59        }
60        if (allDigitsSame) {
61            return false;
62        }
63        
64        // המרה למערך מספרים שלמים
65        int[] digits = new int[14];
66        for (int i = 0; i < 14; i++) {
67            digits[i] = Character.getNumericValue(cnpj.charAt(i));
68        }
69        
70        // אימות ספרת הביקורת הראשונה
71        int firstCheck = calculateCheckDigit(digits, 12);
72        if (digits[12] != firstCheck) {
73            return false;
74        }
75        
76        // אימות ספרת הביקורת השנייה
77        int secondCheck = calculateCheckDigit(digits, 13);
78        if (digits[13] != secondCheck) {
79            return false;
80        }
81        
82        return true;
83    }
84}
85

הגבלות וזהירות חשובות

מה הכלי יכול ואינו יכול לעשות

מה הוא מאמת: נכונות מתמטית - האם ספרות הבדיקה תואמות לחישוב האלגוריתם.

מה הוא לא מאמת: האם ה-CNPJ רשום ברשות הפדרלית, האם הוא שייך לחברה פעילה, או האם הוא קשור לשם העסק שאתה מצפה.

חשוב לחשוב על זה כמו בדיקת איות לעומת בדיקת עובדות. כלי זה אומר לך אם CNPJ "מאוית" נכון בהתאם לכללים מתמטיים, אך הוא לא יכול לומר לך אם המספר תואם לישות עסקית אמיתית ופעילה.

שימוש חוקי ואתי

CNPJ-ים שנוצרו הם לצרכי בדיקה ופיתוח בלבד. הם מתמטית תקפים אך אינם רשומים אצל הרשויות הברזילאיות, מה שאומר:

  • בטוח לשימוש ב: מסדי נתונים לבדיקה, בדיקות יחידה של לוגיקת אימות, סביבות QA, דוגמאות קוד בתיעוד
  • אף פעם לא לשימוש ב: הגשת מסים, רישום עסקי, חתימה על חוזים, עיבוד עסקאות אמיתיות, או הצגה שגויה של זהות עסקית

שימוש ב-CNPJ מזויף למטרות רשמיות אינו רק לא אתי - הוא בלתי חוקי על פי החוק הברזילאי ויכול להוביל להאשמות בהונאה.

הגבלות טכניות שכדאי לדעת

יצירה אקראית יש לה השלכות: הכלי יוצר את 12 הספרות הראשונות באופן אקראי. CNPJ-ים אמיתיים שמונפקים על ידי הרשות הפדרלית עוקבים אחר דפוסים פנימיים הקשורים לתאריך רישום, משרד אזורי וסוג עסק. מספרים שנוצרו לא יתאימו לדפוסים אלה, מה שמערכות אימות מתוחכמות עלולות לסמן.

אין אימות סמנטי: פורמט CNPJ תקף לא אומר הקשר עסקי תקף. למשל, גופי ממשל להם טווחי CNPJ ספציפיים - גנרטור זה עלול ליצור אחד במקרה, אך הוא לא יהיה בעל משמעות.

טיפול בפורמט: המאמת מקבל פורמטים שונים (12345678000195, 12.345.678/0001-95), אך מערכות מורשת מסוימות מצפות לפורמט מדויק. תמיד בדוק עם דרישות האינטגרציה הספציפיות שלך.

פרטיות ואבטחה

כל העיבוד מתבצע בצד הלקוח בדפדפן שלך. אף CNPJ שאתה יוצר או מאמת לא נשלח לשרתים, לא מתועד ולא מאוחסן. הכלי לא מבקש, מטפל או מעבד כל מידע אישי.

שאלות נפוצות על אימות CNPJ

מה ההבדל בין אימות לבדיקת CNPJ?

אימות בודק אם המספר מתמטית תקין - פורמט נכון, ספרות בדיקה נכונות, ללא דפוסים לא תקינים. הכלי הזה מבצע אימות.

בדיקה בודקת אם ה-CNPJ רשום בחברה ממשית במאגר הרשמי של Receita Federal. בדיקה דורשת שאילתה במאגר הממשלתי וזה לא משהו שהכלי הזה עושה.

ניתן להיות עם CNPJ תקין לחלוטין שאינו מאומת (כמו מספרי בדיקה שהכלי מייצר), או CNPJ לא תקין השייך לחברה אמיתית (כי מישהו הקליד אותו בטעות).

האם ניתן להשתמש ב-CNPJs שנוצרו לבדיקת הפקה?

זה תלוי במה שאתה מתכוון ב"בדיקת הפקה". הם בסדר לסביבות staging, בדיקות עומס ו-QA לפני השקה. אבל אם "בדיקת הפקה" אומרת בדיקה עם עסקאות אמיתיות, ממשקי ממשלה אמיתיים או מערכות פיננסיות אמיתיות - אז לא, אתה צריך CNPJs רשומים בפועל.

גישה בטוחה יותר: השתמש ב-CNPJs שנוצרו בסביבות בדיקה מבודדות, ואז עבור לקבוצה קטנה של CNPJs חברה אמיתיים (שאתה שולט בהם) בעת בדיקת אינטגרציות הפקה.

למה המאמת דוחה 11.111.111/1111-11?

למרות שCNPJ עם ספרות זהות יכול מבחינה מתמטית ליצור ספרות בדיקה תקינות, Receita Federal מדירה במפורש דפוסים אלה. זו כלל עסקי, לא מתמטי. אותו דבר חל על דפוסים רצופים במערכות אימות מסוימות.

זה דומה לאופן שבו מערכות רבות דוחות סיסמאות כמו "password123" גם אם הן עומדות בדרישות אורך - הן תקינות טכנית אבל מעשית לא מקובלות.

כיצד לטפל באימות CNPJ בלוקאלים שונים?

חברות ברזילאיות העושות עסקים בינלאומיים לעתים מוותרות על תווי עיצוב בעת הזנת CNPJs למערכות זרות. הלוגיקה שלך לאימות צריכה להסיר תווים לא-ספרתיים לפני הבדיקה:

1const cleanCNPJ = input.replace(/\D/g, ''); // הסר הכל למעט ספרות
2

קבל 12.345.678/0001-95, 12345678000195, ו-12 345 678 0001 95 כקלטים שווים.

מה לגבי אימות CNPJ מול CPF?

CPF (Cadastro de Pessoas Físicas) הוא מספר זיהוי מס אישי בברזיל, בעוד CNPJ הוא עבור עסקים. הם משתמשים באלגוריתמי ספרות בדיקה ואורכים שונים (CPF יש 11 ספרות, CNPJ יש 14). אם אתה בונה אפליקציה ברזילאית שמטפלת בשניהם, תצטרך פונקציות אימות נפרדות - אף כי ספריות רבות תומכות בשני הפורמטים.

דפוס נפוץ: תן למשתמשים להזין CPF או CNPJ באותו שדה, ואז זהה את הסוג על בסיס אורך לאחר הסרת עיצוב.

האם זה עובד עבור חברות זרות הפועלות בברזיל?

חברות זרות הפועלות בברזיל חייבות גם כן לקבל CNPJs מ-Receita Federal. ה-CNPJs שלהן עוקבים אחר אותו פורמט וכללי אימות כמו חברות מקומיות. אין פורמט CNPJ מיוחד ל"חברה זרה".

עם זאת, לחברות זרות עשויות להיות דרישות תיעוד נוספות ותהליכי רישום שונים - התייעץ עם עורך דין עסקי ברזילאי לפרטים ספציפיים.

האם ניתן לשאול את מאגר הממשלה כדי לאמת רישום CNPJ?

כן, Receita Federal מספקת גישה ציבורית לאימות מידע בסיסי על CNPJ דרך שירות Consulta Pública CNPJ. תוכל לחפש CNPJs באופן ידני או, עם הרשאה מתאימה, להשתמש ב-APIs שלהם לגישה תכנותית.

שימו לב שבשימוש נרחב נדרש רישום וישנם הגבלות קצב כדי למנוע שימוש לרעה.

כמה תכוף CNPJs משתנים?

CNPJs הם מזהים קבועים שאינם משתנים כאשר חברה משנה את שמה, כתובתה או מבנה הבעלות. עם זאת, אם חברה סוגרת ולאחר מכן נרשמת מחדש, היא עשויה לקבל CNPJ חדש. מספרי סניף (החלק /XXXX) יכולים להתווסף ככל שחברות פותחות מיקומים חדשים, אבל המספר הבסיסי בן 8 הספרות נשאר קבוע.

מקורות ומשאבים נוספים

מקורות ממשלתיים רשמיים

  1. רשות המס הפדרלית של ברזיל - פורטל רשמי - האתר הרשמי של שירות ההכנסות הפדרלי הברזילאי עם שירותי רישום ואימות CNPJ
  2. חיפוש ציבורי CNPJ - חיפוש CNPJ ציבורי - שירות ממשלתי רשמי לאימות סטטוס רישום CNPJ
  3. הנחיה נורמטיבית RFB מס' 1863/2018 - תקנות משפטיות המסדירות רישום ושימוש CNPJ בברזיל

תקנים טכניים ותיעוד

  1. אלגוריתמי אריתמטיקה מודולרית - חישוב ספרת הביקורת משתמש באריתמטיקה מודולו 11, גישה סטנדרטית לאימות ספרות
  2. ISO/IEC 7064 - תקן בינלאומי למערכות ספרות ביקורת שהשפיע על עיצוב אימות מסמכים ברזילאיים
  3. החוק האזרחי הברזילאי (חוק מס' 10.406/2002) - מסגרת משפטית המגדירה סיווגי ישויות עסקיות הדורשות רישום CNPJ

משאבי מפתחים

  1. מאגר חבילות NPM - npmjs.com - מאגר לספריות JavaScript כולל מאמתי מסמכים ברזילאיים
  2. PyPI (מדד חבילות Python) - pypi.org - ספריות Python לאימות CNPJ ועיבוד מסמכים ברזילאיים
  3. GitHub - יישומים בקוד פתוח של אימות CNPJ במספר שפות תכנות

התחל ליצירה ואימות מספרי CNPJ

בין אם אתה בונה פלטפורמת מסחר אלקטרוני ברזילאית, בודק אינטגרציות תשלום עם מרקדו פאגו, או רק צריך להבין איך עובד אימות CNPJ, כלי זה נותן לך גישה מיידית ליכולות יצירה ואימות.

ללא התקנה, ללא מפתחות API, ללא הגדרה מסובכת. פשוט פתח את הדפדפן והתחל לעבוד עם מזהי עסקים ברזילאיים תקפים.