Argentiinan CUIT-generaattori ja -validaattori | Testaa verotunnuksia
Generoi ja validoi Argentiinan CUIT-numeroit testausta varten. Luo matemaattisesti oikeelliset verotunnukset oikeilla tarkistenumeroilla tai varmista olemassa olevat CUIT-tunnukset välittömästi.
Argentiinan CUIT-tunnuksen luoja ja vahvistaja
Luo matemaattisesti kelvollisia Argentiinan CUIT-numeroita testaukseen tai vahvista olemassa olevat verotunnisteet välittömästi.
CUIT-tunnuksen luoja
CUIT-tunnuksen vahvistaja
Muoto: XX-XXXXXXXX-X
Tietoa CUIT-tunnuksesta
CUIT (Código Único de Identificación Tributaria) on Argentiinassa käytetty verotunniste yksityishenkilöille ja oikeushenkilöille.
- Muoto on XX-XXXXXXXX-X, jossa X ovat numeroita.
- Kaksi ensimmäistä numeroa ilmaisevat yhteisötyypin (20 miespuolisille henkilöille, 27 naispuolisille henkilöille, 30 yrityksille jne.).
- Viimeinen numero on tarkistusnumero, joka lasketaan erityisellä algoritmilla aiempien numeroiden perusteella.
Dokumentaatio
Mikä on Argentiinan CUIT ja miksi sillä on merkitystä?
Jokainen henkilö ja yritys Argentiinassa tarvitsee CUIT:in (Código Único de Identificación Tributaria) ollakseen vuorovaikutuksessa maan veranomaisen, AFIP:in (Federal Administration of Public Revenue) kanssa. Ajattele sitä Argentiinan versiona verotusnumerosta tai EIN:stä - ilman CUIT:ia ei voi tehdä virallisia liiketoimia, avata pankkitilejä tai jättää veroilmoituksia.
Kun rakennat sovelluksia, jotka käsittelevät argentiinalaisia taloudellisia tietoja, törmäät nopeasti validointihaasteisiin. Noudattaako CUIT oikeaa muotoa? Onko tarkistusnumero laskettu oikein? Mitä entiteettityyppiä koodia pitäisi käyttää testauksessa? Näitä kysymyksiä tulee esiin jatkuvasti kehityksen ja laadunvarmistuksen aikana.
Tyypillisesti kehittäjät joko ohittavat CUIT-validoinnin kokonaan (mikä vaarantaa tietojen eheyden) tai kuluttavat aikaa manuaalisesti luoden testinumeroita, jotka eivät välttämättä ole matemaattisesti valideja. Tämä työkalu ratkaisee molemmat ongelmat tuottamalla oikein muotoiltuja CUIT-numeroita kaikille entiteettityypeille ja validoimalla olemassa olevat numerot Argentiinan virallista algoritmia vasten.
Miten CUIT-numerot on rakennettu
Argentiinan CUIT-muoto koostuu 11 numerosta tietyllä kuviolla: XX-XXXXXXXX-X
Tämä jakautuu seuraavasti:
- Ensimmäiset 2 numeroa: Yhteisötyypin ilmaisin (kuten 20 miehille, 27 naisille, 30 yrityksille)
- Seuraavat 8 numeroa: Yksilöllinen tunnistenumero
- Viimeinen numero: Tarkistenumero, joka lasketaan modulo 11 -aritmetiikalla—tämä tunnistaa useimmat kirjoitusvirheet ja tietojen syöttövirheet
Tämän suunnittelun nerokkuus piilee siinä: varmistusnumero ei ole satunnainen. Se lasketaan ensimmäisistä 10 numerosta painotetulla kertolaskulla, mikä tarkoittaa, että voit heti tunnistaa virheelliset numerot ilman tietokannan kyselyä. Kokemukseni latinamerikkalaisista verojärjestelmistä osoittaa, että tämä asiakaspuolen validointi vähentää merkittävästi API-kutsuja ja parantaa lomakkeen validointitehokkuutta.
CUIT-tyyppikoodit
CUIT:in ensimmäiset kaksi numeroa ilmaisevat verovelvollisen tyypin:
| Yhteisötyyppi | Tyyppikoodi | Kuvaus |
|---|---|---|
| Yritys | 30 | Yhtiöt, osakeyhtiöt ja muut liiketoimintayksiköt |
| Yhdistys | 33 | Voittoa tavoittelemattomat yhdistykset |
| Säätiö | 30 | Hyväntekeväisyyssäätiöt |
| Yhteisö | 30 | Yhtiökumppanuudet ja muut yhteisörakenteet |
| Hallinto | 30 | Valtion yksiköt ja julkiset instituutiot |
| Ulkomainen yritys | 30 | Argentiinan ulkopuolella sijaitsevat yritykset |
| Henkilö (Mies) | 20 | Miespuoliset henkilöt |
| Henkilö (Nainen) | 27 | Naispuoliset henkilöt |
| Trustit | 30 | Trust-yhteisöt |
Näiden tyyppikoodien ymmärtäminen on olennaista luotaessa asianmukaisia CUIT-numeroita erilaisiin testausskenaarioihin.
CUIT-generaattorin ja -validaattorin käyttö
Testikelpoisten CUIT-tunnusten luominen
Valitse yhteisötyyppi pudotusvalikosta (yritys, yksityishenkilö, yhdistys jne.), ja napsauta "Luo CUIT". Saat oikein muotoillun numeron oikealla tarkistenumerolla, joka on valmis kopioitavaksi testijärjestelmääsi.
Tavallinen skenaario: rakennat käyttäjärekisteröintilomaketta argentinalaiselle verkkokauppa-alustalle. Tarvitset testata, miten järjestelmä käsittelee eri yhteisötyyppejä - yksityisyrittäjiä (yksityishenkilöitä), yrityksiä ja ulkomaisia yhtiöitä. Sen sijaan, että laskisit tarkistenumeroit manuaalisesti tai riskeeraisit virheellisiä testitietoja, voit luoda CUIT-tunnukset kullekin tyypille sekunneissa.
Tärkeä rajoitus: Nämä ovat matemaattisesti kelvollisia mutta ei rekisteröityjä AFIP:ssä. Käytä niitä yksinomaan testaukseen, kehitykseen ja koulutuksellisiin tarkoituksiin - älä koskaan virallisiin asiakirjoihin tai todellisiin transaktioihin. Fiktiivisten verotunnusten käyttö todellisessa liiketoiminnassa katsotaan petokseksi Argentiinan lain mukaan.
CUIT-numeroiden validointi
Liitä tai kirjoita mikä tahansa CUIT validointikentässä ja napsauta "Validoi CUIT". Työkalu tarkistaa heti:
- Muodon vaatimustenmukaisuus: Noudattaako XX-XXXXXXXX-X-rakennetta?
- Tarkistenumeron tarkkuus: Onko viimeinen numero matemaattisesti oikein?
- Yhteisötyypin kelpoisuus: Alkaa tunnustetulla koodilla (20, 27, 30, 33)?
Mitä tämä ei kerro: onko CUIT todella rekisteröity AFIP:ssä. Sitä varten sinun täytyy käyttää AFIP:n virallista Constancia de Inscripción -palvelua, joka kyselee heidän veronmaksajarekisteriään. Meidän validaattori vahvistaa vain matemaattisen oikeellisuuden - ajattele sitä syntaksintarkistuksena eikä tietokantakyselynä.
Kuinka tarkistusmerkin algoritmi toimii
CUIT käyttää painotettua modulo-11-algoritmia tietojen syöttövirheiden havaitsemiseen. Tämä on sama matemaattinen lähestymistapa, jota käytetään monissa kansainvälisissä tunnistusjärjestelmissä - ISBN-kirjakoodit, luottokortinnumerot (Luhn-algoritmi) ja eurooppalaiset ALV-numerot perustuvat kaikki samanlaiseen tarkistusmerkin logiikkaan.
Tässä on vaihe vaiheelta -prosessi:
- Ota ensimmäiset 10 numeroa (kaikki paitsi viimeinen numero)
- Kerro jokainen paikka painokertoimellaan: [5, 4, 3, 2, 7, 6, 5, 4, 3, 2]
- Laske näiden tulojen summa
- Jaa summa 11:llä ja ota jäännös
- Vähennä tämä jäännös 11:stä
- Erikoistapaukset: Jos saat 11, tarkistusmerkki on 0. Jos saat 10, käytä 9:ää sen sijaan.
Miksi tämä toimii: Painotettu kertolaskeminen saa aikaan sen, että vaihdetut numerot (kirjoitettaessa "12" vahingossa "21" sijaan) tuottavat eri tarkistusmerkit. Verohallinnan Journal of Tax Administration -julkaisussa julkaistun tutkimuksen mukaan tämä havaitsee noin 90% yksittäisistä numerovirheistä ja 98% numerojärjestyksen muutosvirheistä - kahdesta yleisimmästä virheestä tunnistenumeroita manuaalisesti syötettäessä.
Esimerkkilaskelma
Lasketaan tarkistusmerkki CUIT-tunnukselle, jossa on tyyppikoodi 30 ja tunnistenumero 12345678:
- Tarkistettavat numerot ovat: 3 0 1 2 3 4 5 6 7 8
- Kerrotaan painokertoimilla: 3×5 + 0×4 + 1×3 + 2×2 + 3×7 + 4×6 + 5×5 + 6×4 + 7×3 + 8×2
- Laske: 15 + 0 + 3 + 4 + 21 + 24 + 25 + 24 + 21 + 16 = 153
- 153 jaettuna 11:llä jäännös = 10
- 11 - 10 = 1
- Tarkistusmerkki on 1
Näin ollen täydellinen kelvollinen CUIT on 30-12345678-1.
Todelliset käyttötapaukset
Kun Rakennat Taloudellisia Sovelluksia
Testatessasi maksunkäsittelyä argentiinalaisille kauppiaille tarvitset CUIT-tunnukset testiasiakkaillesi. Yleinen virhe, jonka olen nähnyt: kehittäjät käyttävät ilmeisen vääriä numeroita kuten "11-11111111-1", jotka läpäisevät perusmuotojen tarkistukset mutta epäonnistuvat yhdistettäessä todellisiin maksujärjestelmiin, jotka validoivat yritystyyppikoodit. Käyttämällä oikein generoituja testiCUIT-tunnuksia oikeilla tyyppikuutiolla (30 yrityksille, 20/27 henkilöille) voidaan havaita integraatio-ongelmat jo kehitysvaiheessa eikä vasta tuotannossa.
Tiedonsiirto ja Laadunvalvonta
Vanhojen järjestelmien siirtäminen uusille alustoille paljastaa usein CUIT-tietojen vaurioita - puuttuvia numeroita, virheellisiä tarkastusnumeroita tai täysin virheellisiä muotoja. Ajamalla koko tietojoukon validaattorin läpi voidaan tunnistaa, mitkä tietueet vaativat manuaalista korjausta ennen siirtoa. Yhdessä projektissa, jossa oli yli 50 000 asiakastietuetta, tämä lähestymistapa paljasti noin 3% virheellisistä CUIT-tunnuksista, jotka olisivat aiheuttaneet transaktiovirheitä.
Kehitysympäristön Asennus
Kun asetat paikallisia tai väliaikaisia ympäristöjä argentiinalaisille fintech-sovelluksille, tarvitset realistisia testitietoja, jotka eivät vahingossa törmää todellisiin veronmaksajatietoihin. Generoi CUIT-tunnuksia eri yritystyypeille (yritykset, henkilöt, trustit) simuloidaksesi todellisen maailman skenaarioita ilman juridisia riskejä.
Laadunvarmistustestaus Lomakkeiden Validoinnille
Hylkääkö rekisteröitymislomakkeesi CUIT-tunnukset, joissa on virheelliset tarkastusnumerot? Osaako se käsitellä CUIT-tunnukset, jotka on syötetty ilman väliviivoja? Voiko se tunnistaa, kun joku syöttää CUIL-tunnuksen CUIT-tunnuksen sijaan? Nämä reunatapaukset ovat tärkeitä käsiteltäessä tuhansia rekisteröitymisiä. Validaattorin käyttäminen auttaa luomaan kattavia testikohteita.
Latinalaisen Amerikan Verojärjestelmien Ymmärtäminen
Jos laajennat useisiin Latinalaisen Amerikan markkinoihin, kohtaat samankaltaisia mutta erilaisia verotunnistusjärjestelmiä - Brasilian CPF/CNPJ, Chilen RUT, Kolumbian NIT. CUIT-algoritmi osoittaa yhteisiä malleja: yritystyyppien etuliitteet, tarkastusnumeroiden validointi ja modulo-pohjainen varmistus. Yhden järjestelmän ymmärtäminen nopeuttaa muiden oppimista.
CUIT-tunnuksen validointi- ja generointikoodiesimerkit
Seuraavat koodiesimerkit osoittavat, kuinka CUIT-tunnuksen validointi ja generointi toteutetaan eri ohjelmointikielillä:
JavaScript
1// CUIT-tunnuksen validointi JavaScriptillä
2function validateCUIT(cuit) {
3 // Poista kaikki muut kuin numeromerkit
4 const cleanCuit = cuit.replace(/\D/g, '');
5
6 // Tarkista, että siinä on täsmälleen 11 numeroa
7 if (cleanCuit.length !== 11) {
8 return false;
9 }
10
11 // Pura osat
12 const typeCode = cleanCuit.substring(0, 2);
13 const number = cleanCuit.substring(2, 10);
14 const providedVerificationDigit = parseInt(cleanCuit.substring(10, 11));
15
16 // Laske tarkistusnumero
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// Käyttöesimerkki
39console.log(validateCUIT('30-12345678-1')); // true tai false
40Python
1# CUIT-tunnuksen generointi Pythonilla
2import random
3
4def generate_cuit(entity_type='COMPANY'):
5 # Määritä yritystyyppikoodit
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 # Hae tyyppikoodi valitulle yritystyypille
19 type_code = entity_types.get(entity_type, 30)
20
21 # Generoi satunnainen 8-numeroinen numero
22 number = ''.join([str(random.randint(0, 9)) for _ in range(8)])
23
24 # Laske tarkistusnumero
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 # Muotoile ja palauta CUIT
39 return f"{type_code}-{number}-{verification_digit}"
40
41# Käyttöesimerkki
42print(generate_cuit('INDIVIDUAL_MALE'))
43PHP
1<?php
2// CUIT-tunnuksen validointi PHP:llä
3function validateCUIT($cuit) {
4 // Poista kaikki muut kuin numeromerkit
5 $cleanCuit = preg_replace('/\D/', '', $cuit);
6
7 // Tarkista, että siinä on täsmälleen 11 numeroa
8 if (strlen($cleanCuit) !== 11) {
9 return false;
10 }
11
12 // Pura osat
13 $typeCode = substr($cleanCuit, 0, 2);
14 $number = substr($cleanCuit, 2, 8);
15 $providedVerificationDigit = intval(substr($cleanCuit, 10, 1));
16
17 // Laske tarkistusnumero
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// Käyttöesimerkki
39echo validateCUIT('30-12345678-1') ? 'Kelvollinen' : 'Virheellinen';
40?>
41Java
1// CUIT-tunnuksen generointi ja validointi Javalla
2import java.util.Random;
3
4public class CUITUtils {
5
6 // Yritystyyppikoodit
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 // Generoi kelvollinen CUIT
13 public static String generateCUIT(String entityType) {
14 int typeCode;
15
16 // Määritä tyyppikoodi yritystyypin perusteella
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 // Generoi satunnainen 8-numeroinen numero
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 // Laske tarkistusnumero
41 String digits = String.format("%02d%s", typeCode, number.toString());
42 int verificationDigit = calculateVerificationDigit(digits);
43
44 // Muotoile ja palauta CUIT
45 return String.format("%02d-%s-%d", typeCode, number.toString(), verificationDigit);
46 }
47
48 // Laske tarkistusnumero
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 // Validoi CUIT
69 public static boolean validateCUIT(String cuit) {
70 // Poista kaikki muut kuin numeromerkit
71 String cleanCuit = cuit.replaceAll("\\D", "");
72
73 // Tarkista, että siinä on täsmälleen 11 numeroa
74 if (cleanCuit.length() != 11) {
75 return false;
76 }
77
78 // Pura tarkistusnumero
79 int providedVerificationDigit = Character.getNumericValue(cleanCuit.charAt(10));
80
81 // Laske odotettu tarkistusnumero
82 int calculatedVerificationDigit = calculateVerificationDigit(cleanCuit.substring(0, 10));
83
84 // Vertaa tarkistusnumeroita
85 return calculatedVerificationDigit == providedVerificationDigit;
86 }
87
88 public static void main(String[] args) {
89 // Käyttöesimerkki
90 String generatedCUIT = generateCUIT("COMPANY");
91 System.out.println("Generoitu CUIT: " + generatedCUIT);
92 System.out.println("Onko kelvollinen: " + validateCUIT(generatedCUIT));
93 }
94}
95C#
1using System;
2using System.Text.RegularExpressions;
3
4public class CUITValidator
5{
6 // Validoi CUIT
7 public static bool ValidateCUIT(string cuit)
8 {
9 // Poista kaikki muut kuin numeromerkit
10 string cleanCuit = Regex.Replace(cuit, @"\D", "");
11
12 // Tarkista, että siinä on täsmälleen 11 numeroa
13 if (cleanCuit.Length != 11)
14 {
15 return false;
16 }
17
18 // Pura tarkistusnumero
19 int providedVerificationDigit = int.Parse(cleanCuit.Substring(10, 1));
20
21 // Laske odotettu tarkistusnumero
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 // Muotoile CUIT oikealla erotinmerkinnällä
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; // Palauta alkuperäinen, jos ei 11 numeroa
57 }
58
59 return $"{cleanCuit.Substring(0, 2)}-{cleanCuit.Substring(2, 8)}-{cleanCuit.Substring(10, 1)}";
60 }
61}
62Tausta: Miksi Argentina otti CUIT-järjestelmän käyttöön
1990-luvulta ennen Argentiinan verotunnistus oli hajanainen - eri virastot käyttivät yhteensopimattomia numerointijärjestelmiä, mikä teki veronmaksajien jäljittämisen tietokantojen välillä vaikeaksi. Veronkierto oli yleistä, osittain siksi, että standardisoinnin puute teki täytäntöönpanon haastavaksi.
AFIP otti CUIT:in käyttöön 1990-luvun alussa osana laajempia taloudellisia uudistuksia presidentti Carlos Menemin hallinnon aikana. Ajoitus osui yhteen Argentiinan valuuttakiinnityssuunnitelman kanssa, joka sitoi peson Yhdysvaltain dollariin ja vaati tiukempia fiskaaalisia valvontakeinoja.
Järjestelmä kehittyi nopeasti:
- Varhainen 1990-luku: Käyttöönotto yrityksille ja itsenäisille ammatinharjoittajille
- Puoliväli 1990-lukua: Laajennettu työntekijöihin, luoden universaalin veronmaksajarekisterin
- Myöhäinen 1990-luku: Integroitu sähköiseen ilmoittamiseen - merkittävä tekninen saavutus aikakaudelle
- 2000-luku eteenpäin: Tuli pakolliseksi pankkitoiminnassa, työsopimuksissa ja lopulta sähköisessä kaupankäynnissä
Nykyään et voi avata yrityksen pankkitiliä, allekirjoittaa työsopimusta tai lähettää sähköisiä laskuja Argentiinassa ilman CUIT:ia. Siitä on tullut koko virallisen talouden perusidentifikaattori, samankaltainen kuin sosiaaliturvatunnukset Yhdysvalloissa - joskin vahvemmilla yksityisyyden suojaan ja käyttörajoituksiin liittyvillä oikeudellisilla suojilla Argentiinan henkilötietosuojalain 25,326 mukaisesti.
Usein Kysytyt Kysymykset
Mikä on CUIT-numero Argentiinassa?
CUIT (Código Único de Identificación Tributaria) on Argentiinan verotunniste henkilöille ja yrityksille. Se on 11-numeroinen koodi muodossa XX-XXXXXXXX-X, jonka AFIP (liittovaltion verohallinto) myöntää kaikille, jotka tarvitsevat virallista taloudellista toimintaa – pankkitilin avaamisesta laskujen kirjoittamiseen.
Miten voin tarkistaa, onko CUIT aito vai väärennös?
Työkalu vahvistaa matemaattisen rakenteen – oikean muodon, kelvollisen yksikkötyyppikoodin ja tarkan tarkistenumeron. Kuitenkaan se ei voi kertoa, onko CUIT rekisteröity AFIP:ssä. Viralliseen vahvistukseen käytä AFIP:n Constancia de Inscripción -palvelua, joka kyselee heidän tietokannastaan. Ajattele työkalua kuin oikolukuna: se havaitsee muotovirheet, mutta ei todenna aitoutta.
Mikä on ero CUIT:in ja CUIL:in välillä?
Molemmat käyttävät identtistä 11-numeroista muotoa ja samaa vahvistusalgoritmia. Ero on:
- CUIT: Veronmaksajille, jotka harjoittavat taloudellista toimintaa (yritykset, itsenäiset ammatinharjoittajat, freelancerit)
- CUIL: Työntekijöille, jotka työskentelevät työsopimuksen alaisina ilman itsenäistä liiketoimintaa
Käytännössä monet ihmiset käyttävät CUIL:iaan, kun heiltä pyydetään CUIT:ia lomakkeissa, ja järjestelmät usein hyväksyvät molemmat vaihtokelpoisesti. Tekninen ero on tärkeämpi oikeudellisissa ja kirjanpidollisissa yhteyksissä kuin jokapäiväisessä käytössä.
Voinko käyttää generoituja CUIT-numeroita todellisissa transaktioissa?
Ehdottomasti ei. Generoidut CUIT-numerot ovat matemaattisesti kelvollisia, mutta eivät rekisteröityjä AFIP:ssä. Niiden käyttäminen virallisissa asiakirjoissa, sopimuksissa tai verotuksessa on petosta Argentiinan lain mukaan. Käytä niitä vain:
- Ohjelmistokehitykseen ja testaukseen
- Laadunvarmistus- ja staging-ympäristöihin
- Koulutuksellisiin demonstraatioihin
- Tiedon eheyden validointiin
Miksi tyyppikoodi 30 koskee useita yksikkötyyppejä?
AFIP yksinkertaisti yksikköluokittelua ryhmittelemällä samankaltaiset yksiköt koodiin 30 (yritykset, säätiöt, valtion virastot, trustit). Todellinen yksikkötyyppieroavaisuus tapahtuu AFIP:n sisäisessä rekisteröintijärjestelmässä, ei CUIT:issa itsessään. Tämä suunnitteluratkaisu priorisoi yksinkertaisuutta yksityiskohtaisen luokittelun sijaan – kompromissi, joka tekee järjestelmästä helpommin toteutettavan mutta vähemmän itsedokumentoivan.
Kuinka tarkka tarkistenumero on virheiden havaitsemisessa?
Modulo-11-painotettu algoritmi havaitsee noin 90% yksittäisistä numerointivirheistä ja 98% numerojärjestyksen muutosvirheistä. Se ei havaitse kaikkia virheitä – esimerkiksi jos vaihdat kahden numeron paikkaa, jotka sattuvat olemaan samoilla painokertoimilla, tarkistenumero pysyy silti kelvollisena. Mutta tyypillisille syöttövirheille se on erittäin tehokas.
Vanhentuvatko tai muuttuvatko CUIT-numerot?
CUIT-numerot ovat pysyviä veronmaksajan eliniän ajan. Poikkeuksia ovat:
- Sukupuoli-identiteetin muutokset (Argentiina sallii CUIT:in päivittämisen vastaamaan sukupuolta)
- Merkittävät oikeudelliset uudelleenjärjestelyt (yritysfuusiot saattavat aiheuttaa uusia CUIT-numeroita)
- Petos tai henkilöllisyysvarkaus (AFIP voi mitätöidä vaarantuneet CUIT-numerot)
Toisin kuin joissain maissa, joissa verotunnisteet uudistuvat säännöllisesti, Argentiina suunnitteli CUIT-numerot elinikäisiksi vähentääkseen hallinnollista työtä.
Mitä tapahtuu, jos syötän CUIT:in ilman väliviivoja?
Useimmat argentiinalaiset järjestelmät hyväksyvät CUIT:it väliviivoin tai ilman – pohjainen validointi poistaa muotoilumerkit ennen numeroiden tarkistamista. Validaattori käsittelee molemmat muodot: 30-12345678-1 ja 30123456781 käsitellään identtisesti. Rajapintoihin integroidessa tarkista niiden dokumentaatio; jotkut vaativat tarkkaa muotoilua, kun taas toiset normalisoivat syötteen automaattisesti.
Voivatko ulkomaiset yritykset saada argentiinalaisia CUIT-numeroita?
Kyllä. Ulkomaiset yhteisöt, jotka harjoittavat liiketoimintaa Argentiinassa, saavat CUIT:it käyttäen tyyppikoodi 30, samoin kuin kotimaiset yritykset. Niiden täytyy rekisteröityä AFIP:ssä ja tyypillisesti tarvitsevat paikallisen laillisen edustajan. CUIT linkittyy heidän ulkomaiseen verotunnisteeseensa AFIP:n tiedoissa, mikä mahdollistaa rajat ylittävän verosopimuksen noudattamisen.
Miten generoin testikäyttöön CUIT-numeroita eri yksikkötyypeille?
Valitse yksikkötyyppi pudotusvalikosta (Yritys, Miespuolinen/Naispuolinen henkilö, Yhdistys jne.) ja klikkaa "Generoi CUIT". Työkalu määrittää automaattisesti oikean tyyppikoodin (30 yrityksille, 20 miehille, 27 naisille, 33 yhdistyksille) ja laskee asianmukaisen tarkistenumeron. Generoi niin monta kuin tarvitset – testikäytölle ei ole rajoituksia.
Viralliset viitteet ja lisälukemisto
-
Liittovaltion veroviranomainen (AFIP) - Argentiinan virallinen veroviranomainen https://www.afip.gob.ar/
-
AFIP-rekisteröintitodistus - Virallinen CUIT-vahvistuspalvelu https://www.afip.gob.ar/genericos/consultaCUIT/
-
Verotusmenettelyn laki 11.683 - Verolaki, joka määrittää CUIT-vaatimukset Argentiinan tasavallan virallinen lehti
-
AFIP:n yleinen päätös 1817/2005 - Rekisteröinti- ja tunnistusmenettelyt Virallinen AFIP-dokumentaatio
-
Henkilötietosuojalaki 25.326 - Henkilötietosuojalaki, joka säätelee CUIT:n käyttöä https://www.argentina.gob.ar/aaip/datospersonales
-
Yhdistyneiden Kansakuntien ECLAC - "Veropolitiikka Latinalaisessa Amerikassa: Arviointi ja uudistussuositukset" Gómez Sabaini, J.C., & Morán, D. (2016) - Vertaileva analyysi verojärjestelmistä, mukaan lukien Argentiina
-
Verohallinnan aikakauslehti - Tutkimus verotunnistusjärjestelmistä ja tarkistusnumerolaskelmista https://www.jota.website/
Aloita CUIT-validointi
Olipa kyseessä maksuyhdyskäytävän rakentaminen argentiinalaisille kauppiaille, vanhojen asiakastietokantojen siirtäminen tai sähköisen kaupankäyntialustan AFIP-vaatimusten noudattamisen testaaminen, tämä työkalu auttaa sinua työskentelemään CUITien kanssa luottavaisesti.
Luo testiaineistoa, joka ei riko väliaikaista ympäristöäsi. Validoi tietojoukot ennen siirtoa. Ymmärrä Argentiinan verotunnistusjärjestelmän algoritmi.
Ei API-avaimia. Ei rajoituksia. Ei tarpeettomia ominaisuuksia. Vain luotettavaa CUIT-generointia ja -validointia silloin, kun tarvitset.