Генеруйте дійсні номери CNPJ Бразилії та перевіряйте наявні за допомогою цього простого інструменту, розробленого для розробників та тестувальників, які працюють з ідентифікаторами бізнесу Бразилії.
Згенеруйте дійсний бразильський номер CNPJ для тестування.
Перевірте, чи є номер CNPJ дійсним.
Бразильський CNPJ (Cadastro Nacional da Pessoa Jurídica) — це унікальний ідентифікаційний номер, присвоєний підприємствам та юридичним особам у Бразилії. Цей генератор та валідатор CNPJ Бразилії забезпечує простий та ефективний спосіб генерування дійсних номерів CNPJ для тестування та перевірки існуючих номерів CNPJ відповідно до офіційного бразильського алгоритму. Незалежно від того, чи ви розробник, який тестує програми, що обробляють дані бразильських компаній, професіонал з контролю якості, який створює тестові випадки, чи будь-хто, хто працює з інформацією про бразильські компанії, цей інструмент спрощує процес роботи з номерами CNPJ.
На відміну від реальних номерів CNPJ, які офіційно видаються Федеральною податковою службою Бразилії (Receita Federal), CNPJ, згенеровані цим інструментом, є математично дійсними, але не зареєстровані за реальними компаніями. Це робить їх ідеальними для сценаріїв тестування, зразкових даних та середовищ розробки, де вам потрібні правильно відформатовані та дійсні номери CNPJ без використання реальних ідентифікаторів бізнесу.
CNPJ (Cadastro Nacional da Pessoa Jurídica) — це 14-значний ідентифікаційний номер, присвоєний підприємствам та юридичним особам Федеральною податковою службою Бразилії. Він слугує бразильським еквівалентом номера реєстрації компанії або податкового ідентифікатора. Кожне підприємство, яке легально працює в Бразилії, повинно мати CNPJ, який використовується для:
CNPJ є важливим ідентифікатором у бізнес-екосистемі Бразилії та з’являється на офіційних документах, контрактах і фінансових записах.
Бразильський CNPJ складається з 14 цифр, зазвичай форматованих як: XX.XXX.XXX/YYYY-ZZ
Структура розподіляється наступним чином:
Наприклад, правильно відформатований CNPJ може виглядати так: 12.345.678/0001-95
Контрольні цифри (останні два числа) розраховуються за допомогою специфічного математичного алгоритму, який підтверджує автентичність CNPJ. Цей алгоритм гарантує, що випадково згенеровані номери не можуть пройти валідацію без дотримання правильного методу розрахунку.
Алгоритм валідації CNPJ використовує зважене обчислення для визначення контрольних цифр. Ось як це працює:
Щоб CNPJ був дійсним, обидві контрольні цифри повинні відповідати розрахованим значенням.
Наш інструмент генератора та валідатора CNPJ Бразилії пропонує дві основні функції: генерацію дійсних CNPJ та валідацію існуючих номерів CNPJ.
Щоб згенерувати дійсний CNPJ для тестування:
Згенерований CNPJ дотримується всіх математичних правил валідації реального CNPJ, але не зареєстрований у Федеральній податковій службі Бразилії.
Щоб перевірити, чи CNPJ є математично дійсним:
Валідатор перевіряє, чи CNPJ відповідає правильному формату та чи контрольні цифри відповідають очікуваним значенням відповідно до алгоритму валідації.
Цей інструмент генератора та валідатора CNPJ Бразилії особливо корисний у наступних сценаріях:
Хоча наш інструмент забезпечує просте, браузерне рішення для генерації та валідації CNPJ, є кілька альтернатив в залежності від ваших конкретних потреб:
Для розробників, які інтегрують валідацію CNPJ безпосередньо в програми, доступні кілька бібліотек, специфічних для мов:
cpf_cnpj.js
, validator.js
python-cnpj
, validate-docbr
brazilianutils
, respect/validation
caelum-stella
, commons-validator
cpf_cnpj
, brazilian-rails
Ці бібліотеки часто надають додаткову функціональність, таку як форматування, парсинг та валідація інших бразильських документів.
Для програм, які потребують валідації без реалізації алгоритму:
Для освітніх цілей або одноразових валідацій ви можете вручну застосувати алгоритм:
Однак ручний розрахунок є схильним до помилок і неефективним для регулярного використання.
Генератор та валідатор CNPJ у цьому інструменті реалізовані за допомогою JavaScript, що робить його швидким і здатним працювати повністю у вашому браузері без відправлення ваших даних на сервер. Ось як працюють основні функції:
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
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
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:
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 для бізнесу, ви повинні зареєструватися у Федеральній податковій службі Бразилії (Receita Federal) відповідно до офіційного процесу. Згенеровані CNPJ призначені лише для тестування.
Щоб перевірити, чи CNPJ зареєстрований за фактичною компанією, вам потрібно звернутися до бази даних Федеральної податкової служби Бразилії. Наш інструмент лише перевіряє, чи є CNPJ математично дійсним, а не чи він офіційно зареєстрований.
CNPJ з усіма однаковими цифрами (наприклад, 11.111.111/1111-11) автоматично вважаються недійсними, навіть якщо вони математично проходять алгоритм контрольних цифр. Це правило встановлено Федеральною податковою службою Бразилії.
Ні. Вся обробка відбувається у вашому браузері, і ми не зберігаємо або передаємо жодні CNPJ, які ви генеруєте або валідуєте.
Поточна версія інструмента генерує один CNPJ за раз. Для масової генерації ви можете розглянути можливість використання однієї з бібліотек програмування, згаданих у розділі Альтернативи.
Це офіційний формат, який вимагається бразильськими органами. Специфічна групування допомагає ідентифікувати різні компоненти CNPJ, такі як основний номер та ідентифікатор філії.
Ви можете реалізувати алгоритм валідації у вашій улюбленій мові програмування, використовуючи кодові приклади, надані в розділі Технічна реалізація, або скористатися однією з бібліотек, згаданих у розділі Альтернативи.
Так. Державні установи в Бразилії мають специфічні шаблони CNPJ. Наприклад, федеральні державні установи часто починаються з певних цифр. Наш генератор створює випадкові CNPJ і не генерує спеціальні CNPJ для державних установ.
Наш інструмент генератора та валідатора CNPJ Бразилії робить роботу з цими ідентифікаційними номерами простою та ефективною. Незалежно від того, чи тестуєте ви програми, готуєте зразкові дані або перевіряєте існуючі CNPJ, цей інструмент забезпечує просте рішення без складності інтеграцій API або розширених налаштувань.
Згенеруйте свій перший дійсний CNPJ зараз або перевірте існуючий за допомогою нашого простого інтерфейсу!
Відкрийте більше інструментів, які можуть бути корисними для вашого робочого процесу