Structure du Fichier DSN — Blocs NEODeS S10 à S90
Le fichier DSN est un fichier texte structuré selon la norme NEODeS (Norme d'Échange Optimisée des Données Sociales). Il est organisé en blocs hiérarchiques identifiés par des préfixes (S10, S20, S21, S80, S89, S90). Chaque bloc contient un ensemble de rubriques décrivant un aspect spécifique de la déclaration : émetteur, établissement, salarié, contrat, rémunération, cotisations.
Comprendre cette structure est essentiel pour diagnostiquer les anomalies de transmission et interpréter les comptes-rendus métier (CRM) renvoyés par les organismes.
Vue d'ensemble de la structure
Un fichier DSN suit toujours le même schéma : un envoi (S10) contient une ou plusieurs déclarations (S20), chaque déclaration contient les données d'un établissement et de ses salariés (S21), suivies des totaux de contrôle (S80, S89, S90).
S10 — Envoi
En-tête de l'envoi. Identifie l'émetteur (logiciel, concentrateur ou tiers déclarant), le type de déclaration et la norme utilisée.
S20 — Déclaration
En-tête de la déclaration. Identifie le type (DSN mensuelle, signalement arrêt, signalement fin de contrat), la fraction déclarée et la période.
S21 — Établissement / Individu
Cœur de la DSN. Contient les données de l'établissement déclarant et de chaque salarié : identité, contrat, rémunération, cotisations individualisées.
S44 — Agrégé établissement (ancien)
Bloc historique (maintenu pour compatibilité). Contient des agrégats de cotisation au niveau établissement. Progressivement remplacé par les blocs S21.
S80 — Identification DSN
Récapitulatif de la déclaration. Contient le nombre d'individus déclarés, le nombre de blocs et la date de constitution du fichier.
S89 — Récapitulatif déclaration
Bilan quantitatif de la déclaration pour contrôle d'intégrité : nombre d'individus, total brut, total cotisations.
S90 — Total envoi
Pied de fichier. Contient le nombre total de déclarations (S20) incluses dans l'envoi.
Hiérarchie des blocs
Les blocs sont imbriqués selon une hiérarchie stricte. Un bloc enfant ne peut exister sans son bloc parent. Voici l'arborescence simplifiée d'une DSN mensuelle :
S10 ─ Envoi │ ├── S20 ─ Déclaration │ │ │ ├── S21.G00.06 ─ Établissement │ │ ├── S21.G00.11 ─ Versement OPS │ │ ├── S21.G00.15 ─ Adhésion prévoyance │ │ └── S21.G00.22 ─ Bordereau cotisation agrégée │ │ │ ├── S21.G00.30 ─ Individu (salarié 1) │ │ ├── S21.G00.40 ─ Contrat │ │ │ ├── S21.G00.51 ─ Rémunération │ │ │ ├── S21.G00.52 ─ Prime │ │ │ ├── S21.G00.53 ─ Activité │ │ │ ├── S21.G00.60 ─ Arrêt de travail │ │ │ ├── S21.G00.62 ─ Fin de contrat │ │ │ ├── S21.G00.65 ─ Lieu de travail │ │ │ ├── S21.G00.70 ─ PAS │ │ │ ├── S21.G00.78 ─ Base assujettie │ │ │ ├── S21.G00.81 ─ Cotisation individuelle │ │ │ └── S21.G00.85 ─ Versement individu │ │ └── ... │ │ │ ├── S21.G00.30 ─ Individu (salarié 2) │ │ └── ... │ │ │ └── S21.G00.30 ─ Individu (salarié N) │ ├── S80 ─ Identification DSN ├── S89 ─ Récapitulatif └── S90 ─ Total envoi
Détail des blocs principaux
S10 — Envoi
Le bloc S10 est le premier bloc du fichier. Il identifie le logiciel émetteur, le type d'envoi (normal ou test) et le concentrateur éventuel. C'est l'enveloppe technique de la déclaration.
| Référence | Contenu |
|---|---|
| S10.G00.00 | Envoi Nom du logiciel · Éditeur · Numéro de version · Code envoi (01=normal, 02=test) |
| S10.G00.01 | Émetteur SIREN · NIC · Nom · Adresse · Contact |
| S10.G00.02 | Contact émetteur Nom · Prénom · Adresse e-mail · Téléphone |
S20 — Déclaration
Le bloc S20 identifie la nature de la déclaration (mensuelle, signalement arrêt, FCTU), son type (normale, annule et remplace, néant) et la période concernée. Un envoi peut contenir plusieurs déclarations S20, par exemple si l'entreprise a plusieurs établissements.
| Référence | Contenu |
|---|---|
| S20.G00.05 | Déclaration Nature (01=DSN mensuelle, 02=signalement arrêt, 04=FCTU) · Type (01=normale, 02=annule et remplace, 03=néant) · Fraction · Numéro d'ordre · Date du mois déclaré |
| S20.G00.07 | Contact déclaration Nom · Prénom · E-mail · Téléphone |
S21 — Établissement / Individu
Le bloc S21 constitue le cœur de la DSN. Il contient toutes les données de l'établissement déclarant et de chaque salarié. C'est le bloc le plus volumineux et le plus complexe, avec plus de 20 sous-blocs couvrant l'identité, le contrat, la rémunération, les cotisations et le prélèvement à la source.
| Référence | Contenu |
|---|---|
| S21.G00.06 | Établissement SIRET · Effectif · IDCC convention collective · Adresse · Code APE/NAF |
| S21.G00.11 | Versement OPS (Organisme de Protection Sociale) Code organisme · BIC · IBAN · Montant versé |
| S21.G00.15 | Adhésion prévoyance Référence contrat · Code organisme · Code population |
| S21.G00.22 | Bordereau de cotisation agrégée Identifiant organisme · Date début/fin période · CTP · Montant assiette · Montant cotisation |
| S21.G00.30 | Individu (identité) NIR · Nom de naissance · Nom d'usage · Prénoms · Date de naissance · Lieu de naissance |
| S21.G00.40 | Contrat Numéro de contrat · Date de début · Nature de contrat · Statut conventionnel · Quotité de travail · Modalité temps de travail · Code complément PCS-ESE |
| S21.G00.51 | Rémunération Date début/fin période · Montant · Type (01=rémunération brute, 02=salaire brut soumis, 10=net fiscal, etc.) |
| S21.G00.52 | Prime / gratification / indemnité Type · Montant · Date de versement |
| S21.G00.53 | Activité Type (01=travail, 02=maladie, 03=AT, etc.) · Mesure (heures/jours) · Quantité |
| S21.G00.54 | Autre suspension Motif (congé parental, sabbatique, etc.) · Date début/fin |
| S21.G00.60 | Arrêt de travail Motif (01=maladie, 02=maternité, etc.) · Date dernier jour travaillé · Date de fin prévisionnelle · Subrogation |
| S21.G00.62 | Fin de contrat Motif de rupture · Date de fin · Date de notification · Dernier jour travaillé et payé |
| S21.G00.63 | Préavis Date début/fin · Préavis effectué (oui/non) |
| S21.G00.65 | Lieu de travail Code commune INSEE · Code postal · Pays |
| S21.G00.70 | PAS (prélèvement à la source) Taux PAS · Type de taux (01=barème, 02=personnalisé, 03=neutre) · Montant retenu · Identifiant fiscal |
| S21.G00.71 | Régularisation PAS Mois de rattachement · Montant · Taux |
| S21.G00.78 | Base assujettie Code composant (01=plafonnée, 02=déplafonnée, 03=CSG, etc.) · Date début/fin · Montant |
| S21.G00.79 | Composant de base assujettie Code · Montant · Identifiant technique |
| S21.G00.81 | Cotisation individuelle Code cotisation · Identifiant organisme · Montant assiette · Montant salarié · Montant employeur · Taux salarié · Taux employeur |
| S21.G00.82 | Cotisation établissement Code · Identifiant organisme · Assiette · Montant |
| S21.G00.85 | Versement individu Date de versement · Rémunération nette fiscale · Montant net versé · Montant PAS · Taux PAS |
S80 / S89 / S90 — Totaux et contrôle
Les blocs de fin de fichier servent au contrôle d'intégrité. Ils contiennent des compteurs et des totaux permettant de vérifier que le fichier a été transmis intégralement et que les données sont cohérentes.
S80
Identification DSN
Récapitulatif de la déclaration. Contient le nombre d'individus déclarés, le nombre de blocs et la date de constitution du fichier.
S89
Récapitulatif déclaration
Bilan quantitatif de la déclaration pour contrôle d'intégrité : nombre d'individus, total brut, total cotisations.
S90
Total envoi
Pied de fichier. Contient le nombre total de déclarations (S20) incluses dans l'envoi.
Exemple de fichier DSN
Voici un extrait simplifié d'un fichier DSN mensuel pour un établissement avec un salarié.
Les données sont fictives mais respectent le format NEODeS. Chaque ligne suit le format
référence,'valeur'.
S10.G00.00.001,'01'
S10.G00.00.002,'QuickDSN'
S10.G00.00.003,'Quick'
S10.G00.00.004,'4.2.1'
S10.G00.00.005,'01'
S10.G00.00.006,'2601'
S10.G00.01.001,'123456789'
S10.G00.01.002,'00012'
S10.G00.01.005,'SARL DUPONT SERVICES'
S20.G00.05.001,'01'
S20.G00.05.002,'01'
S20.G00.05.003,'01'
S20.G00.05.004,'01'
S20.G00.05.005,'012026'
S20.G00.05.010,'12345678901234'
S21.G00.06.001,'12345678901234'
S21.G00.06.002,'015'
S21.G00.30.001,'1850175012345'
S21.G00.30.002,'MARTIN'
S21.G00.30.004,'JEAN'
S21.G00.30.006,'15011985'
S21.G00.40.001,'00001'
S21.G00.40.007,'01'
S21.G00.40.008,'01'
S21.G00.40.009,'01012020'
S21.G00.51.001,'012026'
S21.G00.51.002,'3126012026'
S21.G00.51.011,'3000.00'
S21.G00.51.012,'001'
S21.G00.78.001,'01'
S21.G00.78.004,'3000.00'
S21.G00.81.001,'100'
S21.G00.81.004,'3000.00'
S21.G00.85.001,'2526012026'
S21.G00.85.002,'2345.67'
S21.G00.85.003,'2200.45'
S80.G01.00.001,'001'
S89.G00.91.001,'001'
S90.G00.90.001,'001' Un fichier DSN réel est beaucoup plus volumineux : il contient l'ensemble des rubriques obligatoires pour chaque salarié, incluant toutes les bases assujetties et cotisations individuelles. Les logiciels de paie conformes comme QuickDSN génèrent automatiquement ce fichier.
Format des données
Chaque ligne du fichier DSN contient une seule rubrique au format :
Où :
| Élément | Description |
|---|---|
| S21 | Groupe de blocs (S10, S20, S21, S80, S89, S90) |
| G00 | Sous-groupe fonctionnel |
| 40 | Numéro de bloc (identifie le type d'information) |
| 007 | Numéro de rubrique dans le bloc |
| '01' | Valeur (entre quotes simples) |
Règles de formatage
- Les dates sont au format JJMMAAAA (ex : 15012026 pour le 15 janvier 2026)
- Les montants sont en euros avec 2 décimales, séparateur point (ex : 3000.00)
- Les valeurs textuelles sont entre quotes simples (ex : 'MARTIN')
- L'encodage est ISO 8859-1 (latin1), pas UTF-8
- Le séparateur entre référence et valeur est une virgule
- Chaque ligne se termine par un retour chariot (CR/LF)
Attention à l'encodage : le fichier DSN utilise l'encodage ISO 8859-1 (Latin-1), et non UTF-8. Les caractères accentués non conformes à cet encodage provoquent des rejets à la transmission.