Brezilyalı iş kimlikleri ile çalışan geliştiriciler ve test uzmanları için tasarlanmış bu basit araç ile geçerli Brezilya CNPJ numaraları oluşturun ve mevcut olanları doğrulayın.
Test amaçları için geçerli bir Brezilya CNPJ numarası oluşturun.
Brezilya CNPJ numarasının geçerli olup olmadığını kontrol edin.
Brezilya CNPJ (Cadastro Nacional da Pessoa Jurídica), Brezilya'daki işletmelere ve tüzel kişiliklere atanan benzersiz bir kimlik numarasıdır. Bu Brezilya CNPJ üretici ve doğrulayıcı aracı, test amaçları için geçerli CNPJ numaraları oluşturmanın ve mevcut CNPJ numaralarını resmi Brezilya algoritmasına göre doğrulamanın basit ve etkili bir yolunu sunar. İster Brezilya iş verilerini işleyen uygulamaları test eden bir geliştirici, ister test senaryoları oluşturan bir QA profesyoneli, ister Brezilya şirket bilgileriyle çalışan biri olun, bu araç CNPJ numaralarıyla çalışmayı kolaylaştırır.
Bu aracın ürettiği CNPJ'lar, Brezilya Federal Gelir Servisi (Receita Federal) tarafından resmi olarak verilmiş gerçek CNPJ numaraları değildir. Bu nedenle, test senaryoları, örnek veriler ve gerçek işletme kimlikleri kullanmadan düzgün biçimlendirilmiş ve geçerli CNPJ numaralarına ihtiyaç duyduğunuz geliştirme ortamları için mükemmeldir.
CNPJ (Cadastro Nacional da Pessoa Jurídica), Brezilya Federal Gelir Servisi tarafından işletmelere ve tüzel kişiliklere atanan 14 haneli bir kimlik numarasıdır. Bu numara, Brezilya'daki şirket kayıt numarası veya vergi kimlik numarasının eşdeğeri olarak hizmet eder. Brezilya'da yasal olarak faaliyet gösteren her işletmenin bir CNPJ'si olmalıdır ve bu numara aşağıdaki amaçlar için kullanılır:
CNPJ, Brezilya'nın iş ekosisteminde temel bir tanımlayıcıdır ve resmi belgelerde, sözleşmelerde ve finansal kayıtlarda yer alır.
Brezilya CNPJ'si 14 haneli bir sayıdan oluşur ve genellikle şu formatta yazılır: XX.XXX.XXX/YYYY-ZZ
Yapı şu şekilde ayrılmaktadır:
Örneğin, düzgün biçimlendirilmiş bir CNPJ şu şekilde görünebilir: 12.345.678/0001-95
Doğrulama haneleri (son iki sayı), CNPJ'nin geçerliliğini doğrulayan belirli bir matematiksel algoritmayı kullanarak hesaplanır. Bu algoritma, rastgele üretilen sayıların doğru hesaplama yöntemini takip etmeden doğrulama geçememesini sağlar.
CNPJ doğrulama algoritması, kontrol hanelerini belirlemek için ağırlıklı bir hesaplama kullanır. İşte nasıl çalıştığı:
Bir CNPJ'nin geçerli olması için, her iki kontrol hanesinin de hesaplanan değerlerle eşleşmesi gerekir.
Brezilya CNPJ Üretici ve Doğrulayıcı aracımız, iki ana işlev sunar: geçerli CNPJ'ler oluşturma ve mevcut CNPJ numaralarını doğrulama.
Test amaçları için geçerli bir CNPJ oluşturmak için:
Oluşturulan CNPJ, gerçek bir CNPJ'nin tüm matematiksel doğrulama kurallarını takip edecektir ancak Brezilya Federal Gelir Servisi'nde kayıtlı değildir.
Bir CNPJ'nin matematiksel olarak geçerli olup olmadığını kontrol etmek için:
Doğrulayıcı, CNPJ'nin doğru biçimi takip edip etmediğini ve kontrol hanelerinin beklenen değerlerle eşleşip eşleşmediğini kontrol eder.
Bu Brezilya CNPJ üretici ve doğrulayıcı aracı, aşağıdaki senaryolar için özellikle yararlıdır:
Bu araç, CNPJ'leri oluşturmak ve doğrulamak için basit, tarayıcı tabanlı bir çözüm sağlarken, belirli ihtiyaçlarınıza bağlı olarak birkaç alternatif bulunmaktadır:
CNPJ doğrulamasını uygulamalara doğrudan entegre eden geliştiriciler için, birkaç dil özelinde kütüphane mevcuttur:
cpf_cnpj.js
, validator.js
python-cnpj
, validate-docbr
brazilianutils
, respect/validation
caelum-stella
, commons-validator
cpf_cnpj
, brazilian-rails
Bu kütüphaneler genellikle biçimlendirme, ayrıştırma ve diğer Brezilya belgelerinin doğrulanması gibi ek işlevler sunar.
Doğrulama gerektiren uygulamalar için:
Eğitim amaçları veya bir kerelik doğrulamalar için algoritmayı manuel olarak uygulayabilirsiniz:
Ancak, manuel hesaplama hata yapmaya açık ve düzenli kullanım için verimsizdir.
Bu araçtaki CNPJ üretici ve doğrulayıcı, JavaScript kullanılarak uygulanmıştır, bu da hızlı olmasını ve verilerinizi bir sunucuya göndermeden tamamen tarayıcınızda çalışabilmesini sağlar. İşte temel işlevlerin nasıl çalıştığı:
1function generateCNPJ() {
2 // İlk 12 haneyi rastgele oluştur
3 const digits = Array.from({ length: 12 }, () => Math.floor(Math.random() * 10));
4
5 // İlk kontrol hanesini hesapla
6 const firstCheckDigit = calculateCheckDigit(digits);
7 digits.push(firstCheckDigit);
8
9 // İkinci kontrol hanesini hesapla
10 const secondCheckDigit = calculateCheckDigit(digits);
11 digits.push(secondCheckDigit);
12
13 // CNPJ'yi biçimlendir
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 // Sayısal olmayan karakterleri kaldır
3 const cleanCNPJ = cnpj.replace(/\D/g, '');
4
5 // Doğru uzunlukta olup olmadığını kontrol et
6 if (cleanCNPJ.length !== 14) return false;
7
8 // Bilinen geçersiz desenleri kontrol et (tüm aynı rakamlar)
9 if (/^(\d)\1+$/.test(cleanCNPJ)) return false;
10
11 // Rakamları diziye dönüştür
12 const digits = cleanCNPJ.split('').map(Number);
13
14 // İlk doğrulama hanesini kontrol et
15 const expectedFirstDigit = calculateCheckDigit(digits.slice(0, 12));
16 if (digits[12] !== expectedFirstDigit) return false;
17
18 // İkinci doğrulama hanesini kontrol et
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 // Sayısal olmayan karakterleri kaldır
3 const cleanCNPJ = cnpj.replace(/\D/g, '');
4
5 // Uzunluğa göre biçimlendir
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
Bu temel işlevler, aynı mantığı izleyerek diğer programlama dillerinde de uygulanabilir. İşte Python ve Java'daki örnekler:
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 # İlk 12 haneyi rastgele oluştur
15 digits = [random.randint(0, 9) for _ in range(12)]
16
17 # İlk kontrol hanesini hesapla
18 first_check = calculate_check_digit(digits)
19 digits.append(first_check)
20
21 # İkinci kontrol hanesini hesapla
22 second_check = calculate_check_digit(digits)
23 digits.append(second_check)
24
25 # CNPJ'yi biçimlendir
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 # Sayısal olmayan karakterleri kaldır
31 cnpj = ''.join(filter(str.isdigit, cnpj))
32
33 # Uzunluğu kontrol et
34 if len(cnpj) != 14:
35 return False
36
37 # Tüm rakamların aynı olup olmadığını kontrol et
38 if len(set(cnpj)) == 1:
39 return False
40
41 # Rakamları tam sayı dizisine dönüştür
42 digits = [int(d) for d in cnpj]
43
44 # İlk kontrol hanesini doğrula
45 first_check = calculate_check_digit(digits[:12])
46 if digits[12] != first_check:
47 return False
48
49 # İkinci kontrol hanesini doğrula
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 // İlk 12 haneyi rastgele oluştur
10 for (int i = 0; i < 12; i++) {
11 digits[i] = random.nextInt(10);
12 }
13
14 // İlk kontrol hanesini hesapla
15 digits[12] = calculateCheckDigit(digits, 12);
16
17 // İkinci kontrol hanesini hesapla
18 digits[13] = calculateCheckDigit(digits, 13);
19
20 // CNPJ'yi biçimlendir
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 // Sayısal olmayan karakterleri kaldır
45 cnpj = cnpj.replaceAll("\\D", "");
46
47 // Uzunluğu kontrol et
48 if (cnpj.length() != 14) {
49 return false;
50 }
51
52 // Tüm rakamların aynı olup olmadığını kontrol et
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 // Rakamları tam sayı dizisine dönüştür
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 // İlk kontrol hanesini doğrula
71 int firstCheck = calculateCheckDigit(digits, 12);
72 if (digits[12] != firstCheck) {
73 return false;
74 }
75
76 // İkinci kontrol hanesini doğrula
77 int secondCheck = calculateCheckDigit(digits, 13);
78 if (digits[13] != secondCheck) {
79 return false;
80 }
81
82 return true;
83 }
84}
85
Bu CNPJ üretici ve doğrulayıcı aracını kullanırken aşağıdaki hususlara dikkat edin:
CNPJ, Brezilya'daki işletmeler ve tüzel kişilikler için ulusal kayıt numarasıdır. Vergi amaçları, iş kaydı, banka hesapları açma ve resmi işlemlerde şirketleri tanımlamak için kullanılır.
Hayır. Bu aracın ürettiği CNPJ'ler, kontrol haneleri algoritmasına göre matematiksel olarak geçerli olup, Brezilya Federal Gelir Servisi'nde kayıtlı gerçek şirketlere ait değildir.
Hayır. Bir işletme için geçerli bir CNPJ almak için Brezilya Federal Gelir Servisi'ne (Receita Federal) resmi süreçle kayıt olmalısınız. Oluşturulan CNPJ'ler yalnızca test amaçlıdır.
Bir CNPJ'nin gerçekten bir şirkete kayıtlı olup olmadığını doğrulamak için Brezilya Federal Gelir Servisi veritabanını kontrol etmeniz gerekir. Araç yalnızca CNPJ'nin matematiksel olarak geçerli olup olmadığını kontrol eder, resmi kaydı kontrol etmez.
Tüm aynı rakamlara sahip CNPJ'ler (örneğin 11.111.111/1111-11) otomatik olarak geçersiz kabul edilir, matematiksel olarak geçerli olsalar bile. Bu, Brezilya Federal Gelir Servisi tarafından belirlenen bir kuraldır.
Hayır. Tüm işleme tarayıcınızda gerçekleşir ve oluşturduğunuz veya doğruladığınız CNPJ'leri saklamıyoruz.
Aracın mevcut sürümü bir seferde bir CNPJ oluşturur. Toplu üretim için, Alternatifler bölümünde belirtilen programlama kütüphanelerinden birini kullanmayı düşünebilirsiniz.
Bu, Brezilya yetkilileri tarafından gerekli olan resmi formattır. Belirli gruplama, CNPJ'nin farklı bileşenlerini, temel numara ve şube tanımlayıcısını tanımlamaya yardımcı olur.
Teknik Uygulama bölümünde sağlanan kod örneklerini kullanarak, tercih ettiğiniz programlama dilinde doğrulama algoritmasını uygulayabilir veya Alternatifler bölümünde belirtilen kütüphanelerden birini kullanabilirsiniz.
Evet. Brezilya'daki hükümet kuruluşlarının belirli CNPJ desenleri vardır. Örneğin, federal hükümet kuruluşları genellikle belirli rakamlarla başlar. Bizim üreticimiz rastgele CNPJ'ler oluşturur ve özel hükümet kuruluşu CNPJ'leri oluşturmaz.
Brezilya CNPJ Üretici ve Doğrulayıcı aracımız, bu kimlik numaralarıyla çalışmayı basit ve verimli hale getirir. İster uygulamaları test ediyor olun, ister örnek veriler hazırlıyor olun, ister mevcut CNPJ'leri doğruluyor olun, bu araç, API entegrasyonları veya karmaşık yapılandırmalar olmadan doğrudan bir çözüm sunar.
İlk geçerli CNPJ'nizi şimdi oluşturun veya basit arayüzümüzü kullanarak mevcut bir CNPJ'yi doğrulayın!
İş akışınız için faydalı olabilecek daha fazla aracı keşfedin