تخطي إلى المحتوى

مولد ومتحقق CNPJ - أداة معرف الأعمال البرازيلي

توليد أرقام CNPJ صالحة للاختبار أو التحقق من معرفات الأعمال البرازيلية على الفور. أداة مجانية مع التحقق من الرقم التحقق للمطورين الذين يعملون مع سجل الشركات الوطني.

مولد ومتحقق من CNPJ البرازيلي

مولد CNPJ

توليد رقم CNPJ برازيلي صالح لأغراض الاختبار.

متحقق من CNPJ

التحقق مما إذا كان رقم CNPJ البرازيلي صالحًا.

حاسبة التحميل...
📚

التوثيق

فهم أرقام CNPJ البرازيلية

CNPJ (Cadastro Nacional da Pessoa Jurídica) هو النسخة البرازيلية من معرف الضرائب الشركات - وهو رقم مكون من 14 رقمًا يحدد كل كيان تجاري قانوني في البلاد. إذا كنت تبني برنامجًا يتعامل مع بيانات الأعمال البرازيلية، فستواجه بسرعة هذه الأرقام في نماذج التسجيل والفواتير وتكاملات واجهة برمجة التطبيقات.

إليك ما يجعل هذه الأداة عملية: فهي تولد CNPJs صالحة رياضيًا للاختبار دون استخدام معرفات الشركات الحقيقية. عندما تقوم بإعداد قاعدة بيانات اختبار تحتوي على 1,000 سجل أو تصحح روتين التحقق في الساعة 2 صباحًا، ستحتاج إلى CNPJs تجتاز الفحوصات الخوارزمية ولكنها لن تتطابق بشكل عرضي مع الشركات الفعلية. هذا بالضبط ما يتم إنشاؤه هنا.

الأرقام المنشأة هنا تتبع خوارزمية التحقق الرسمية لـ Receita Federal (الخدمة الضريبية الفيدرالية البرازيلية). لديها أرقام تحقق صحيحة وتنسيق مناسب - فهي مجرد أرقام غير مسجلة في قاعدة بيانات الحكومة. فكر فيها كبيانات اختبار صحيحة بنحويًا لن تسبب مشاكل في بيئة التطوير الخاصة بك.

ما هو CNPJ ولماذا يهم

يعمل CNPJ كمعرف للشركات في البرازيل - مشابه للـ EIN في الولايات المتحدة أو رقم تسجيل الشركة في المملكة المتحدة. يجب على كل كيان تجاري يعمل بشكل قانوني في البرازيل أن يكون لديه واحد، يصدره الريسيتا فيديرال (خدمة الإيرادات الفيدرالية).

ستواجه CNPJs عند:

  • معالجة المدفوعات: تتطلب بوابات الدفع البرازيلية التحقق من CNPJ لحسابات التجار
  • الامتثال الضريبي: يجب أن تتضمن كل فاتورة صادرة في البرازيل CNPJ صالحًا
  • تسجيل الأعمال: تستخدم الوكالات الحكومية CNPJs لتتبع الكيانات القانونية عبر الأنظمة
  • العمليات المصرفية: فتح حسابات شركات أو معالجة التحويلات الدولية
  • الاستيراد/التصدير: تتطلب مستندات الجمارك التحقق من CNPJ
  • العقود الحكومية: تتحقق أنظمة المناقصات العامة من CNPJs قبل قبول العطاءات

من خلال خبرتي في العمل مع منصات التجارة الإلكترونية البرازيلية، فإن نقطة التكامل الأكثر شيوعًا هي تدفق الدفع حيث يدخل المستخدمون CNPJ للمشتريات التجارية. يجب أن يلتقط منطق التحقق الخاص بك أخطاء التنسيق قبل معالج الدفع - وإلا ستشاهد معاملات فاشلة كان من الممكن منعها.

هيكل وتنسيق CNPJ

يتكون CNPJ من 14 رقمًا منسقًا كالتالي: XX.XXX.XXX/YYYY-ZZ

تفصيل الهيكل:

  1. أول 8 أرقام (XX.XXX.XXX): رقم التسجيل الأساسي الفريد المخصص للشركة
  2. الـ 4 أرقام التالية (/YYYY): معرف الفرع أو المؤسسة—/0001 يشير إلى المقر الرئيسي، بينما /0002، /0003 يمثلان مواقع الفروع
  3. آخر رقمين (-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).

ملاحظة عملية: يتم اعتبار CNPJs التي تحتوي على أرقام متطابقة (مثل 11.111.111/1111-11) غير صالحة تلقائيًا، حتى لو اجتازت التحقق الرياضي. تستبعد Receita Federal هذه الأنماط صراحةً لمنع الحالات التافهة.

كيفية استخدام مولد ومتحقق CNPJ

توليد CNPJs للاختبار

تحتاج إلى CNPJ صالح لقاعدة بيانات الاختبار الخاصة بك؟ إليك كيفية ذلك:

  1. انقر على "توليد CNPJ"
  2. يقوم الأداة بإنشاء رقم رياضيًا صالحًا على الفور
  3. انقر على "نسخ" للحصول عليه في الحافظة
  4. الصق في نماذج الاختبار الخاصة بك، أو بذور قاعدة البيانات، أو اختبارات الوحدة

كل CNPJ تم توليده يمر بجميع عمليات التحقق الخوارزمية ولكنه غير مسجل في Receita Federal. هذا يعني أنه يمكنك استخدامها بحرية في التطوير دون القلق من استخدام معرف شركة حقيقية عن طريق الخطأ.

التحقق من أرقام CNPJ

هل لديك CNPJ تحتاج إلى التحقق منه؟ يتعامل المتحقق معه:

  1. الصق أو اكتب CNPJ في حقل الإدخال
  2. لا تقلق بشأن التنسيق - يعمل مع 12345678000195 أو 12.345.678/0001-95
  3. انقر على "التحقق"
  4. احصل على تغذية راجعة فورية حول صحة أرقام التحقق

ما يتحقق منه المتحقق: الطول الصحيح (14 رقمًا)، وحسابات رقم التحقق الصحيحة، واستبعاد الأنماط غير الصالحة مثل الأرقام المتطابقة. ما لا يتحقق منه: ما إذا كان CNPJ مسجلاً في قاعدة بيانات الحكومة - وهذا يتطلب الاستعلام مباشرة من Receita Federal.

الاستخدامات العملية لمولد ومتحقق CNPJ

تطوير البرمجيات والاختبار

بذر قاعدة البيانات: عند إعداد بيئة مرحلية مع بيانات اختبار واقعية، تحتاج إلى عشرات أو مئات من CNPJs الصالحة. إنشاء هذه البيانات يدويًا مرهق، واستخدام معرفات الشركات الحقيقية يثير مخاوف الخصوصية. يحل CNPJ المولد كلا المشكلتين.

اختبار الحالات الحدية: يجب على دالة التحقق الخاصة بك رفض 00.000.000/0000-00 وقبول 11.222.333/0001-81. يتيح لك المولد إنشاء حالات اختبار صالحة وغير صالحة عمدًا للتحقق من معالجة المنطق الخاص بك للظروف الحدية بشكل صحيح.

اختبار التراجع للجودة: عند اختبار نماذج التسجيل أو تدفقات الدفع بين الشركات، تحتاج فرق ضمان الجودة إلى بيانات اختبار جديدة لكل تشغيل. مشكلة شائعة رأيتها: تتلوث بيئات الاختبار بنفس 5-6 CNPJs المستخدمة بشكل متكرر، مما يخفي الأخطاء التي تظهر فقط مع أنماط الأرقام المحددة.

اختبار تكامل واجهة برمجة التطبيقات: إذا كنت تقوم بالتكامل مع معالجي المدفوعات البرازيليين مثل PagSeguro أو Mercado Pago، فإن بيئاتهم التجريبية غالبًا ما تتطلب تنسيق CNPJ صالح. يجب أن تكون الرياضيات صحيحة حتى عند عدم الوصول إلى قواعد البيانات الإنتاجية.

معالجة وتحقق البيانات

تنظيف البيانات المستوردة: لقد استلمت ملف CSV يحتوي على 10,000 سجل شركة برازيلية. قبل المعالجة، تحتاج إلى تحديد CNPJs التالفة. تمرير هذه البيانات عبر المتحقق يميز الإدخالات بها أخطاء مطبعية أو اختصار أو أرقام تحقق غير صحيحة - مما يوفر ساعات من التصحيح.

التحقق من النموذج من جانب العميل: اكتشاف CNPJs غير الصالحة قبل إرسال النموذج يحسن تجربة المستخدم. لا أحد يريد ملء نموذج تسجيل من 20 حقلًا ليحصل على خطأ عند الإرسال لأنه قلب رقمين في CNPJ الخاص به.

إخفاء هوية البيانات للتحليل: عند إعداد بيانات الإنتاج للمشاركة مع فرق التحليلات أو الشركاء الخارجيين، تحتاج إلى استبدال CNPJs الحقيقية بأخرى صالحة ومزيفة. هذا يحافظ على سلامة المرجع في مجموعة البيانات الخاصة بك مع حماية الهويات التجارية الفعلية.

العمليات التجارية الدولية

فهم متطلبات البرازيل: إذا كنت تتوسع إلى السوق البرازيلية، ستواجه متطلبات CNPJ في العقود والفواتير ووثائق الشحن. وجود أداة للتجريب مع التنسيق يساعدك على فهم ما يجب على أنظمتك التعامل معه.

مواصفات التكامل مع الطرف الثالث: عند مراجعة وثائق واجهة برمجة التطبيقات من مزودي البرامج كخدمة البرازيليين، غالبًا ما ترى حقول CNPJ في أمثلة الحمولة. القدرة على توليد قيم اختبار صالحة تساعدك على نمذجة التكاملات بشكل أسرع.

طرق بديلة للتحقق من صحة CNPJ

مكتبات البرمجة

إذا كنت بحاجة إلى التحقق من صحة CNPJ مدمجًا في منطق التطبيق الخاص بك، فهذه المكتبات تنفذ خوارزمية رقم التحقق:

عادة ما تتعامل هذه المكتبات مع التنسيق والتحليل والتحقق من أنواع الوثائق البرازيلية المختلفة (CPF وCNPJ وغيرها).

واجهات برمجة التطبيقات الرسمية للتحقق

للأنظمة الإنتاجية التي تحتاج إلى التحقق من التسجيل التجاري الفعلي:

  • الخدمة العامة للإيرادات الفيدرالية: توفر واجهة برمجة تطبيقات Consulta CNPJ التحقق مقابل قاعدة البيانات الرسمية (تتطلب تفويضًا مناسبًا وتحديد معدل)
  • مزودو البيانات من طرف ثالث: تقدم خدمات مثل Serasa Experian وBoa Vista SCPC واجهات برمجة تطبيقات تجارية تعيد تفاصيل الشركة وحالة التسجيل ومعلومات الائتمان

ملاحظة: تتحقق هذه الخدمات من التسجيل الفعلي، وليس فقط الصلاحية الرياضية. ستحتاج إلى تفويض مناسب ويجب توقع تكاليف واجهة برمجة التطبيقات للاستخدام الإنتاجي.

متى تستخدم كل نهج

استخدم هذه الأداة في المتصفح عندما: تحتاج إلى تحقق سريع دون تثبيت التبعيات، أو إنشاء بيانات اختبار للعروض التوضيحية، أو تعلم كيفية عمل التحقق من CNPJ.

استخدم مكتبة عندما: تقوم ببناء تطبيق يحتاج إلى تحقق من جانب العميل أو الخادم كجزء من معالجة النموذج.

استخدم واجهة برمجة تطبيقات رسمية عندما: تحتاج إلى التحقق من أن 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 مسجلاً لدى Receita Federal، أو ما إذا كان ينتمي لشركة نشطة، أو ما إذا كان مرتبطًا باسم الشركة الذي تتوقعه.

فكر في الأمر كالتدقيق الإملائي مقابل التحقق من الحقائق. هذه الأداة تخبرك إذا كان CNPJ "مكتوبًا" بشكل صحيح وفقًا للقواعد الرياضية، لكنها لا تستطيع إخبارك ما إذا كان الرقم يتوافق مع كيان تجاري حقيقي ونشط.

الاستخدام القانوني والأخلاقي

يتم إنشاء CNPJs للاختبار والتطوير فقط. وهي رياضيًا صالحة لكنها غير مسجلة لدى السلطات البرازيلية، مما يعني:

  • آمن للاستخدام في: ملء قواعد بيانات الاختبار، اختبار وحدة منطق التحقق، بيئات ضمان الجودة، أمثلة التعليمات البرمجية في الوثائق
  • لا تستخدم أبدًا في: تقديم الضرائب، تسجيل الشركات، توقيع العقود، معالجة المعاملات الحقيقية، أو التظاهر بهوية تجارية

استخدام CNPJ مزيف للأغراض الرسمية ليس غير أخلاقي فحسب - بل هو غير قانوني بموجب القانون البرازيلي ويمكن أن يؤدي إلى تهم الاحتيال.

قيود تقنية يجب معرفتها

الإنشاء العشوائي له تداعيات: تقوم الأداة بإنشاء الأرقام الـ 12 الأولى بشكل عشوائي. يتبع CNPJs الفعلية الصادرة عن Receita Federal أنماطًا داخلية مرتبطة بتاريخ التسجيل والمكتب الإقليمي ونوع الشركة. لن تتطابق الأرقام المولدة مع هذه الأنماط، والتي قد تشير إليها أنظمة التحقق المتطورة.

لا يوجد تحقق دلالي: صحة تنسيق CNPJ لا تعني السياق التجاري الصالح. على سبيل المثال، للهيئات الحكومية نطاقات CNPJ محددة - قد ينشئ هذا المولد واحدًا بالصدفة، لكنه لن يكون ذا معنى.

معالجة التنسيق: يقبل المتحقق تنسيقات إدخال مختلفة (12345678000195، 12.345.678/0001-95)، لكن بعض الأنظمة القديمة تتوقع تنسيقًا دقيقًا. تأكد دائمًا من الاختبار مع متطلبات التكامل الخاصة بك.

الخصوصية والأمان

تتم جميع المعالجات على جانب العميل في متصفحك. لا يتم إرسال أو تسجيل أو تخزين أي CNPJs تقوم بإنشائها أو التحقق منها. لا تطلب الأداة أو تعالج أو تستخدم أي معلومات شخصية.

أسئلة شائعة حول التحقق من صحة CNPJ

ما الفرق بين التحقق من صحة وتأكيد CNPJ؟

التحقق من الصحة يتحقق من أن الرقم صحيح رياضياً - التنسيق الصحيح، وأرقام التحقق الصحيحة، وعدم وجود أنماط غير صالحة. يقوم هذا الأداة بالتحقق من الصحة.

التأكيد يتحقق مما إذا كان CNPJ مسجلاً في قاعدة بيانات Receita Federal الفعلية. يتطلب التأكيد الاستعلام من قاعدة بيانات الحكومة وهو ليس شيئًا تقوم به هذه الأداة.

يمكنك أن يكون لديك CNPJ صالح تمامًا غير مؤكد (مثل الأرقام التجريبية التي يولدها هذا الأداة)، أو CNPJ غير صالح ينتمي لشركة حقيقية (لأن شخصًا ما أخطأ في إدخاله).

هل يمكنني استخدام CNPJs المولدة للاختبار الإنتاجي؟

يعتمد ذلك على ما تقصده بـ "الاختبار الإنتاجي". إنها مناسبة لبيئات التجهيز، واختبار التحميل، والتأكيد قبل الإطلاق. ولكن إذا كان "الاختبار الإنتاجي" يعني الاختبار مع معاملات حقيقية، أو واجهات برمجة حكومية حقيقية، أو أنظمة مالية حقيقية - فالإجابة هي لا، ستحتاج إلى 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 أو، مع التفويض المناسب، استخدام واجهات برمجة التطبيقات الخاصة بهم للوصول البرمجي.

لاحظ أن الاستخدام الكثيف يتطلب التسجيل وهناك حدود معدل للمنع إساءة الاستخدام.

ما مدى تكرار تغير 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)

سواء كنت تبني منصة للتجارة الإلكترونية البرازيلية، أو تختبر تكاملات الدفع مع ميركادو باغو، أو تحتاج فقط إلى فهم كيفية عمل التحقق من أرقام التسجيل الضريبي، فإن هذه الأداة توفر لك وصولًا فوريًا لقدرات الإنشاء والتحقق.

لا تحتاج إلى تثبيت، ولا مفاتيح API، ولا إعداد معقد. فقط افتح متصفحك وابدأ العمل مع معرفات الأعمال البرازيلية الصالحة.