Sous-traitance BTP — Belgique : obligation de retenue 30bis (Odoo 20)
Belgian Construction Withholding 30bis — vérification avant paiement, retenue sociale et fiscale, déclaration de travaux et registre de présence sur chantier.
Captures d'écran
Obligation de retenue 30bis, vérifiée avant chaque paiement
Consultation de l'obligation de retenue, retenue sociale et fiscale calculées, déclaration de travaux et registre de présence sur chantier. Extension du socle gratuit dyo_soustraitance.
| Odoo 20 Community — On Premise | ✔ |
| Odoo.sh | ✔ |
| Odoo Online (SaaS) | ✔ |
Le constat
L'article 30bis de la loi du 27 juin 1969 impose de vérifier, avant chaque paiement, si le cocontractant a des dettes sociales ou fiscales. En pratique, l'entreprise consulte une fois à la signature, imprime le résultat, et paie pendant des mois sans reconsulter.
La consultation se périme
Sa durée est un paramètre de la société. Passé ce délai, le paiement suivant est refusé.
Deux retenues, pas une
Dette sociale et dette fiscale s'additionnent : deux administrations, deux versements distincts.
La déclaration de travaux bloque
Deux seuils : 30 000 € HTVA sans sous-traitant, 5 000 € dès qu'un seul intervient, et déclaration due quel que soit le montant dès deux. Tant qu'elle n'est pas déposée, aucun paiement du chantier ne se valide.
Le registre de présence
Qui est venu, quel jour, pour quel employeur, de quelle heure à quelle heure.
Ce que fait l'application
Consultation de l'obligation de retenue
Source de vérification dédiée, avec résultat détaillé : dette sociale (ONSS), dette fiscale (SPF Finances), ou aucune.
Calcul de la retenue
Somme des taux applicables selon les dettes constatées. Faute de consultation valide, la retenue maximale est affichée.
Numéro d'entreprise (BCE)
Sur la fiche du sous-traitant, avec contrôle de forme — points et espaces retirés automatiquement.
Déclaration de travaux
Rattachée au chantier, avec son numéro d'accusé de réception. Sans accusé, elle n'est pas marquée déposée.
Registre de présence sur chantier
Saisie en ligne, avec durée calculée et mode d'enregistrement (badge, mobile, chef de chantier).
Paramètres par société
Taux ONSS et fiscal, les deux seuils de déclaration, seuil de registre — aucun chiffre codé en dur. Pas de « validité d'une consultation » : il n'en existe aucune, la vérification se refait avant chaque paiement (art. 30bis §4 ; art. 55 CRAF).
L’application en mouvement
Le module en marche, enregistré dans le vrai client Odoo 19 : Déclarations de travaux, Déclarations de travaux (fiche), Registre de présence puis Paiements. Ce n’est pas un montage — ce sont les trames du navigateur sur le module livré, pris sur sa propre base.
Vidéo MP4 — 67 ko, 1280 px, 3.3 s, 4 écrans. Une amorce animée est aussi livrée en GIF (45 ko, 560 px) pour les contextes qui n’affichent pas la balise vidéo.
Ce que le module ne fait pas
- Ne se connecte pas à la base publique ni au portail de l'ONSS : la consultation et la déclaration se font en ligne, leur résultat est enregistré ici avec sa référence.
- Ne verse rien à l'administration : la retenue est calculée et tracée, son paiement relève de la comptabilité.
- Les taux, seuils et délais livrés sont des valeurs par défaut usuelles, à confirmer auprès de votre secrétariat social — ce ne sont pas des citations réglementaires.
- Ne vérifie pas l'existence d'un numéro d'entreprise, seulement sa forme.
Fiche technique
| Version | 20.0.1.1.0 |
| Dépendances | dyo_soustraitance |
| Licence | OPL-1 |
| Prix | GRATUIT |
| Modèles ajoutés | dyo.st.be.declaration.travaux, dyo.st.be.presence |
| Modèles étendus | dyo.st.verification, dyo.st.paiement, dyo.st.chantier, res.company, res.partner |
| Langue | Français |
DYONYSOS — welcome@dyonysos.fr
Ce que l'application ne fait pas
- Ne se connecte pas à la base publique ni au portail de l'ONSS : la consultation et la déclaration se font en ligne, leur résultat est enregistré ici avec sa référence.
- Ne verse rien à l'administration : la retenue est calculée et tracée, son paiement relève de la comptabilité.
- Les taux, seuils et délais livrés sont des valeurs par défaut usuelles, à confirmer auprès de votre secrétariat social — ce ne sont pas des citations réglementaires.
- Ne vérifie pas l'existence d'un numéro d'entreprise, seulement sa forme.
Applications du magasin nécessaires
Modules Odoo Community utilisés
Aucun.
| Série | Version | État | Publiée le |
|---|---|---|---|
| 20.0 | 20.0.1.1.0 | Disponible | 02/10/2026 |
| 19.0 | 19.0.1.1.0 | Disponible |
Fiche générée depuis le code de l'éditeur (dépôt privé, branche 20.0) : le code source n'est pas publié.
Contrôle automatique du magasin (distinct de l'éditeur), appliqué à toutes les applications. Conforme.
| Contrôle | Résultat | Effet si absent |
|---|---|---|
| Manifeste lisible sans exécution | conforme | bloquant |
| Licence reconnue (OPL-1) | conforme | bloquant |
| Aucune dépendance vers Odoo Enterprise | conforme | bloquant |
| Aucun import de code Enterprise | conforme | bloquant |
| Aucun en-tête de licence Enterprise | conforme | bloquant |
| Icône static/description/icon.png | conforme | déclasse |
| Description (static/description/index.html ou README) | conforme | déclasse |
| Tests automatisés (tests/test_*.py) | conforme | déclasse |
| Traduction française (i18n/fr.po) | conforme | info |
| Section « Ce que le module ne fait pas » | conforme | info |
| Titre de 70 caractères au plus (69 actuellement) | conforme | info |
| Résumé en français | conforme | info |
Guide utilisateur — Sous-traitance BTP, Belgique (régime dit « 30bis »)
Ce guide complète celui du socle dyo_soustraitance. Lisez-le d'abord : la
vérification, le blocage du paiement et la dérogation y sont décrits, et rien de cela
ne change ici.
Avant toute mise en production. Les taux, seuils et délais livrés avec ce module sont des valeurs par défaut usuelles, réglables société par société. Ce ne sont pas des citations réglementaires. Confirmez-les auprès de votre secrétariat social avant de vous y fier — c'est la première chose à faire après l'installation.
Ce que dit le régime, en deux phrases
L'article 30bis de la loi du 27 juin 1969 impose au donneur d'ordre, avant chaque paiement à son cocontractant du secteur de la construction, de vérifier si celui-ci a des dettes sociales (ONSS) ou fiscales (SPF Finances). S'il y en a, il retient une part du montant dû et la verse à l'administration concernée.
1. Régler les paramètres de la société
Paramètres → Sociétés → votre société → onglet « Sous-traitance — Belgique (30bis) ».
| Paramètre | Ce qu'il commande |
|---|---|
| Retenue sociale ONSS (%) | Part retenue quand une dette sociale est constatée |
| Retenue fiscale SPF Finances (%) | Part retenue quand une dette fiscale est constatée |
| Seuil de déclaration, sans sous-traitant | Montant HTVA au-delà duquel un chantier sans sous-traitant doit être déclaré (30 000 €) |
| Seuil de déclaration, avec un sous-traitant | Montant HTVA au-delà duquel un chantier comptant un sous-traitant doit être déclaré (5 000 €) |
| Seuil du registre de présence | Montant de travaux au-delà duquel la présence doit être enregistrée |
Rien n'est écrit en dur dans le code : un taux ou un seuil change par voie réglementaire, et vous devez pouvoir l'aligner sans attendre une mise à jour.
Vous ne trouverez pas de « validité d'une consultation », et c'est voulu : il n'en existe aucune. L'article 30bis §4 de la loi du 27 juin 1969 impose de vérifier « lors de chaque paiement », l'article 55 du Code du recouvrement (CRAF) dit de même pour le volet fiscal, et l'ONSS écrit « à la signature du contrat et avant chaque paiement de facture ». Une consultation couvre donc un paiement. La base ONSS est d'ailleurs actualisée le vendredi suivant le dernier jeudi du mois — jamais à intervalle fixe — et un statut peut basculer à tout moment.
2. Le numéro d'entreprise
Sur la fiche du sous-traitant, renseignez le numéro d'entreprise (BCE) : dix chiffres, sans point ni espace (les points saisis sont retirés tout seuls). C'est la clé de la consultation — sans lui, on ne peut rien vérifier.
Le module contrôle la forme du numéro, pas son existence : seule la consultation officielle peut dire si l'entreprise existe et ce qu'elle doit.
3. Consulter l'obligation de retenue
Menu Sous-traitance → Vérifications → Nouveau.
- Choisissez la source « Base publique belge — consultation de l'obligation de retenue ».
- Reportez le résultat obtenu sur le portail : - Conforme — aucune dette, aucune retenue au prochain paiement ; - Non conforme — cochez alors Dette sociale (ONSS), Dette fiscale (SPF Finances), ou les deux.
- Notez la référence de la réponse.
Le champ « Valable jusqu'au » reste vide, et ce n'est pas un oubli : la consultation vaut pour le paiement auquel elle se rattache, pas pour une durée. Le module refuse un paiement dans trois cas :
- aucune consultation n'a été faite à la conclusion du contrat ;
- aucune consultation ne précède ce paiement ;
- la consultation invoquée a déjà couvert un paiement — refaites-en une.
Chaque refus cite l'article 30bis §4 et l'article 55 CRAF.
Pourquoi le module refuse « non conforme » sans préciser la dette : ce sont deux retenues distinctes, versées à deux administrations distinctes. Sans savoir laquelle, on ne peut pas calculer — et on paierait mal.
4. La retenue sur le paiement
Elle se calcule seule, et le paiement montre ses deux composantes :
| Situation | Retenue |
|---|---|
| Consultation conforme | Aucune |
| Dette sociale seule | Taux ONSS |
| Dette fiscale seule | Taux SPF Finances |
| Les deux dettes | La somme des deux taux — elles ne se remplacent pas |
| Aucune consultation valide | Le maximum — et le paiement est bloqué |
Sur un paiement de 10 000 € avec les deux dettes constatées et les taux par défaut : 5 000 € retenus, 5 000 € nets.
Pourquoi le maximum quand rien ne couvre le paiement ? Parce que le paiement est de toute façon bloqué. Si le responsable passe outre, mieux vaut qu'il retienne trop que pas assez : le trop-retenu se restitue, le pas-assez se paie de sa poche.
5. La déclaration de travaux
Menu Sous-traitance → Belgique (30bis) → Déclarations de travaux.
La déclaration se dépose sur le portail officiel, pas ici. Ce que vous enregistrez, c'est qu'elle est partie : sa date, son montant et son numéro d'accusé de réception.
Le module refuse de la marquer déposée sans accusé — sans lui, une déclaration n'est qu'une intention.
Deux seuils, pas un. C'est le nombre de sous-traitants du chantier qui désigne celui qui s'applique :
| Sous-traitants sur le chantier | Déclaration due à partir de |
|---|---|
| aucun | 30 000 € HTVA |
| un seul | 5 000 € HTVA |
| deux ou plus | quel que soit le montant |
Le module compte les sous-traitants distincts sous contrat non résilié sur le chantier, et affiche le seuil applicable dans l'onglet « Belgique » de la fiche.
Le blocage. Quand le chantier relève de l'obligation, aucun paiement rattaché à ce chantier ne se valide tant qu'aucune déclaration n'y est déposée. Le refus le dit en clair, et rappelle la sanction : 5 % du montant total non déclaré (art. 30bis §8). La fiche du chantier porte quatre témoins, dans son onglet « Belgique » : sous-traitants sur le chantier, seuil applicable, déclaration requise et déclaration déposée.
6. Le registre de présence sur chantier
Menu Sous-traitance → Belgique (30bis) → Registre de présence. La saisie se fait en ligne, directement dans la liste.
Pour chaque présence : le jour, la personne, son employeur, les heures d'arrivée et de départ, et le mode d'enregistrement (badge, application mobile, saisie par le chef de chantier). La durée se calcule seule.
L'employeur est obligatoire : c'est justement ce que le registre sert à établir. Sans lui, il n'établit rien.
Le module refuse une présence antérieure à l'ouverture du chantier, et un départ antérieur à l'arrivée.
La fiche du chantier indique si le registre est requis — au-delà du seuil réglé dans la société — et combien de présences y sont enregistrées.
7. Les pièces exigées
Le module livre deux types de pièces belges, non bloquantes : attestation d'assurance responsabilité civile, et preuve d'enregistrement à la Banque-Carrefour des Entreprises.
Elles sont livrées non bloquantes parce que, sous le régime 30bis, c'est la consultation qui fait foi, pas une attestation papier. Si votre entreprise en fait une condition contractuelle de règlement, cochez « Bloque le paiement » dans Configuration → Pièces exigées. Le module ne décide pas à votre place ce que la loi n'impose pas.
Avis des clients connectés. Un avis noté par client ; l'éditeur peut y répondre. Connectez-vous pour laisser un avis.
- Éditeur
- DYONYSOS
- contact@omnifloo.com
- Clients Omnifloo
- Support inclus selon votre formule : centre d'aide.
