Se rendre au contenu
Icône de Sous-traitance BTP — Belgique : obligation de retenue 30bis (Odoo 20)

Sous-traitance BTP — Belgique : obligation de retenue 30bis (Odoo 20)

par Dyonysos
Gratuit Odoo 20 Module Contrôle qualité : Vérifiée OPL-1 (propriétaire Odoo)

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

Sous-traitance BTP · Belgique

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

01

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.

02

Calcul de la retenue

Somme des taux applicables selon les dettes constatées. Faute de consultation valide, la retenue maximale est affichée.

03

Numéro d'entreprise (BCE)

Sur la fiche du sous-traitant, avec contrôle de forme — points et espaces retirés automatiquement.

04

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.

05

Registre de présence sur chantier

Saisie en ligne, avec durée calculée et mode d'enregistrement (badge, mobile, chef de chantier).

06

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.

Amorce animée du parcours de dyo_soustraitance_be
Amorce GIF — 45 ko. Enregistrement réel du client Odoo 19 sur une base dédiée à ce module, avec les données de démonstration livrées avec lui.

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

Version20.0.1.1.0
Dépendancesdyo_soustraitance
LicenceOPL-1
PrixGRATUIT
Modèles ajoutésdyo.st.be.declaration.travaux, dyo.st.be.presence
Modèles étendusdyo.st.verification, dyo.st.paiement, dyo.st.chantier, res.company, res.partner
LangueFrançais

DYONYSOS — welcome@dyonysos.fr

Sous-traitance BTP — Belgique : obligation de retenue 30bis (Odoo 20) — capture 1
Sous-traitance BTP — Belgique : obligation de retenue 30bis (Odoo 20) — capture 1
Sous-traitance BTP — Belgique : obligation de retenue 30bis (Odoo 20) — capture 2
Sous-traitance BTP — Belgique : obligation de retenue 30bis (Odoo 20) — capture 2

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érieVersionÉtatPubliée le
20.020.0.1.1.0 Disponible 02/10/2026
19.019.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ôleRésultatEffet 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.

  1. Choisissez la source « Base publique belge — consultation de l'obligation de retenue ».
  2. 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.
  3. 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
E-mail
contact@omnifloo.com
Clients Omnifloo
Support inclus selon votre formule : centre d'aide.