Siirry sisältöön

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

Valitse yhteisötyyppi

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.
Latauslaskuri...
📚

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:

  1. Ensimmäiset 2 numeroa: Yhteisötyypin ilmaisin (kuten 20 miehille, 27 naisille, 30 yrityksille)
  2. Seuraavat 8 numeroa: Yksilöllinen tunnistenumero
  3. 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ötyyppiTyyppikoodiKuvaus
Yritys30Yhtiöt, osakeyhtiöt ja muut liiketoimintayksiköt
Yhdistys33Voittoa tavoittelemattomat yhdistykset
Säätiö30Hyväntekeväisyyssäätiöt
Yhteisö30Yhtiökumppanuudet ja muut yhteisörakenteet
Hallinto30Valtion yksiköt ja julkiset instituutiot
Ulkomainen yritys30Argentiinan ulkopuolella sijaitsevat yritykset
Henkilö (Mies)20Miespuoliset henkilöt
Henkilö (Nainen)27Naispuoliset henkilöt
Trustit30Trust-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:

  1. Muodon vaatimustenmukaisuus: Noudattaako XX-XXXXXXXX-X-rakennetta?
  2. Tarkistenumeron tarkkuus: Onko viimeinen numero matemaattisesti oikein?
  3. 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:

  1. Ota ensimmäiset 10 numeroa (kaikki paitsi viimeinen numero)
  2. Kerro jokainen paikka painokertoimellaan: [5, 4, 3, 2, 7, 6, 5, 4, 3, 2]
  3. Laske näiden tulojen summa
  4. Jaa summa 11:llä ja ota jäännös
  5. Vähennä tämä jäännös 11:stä
  6. 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:

  1. Tarkistettavat numerot ovat: 3 0 1 2 3 4 5 6 7 8
  2. Kerrotaan painokertoimilla: 3×5 + 0×4 + 1×3 + 2×2 + 3×7 + 4×6 + 5×5 + 6×4 + 7×3 + 8×2
  3. Laske: 15 + 0 + 3 + 4 + 21 + 24 + 25 + 24 + 21 + 16 = 153
  4. 153 jaettuna 11:llä jäännös = 10
  5. 11 - 10 = 1
  6. 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
40

Python

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'))
43

PHP

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?>
41

Java

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}
95

C#

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}
62

Tausta: 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

  1. Liittovaltion veroviranomainen (AFIP) - Argentiinan virallinen veroviranomainen https://www.afip.gob.ar/

  2. AFIP-rekisteröintitodistus - Virallinen CUIT-vahvistuspalvelu https://www.afip.gob.ar/genericos/consultaCUIT/

  3. Verotusmenettelyn laki 11.683 - Verolaki, joka määrittää CUIT-vaatimukset Argentiinan tasavallan virallinen lehti

  4. AFIP:n yleinen päätös 1817/2005 - Rekisteröinti- ja tunnistusmenettelyt Virallinen AFIP-dokumentaatio

  5. Henkilötietosuojalaki 25.326 - Henkilötietosuojalaki, joka säätelee CUIT:n käyttöä https://www.argentina.gob.ar/aaip/datospersonales

  6. 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

  7. 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.