.focs-sim {
--focs-bleu: #023170;
--focs-bleu-80: #355A8D;
--focs-bleu-60: #6782AA;
--focs-bleu-40: #9AABC7;
--focs-bleu-20: #CCD4E3;
--focs-bleu-10: #E6EAF1;
--focs-blanc: #FFFFFF;
font-family: 'Montserrat', system-ui, -apple-system, sans-serif !important;
font-weight: 400 !important;
color: var(--focs-bleu) !important;
background: var(--focs-blanc) !important;
font-size: 0.875rem !important;
line-height: 1.65 !important;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-rendering: optimizeLegibility;
padding: 0 !important;
margin: 0 !important;
box-sizing: border-box !important;
}
.focs-sim > * {
margin-left: 0 !important;
margin-right: 0 !important;
padding-left: 0 !important;
padding-right: 0 !important;
}
.focs-sim strong, .focs-sim b, .focs-sim small, .focs-sim span, .focs-sim td, .focs-sim th, .focs-sim p, .focs-sim li, .focs-sim label, .focs-sim div { color: var(--focs-bleu) !important; }
.focs-sim *, .focs-sim *::before, .focs-sim *::after {
color: var(--focs-bleu) !important;
box-sizing: border-box !important;
letter-spacing: normal !important;
}
.focs-sim .focs-slbl {
font-size: 11px !important;
font-weight: 600 !important;
text-transform: uppercase !important;
color: var(--focs-bleu) !important;
margin: 40px 0 18px !important;
padding-top: 0 !important;
border-top: none !important;
font-family: 'Montserrat', sans-serif !important;
}
.focs-sim .focs-r2 {
display: grid !important;
grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)) !important;
gap: 24px !important;
margin-bottom: 20px !important;
}
.focs-sim .focs-f {
display: flex !important;
flex-direction: column !important;
gap: 6px !important;
}
.focs-sim .focs-f label {
font-size: 10.5px !important;
font-weight: 600 !important;
color: var(--focs-bleu) !important;
text-transform: uppercase !important;
font-family: 'Montserrat', sans-serif !important;
}
.focs-sim .focs-f input, .focs-sim .focs-f select {
font-size: 13.5px !important;
font-family: 'Montserrat', sans-serif !important;
padding: 9px 0 !important;
border: 0 !important;
border-bottom: 1px solid var(--focs-bleu) !important;
background: transparent !important;
color: var(--focs-bleu) !important;
outline: none !important;
-webkit-appearance: none !important;
appearance: none !important;
transition: border-color 0.2s ease !important;
width: 100% !important;
}
.focs-sim .focs-f input:focus, .focs-sim .focs-f select:focus {
border-bottom-color: var(--focs-bleu) !important;
}
.focs-sim .focs-f select {
padding-right: 24px !important;
cursor: pointer !important;
}
.focs-sim .focs-ck {
display: flex !important;
align-items: flex-start !important;
gap: 12px !important;
padding: 6px 0 !important;
background: transparent !important;
border: none !important;
font-size: 13px !important;
color: var(--focs-bleu) !important;
margin-bottom: 4px !important;
cursor: pointer !important;
font-family: 'Montserrat', sans-serif !important;
}
.focs-sim .focs-ck:hover {
background: transparent !important;
}
.focs-sim .focs-ck input[type="checkbox"] {
appearance: none !important;
-webkit-appearance: none !important;
width: 16px !important;
height: 16px !important;
border: 1px solid var(--focs-bleu) !important;
background: var(--focs-blanc) !important;
cursor: pointer !important;
flex-shrink: 0 !important;
margin-top: 2px !important;
transition: all 0.15s ease !important;
position: relative !important;
display: inline-flex !important;
align-items: center !important;
justify-content: center !important;
}
.focs-sim .focs-ck input[type="checkbox"]:checked {
background: var(--focs-bleu) !important;
border-color: var(--focs-bleu) !important;
}
.focs-sim .focs-ck input[type="checkbox"]:checked::after {
content: "\eb7b";
font-family: 'remixicon' !important;
font-style: normal !important;
font-weight: normal !important;
color: var(--focs-blanc) !important;
font-size: 14px !important;
line-height: 1 !important;
position: absolute !important;
top: 50% !important;
left: 50% !important;
transform: translate(-50%, -50%) !important;
}
.focs-sim .focs-ck-d {
font-size: 11px !important;
color: var(--focs-bleu) !important;
margin-top: 5px !important;
line-height: 1.5 !important;
font-family: 'Montserrat', sans-serif !important;
}
.focs-sim .focs-f-d {
font-size: 11px !important;
color: var(--focs-bleu) !important;
line-height: 1.5 !important;
font-family: 'Montserrat', sans-serif !important;
margin-top: -2px !important;
margin-bottom: 4px !important;
font-weight: 400 !important;
}
.focs-sim .focs-btn {
width: 100% !important;
padding: 16px 20px !important;
font-size: 11.5px !important;
font-weight: 600 !important;
text-transform: uppercase !important;
background: var(--focs-bleu) !important;
color: var(--focs-blanc) !important;
border: none !important;
border-radius: 0 !important;
cursor: pointer !important;
margin-top: 36px !important;
transition: opacity 0.2s ease !important;
font-family: 'Montserrat', sans-serif !important;
}
.focs-sim .focs-btn:hover {
opacity: 0.85 !important;
}
.focs-sim .focs-res {
margin-top: 56px !important;
}
.focs-sim .focs-kg {
display: grid !important;
grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)) !important;
gap: 32px !important;
margin-bottom: 48px !important;
}
.focs-sim .focs-kc {
background: var(--focs-blanc) !important;
border: none !important;
padding: 4px 0 8px !important;
}
.focs-sim .focs-kl {
font-size: 10.5px !important;
font-weight: 600 !important;
text-transform: uppercase !important;
color: var(--focs-bleu) !important;
margin-bottom: 10px !important;
font-family: 'Montserrat', sans-serif !important;
}
.focs-sim .focs-kv {
font-family: 'Abhaya Libre', serif !important;
font-size: 26px !important;
font-weight: 400 !important;
color: var(--focs-bleu) !important;
line-height: 1.1 !important;
}
.focs-sim .focs-ks {
font-size: 11px !important;
color: var(--focs-bleu) !important;
margin-top: 6px !important;
font-family: 'Montserrat', sans-serif !important;
}
.focs-sim .focs-cd {
background: var(--focs-blanc) !important;
border: none !important;
padding: 8px 0 8px !important;
margin-bottom: 40px !important;
}
.focs-sim .focs-ct {
font-size: 12px !important;
font-weight: 600 !important;
text-transform: uppercase !important;
color: var(--focs-bleu) !important;
margin-bottom: 18px !important;
font-family: 'Montserrat', sans-serif !important;
}
.focs-sim .focs-ri {
display: flex !important;
justify-content: space-between !important;
align-items: baseline !important;
padding: 9px 0 !important;
border-bottom: 1px solid var(--focs-bleu) !important;
font-size: 13px !important;
gap: 12px !important;
font-family: 'Montserrat', sans-serif !important;
}
.focs-sim .focs-ri:last-child {
border-bottom: none !important;
}
.focs-sim .focs-rl {
color: var(--focs-bleu) !important;
flex: 1 !important;
font-family: 'Montserrat', sans-serif !important;
}
.focs-sim .focs-rv {
font-weight: 500 !important;
color: var(--focs-bleu) !important;
white-space: nowrap !important;
font-family: 'Montserrat', sans-serif !important;
}
.focs-sim .focs-al {
border: none !important;
padding: 6px 0 !important;
font-size: 12px !important;
line-height: 1.65 !important;
margin: 12px 0 16px !important;
background: var(--focs-blanc) !important;
color: var(--focs-bleu) !important;
font-family: 'Montserrat', sans-serif !important;
font-style: italic !important;
}
.focs-sim .focs-ot {
width: 100% !important;
border-collapse: collapse !important;
font-size: 12.5px !important;
margin-top: 16px !important;
font-family: 'Montserrat', sans-serif !important;
}
.focs-sim .focs-ot th {
font-size: 10.5px !important;
font-weight: 600 !important;
text-transform: uppercase !important;
color: var(--focs-bleu) !important;
padding: 12px 12px !important;
background: var(--focs-blanc) !important;
text-align: left !important;
border-bottom: 1px solid var(--focs-bleu) !important;
}
.focs-sim .focs-ot td {
padding: 11px 12px !important;
border-bottom: 1px solid var(--focs-bleu) !important;
vertical-align: middle !important;
}
.focs-sim .focs-ot tr:last-child td {
border-bottom: none !important;
}
.focs-sim .focs-ot .focs-best td {
background: var(--focs-blanc) !important;
font-weight: 600 !important;
color: var(--focs-bleu) !important;
border-bottom: 1px solid var(--focs-bleu) !important;
}
.focs-sim .focs-lbo2 {
display: grid !important;
grid-template-columns: 1fr 1fr !important;
gap: 20px !important;
margin: 20px 0 !important;
}
.focs-sim .focs-lbc {
background: var(--focs-blanc) !important;
border: none !important;
padding: 4px 0 8px !important;
}
.focs-sim .focs-lbh {
font-size: 11.5px !important;
font-weight: 600 !important;
text-transform: uppercase !important;
color: var(--focs-bleu) !important;
margin-bottom: 14px !important;
font-family: 'Montserrat', sans-serif !important;
}
@media (max-width: 1024px) {
.focs-sim .focs-r2 {
grid-template-columns: 1fr !important;
}
.focs-sim .focs-kg {
grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important;
}
}
@media (max-width: 768px) {
.focs-sim .focs-kg {
grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important;
}
.focs-sim .focs-lbo2 {
grid-template-columns: 1fr !important;
}
}
Redevances et revenus de la propriété intellectuelle
Chiffre d'affaires des redevances (€) Revenus nets tirés de la concession de licences du logiciel
Nombre de sociétés licenciées Sociétés du groupe payant la redevance (déductible chez elles)
Ratio Nexus - dépenses de développement
Coûts de R&D internes (€) Dépenses de développement du logiciel engagées en interne (numérateur du ratio Nexus)
Coûts d'acquisition externes (€) Acquisition du logiciel ou sous-traitance liée à des entreprises liées (hors Nexus)
Paramètres d'imposition
Taux d'IS de droit commun (%) Taux normal appliqué au revenu non éligible - 25 % en 2026
Taux d'IS de la holding (%) 25 % droit commun · 15 % sur les premiers 42 500 € de bénéfices PME
25 % - droit commun15 % - taux PME (≤ 42 500 €)
Éligibilité au régime IP Box
Logiciel éligible au régime de faveur - art. 238 CGI
Logiciel protégé par le droit d'auteur, code source original · taux réduit de 10 % sur le revenu net éligible
Simuler la redevance logiciel (IP Box)
L'affichage du calendrier nécessite votre consentement préalable pour l'activation des cookies liés à Calendly.
Modifier ce paramètre (function(){
const root = document.querySelector('.focs-ipb');
const $ = id => root.querySelector('#'+id);
const v = id => parseFloat($(id).value.replace(/[^0-9,-]/g,'').replace(',','.'))||0;
const vb = id => $(id).checked;
const vs = id => $(id).value;
const fmt = n => Math.round(n).toLocaleString('fr-FR')+' €';
const pct2 = n => (n*100).toFixed(2).replace('.',',')+' %';
const pct1 = n => (n*100).toFixed(1).replace('.',',')+' %';
const pct0 = n => Math.round(n*100)+' %';
const CAL_SLUG = '/d/ctrz-9cg-sfd/rendez-vous-decouverte';function formatFrenchNumber(el){
const raw = String(el.value).replace(/[^0-9,.-]/g,'').replace(',','.');
const n = parseFloat(raw);
if(isNaN(n)||raw===''){el.value='';return;}
el.value = Math.round(n).toLocaleString('fr-FR');
}
function unformatFrenchNumber(el){
el.value = String(el.value).replace(/\s/g,'').replace(/[^\d,.-]/g,'').replace(',','.');
}
root.querySelectorAll('.focs-num').forEach(el => {
formatFrenchNumber(el);
el.addEventListener('focus', function(){ unformatFrenchNumber(this); });
el.addEventListener('blur', function(){ formatFrenchNumber(this); });
});
function buildHtml(id,html){
const el=$(id);
el.style.display='block';
el.innerHTML=html;
}function calc(){
const ca=v('ipb_ca'), rd=v('ipb_rd'), ac=v('ipb_ac');
const isn=v('ipb_isn')/100, ish=v('ipb_ish')/100;
const elig=vb('ipb_elig'), nb=v('ipb_nb');const denom = rd+ac;
const nexus = denom>0 ? rd/denom : 0;
const revElig = ca*nexus;
const revHors = ca*(1-nexus);let isIpBox=0, isNormalPart=0, isTotalAvec;
if(elig){
isIpBox = revElig*0.10;
isNormalPart = revHors*isn;
isTotalAvec = isIpBox + isNormalPart;
} else {
isTotalAvec = ca*isn;
}
const isSans = ca*isn;
const gain = isSans - isTotalAvec;
const tauxEff = ca>0 ? isTotalAvec/ca : 0;
const tauxSans = ca>0 ? isSans/ca : 0;
const netHolding = ca - isTotalAvec;
const netSans = ca - isSans;const ecoLicencies = ca*isn;
const gainGroupe = ecoLicencies + gain;let h=`
Ratio Nexus
${pct1(nexus)}
Part développée en interne
IS total avec IP Box
${fmt(isTotalAvec)}
Net holding ${fmt(netHolding)}
Gain fiscal IP Box
${fmt(gain)}
Vs IS de droit commun
Taux effectif d'IS
${pct2(tauxEff)}
Sur les redevances brutes
`;h+=`
Détail du calcul - art. 238 CGI
Chiffre d'affaires des redevances ${fmt(ca)}
Ratio Nexus (R&D interne / total) ${pct1(nexus)}
Revenu éligible au taux réduit ${fmt(revElig)}
Revenu hors régime (taux normal) ${fmt(revHors)}
IS sur revenu éligible (10 %) ${fmt(isIpBox)}
IS sur revenu hors régime (${pct1(isn)}) ${fmt(isNormalPart)}
IS total exigible ${fmt(isTotalAvec)}
`;if(elig){
h+=`
Régime IP Box applicable. Le revenu net éligible (${fmt(revElig)}) est imposé au taux réduit de 10 %, le solde au taux de droit commun (${pct0(isn)}). Le ratio Nexus plafonne l'avantage à la part réellement développée en interne.
`;
} else {
h+=`
Régime IP Box non retenu. L'intégralité des redevances (${fmt(ca)}) est imposée au taux de droit commun (${pct0(isn)}). Vérifier l'éligibilité du logiciel (droit d'auteur, code source original) pour activer le taux de 10 %.
`;
}if(denom<=0){
h+=`
Ratio Nexus indéterminé : aucune dépense de développement ni d'acquisition renseignée. Le ratio est fixé à 0 % par défaut - renseigner les coûts de R&D pour établir la part éligible.
`;
}h+=`
Comparatif - avec / sans IP Box
Scénario IS total Taux effectif Net holding Gain Avec IP Box Art. 238 CGI · 10 % sur revenu éligible ${fmt(isTotalAvec)} ${pct2(tauxEff)} ${fmt(netHolding)} + ${fmt(gain)} Sans IP Box IS de droit commun sur la totalité ${fmt(isSans)} ${pct2(tauxSans)} ${fmt(netSans)} Référence
`;h+=`
Gain total au niveau du groupe
Économie d'IS chez les licenciés payeurs (déductibilité) ${fmt(ecoLicencies)}
Sociétés licenciées concernées ${Math.round(nb)}
Gain fiscal IP Box chez le concédant ${fmt(gain)}
Gain total consolidé du groupe ${fmt(gainGroupe)}
`;h+=`
Art. 238 CGI : le régime optionnel taxe au taux réduit de 10 % le résultat net de cession, concession ou sous-concession de logiciels protégés par le droit d'auteur, brevets et actifs assimilés.
`;
h+=`
Ratio Nexus : l'avantage est proportionnel à la part des dépenses de R&D réalisées directement par l'entreprise (ou sous-traitées à des tiers non liés), rapportée aux dépenses totales incluant l'acquisition et la sous-traitance liée.
`;
h+=`
Documentation : l'option impose une documentation détaillée par actif (ou famille d'actifs) présentant le calcul du résultat net et du ratio, tenue à disposition de l'administration (art. 238, VI CGI).
`;
h+=`
Éligibilité du logiciel : protection par le droit d'auteur, originalité du code source et caractère d'apport intellectuel - un simple paramétrage ou une revente sans développement propre n'ouvre pas le régime.
`;
h+=`
10 % vs ${pct0(isn)} : le taux réduit de 10 % (contre ${pct0(isn)} de droit commun) ne s'applique qu'au revenu net éligible après imputation des dépenses de R&D de l'exercice et des exercices antérieurs. Estimation indicative - un audit métier est requis avant l'option.
`;buildHtml('ipb_r',h);
}$('ipb-calc-btn').addEventListener('click', calc);
})();