تولیدکننده و اعتبارسنج CNPJ - ابزار شناسه تجاری برزیل
تولید شمارههای CNPJ معتبر برای آزمایش یا اعتبارسنجی فوری شناسههای تجاری برزیل. ابزار رایگان با تأیید رقم کنترلی برای توسعهدهندگان که با ثبت ملی شخصیت حقوقی کار میکنند.
تولیدکننده و اعتبارسنج CNPJ برزیل
تولیدکننده CNPJ
تولید یک شماره CNPJ برزیل معتبر برای اهداف آزمایشی.
اعتبارسنج CNPJ
بررسی اعتبار یک شماره CNPJ برزیل.
مستندات
درک شمارههای CNPJ برزیل
CNPJ (Cadastro Nacional da Pessoa Jurídica) نسخه برزیلی شناسه مالیاتی شرکتی است - یک عدد 14 رقمی که هر واحد تجاری حقوقی در این کشور را شناسایی میکند. اگر در حال ساخت نرمافزاری هستید که با دادههای تجاری برزیل سر و کار دارد، به سرعت با این شمارهها در فرمهای ثبتنام، صورتحسابها و ادغامهای API مواجه خواهید شد.
دلیل کاربردی بودن این ابزار در این است: این شمارههای CNPJ از نظر ریاضی معتبر را برای آزمایش تولید میکند بدون اینکه از شناسههای شرکتهای واقعی استفاده شود. زمانی که در حال راهاندازی یک پایگاه داده آزمایشی با 1000 رکورد هستید یا در ساعت 2 صبح در حال اشکالزدایی یک روال اعتبارسنجی، به CNPJهایی نیاز دارید که از بررسیهای الگوریتمی عبور کنند اما تصادفاً با کسبوکارهای واقعی مطابقت نداشته باشند. دقیقاً همین چیزی است که این ابزار تولید میکند.
اعداد تولید شده در اینجا از الگوریتم اعتبارسنجی رسمی رسیسیتا فدرال (سازمان درآمد فدرال برزیل) پیروی میکنند. آنها دارای ارقام بررسی صحیح و قالببندی مناسب هستند - فقط در پایگاه داده دولتی ثبت نشدهاند. آنها را به عنوان دادههای آزمایشی از نظر نحوی صحیح که مشکلات انطباق در محیط توسعه ایجاد نمیکنند، در نظر بگیرید.
CNPJ چیست و چرا اهمیت دارد
CNPJ شناسه شرکتی برزیل است - مشابه EIN در ایالات متحده یا شماره ثبت شرکت در انگلستان. هر واحد تجاری که به طور قانونی در برزیل فعالیت میکند باید یکی داشته باشد، که توسط رسیسیتا فدرال (خدمات درآمد فدرال) صادر میشود.
شما با CNPJ در موارد زیر مواجه خواهید شد:
- پردازش پرداختها: درگاههای پرداخت برزیلی تأیید CNPJ را برای حسابهای تاجر نیاز دارند
- تطبیق مالیاتی: هر صورتحساب صادره در برزیل باید شامل یک CNPJ معتبر باشد
- ثبت کسب و کار: سازمانهای دولتی از CNPJ برای ردیابی اشخاص حقوقی در سیستمها استفاده میکنند
- عملیات بانکی: افتتاح حسابهای شرکتی یا پردازش انتقالات بینالمللی
- واردات/صادرات: مدارک گمرکی نیاز به تأیید CNPJ دارند
- قراردادهای دولتی: سیستمهای مناقصه عمومی CNPJ را قبل از پذیرش پیشنهادها اعتبارسنجی میکنند
از تجربه من در کار با پلتفرمهای تجارت الکترونیک برزیل، یکی از نقاط ادغام رایج در جریان تسویه حساب، جایی است که کاربران CNPJ خود را برای خریدهای شرکتی وارد میکنند. منطق اعتبارسنجی شما باید خطاهای فرمتبندی را قبل از پردازشگر پرداخت شناسایی کند - در غیر این صورت با معاملات ناموفقی مواجه خواهید شد که میتوانسته اجتناب شود.
ساختار و فرمت CNPJ
یک CNPJ شامل ۱۴ رقم با فرمت زیر است: XX.XXX.XXX/YYYY-ZZ
شکستن ساختار:
۱. ۸ رقم اول (XX.XXX.XXX): شماره ثبت پایه که به صورت منحصر به فرد به شرکت اختصاص داده میشود
۲. ۴ رقم بعدی (/YYYY): شناسه شعبه یا محل کسب و کار—/0001 نشاندهنده دفتر مرکزی است، در حالی که /0002، /0003 نشاندهنده محلهای شعب هستند
۳. ۲ رقم نهایی (-ZZ): ارقام تأیید که از طریق یک الگوریتم وزنی محاسبه میشوند
مثال: 12.345.678/0001-95
نکته جالب درباره شناسه شعبه: زمانی که یک شرکت چندین محل را افتتاح میکند، هر کدام همان ۸ رقم اول را دارند اما شماره شعبه متفاوتی دارند. بنابراین اگر یک زنجیره خردهفروشی ۵۰ فروشگاه داشته باشد، آنها CNPJهایی با پسوند /0001 تا /0050 خواهند داشت، همه با شماره پایه مشترک. این موضوع شناسایی اینکه چندین CNPJ متعلق به یک سازمان مادر هستند را آسان میکند.
ارقام تأیید تصادفی نیستند—آنها با استفاده از یک الگوریتم مدولوس-۱۱ با توالیهای وزنی خاص محاسبه میشوند. این انتخاب طراحی، که در اسناد اداری برزیل رایج است، به لحاظ ریاضی ساختن اعداد معتبر یا ایجاد اعداد معتبر به طور تصادفی را دشوار میکند.
نحوه اعتبارسنجی CNPJ
الگوریتم اعتبارسنجی از محاسبه مدولوس-11 با وزن استفاده میکند. در اینجا منطق پشت آن آمده است:
محاسبه اولین رقم کنترلی
- اولین 12 رقم را بگیرید و در اوزان زیر ضرب کنید:
5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2 - مجموع همه محصولات را محاسبه کنید
- مجموع را بر 11 تقسیم کنید و باقیمانده را بگیرید
- اگر باقیمانده < 2 باشد، رقم کنترلی 0 است؛ در غیر این صورت برابر است با
11 - باقیمانده
محاسبه دومین رقم کنترلی
- اولین 13 رقم (شامل اولین رقم کنترلی) را بگیرید و در اوزان زیر ضرب کنید:
6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2 - مجموع همه محصولات را محاسبه کنید
- بر 11 تقسیم کنید و باقیمانده را بگیرید
- اگر باقیمانده < 2 باشد، رقم کنترلی 0 است؛ در غیر این صورت برابر است با
11 - باقیمانده
چرا این رویکرد کار میکند: سیستم ضرب با وزن، رابطه منحصر به فردی بین تمام 12 رقم پایه و ارقام کنترلی ایجاد میکند. تغییر حتی یک رقم در عدد پایه، ارقام کنترلی متفاوتی تولید میکند که خطاهای رایج رونویسی مانند جابجایی دو رقم (تایپ 12.345 به جای 12.354) را شناسایی میکند.
نکته عملی: CNPJهایی با تمام ارقام یکسان (مانند 11.111.111/1111-11) به طور خودکار نامعتبر هستند، حتی اگر از نظر ریاضی تأیید شوند. اداره مالیاتی (Receita Federal) به صراحت این الگوها را برای جلوگیری از موارد پیشپا افتاده حذف میکند.
نحوه استفاده از تولیدکننده و اعتبارسنج CNPJ
تولید CNPJ های آزمایشی
به یک CNPJ معتبر برای پایگاه داده آزمایشی خود نیاز دارید؟ اینجا نحوه انجام آن است:
- روی "تولید CNPJ" کلیک کنید
- ابزار بلافاصله یک عدد از نظر ریاضی معتبر ایجاد میکند
- برای کپی کردن آن در کلیپبورد، روی "کپی" کلیک کنید
- آن را در فرمهای آزمایشی، بذرهای پایگاه داده یا آزمونهای واحد خود جایگذاری کنید
هر CNPJ تولید شده از تمام بررسیهای اعتبارسنجی الگوریتمی عبور میکند اما در سازمان مالیاتی برزیل (Receita Federal) ثبت نشده است. این بدان معنی است که میتوانید آزادانه در توسعه از آن استفاده کنید بدون نگرانی از استفاده تصادفی از شناسه یک شرکت واقعی.
اعتبارسنجی شمارههای CNPJ
یک CNPJ دارید که نیاز به تأیید دارید؟ اعتبارسنج به شما کمک میکند:
- CNPJ را در فیلد ورودی جایگذاری یا تایپ کنید
- نگران فرمتبندی نباشید - با
12345678000195یا12.345.678/0001-95کار میکند - روی "اعتبارسنجی" کلیک کنید
- بلافاصله بازخورد دریافت کنید که آیا ارقام بررسی صحیح هستند
آنچه اعتبارسنج بررسی میکند: طول مناسب (14 رقم)، محاسبات صحیح رقم بررسی و حذف الگوهای نامعتبر مانند ارقام یکسان. آنچه بررسی نمیکند: اینکه CNPJ در پایگاه داده دولتی ثبت شده است - برای این کار نیاز به استعلام مستقیم از سازمان مالیاتی برزیل است.
کاربردهای واقعی برای تولیدکننده و اعتبارسنج CNPJ
توسعه نرمافزار و تست
بذر پایگاه داده: هنگام راهاندازی محیط مرحلهبندی با دادههای تست واقعی، به دهها یا صدها CNPJ معتبر نیاز دارید. ایجاد دستی این موارد خستهکننده است و استفاده از شناسههای شرکتهای واقعی نگرانیهای حریم خصوصی را مطرح میکند. CNPJهای تولید شده هر دو مشکل را حل میکنند.
تست واحد موارد حاشیهای: تابع اعتبارسنجی شما باید 00.000.000/0000-00 را رد کند اما 11.222.333/0001-81 را بپذیرد. داشتن یک تولیدکننده به شما اجازه میدهد سریعاً موارد تست معتبر و عمداً نامعتبر را ایجاد کنید تا منطق خود را در مورد شرایط مرزی تأیید کنید.
تست رگرسیون کیفیت: هنگام تست فرمهای ثبتنام یا جریانهای پرداخت B2B، تیمهای کیفیت به دادههای تست تازه برای هر اجرا نیاز دارند. مشکل رایجی که دیدهام: محیطهای تست با همان 5-6 CNPJ که مکرراً استفاده میشوند آلوده میشوند، که باعث پنهان شدن باگهایی میشود که فقط با الگوهای خاص رقم ظاهر میشوند.
تست یکپارچگی API: اگر با پردازشگرهای پرداخت برزیلی مانند PagSeguro یا Mercado Pago یکپارچه میشوید، محیطهای sandbox آنها اغلب نیازمند فرمتبندی صحیح CNPJ هستند. محاسبات باید صحیح باشند حتی اگر با پایگاه دادههای تولیدی کار نمیکنید.
پردازش و اعتبارسنجی دادهها
پاکسازی دادههای وارداتی: CSVای با 10,000 رکورد شرکت برزیلی دریافت کردهاید. قبل از پردازش، باید مشخص کنید کدام CNPJها نامعتبر هستند. عبور آنها از اعتبارسنج، موارد دارای اشتباه املایی، کوتاهشدگی یا ارقام کنترل نادرست را علامتگذاری میکند - که ساعتها اشکالزدایی بعدی را صرفهجویی میکند.
اعتبارسنجی فرم در سمت مشتری: شناسایی CNPJهای نامعتبر قبل از ارسال فرم، تجربه کاربری را بهبود میبخشد. هیچکس نمیخواهد یک فرم ثبتنام 20 فیلدی را پر کند و سپس در زمان ارسال به دلیل جابجایی دو رقم در CNPJ خود با خطا مواجه شود.
ناشناسسازی داده برای تحلیل: هنگام آمادهسازی دادههای تولیدی برای اشتراکگذاری با تیمهای تحلیلی یا شرکای خارجی، باید CNPJهای واقعی را با CNPJهای معتبر اما ساختگی جایگزین کنید. این یکپارچگی مرجع در مجموعه داده شما را حفظ میکند در حالی که هویتهای کسبوکار واقعی را محافظت میکند.
عملیات کسبوکار بینالمللی
درک الزامات برزیل: اگر به بازار برزیل گسترش مییابید، در قراردادها، صورتحسابها و مدارک حمل و نقل با الزامات CNPJ مواجه خواهید شد. داشتن ابزاری برای آزمایش فرمت کمک میکند تا درک کنید سیستمهای شما باید چه چیزی را مدیریت کنند.
مشخصات یکپارچگی شخص ثالث: هنگام بررسی مستندات API از ارائهدهندگان SaaS برزیلی، اغلب با فیلدهای CNPJ در نمونههای پیلود مواجه میشوید. توانایی تولید مقادیر تست معتبر به شما کمک میکند یکپارچگیها را سریعتر پروتوتایپ کنید.
رویکردهای جایگزین اعتبارسنجی CNPJ
کتابخانههای برنامهنویسی
اگر به اعتبارسنجی CNPJ در منطق برنامه خود نیاز دارید، این کتابخانهها الگوریتم بررسی رقم کنترل را پیادهسازی میکنند:
- JavaScript/Node.js:
cpf-cnpj-validator(بیش از ۱۳۰ هزار دانلود هفتگی)،validator.js(پشتیبانی از اسناد برزیلی) - Python:
validate-docbr(اعتبارسنجی CPF، CNPJ و سایر اسناد برزیلی)،python-cnpj - PHP:
respect/validation(شامل قوانین CNPJ)،brazilianutils - Java:
caelum-stella(اعتبارسنجی جامع اسناد برزیلی) - Ruby: کتابخانه
cpf_cnpj
این کتابخانهها معمولاً قالببندی، تجزیه و اعتبارسنجی برای چندین نوع سند برزیلی (CPF، CNPJ و غیره) را پوشش میدهند.
APIهای تأیید رسمی
برای سیستمهای تولیدی که نیاز به تأیید ثبت تجاری دارند:
- سرویس عمومی Receita Federal: Consulta CNPJ API امکان تأیید در مقابل پایگاه داده رسمی را فراهم میکند (نیاز به مجوز مناسب و محدودیت نرخ دارد)
- ارائهدهندگان داده شخص ثالث: سرویسهایی مانند Serasa Experian و Boa Vista SCPC APIهای تجاری ارائه میدهند که جزئیات شرکت، وضعیت ثبت و اطلاعات اعتباری را برمیگردانند
توجه: این سرویسها ثبت واقعی را بررسی میکنند، نه فقط اعتبار ریاضی. شما به مجوز مناسب نیاز خواهید داشت و باید هزینه API را برای استفاده تولیدی انتظار داشته باشید.
چه زمانی از هر رویکرد استفاده کنیم
از این ابزار مرورگر استفاده کنید: زمانی که به اعتبارسنجی سریع بدون نصب وابستگیها، تولید دادههای آزمایشی برای نمایشها یا یادگیری نحوه اعتبارسنجی CNPJ نیاز دارید.
از کتابخانه استفاده کنید: زمانی که در حال ساخت برنامهای هستید که به اعتبارسنجی سمت مشتری یا سرور به عنوان بخشی از پردازش فرم نیاز دارد.
از API رسمی استفاده کنید: زمانی که نیاز دارید تأیید کنید CNPJ متعلق به یک کسب و کار واقعی و فعال با وضعیت ثبت جاری است.
جزئیات فنی پیادهسازی
این ابزار به طور کامل در مرورگر شما با استفاده از جاوااسکریپت اجرا میشود - بدون درخواست سرور، بدون خروج دادهها از دستگاه شما. در اینجا نحوه کار الگوریتمها در زیر کاپوت آمده است، با کدی که میتوانید برای پروژههای خود تطبیق دهید:
الگوریتم تولید 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این توابع اصلی را میتوان در سایر زبانهای برنامهنویسی با پیروی از همین منطق پیادهسازی کرد. در اینجا نمونههایی در پایتون و جاوا آمده است:
پیادهسازی پایتون
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پیادهسازی جاوا
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های تولید شده فقط برای آزمایش و توسعه هستند. آنها از نظر ریاضی معتبر هستند اما با مقامات برزیلی ثبت نشدهاند، که به این معنی است:
- ✅ برای استفاده در: پر کردن پایگاه دادههای آزمایشی، آزمون واحد منطق اعتبارسنجی، محیطهای کنترل کیفیت، مثالهای کد در مستندات
- ❌ هرگز استفاده نکنید برای: ارائه مالیاتی، ثبت تجاری، امضای قراردادها، پردازش معاملات واقعی، یا جعل هویت تجاری
استفاده از یک CNPJ جعلی برای مقاصد رسمی نه تنها غیراخلاقی است - بلکه طبق قانون برزیل غیرقانونی است و میتواند منجر به اتهامات کلاهبرداری شود.
محدودیتهای فنی که باید بدانید
تولید تصادفی پیامدهایی دارد: ابزار 12 رقم اول را به صورت تصادفی تولید میکند. CNPJهای واقعی صادر شده توسط اداره مالیاتی از الگوهای داخلی مرتبط با تاریخ ثبت، دفتر منطقهای و نوع کسب و کار پیروی میکنند. شمارههای تولید شده با این الگوها مطابقت نخواهند داشت، که سیستمهای اعتبارسنجی پیچیده ممکن است آنها را علامتگذاری کنند.
بدون اعتبارسنجی معنایی: یک فرمت CNPJ معتبر به معنای متن تجاری معتبر نیست. برای مثال، نهادهای دولتی محدودههای CNPJ خاصی دارند - این تولیدکننده ممکن است اتفاقاً یکی را ایجاد کند، اما بیمعنی خواهد بود.
مدیریت فرمت: اعتبارسنج فرمتهای ورودی مختلفی را میپذیرد (12345678000195، 12.345.678/0001-95)، اما برخی سیستمهای قدیمی فرمت دقیق را انتظار دارند. همیشه با الزامات یکپارچگی خاص خود آزمایش کنید.
حریم خصوصی و امنیت
تمام پردازشها در مرورگر شما انجام میشود. هیچ CNPJ تولید یا اعتبارسنجی شدهای به سرورها ارسال، ثبت یا ذخیره نمیشود. ابزار هیچ اطلاعات شخصی را درخواست، مدیریت یا پردازش نمیکند.
سؤالات متداول درباره اعتبارسنجی CNPJ
تفاوت بین اعتبارسنجی و تأیید CNPJ چیست؟
اعتبارسنجی بررسی میکند که آیا شماره از نظر ریاضی صحیح است - فرمت مناسب، ارقام کنترل صحیح، بدون الگوهای نامعتبر. این ابزار اعتبارسنجی را انجام میدهد.
تأیید بررسی میکند که آیا CNPJ در پایگاه داده Receita Federal با یک شرکت واقعی ثبت شده است. تأیید نیاز به استعلام از پایگاه داده دولتی دارد و چیزی نیست که این ابزار انجام دهد.
میتوانید یک CNPJ کاملاً معتبر داشته باشید که تأیید نشده است (مانند شمارههای آزمایشی که این ابزار تولید میکند)، یا یک CNPJ نامعتبر که متعلق به یک شرکت واقعی است (زیرا کسی هنگام ورود آن اشتباه کرده است).
آیا میتوانم از CNPJهای تولید شده برای تست تولید استفاده کنم؟
بستگی دارد که منظور شما از "تست تولید" چیست. آنها برای محیطهای مرحلهبندی، بارگذاری و کنترل کیفیت قبل از راهاندازی مناسب هستند. اما اگر "تست تولید" به معنای تست با تراکنشهای واقعی، APIهای دولتی واقعی یا سیستمهای مالی واقعی باشد - در این صورت خیر، شما به CNPJهای ثبت شده واقعی نیاز دارید.
رویکرد امنتر: از CNPJهای تولید شده در محیطهای تست جداگانه استفاده کنید، سپس برای تست ادغامهای تولید به مجموعه کوچکی از CNPJهای شرکتهای تست واقعی (که کنترل میکنید) تغییر دهید.
چرا اعتبارسنج 11.111.111/1111-11 را رد میکند؟
اگرچه یک CNPJ با تمام ارقام یکسان میتواند از نظر ریاضی ارقام کنترل معتبر تولید کند، اما Receita Federal به صراحت این الگوها را حذف میکند. این یک قانون تجاری است، نه یک قانون ریاضی. همین امر در مورد الگوهای متوالی در برخی سیستمهای اعتبارسنجی نیز صدق میکند.
این مشابه با نحوه رد کردن رمزهای عبوری مانند "password123" توسط بسیاری از سیستمها است، حتی اگر آنها شرایط طول را برآورده کنند - آنها از نظر فنی معتبر هستند اما عملاً قابل قبول نیستند.
چگونه اعتبارسنجی CNPJ را در لوکالهای مختلف مدیریت کنم؟
شرکتهای برزیلی که کسب و کار بینالمللی دارند گاهی اوقات کاراکترهای فرمتبندی را هنگام ورود CNPJها به سیستمهای خارجی حذف میکنند. منطق اعتبارسنجی شما باید قبل از بررسی کاراکترهای غیر عددی را حذف کند:
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 را در یک فیلد وارد کنند، سپس نوع را بر اساس طول پس از حذف کاراکترهای فرمتبندی تشخیص دهید.
آیا این برای شرکتهای خارجی که در برزیل فعالیت میکنند کار میکند؟
شرکتهای خارجی که در برزیل فعالیت میکنند نیز باید CNPJ را از Receita Federal دریافت کنند. CNPJهای آنها از همان فرمت و قوانین اعتبارسنجی شرکتهای داخلی پیروی میکنند. هیچ فرمت خاص CNPJ برای "شرکتهای خارجی" وجود ندارد.
با این حال، شرکتهای خارجی ممکن است نیازمند مدارک اضافی و فرآیندهای ثبت متفاوتی باشند - برای جزئیات دقیق با یک وکیل کسب و کار برزیلی مشورت کنید.
آیا میتوانم از پایگاه داده دولتی برای تأیید ثبت CNPJ استعلام بگیرم؟
بله، Receita Federal دسترسی عمومی به تأیید اطلاعات اساسی CNPJ از طریق سرویس Consulta Pública CNPJ خود ارائه میدهد. میتوانید به صورت دستی CNPJها را جستجو کنید یا با مجوز مناسب، از APIهای آنها برای دسترسی برنامهنویسی استفاده کنید.
توجه کنید که استفاده گسترده نیاز به ثبت نام دارد و محدودیتهای نرخ برای جلوگیری از سوء استفاده وجود دارد.
CNPJها چه زمانی تغییر میکنند؟
CNPJها شناسههای دائمی هستند که با تغییر نام، آدرس یا ساختار مالکیت یک شرکت تغییر نمیکنند. با این حال، اگر یک شرکت تعطیل شود و بعداً مجدداً ثبت شود، ممکن است CNPJ جدیدی دریافت کند. شمارههای شعبه (بخش /XXXX) میتوانند هنگام باز شدن مکانهای جدید توسط شرکتها اضافه شوند، اما شماره 8 رقمی پایه ثابت میماند.
منابع و منابع اضافی
منابع رسمی دولتی
- رسیته فدرال برزیل - پورتال رسمی - وبسایت رسمی خدمات درآمد فدرال برزیل با خدمات ثبت و تأیید CNPJ
- جستجوی عمومی CNPJ - جستجوی عمومی CNPJ - خدمات رسمی دولتی برای تأیید وضعیت ثبت CNPJ
- دستورالعمل تنظیمی RFB شماره 1863/2018 - مقررات حقوقی حاکم بر ثبت و استفاده از CNPJ در برزیل
استانداردها و مستندات فنی
- الگوریتمهای حساب مدولار - محاسبه رقم کنترل از حساب مدولار 11 استفاده میکند، رویکردی استاندارد برای اعتبارسنجی ارقام
- ISO/IEC 7064 - استاندارد بینالمللی برای سیستمهای رقم کنترل که بر طراحی اعتبارسنجی اسناد برزیل تأثیر گذاشته است
- قانون مدنی برزیل (قانون شماره 10.406/2002) - چارچوب حقوقی تعریفکننده طبقهبندی نهادهای تجاری که نیازمند ثبت CNPJ هستند
منابع توسعهدهندگان
- مخزن بسته NPM - npmjs.com - مخزن کتابخانههای جاوااسکریپت شامل اعتبارسنجهای اسناد برزیل
- PyPI (شاخص بسته پایتون) - pypi.org - کتابخانههای پایتون برای اعتبارسنجی CNPJ و پردازش اسناد برزیل
- GitHub - پیادهسازیهای متنباز اعتبارسنجی CNPJ در زبانهای برنامهنویسی مختلف
شروع تولید و اعتبارسنجی شناسههای CNPJ
چه در حال ساخت یک پلتفرم تجارت الکترونیک برزیلی باشید، چه در حال آزمایش ادغام پرداخت با Mercado Pago، یا فقط نیاز به درک نحوه اعتبارسنجی CNPJ دارید، این ابزار دسترسی فوری به قابلیتهای تولید و اعتبارسنجی را فراهم میکند.
بدون نصب، بدون کلید API، بدون راهاندازی پیچیده. فقط مرورگر خود را باز کنید و شروع به کار با شناسههای تجاری معتبر برزیلی کنید.