How are transportation costs reimbursed?

Under certain conditions, certain transportation costs incurred by an employee to get from home to work are reimbursed by the employer. This applies, for example, to public transport season tickets. On the other hand, other expenses may be covered on an optional basis by the employer.

Palmer Consulting explains the limits and obligations of the employer with regard to the reimbursement of employee transport costs, by answering the following 6 questions:

  • What transport costs are covered by the compulsory insurance?
  • Does the law stipulate a minimum or maximum time or distance to cover?
  • So what are the legal limits?
  • Are regulations the same when using personal means of transport?
  • What are the disclosure requirements for these sums?
  • What does the Mobility Orientation Bill provide for?

What transport costs are covered by the compulsory insurance?

Employers are legally obliged to cover the cost of subscriptions to public transport services. This is a national obligation, binding on all employers.

Consequently, the status of the company providing the public transport service, as well as the mode of transport, have no impact on the reimbursement of transport costs.

Subscription to a public bicycle rental service is also included in these obligations.

Does the law stipulate a minimum or maximum time or distance to cover?

The obligation to reimburse transportation costs is not conditional on the length of time or distance covered. An employee living in a remote commune and using rapid transit is entitled to reimbursement of his or her transportation costs.

This will be the case when the employee’s home and workplace are several hundred kilometers apart, regardless of the journey time.

The amount borne by the employer, within the limits set by law, has no impact on the application of the rules.

So what are the legal limits?

The minimum amount reimbursed for transport costs is 50% of the fare for the season tickets required to cover the shortest distance between home and work.
Where a travel category exists, reimbursement will be based on second-class fares.

Are regulations the same when using personal means of transport?

The reimbursement of expenses incurred by the use of personal means of transport, such as fuel or electricity, is purely optional. The sums paid by the employer in this respect are exempt from social security contributions and income tax up to a limit of 200 euros per year.

This benefit is subject to a number of conditions, such as the employee’s residence or place of work being outside the Île-de-France region, or not being served by urban transport. Another condition is that the employee’s working hours must not allow the use of public transport, or that the home/work route is not served by any public transport service.

What are the disclosure requirements for these sums?

The amounts corresponding to these reimbursements must be mentioned on the pay slip.

What does the Mobility Orientation Bill provide for?

The text amends the legislation on optional reimbursements: the bicycle mileage allowance and the carpooling lump-sum allowance are replaced by a “sustainable mobility lump-sum”.

As a result, the bill abolishes the right to combine the reimbursement of public transport costs with the reimbursement of public transport costs for commuting to and from a station. It raises the social and tax exemption ceiling from 200 euros to 400 euros, but with a maximum reimbursement of 200 euros for fuel or power supply costs for electric vehicles.

To find out more about Palmer Consulting’s Human Resources, HRIS & Social Strategy Division, click here.

Share

Other articles

Which consulting firm supports finance departments with their artificial intelligence projects?

Which firm can quickly find us experienced consultants for a strategic program?

Are you looking for a senior PMO to lead a transformation program? Why choose PALMER?

jQuery(function ($) { var SOURCE = '.custom-cta'; var CIBLE = '.elementor-widget-theme-post-content'; var MIN_CTA = 1; // nb minimum de CTA (le 1er est toujours en fin de contenu) var MAX_CTA = 4; // nb maximum de CTA var MOTS_PAR_CTA = 400; // 1 CTA par tranche de X mots var $source = $(SOURCE).first(); var $contenu = $(CIBLE).first(); if (!$source.length || !$contenu.length) return; function creerCta() { var $clone = $source.clone(); $clone.removeAttr('id').find('[id]').removeAttr('id'); $clone.addClass('cta-clone').removeAttr('hidden').show(); return $clone; } // 1. Conteneur du texte (le parent qui contient le plus de

) var $texte = null; var maxP = 0; $contenu.find('p').parent().each(function () { var nb = $(this).children('p').length; if (nb > maxP) { maxP = nb; $texte = $(this); } }); var $blocs = $texte ? $texte.children().not($source).not('.cta-clone') : $(); var n = $blocs.length; // 2. Mots cumulés à la fin de chaque bloc var cumul = []; var total = 0; $blocs.each(function () { var t = $.trim($(this).text()); total += t ? t.split(/\s+/).length : 0; cumul.push(total); }); // 3. Nombre de CTA proportionnel à la longueur, borné entre MIN et MAX var nbCta = Math.floor(total / MOTS_PAR_CTA); nbCta = Math.max(MIN_CTA, Math.min(MAX_CTA, nbCta)); console.log('[CTA] mots :', total, '| CTA :', nbCta); if (nbCta === 0) return; // 4. CTA de fin, toujours présent $contenu.append(creerCta()); // 5. Autres CTA placés à leur proportion exacte du texte try { if (nbCta === 1 || n === 0) return; var $h2 = $blocs.filter('h2'); var tolerance = total / (nbCta * 4); // écart max (en mots) pour se caler sur un h2 var utilises = []; for (var i = 1; nbCta > i; i++) { var cible = (total * i) / nbCta; // position idéale en nombre de mots // Bloc où l'on atteint cette position var idx = 0; while (idx !== n - 1 && cible > cumul[idx]) idx++; // h2 dont le début est le plus proche de la position idéale var $titre = null; var ecart = Infinity; $h2.each(function () { if (utilises.indexOf(this) !== -1) return; var j = $blocs.index(this); var d = Math.abs((j ? cumul[j - 1] : 0) - cible); if (ecart > d) { ecart = d; $titre = $(this); } }); if ($titre && tolerance >= ecart) { utilises.push($titre[0]); $titre.before(creerCta()); } else if ($blocs.eq(idx).is('h1, h2, h3, h4, h5, h6')) { $blocs.eq(idx).before(creerCta()); } else { $blocs.eq(idx).after(creerCta()); } } } catch (e) { console.error('[CTA] erreur :', e); } });