মূল বিষয়বস্তুতে যান

আর্জেন্টিনা CUIT জেনারেটর এবং ভ্যালিডেটর | টেস্ট ট্যাক্স আইডি

পরীক্ষার জন্য আর্জেন্টিনা CUIT নম্বর তৈরি এবং যাচাই করুন। সঠিক চেক ডিজিট সহ গাণিতিকভাবে বৈধ ট্যাক্স আইডি তৈরি করুন বা বিদ্যমান CUIT গুলি তৎক্ষণাৎ যাচাই করুন।

আর্জেন্টিনা CUIT জেনারেটর এবং ভ্যালিডেটর

পরীক্ষা বা বিদ্যমান কর পরিচয় কোড তাৎক্ষণিকভাবে যাচাই করার জন্য গাণিতিকভাবে বৈধ আর্জেন্টিনা CUIT নম্বর তৈরি করুন।

CUIT জেনারেটর

সত্তার ধরন নির্বাচন করুন

CUIT ভ্যালিডেটর

ফরম্যাট: XX-XXXXXXXX-X

CUIT সম্পর্কে

CUIT (Código Único de Identificación Tributaria) আর্জেন্টিনায় ব্যক্তি এবং আইনি সত্তাদের জন্য কর পরিচয় কোড।

  • ফরম্যাটটি হল XX-XXXXXXXX-X যেখানে X হল সংখ্যা।
  • প্রথম দুটি সংখ্যা সত্তার ধরন নির্দেশ করে (পুরুষ ব্যক্তিদের জন্য 20, মহিলা ব্যক্তিদের জন্য 27, কোম্পানিগুলির জন্য 30, ইত্যাদি)।
  • শেষ সংখ্যাটি একটি যাচাই সংখ্যা যা পূর্ববর্তী সংখ্যাগুলির উপর ভিত্তি করে একটি নির্দিষ্ট অ্যালগরিদমের মাধ্যমে গণনা করা হয়।
লোডিং ক্যালকুলেটর...
📚

ডকুমেন্টেশন

আর্জেন্টিনার CUIT কী এবং এর গুরুত্ব কী?

আর্জেন্টিনায় প্রতিটি ব্যক্তি এবং ব্যবসাকে CUIT (কোডিগো ইউনিকো দে ইডেন্টিফিকাসাও ট্রিবুটারিয়া) ব্যবহার করতে হয় দেশের কর কর্তৃপক্ষ, AFIP (ফেডারাল অ্যাডমিনিস্ট্রেশন অব পাবলিক রেভেনিউ) এর সাথে যোগাযোগ করার জন্য। এটিকে ধরুন আর্জেন্টিনার কর আইডি বা EIN-এর মতো—CUIT ছাড়া কোনো আনুষ্ঠানিক ব্যবসায়িক লেনদেন, ব্যাংক অ্যাকাউন্ট বা কর দাখিল সম্ভব নয়।

যখন আপনি আর্জেন্টিনার আর্থিক তথ্য পরিচালনা করে এমন অ্যাপ্লিকেশন তৈরি করছেন, তখন আপনি দ্রুত যাচাইয়ের জটিলতায় পড়ে যাবেন। CUIT কি সঠিক ফরম্যাটে আছে? চেক ডিজিট কি সঠিকভাবে গণনা করা হয়েছে? পরীক্ষার জন্য কী ধরনের সত্তা কোড ব্যবহার করা উচিত? এই প্রশ্নগুলি উন্নয়ন এবং QA পরীক্ষার সময় ক্রমাগত উঠে আসে।

সাধারণত যা ঘটে, ডেভেলপাররা বা তো CUIT যাচাইকরণ সম্পূর্ণরূপে বাদ দিয়ে দেয় (ডেটা সত্যতার ঝুঁকি নিয়ে) অথবা ম্যানুয়ালি পরীক্ষার সংখ্যা তৈরি করে যা গাণিতিকভাবে বৈধ নাও হতে পারে। এই টুলটি উভয় সমস্যার সমাধান করে যেটি যেকোনো সত্তার ধরনের জন্য সঠিকভাবে ফরম্যাটকৃত CUIT তৈরি করে এবং আর্জেন্টিনার আনুষ্ঠানিক অ্যালগরিদমের বিপরীতে বিদ্যমান সংখ্যাগুলি যাচাই করে।

CUIT নম্বরের কাঠামো কীভাবে হয়

আর্জেন্টিনার CUIT ফরম্যাট ১১ সংখ্যার একটি নির্দিষ্ট প্যাটার্ন: XX-XXXXXXXX-X

এটিকে বিভাজন করে:

  1. প্রথম ২ সংখ্যা: সত্তা প্রকার সূচক (যেমন পুরুষদের জন্য ২০, মহিলাদের জন্য ২৭, কোম্পানিগুলোর জন্য ৩০)
  2. পরবর্তী ৮ সংখ্যা: অনন্য পরিচয়ের সংখ্যা
  3. শেষ সংখ্যা: মডুলো ১১ অঙ্কগণিতের মাধ্যমে গণিত একটি চেক সংখ্যা—যা বেশিরভাগ টাইপো এবং তথ্য প্রবেশের ত্রুটি ধরে ফেলে

এই ডিজাইনের মধ্যে যা বুদ্ধিমান: যাচাইকরণ সংখ্যা এলোমেলো নয়। এটি প্রথম ১০ সংখ্যা থেকে ওজন দেওয়া গুণফল ব্যবহার করে গণনা করা হয়, যার অর্থ আপনি তৎক্ষণাৎ অবৈধ সংখ্যাগুলি সনাক্ত করতে পারবেন ডেটাবেস জিজ্ঞাসা করা ছাড়াই। আমার লাতিন আমেরিকার কর সিস্টেমগুলির সাথে কাজ করার অভিজ্ঞতায়, এই ক্লায়েন্ট-সাইড যাচাইকরণ ক্ষমতা API কল উল্লেখযোগ্যভাবে কমায় এবং ফর্ম যাচাইকরণ কর্মক্ষমতা বাড়ায়।

CUIT টাইপ কোড

CUIT-এর প্রথম দুই সংখ্যা ট্যাক্সদাতার প্রকার নির্দেশ করে:

সত্তা প্রকারটাইপ কোডবিবরণ
কোম্পানি30কর্পোরেশন, এলএলসি এবং অন্যান্য ব্যবসায়িক সত্তা
সংঘ33অলাভজনক সংঘ
প্রতিষ্ঠান30পরোপকারী প্রতিষ্ঠান
সমিতি30অংশীদারিতা এবং অন্যান্য সমিতি কাঠামো
সরকার30সরকারি সত্তা এবং সরকারি প্রতিষ্ঠান
বিদেশি কোম্পানি30আর্জেন্টিনার বাইরে অবস্থিত কোম্পানি
ব্যক্তি (পুরুষ)20পুরুষ ব্যক্তি
ব্যক্তি (মহিলা)27মহিলা ব্যক্তি
ট্রাস্ট30ট্রাস্ট সত্তা

বিভিন্ন পরীক্ষার পরিস্থিতিগুলোর জন্য উপযুক্ত CUIT তৈরি করার জন্য এই টাইপ কোডগুলো বোঝা অত্যন্ত গুরুত্বপূর্ণ।

CUIT জেনারেটর এবং ভ্যালিডেটর ব্যবহার

টেস্ট CUITs তৈরি করা

ড্রপডাউন থেকে আপনার সত্তা প্রকার নির্বাচন করুন (কোম্পানি, ব্যক্তি, সংগঠন ইত্যাদি), তারপর "CUIT তৈরি করুন" এ ক্লিক করুন। আপনি একটি সঠিকভাবে ফর্ম্যাটকৃত নম্বর পাবেন যার চেক ডিজিট সঠিক, যা আপনার টেস্ট সুইটে কপি করার জন্য তৈরি।

একটি সাধারণ পরিস্থিতি: আপনি একটি আর্জেন্টাইন ই-কমার্স প্ল্যাটফর্মের জন্য ব্যবহারকারী নিবন্ধন ফর্ম তৈরি করছেন। আপনার বিভিন্ন সত্তা প্রকার—একক মালিক (ব্যক্তি), কর্পোরেশন এবং বিদেশী কোম্পানিগুলি কীভাবে সিস্টেম পরিচালনা করে তা পরীক্ষা করতে হবে। চেক ডিজিট ম্যানুয়ালি গণনা করা বা অবৈধ টেস্ট ডেটার ঝুঁকি নেওয়ার পরিবর্তে, কয়েক সেকেন্ডে প্রত্যেক প্রকারের CUIT তৈরি করুন।

গুরুত্বপূর্ণ সীমাবদ্ধতা: এগুলি গাণিতিকভাবে বৈধ কিন্তু AFIP-এ নিবন্ধিত নয়। শুধুমাত্র পরীক্ষা, উন্নয়ন এবং শিক্ষামূলক উদ্দেশ্যে ব্যবহার করুন—কখনই আনুষ্ঠানিক নথি বা বাস্তব লেনদেনের জন্য নয়। বাস্তব ব্যবসায়ে কাল্পনিক কর আইডি ব্যবহার আর্জেন্টাইন আইনের অধীনে প্রতারণা হিসাবে বিবেচিত হয়।

CUIT নম্বর ভ্যালিডেশন

যেকোনো CUIT কে ভ্যালিডেটর ক্ষেত্রে পেস্ট বা টাইপ করুন এবং "CUIT ভ্যালিডেট করুন" এ ক্লিক করুন। টুলটি তৎক্ষণাৎ পরীক্ষা করে:

  1. ফর্ম্যাট সম্মতি: XX-XXXXXXXX-X কাঠামো অনুসরণ করে কিনা?
  2. চেক ডিজিট সঠিকতা: শেষ ডিজিটটি গাণিতিকভাবে সঠিক কিনা?
  3. সত্তা প্রকার বৈধতা: কি একটি স্বীকৃত কোড (20, 27, 30, 33) দিয়ে শুরু হয়?

এটি আপনাকে বলবে না: CUIT কি আসলে AFIP-এ নিবন্ধিত। সেজন্য, আপনাকে AFIP-এর আনুষ্ঠানিক Constancia de Inscripción সেবা ব্যবহার করতে হবে, যা তাদের করদাতা ডেটাবেসে কোয়ারি করে। আমাদের ভ্যালিডেটর শুধুমাত্র গাণিতিক সঠিকতা নিশ্চিত করে—এটিকে সিনট্যাক্স চেকিংয়ের মতো ভাবুন, ডেটাবেস লুকআপ নয়।

চেক ডিজিট অ্যালগরিদম কিভাবে কাজ করে

CUIT একটি ওয়েটেড মডুলো-১১ অ্যালগরিদম ব্যবহার করে ডেটা এন্ট্রি ত্রুটি সনাক্ত করতে। এটি একই গাণিতিক পদ্ধতি যা অনেক আন্তর্জাতিক পরিচয় সিস্টেম ব্যবহার করে—ISBN বই কোড, ক্রেডিট কার্ড নম্বর (লুহন অ্যালগরিদম), এবং ইউরোপীয় ভ্যাট নম্বর সবই একই ধরনের চেক ডিজিট যুক্তিতে নির্ভর করে।

এখানে ধাপে ধাপে প্রক্রিয়াটি রয়েছে:

  1. প্রথম ১০ টি ডিজিট নিন (শেষ ডিজিটের বাদে)
  2. প্রত্যেক অবস্থানকে তার ওজন দ্বারা গুণ করুন: [5, 4, 3, 2, 7, 6, 5, 4, 3, 2]
  3. সেই সমস্ত গুণফলের যোগ করুন
  4. যোগফলকে ১১ দ্বারা ভাগ করে অবশিষ্টাংশ নিন
  5. সেই অবশিষ্টাংশকে ১১ থেকে বিয়োগ করুন
  6. বিশেষ ক্ষেত্রে: যদি ১১ পান, তাহলে চেক ডিজিট হবে ০। যদি ১০ পান, তাহলে ৯ ব্যবহার করুন।

কেন এটি কাজ করে: ওয়েটেড গুণন করা হয় যাতে বিনিময়কৃত ডিজিট (টাইপ করা "১২" বদলে "২১") ভিন্ন চেক ডিজিট তৈরি করে। ট্যাক্স প্রশাসন জার্নাল এ প্রকাশিত গবেষণা অনুসারে, এটি প্রায় ৯০% একক-ডিজিট ত্রুটি এবং ৯৮% বিনিময় ত্রুটি সনাক্ত করে—যা মূলত পরিচয় নম্বর ম্যানুয়ালি এন্ট্রি করার সময় সাধারণ ত্রুটি।

উদাহরণ গণনা

চলুন টাইপ কোড ৩০ এবং পরিচয় নম্বর ১২৩৪৫৬৭৮ এর জন্য যাচাইকরণ ডিজিট গণনা করি:

  1. যাচাই করার জন্য ডিজিটগুলি: ৩ ০ ১ ২ ৩ ৪ ৫ ৬ ৭ ৮
  2. ওজন দ্বারা গুণ করুন: ৩×৫ + ০×৪ + ১×৩ + ২×২ + ৩×৭ + ৪×৬ + ৫×৫ + ৬×৪ + ৭×৩ + ৮×২
  3. গণনা: ১৫ + ০ + ৩ + ৪ + ২১ + ২৪ + ২৫ + ২৪ + ২১ + ১৬ = ১৫৩
  4. ১৫৩ ÷ ১১ এর অবশিষ্টাংশ = ১০
  5. ১১ - ১০ = ১
  6. যাচাইকরণ ডিজিট হল ১

সুতরাং, সম্পূর্ণ বৈধ CUIT হল ৩০-১২৩৪৫৬৭৮-১।

বাস্তব-পৃথিবীর ব্যবহার ক্ষেত্রসমূহ

যখন আপনি আর্থিক অ্যাপ্লিকেশন তৈরি করছেন

আর্জেন্টাইন বিক্রেতাদের জন্য পেমেন্ট প্রসেসিং পরীক্ষা করছেন? আপনার পরীক্ষামূলক অ্যাকাউন্টগুলির জন্য CUITs প্রয়োজন। একটি সাধারণ ভুল যা আমি দেখেছি: ডেভেলপাররা সম্ভবত ভুয়ো সংখ্যা ব্যবহার করে যেমন "11-11111111-1" যা মৌলিক ফরম্যাট পরীক্ষায় পাস করে কিন্তু যখন প্রকৃত পেমেন্ট গেটওয়ে সঙ্গে যুক্ত হয় তখন ব্যর্থ হয় যা সত্তা টাইপ কোডগুলি যাচাই করে। সঠিক টাইপ কোডসহ (কোম্পানিগুলির জন্য 30, ব্যক্তিদের জন্য 20/27) সঠিকভাবে তৈরিকৃত পরীক্ষামূলক CUITs ব্যবহার করলে উন্নয়নের সময় এই একীকরণ সমস্যাগুলি ধরা পড়ে।

ডেটা স্থানান্তর এবং গুণগত অডিট

পুরোনো সিস্টেমগুলিকে নতুন প্ল্যাটফর্মে স্থানান্তর করা প্রায়ই CUIT ডেটা ক্ষতিগ্রস্ত হওয়ার কথা প্রকাশ করে—অস্পষ্ট অঙ্ক, ভুল চেক অঙ্ক, বা সম্পূর্ণ ভুল ফরম্যাট। সম্পূর্ণ ডেটাসেটটিকে যাচাইকারীর মাধ্যমে পাঠিয়ে দেখুন যে কোন রেকর্ডগুলিকে স্থানান্তরের আগে ম্যানুয়াল সংশোধনের প্রয়োজন। 50,000+ গ্রাহক রেকর্ডের একটি প্রকল্পে, এই পদ্ধতিটি প্রায় 3% অবৈধ CUITs ধরে ফেলেছে যা লেনদেন ব্যর্থতা সৃষ্টি করবে।

ডেভেলপমেন্ট পরিবেশ সেটআপ

যখন আপনি আর্জেন্টাইন ফিনটেক অ্যাপ্লিকেশনগুলির জন্য স্থানীয় বা স্টেজিং পরিবেশ সেট আপ করছেন, তখন আপনার বাস্তবসম্মত পরীক্ষা ডেটা প্রয়োজন যা আসল করদাতার তথ্যের সাথে আকস্মিকভাবে সংঘর্ষ করবে না। বিভিন্ন সত্তা টাইপের (কোম্পানি, ব্যক্তি, ট্রাস্ট) জন্য CUITs তৈরি করুন যাতে আইনগত ঝুঁকি ছাড়াই বাস্তব পৃথিবীর পরিস্থিতিগুলি অনুকরণ করা যায়।

ফর্ম যাচাইকরণের জন্য QA পরীক্ষা

আপনার নিবন্ধন ফর্মটি কি সঠিকভাবে ভুল চেক অঙ্কসহ CUITs প্রত্যাখ্যান করে? এটি কি হাইফেন ছাড়া প্রবেশ করা CUITs পরিচালনা করতে পারে? এটি কি সনাক্ত করতে পারে যখন কেউ CUIL বনাম CUIT প্রবেশ করে? এই প্রান্তিক ক্ষেত্রগুলি গুরুত্বপূর্ণ যখন আপনি হাজার হাজার নিবন্ধন প্রক্রিয়া করছেন। হাতের কাছে একটি যাচাইকারী থাকলে আপনাকে ব্যাপক পরীক্ষা ক্ষেত্রগুলি তৈরি করতে সাহায্য করে।

লাতিন আমেরিকার কর সিস্টেম বোঝা

যদি আপনি একাধিক লাতিন আমেরিকার বাজারে প্রসারিত হন, তাহলে আপনি অনুরূপ কিন্তু আলাদা কর আইডি সিস্টেম পাবেন—ব্রাজিলের CPF/CNPJ, চিলির RUT, কলম্বিয়ার NIT। CUIT অ্যালগরিদমটি সাধারণ প্যাটার্ন প্রদর্শন করে: সত্তা টাইপ উপসর্গ, চেক অঙ্ক যাচাইকরণ, এবং মডুলো-ভিত্তিক যাচাই। একটি সিস্টেম বোঝা অন্যগুলি শিখতে গতি বাড়ায়।

CUIT বৈধতা এবং জেনারেশনের জন্য কোড উদাহরণ

নিম্নলিখিত কোড উদাহরণগুলি বিভিন্ন প্রোগ্রামিং ভাষায় CUIT বৈধতা এবং জেনারেশন কীভাবে বাস্তবায়ন করা যায় তা প্রদর্শন করে:

জাভাস্ক্রিপ্ট

1// জাভাস্ক্রিপ্টে CUIT বৈধতা
2function validateCUIT(cuit) {
3  // যেকোনো অ-সংখ্যা অক্ষরগুলি সরিয়ে দিন
4  const cleanCuit = cuit.replace(/\D/g, '');
5  
6  // যদি সঠিক ভাবে ১১ সংখ্যা থাকে
7  if (cleanCuit.length !== 11) {
8    return false;
9  }
10  
11  // অংশগুলি বের করুন
12  const typeCode = cleanCuit.substring(0, 2);
13  const number = cleanCuit.substring(2, 10);
14  const providedVerificationDigit = parseInt(cleanCuit.substring(10, 11));
15  
16  // যাচাইকরণ সংখ্যা গণনা করুন
17  const multipliers = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2];
18  let sum = 0;
19  
20  for (let i = 0; i < 10; i++) {
21    sum += parseInt(cleanCuit[i]) * multipliers[i];
22  }
23  
24  const remainder = sum % 11;
25  let calculatedVerificationDigit;
26  
27  if (remainder === 0) {
28    calculatedVerificationDigit = 0;
29  } else if (remainder === 1) {
30    calculatedVerificationDigit = 9;
31  } else {
32    calculatedVerificationDigit = 11 - remainder;
33  }
34  
35  return calculatedVerificationDigit === providedVerificationDigit;
36}
37
38// ব্যবহারের উদাহরণ
39console.log(validateCUIT('30-12345678-1')); // true বা false
40

পাইথন

1# পাইথনে CUIT জেনারেশন
2import random
3
4def generate_cuit(entity_type='COMPANY'):
5    # সত্তা টাইপ কোড সংজ্ঞায়িত করুন
6    entity_types = {
7        'COMPANY': 30,
8        'ASSOCIATION': 33,
9        'FOUNDATION': 30,
10        'SOCIETY': 30,
11        'GOVERNMENT': 30,
12        'FOREIGN_COMPANY': 30,
13        'INDIVIDUAL_MALE': 20,
14        'INDIVIDUAL_FEMALE': 27,
15        'TRUST': 30
16    }
17    
18    # নির্বাচিত সত্তা টাইপের জন্য টাইপ কোড পান
19    type_code = entity_types.get(entity_type, 30)
20    
21    # ৮-সংখ্যার রেন্ডম নম্বর তৈরি করুন
22    number = ''.join([str(random.randint(0, 9)) for _ in range(8)])
23    
24    # যাচাইকরণ সংখ্যা গণনা করুন
25    multipliers = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2]
26    digits = f"{type_code}{number}"
27    
28    sum_products = sum(int(digits[i]) * multipliers[i] for i in range(10))
29    remainder = sum_products % 11
30    
31    if remainder == 0:
32        verification_digit = 0
33    elif remainder == 1:
34        verification_digit = 9
35    else:
36        verification_digit = 11 - remainder
37    
38    # ফরম্যাট করে ফেরত দিন
39    return f"{type_code}-{number}-{verification_digit}"
40
41# ব্যবহারের উদাহরণ
42print(generate_cuit('INDIVIDUAL_MALE'))
43

PHP

1<?php
2// PHP-তে CUIT বৈধতা
3function validateCUIT($cuit) {
4    // যেকোনো অ-সংখ্যা অক্ষরগুলি সরিয়ে দিন
5    $cleanCuit = preg_replace('/\D/', '', $cuit);
6    
7    // যদি সঠিক ভাবে ১১ সংখ্যা থাকে
8    if (strlen($cleanCuit) !== 11) {
9        return false;
10    }
11    
12    // অংশগুলি বের করুন
13    $typeCode = substr($cleanCuit, 0, 2);
14    $number = substr($cleanCuit, 2, 8);
15    $providedVerificationDigit = intval(substr($cleanCuit, 10, 1));
16    
17    // যাচাইকরণ সংখ্যা গণনা করুন
18    $multipliers = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2];
19    $sum = 0;
20    
21    for ($i = 0; $i < 10; $i++) {
22        $sum += intval($cleanCuit[$i]) * $multipliers[$i];
23    }
24    
25    $remainder = $sum % 11;
26    
27    if ($remainder === 0) {
28        $calculatedVerificationDigit = 0;
29    } elseif ($remainder === 1) {
30        $calculatedVerificationDigit = 9;
31    } else {
32        $calculatedVerificationDigit = 11 - $remainder;
33    }
34    
35    return $calculatedVerificationDigit === $providedVerificationDigit;
36}
37
38// ব্যবহারের উদাহরণ
39echo validateCUIT('30-12345678-1') ? 'বৈধ' : 'অবৈধ';
40?>
41

জাভা

1// জাভায় CUIT জেনারেশন এবং বৈধতা
2import java.util.Random;
3
4public class CUITUtils {
5    
6    // সত্তা টাইপ কোড
7    private static final int COMPANY_CODE = 30;
8    private static final int ASSOCIATION_CODE = 33;
9    private static final int INDIVIDUAL_MALE_CODE = 20;
10    private static final int INDIVIDUAL_FEMALE_CODE = 27;
11    
12    // একটি বৈধ CUIT তৈরি করুন
13    public static String generateCUIT(String entityType) {
14        int typeCode;
15        
16        // সত্তা টাইপের ভিত্তিতে টাইপ কোড নির্ধারণ করুন
17        switch (entityType.toUpperCase()) {
18            case "INDIVIDUAL_MALE":
19                typeCode = INDIVIDUAL_MALE_CODE;
20                break;
21            case "INDIVIDUAL_FEMALE":
22                typeCode = INDIVIDUAL_FEMALE_CODE;
23                break;
24            case "ASSOCIATION":
25                typeCode = ASSOCIATION_CODE;
26                break;
27            case "COMPANY":
28            default:
29                typeCode = COMPANY_CODE;
30                break;
31        }
32        
33        // ৮-সংখ্যার রেন্ডম নম্বর তৈরি করুন
34        Random random = new Random();
35        StringBuilder number = new StringBuilder();
36        for (int i = 0; i < 8; i++) {
37            number.append(random.nextInt(10));
38        }
39        
40        // যাচাইকরণ সংখ্যা গণনা করুন
41        String digits = String.format("%02d%s", typeCode, number.toString());
42        int verificationDigit = calculateVerificationDigit(digits);
43        
44        // ফরম্যাট করে ফেরত দিন
45        return String.format("%02d-%s-%d", typeCode, number.toString(), verificationDigit);
46    }
47    
48    // যাচাইকরণ সংখ্যা গণনা করুন
49    private static int calculateVerificationDigit(String digits) {
50        int[] multipliers = {5, 4, 3, 2, 7, 6, 5, 4, 3, 2};
51        int sum = 0;
52        
53        for (int i = 0; i < 10; i++) {
54            sum += Character.getNumericValue(digits.charAt(i)) * multipliers[i];
55        }
56        
57        int remainder = sum % 11;
58        
59        if (remainder == 0) {
60            return 0;
61        } else if (remainder == 1) {
62            return 9;
63        } else {
64            return 11 - remainder;
65        }
66    }
67    
68    // CUIT বৈধতা যাচাই করুন
69    public static boolean validateCUIT(String cuit) {
70        // যেকোনো অ-সংখ্যা অক্ষরগুলি সরিয়ে দিন
71        String cleanCuit = cuit.replaceAll("\\D", "");
72        
73        // যদি সঠিক ভাবে ১১ সংখ্যা থাকে
74        if (cleanCuit.length() != 11) {
75            return false;
76        }
77        
78        // যাচাইকরণ সংখ্যা বের করুন
79        int providedVerificationDigit = Character.getNumericValue(cleanCuit.charAt(10));
80        
81        // প্রত্যাশিত যাচাইকরণ সংখ্যা গণনা করুন
82        int calculatedVerificationDigit = calculateVerificationDigit(cleanCuit.substring(0, 10));
83        
84        // যাচাইকরণ সংখ্যা তুলনা করুন
85        return calculatedVerificationDigit == providedVerificationDigit;
86    }
87    
88    public static void main(String[] args) {
89        // ব্যবহারের উদাহরণ
90        String generatedCUIT = generateCUIT("COMPANY");
91        System.out.println("তৈরিকৃত CUIT: " + generatedCUIT);
92        System.out.println("বৈধ কিনা: " + validateCUIT(generatedCUIT));
93    }
94}
95

C#

1using System;
2using System.Text.RegularExpressions;
3
4public class CUITValidator
5{
6    // CUIT বৈধতা যাচাই করুন
7    public static bool ValidateCUIT(string cuit)
8    {
9        // যেকোনো অ-সংখ্যা অক্ষরগুলি সরিয়ে দিন
10        string cleanCuit = Regex.Replace(cuit, @"\D", "");
11        
12        // যদি সঠিক ভাবে ১১ সংখ্যা থাকে
13        if (cleanCuit.Length != 11)
14        {
15            return false;
16        }
17        
18        // যাচাইকরণ সংখ্যা বের করুন
19        int providedVerificationDigit = int.Parse(cleanCuit.Substring(10, 1));
20        
21        // প্রত্যাশিত যাচাইকরণ সংখ্যা গণনা করুন
22        int[] multipliers = { 5, 4, 3, 2, 7, 6, 5, 4, 3, 2 };
23        int sum = 0;
24        
25        for (int i = 0; i < 10; i++)
26        {
27            sum += int.Parse(cleanCuit.Substring(i, 1)) * multipliers[i];
28        }
29        
30        int remainder = sum % 11;
31        int calculatedVerificationDigit;
32        
33        if (remainder == 0)
34        {
35            calculatedVerificationDigit = 0;
36        }
37        else if (remainder == 1)
38        {
39            calculatedVerificationDigit = 9;
40        }
41        else
42        {
43            calculatedVerificationDigit = 11 - remainder;
44        }
45        
46        return calculatedVerificationDigit == providedVerificationDigit;
47    }
48    
49    // CUIT-কে সঠিক বিভাজনের সাথে ফরম্যাট করুন
50    public static string FormatCUIT(string cuit)
51    {
52        string cleanCuit = Regex.Replace(cuit, @"\D", "");
53        
54        if (cleanCuit.Length != 11)
55        {
56            return cuit; // যদি ১১ সংখ্যা না থাকে তাহলে মূল মান ফেরত দিন
57        }
58        
59        return $"{cleanCuit.Substring(0, 2)}-{cleanCuit.Substring(2, 8)}-{cleanCuit.Substring(10, 1)}";
60    }
61}
62

পটভূমি: কেন আর্জেন্টিনা CUIT সিস্টেম গ্রহণ করেছিল

১৯৯০-এর দশকের আগে, আর্জেন্টিনার কর পরিচয়পত্র ছিল বিভক্ত—বিভিন্ন এজেন্সি অসংগত সংখ্যা পদ্ধতি ব্যবহার করত, যা ডেটাবেসের মধ্যে করদাতাদের অনুসরণ করা কঠিন করে তুলেছিল। কর পালাচ্ছিল ব্যাপকভাবে, আংশিকভাবে এই মানহীনতার কারণে প্রয়োগ করা কঠিন ছিল।

AFIP ১৯৯০-এর গোড়ার দিকে কার্লোস মেনেম প্রশাসনের আর্থিক সংস্কারের অংশ হিসাবে CUIT চালু করে। সময়টি পেসোকে মার্কিন ডলারের সঙ্গে যুক্ত করা এবং আরও কঠোর আর্থিক নিয়ন্ত্রণ প্রয়োজন হওয়ার সঙ্গে মিলে যায়।

সিস্টেমটি দ্রুত বিকশিত হয়:

  • প্রাথমিক ১৯৯০-এর দশক: ব্যবসা এবং স্বনিয়োজিত পেশাদারদের জন্য চালু
  • মধ্য ১৯৯০-এর দশক: কর্মচারীদের জন্য প্রসারিত, একটি সর্বজনীন করদাতা রেজিস্ট্রি তৈরি
  • শেষ ১৯৯০-এর দশক: ইলেক্ট্রনিক ফাইলিংয়ের সঙ্গে একীভূত—সেই সময়ের জন্য একটি উল্লেখযোগ্য প্রযুক্তিগত সাফল্য
  • ২০০০-এর দশক থেকে: ব্যাংকিং, কর্মসংস্থান চুক্তি এবং শেষ পর্যন্ত ই-কমার্সের জন্য বাধ্যতামূলক

আজ, আর্জেন্টিনায় আপনি ব্যবসায়িক ব্যাংক অ্যাকাউন্ট খুলতে, কর্মসংস্থান চুক্তিতে সই করতে, বা ইলেক্ট্রনিক চালান ইস্যু করতে পারবেন না CUIT ছাড়া। এটি পুরো আনুষ্ঠানিক অর্থনীতির মৌলিক পরিচয়পত্র হয়ে উঠেছে, যেভাবে মার্কিন যুক্তরাষ্ট্রে সামাজিক নিরাপত্তা নম্বর কাজ করে—যদিও আর্জেন্টিনার ব্যক্তিগত তথ্য সুরক্ষা আইন ২৫,৩২৬-এর মাধ্যমে গোপনীয়তা এবং ব্যবহার সীমাবদ্ধতার আরও শক্ত আইনি সুরক্ষা সহ।

Frequently Asked Questions

What is a CUIT number in Argentina?

CUIT (Código Único de Identificación Tributaria) is Argentina's tax identification number for individuals and businesses. It's an 11-digit code in the format XX-XXXXXXXX-X that AFIP (the federal tax authority) assigns to everyone who needs to conduct formal economic activity—from opening a bank account to issuing invoices.

How do I check if a CUIT is real or fake?

Our tool validates the mathematical structure—correct format, valid entity type code, and accurate check digit. However, it can't tell you if a CUIT is registered with AFIP. For official verification, use AFIP's Constancia de Inscripción service which queries their database. Think of our tool like spell-check: it catches formatting errors but doesn't verify authenticity.

What's the difference between CUIT and CUIL?

Both use identical 11-digit formats and the same validation algorithm. The distinction:

  • CUIT: For taxpayers conducting economic activities (businesses, self-employed professionals, freelancers)
  • CUIL: For employees working under a labor contract without independent business operations

In practice, many people use their CUIL when asked for a CUIT on forms, and systems often accept both interchangeably. The technical difference matters more for legal and accounting contexts than everyday use.

Can I use generated CUITs for real transactions?

Absolutely not. Generated CUITs are mathematically valid but not registered with AFIP. Using them for official documents, contracts, or tax filings is fraud under Argentine law. Use them only for:

  • Software development and testing
  • QA and staging environments
  • Educational demonstrations
  • Data integrity validation

Why does type code 30 apply to multiple entity types?

AFIP simplified entity classification by grouping similar entities under code 30 (companies, foundations, government agencies, trusts). The actual entity type distinction happens in AFIP's internal registration system, not in the CUIT itself. This design choice prioritized simplicity over granular classification—a trade-off that makes the system easier to implement but less self-documenting.

How accurate is the check digit at catching errors?

The modulo-11 weighted algorithm catches approximately 90% of single-digit mistakes and 98% of transposition errors (swapping adjacent digits). It won't catch all errors—for example, if you transpose two digits that happen to have the same weight factors, the check digit remains valid. But for typical data entry mistakes, it's highly effective.

Do CUITs expire or change?

CUITs are permanent for the taxpayer's lifetime. Exceptions include:

  • Gender identity changes (Argentina allows updating the CUIT to match gender)
  • Major legal restructuring (company mergers might trigger new CUITs)
  • Fraud or identity theft (AFIP may invalidate compromised CUITs)

Unlike some countries where tax IDs refresh periodically, Argentina designed CUITs as lifetime identifiers to reduce administrative overhead.

What happens if I enter a CUIT without hyphens?

Most Argentine systems accept CUITs with or without hyphens—the underlying validation strips formatting characters before checking the digits. Our validator handles both formats: 30-12345678-1 and 30123456781 are treated identically. When integrating with APIs, check their documentation; some require exact formatting while others normalize input automatically.

Can foreign companies get Argentine CUITs?

Yes. Foreign entities conducting business in Argentina receive CUITs using type code 30, the same as domestic companies. They must register with AFIP and typically need a local legal representative. The CUIT links to their foreign tax ID in AFIP's records, enabling cross-border tax treaty compliance.

How do I generate test CUITs for different entity types?

Select the entity type from the dropdown (Company, Individual Male/Female, Association, etc.) and click "Generate CUIT." The tool automatically assigns the correct type code (30 for companies, 20 for males, 27 for females, 33 for associations) and calculates the proper check digit. Generate as many as you need—there's no limit for testing purposes.

সরকারি রেফারেন্স এবং আরও পড়ার জন্য তথ্য

  1. আয় সার্বজনীন কর কর্তৃপক্ষ (AFIP) - আর্জেন্টিনার আনুষ্ঠানিক কর কর্তৃপক্ষ https://www.afip.gob.ar/

  2. AFIP নিবন্ধন সনদ - আনুষ্ঠানিক CUIT যাচাইকরণ পরিষেবা https://www.afip.gob.ar/genericos/consultaCUIT/

  3. কর প্রক্রিয়া আইন ১১.৬৮৩ - CUIT প্রয়োজনীয়তা নির্ধারণকারী কর প্রক্রিয়া আইন আর্জেন্টিনা প্রজাতন্ত্রের সরকারি বুলেটিন

  4. AFIP সাধারণ সংকল্প ১৮১৭/২০০৫ - নিবন্ধন এবং পরিচয় প্রক্রিয়া আনুষ্ঠানিক AFIP নথি

  5. ব্যক্তিগত তথ্য সুরক্ষা আইন ২৫.৩২৬ - CUIT ব্যবহার নিয়ন্ত্রণকারী ব্যক্তিগত তথ্য সুরক্ষা আইন https://www.argentina.gob.ar/aaip/datospersonales

  6. জাতিসংঘ ECLAC - "ল্যাটিন আমেরিকায় কর নীতি: মূল্যায়ন এবং সংস্কারের নির্দেশিকা" গোমেজ সাবাইনি, জে.সি., & মোরান, ডি. (২০১৬) - আর্জেন্টিনা সহ কর ব্যবস্থার তুলনামূলক বিশ্লেষণ

  7. কর প্রশাসন জার্নাল - কর সনাক্তকরণ সিস্টেম এবং চেক ডিজিট অ্যালগরিদম সম্পর্কিত গবেষণা https://www.jota.website/

CUIT ভ্যালিডেশন শুরু করুন

আর্জেন্টাইন বাণিজ্যিক প্রতিষ্ঠানের পেমেন্ট গেটওয়ে তৈরি করছেন, পুরোনো গ্রাহক ডাটাবেস স্থানান্তর করছেন, অথবা আপনার ই-কমার্স প্লাটফর্মের AFIP আবশ্যকতার সামঞ্জস্যতা পরীক্ষা করছেন, এই টুল আপনাকে CUIT সম্পর্কে আত্মবিশ্বাসের সাথে কাজ করতে সাহায্য করবে।

পরীক্ষার পর্যায়ের পরিবেশ ভেঙে যাবে না এমন পরীক্ষামূলক তথ্য তৈরি করুন। স্থানান্তরের আগে ডেটাসেট যাচাই করুন। আর্জেন্টাইনের কর পরিচয়পত্র সিস্টেমের পিছনের অ্যালগরিদম বুঝুন।

কোন API কী নেই। কোন রেট সীমা নেই। কোন অপ্রয়োজনীয় বৈশিষ্ট্য নেই। শুধুমাত্র নির্ভরযোগ্য CUIT তৈরি এবং যাচাইকরণ যখন আপনার প্রয়োজন।