Bolagsverket — orgnummer et ICD 0007
Bolagsverket (Office d'enregistrement des entreprises de Suède) est l'agence gouvernementale qui gère le registre des entreprises suédoises depuis 1973. C'est lui qui attribue le fameux orgnummer sur 10 chiffres — l'identifiant universel utilisé partout, y compris comme ICD 0007 dans le réseau PEPPOL.
Mission de Bolagsverket
Bolagsverket porte 4 missions principales :
- Immatriculation : enregistre toutes les sociétés (aktiebolag AB, handelsbolag HB, kommanditbolag KB, ekonomisk förening, enskild firma), les associations économiques et les succursales étrangères. Attribue l'orgnummer.
- Tenue du registre : maintient le registre central des entreprises (näringslivsregistret), incluant statuts, conseil d'administration, dirigeants, adresse légale, capital social.
- Publication comptable : reçoit et publie les comptes annuels (årsredovisning) des AB. Sanction pour retard : avgift 5-40 KSEK selon délai.
- Gage et nantissement : registre des nantissements d'entreprise (företagsinteckning), des sûretés sur fonds de commerce.
Format orgnummer NNNNNN-NNNN
Le format est universel pour toutes les personnes morales suédoises :
- Structure : 10 chiffres total, présenté avec
tiret après 6 caractères :
NNNNNN-NNNN(ex.556033-0923). - Premier digit : identifie la catégorie de
personne morale :
1: décédé / succession (dödsbo)2: État, communes, régions (stat, kommun, landsting)3: étranger / international5: aktiebolag (AB) — sociétés anonymes6: enskild firma / handelsbolag7: ekonomisk förening (coopératives)8: ideell förening (associations)9: trust / fonds
- Chiffres 2-9 : séquentiels par catégorie, attribués par Bolagsverket lors de l'immatriculation.
- Dixième digit : checksum Luhn — calculé sur les 9 premiers digits (voir section suivante).
- Pas de réutilisation : un orgnummer attribué reste attaché à la personne morale, même après dissolution (statut "avregistrerad").
Algorithme checksum Luhn
Le 10ᵉ chiffre est calculé par algorithme Luhn (modulo 10, ISO/IEC 7812-1), le même algorithme utilisé pour les cartes bancaires :
// Validation Luhn d'un orgnummer suédois
// Le dernier digit est calculé par checksum Luhn sur les 9 premiers
function validateOrgNr(orgnr) {
// Normalise : retire tirets et espaces, doit faire 10 chiffres
const digits = orgnr.replace(/[^0-9]/g, '');
if (digits.length !== 10) return false;
const sum = digits
.slice(0, 9)
.split('')
.map(Number)
.reduce((acc, d, i) => {
// Position alterne 2,1,2,1,2,1,2,1,2 (paire commence par 2)
const weighted = i % 2 === 0 ? d * 2 : d * 1;
// Si > 9, somme des deux digits (équivaut à -9)
return acc + (weighted > 9 ? weighted - 9 : weighted);
}, 0);
// Le checksum est (10 - sum % 10) mod 10
const checksum = (10 - (sum % 10)) % 10;
return checksum === parseInt(digits[9], 10);
}
// Exemples
console.log(validateOrgNr('5560330923')); // true (Acme Sverige AB exemple)
console.log(validateOrgNr('212000-0282')); // true (Kammarkollegiet, État)
console.log(validateOrgNr('556036-0793')); // true (Volvo Personvagnar AB)
console.log(validateOrgNr('1234567890')); // false (checksum invalide)
Algorithme Luhn pas-à-pas pour orgnummer 5560330923 :
- 9 premiers digits :
5 5 6 0 3 3 0 9 2 - Pondération alternée (×2 sur les positions paires, ×1 sur impaires) :
10 5 12 0 6 3 0 9 4 - Réduction des nombres > 9 (somme des digits) :
1 5 3 0 6 3 0 9 4 - Somme :
1 + 5 + 3 + 0 + 6 + 3 + 0 + 9 + 4 = 31 - Checksum :
(10 - 31 % 10) % 10 = (10 - 1) % 10 = 9... non, 3 - Vérification : le 10ᵉ digit doit être 3. Avec
5560330923, le 10ᵉ est 3 ✓
ICD 0007 dans PEPPOL
Dans le réseau PEPPOL, chaque participant est identifié par un
couple schemeID:value selon le code ICD (International
Code Designator) ISO 6523. La Suède utilise ICD 0007 :
- Format PEPPOL :
iso6523-actorid-upis::0007:NNNNNNNNNNoù NNNNNNNNNN est l'orgnummer sans tiret (10 chiffres). - Exemple : Kammarkollegiet →
iso6523-actorid-upis::0007:2120000282 - Utilisation dans UBL :
<cbc:EndpointID schemeID="0007">5560330923</cbc:EndpointID>pour l'EndpointID du sender et du receiver. - SMP lookup : le SMP suédois
smp.peppol.digg.sene référence que les participants utilisant ICD 0007 sur orgnummer valides Bolagsverket. - Autres ICD utilisés en SE : ICD 0088 (GLN GS1 pour les flux retail/industrie EANCOM), ICD 0184 (CVR Danemark pour flux cross-border DK-SE).
Lien avec TVA Skatteverket
L'orgnummer Bolagsverket et le n° TVA Skatteverket sont liés mais distincts :
- orgnummer : identifiant unique de la personne morale, attribué à la création par Bolagsverket. Format 10 chiffres.
- n° TVA (momsregistreringsnummer) : identifiant
fiscal, attribué par Skatteverket lors de l'enregistrement à la
TVA. Format
SE + 10 chiffres orgnummer + 01(12 caractères, le suffixe 01 indique la déclinaison TVA). - Exemple :
- orgnummer Volvo Personvagnar AB :
556036-0793 - n° TVA Volvo Personvagnar AB :
SE556036079301
- orgnummer Volvo Personvagnar AB :
- Une orgnummer, plusieurs n° TVA : rare mais possible pour les groupes consolidés (suffixe 02, 03, ...).
- VIES : les n° TVA suédois sont validables via l'API VIES de la Commission européenne pour les flux intra-communautaires.
OpenData et APIs tiers
- OpenData Bolagsverket : publication mensuelle d'un dump CSV/XML du registre (näringslivsregistret), licence CC-BY 4.0. Volume ~1,3M entreprises, ~250 MB compressé. bolagsverket.se/oppnadata
- API officielle : Bolagsverket fournit une API payante pour la recherche en temps réel (Näringslivsregistret API), tarification à l'usage (~1 SEK/requête).
- allabolag.se : site tiers très populaire, enrichit Bolagsverket avec données financières, hiérarchie groupe, dirigeants historiques. API freemium.
- retriever.se : Bisnode (groupe Dun & Bradstreet), données premium B2B avec scoring crédit, conformité KYC/AML.
- allabolag-api (open source) : wrapper Node.js gratuit autour des données OpenData, parfait pour intégration ERP/CRM légère.
- SCB : publication trimestrielle de stats économiques liées aux orgnummer (CA agrégé par secteur SNI).