1 points par GN⁺ 2024-01-04 | 1 commentaires | Partager sur WhatsApp
  • Pour calculer soi-même les retenues sur salaire au Canada sans passer par un service de paie externe, il faut implémenter les formules du CPP, de l’EI et de l’impôt sur le revenu figurant dans les Payroll Deductions Formulas de la CRA
  • En 2024, le Canada Pension Plan a ajouté non seulement des cotisations de base et supplémentaires, mais aussi des second additional premiums, ce qui a obligé à réécrire la feuille de calcul existante depuis zéro
  • La documentation de la CRA disperse les endroits où les valeurs sont calculées et ceux où elles sont utilisées ; pour identifier les éléments à calculer en premier, un graphique de dépendances GraphViz a donc été créé
  • Le graphique comprend 79 nœuds, partant de valeurs d’entrée comme le “Year's Annual Maximum Pensionable Earnings” de 2024, soit 73 200 $, jusqu’à “Total payroll deductions”
  • Les formules elles-mêmes sont exclues : seules les dépendances entre les valeurs sont consignées ; les employés à commission, les personnes qui adhèrent au CPP ou s’en retirent, ainsi que les résidents du Québec, de Nouvelle-Écosse, du Yukon et de l’Ontario ont été exclus du périmètre

La complexité du calcul direct des retenues sur salaire de la CRA

  • L’Agence du revenu du Canada publie régulièrement le document Payroll Deductions Formulas, destiné au calcul des retenues sur salaire, qui en est actuellement à sa 119e édition
  • Ce document contient les formules nécessaires pour calculer les retenues sur salaire perçues par la CRA
    • Canada Pension Plan
    • Employment Insurance
    • Income Tax
  • Si l’on exploite une petite entreprise au Canada et que l’on veut éviter de recourir à un prestataire de paie externe, il faut implémenter soi-même ces formules dans une feuille de calcul
  • Comme d’autres pans du système fiscal, le calcul des retenues sur salaire devient de plus en plus complexe ; en 2024, l’ajout des second additional premiums au CPP a rendu nécessaire la réécriture de la feuille de calcul

Ordre de calcul structuré avec GraphViz

  • La documentation de la CRA ne permet pas de voir facilement, d’un coup d’œil, quelles valeurs doivent être calculées en premier
    • Une valeur nécessaire peut être calculée avant ou après l’endroit où elle est utilisée, ce qui oblige à faire constamment des allers-retours dans le document
  • Pour clarifier cela, un graphique de dépendances a été réalisé avec GraphViz
  • Le graphique comporte 79 nœuds, avec le flux représentatif suivant
    • “Year's Annual Maximum Pensionable Earnings” : 73 200 $ pour l’année d’imposition 2024
    • Nœud final : “Total payroll deductions”
  • Le graphique n’inclut pas les formules elles-mêmes ; il indique uniquement de quelles autres valeurs dépend chaque valeur
  • Afin de simplifier le périmètre de calcul, les cas suivants sont exclus
    • Employés à commission
    • Employés qui adhèrent au Canada Pension Plan ou s’en retirent
    • Résidents du Québec, de Nouvelle-Écosse, du Yukon et de l’Ontario
  • L’image en taille complète est disponible sous payroll.png, avec une résolution de 5627x2033

1 commentaires

 
GN⁺ 2024-01-04
Commentaires Hacker News
  • C’est regrettable que le gouvernement ne fournisse pas la formule publique sous forme de code
    À ma connaissance, la seule façon de le faire de manière fiable est d’utiliser le formulaire web fourni par la CRA : https://www.canada.ca/en/revenue-agency/services/e-services/...
    Le calcul à la main est pénible et propice aux erreurs

    • L’Allemagne publie depuis longtemps, au moins depuis les années 1970, un organigramme standard pour le calcul de la paie avec des variables nommées et des formules : https://www.bundesfinanzministerium.de/Content/DE/Downloads/...
    • J’aimerais qu’il existe quelque chose de similaire pour le calcul des prêts immobiliers
      Par exemple, TD Canada n’indique pas à chaque fois quelle part du remboursement va au principal. J’ai l’impression de bien faire le calcul moi-même, mais après paiement, le solde affiché par la banque diffère souvent de plusieurs dizaines de dollars
      C’est aussi frustrant qu’au Canada on ne puisse même pas utiliser d’API pour récupérer le détail des comptes et les relevés
    • Je ne suis pas du tout d’accord avec l’idée que le gouvernement doive publier des formules publiques sous forme de code
      Ce serait lui donner un moyen de rendre les choses aussi complexes que possible. Les impôts devraient être assez simples pour que ceux qui les paient puissent les comprendre entièrement
      Ce n’est pas parce que le gouvernement a échoué à équilibrer son budget qu’il devient normal qu’il faille absolument un logiciel pour comprendre quelque chose d’aussi élémentaire que les retenues sur salaire
      Si le calcul à la main est pénible et source d’erreurs, le vrai problème est davantage l’absence de loi obligeant le gouvernement à rendre cela faisable à la main
    • La France est même allée jusqu’à créer son propre DSL pour les impôts : https://github.com/MLanguage/mlang
    • Toutes les lois devraient pouvoir être exprimées en code
      On verrait alors très vite combien sont contradictoires ou incohérentes entre elles
  • Pour avoir un peu travaillé avec le droit fiscal, je dirais que le cycle de la complexité fiscale ressemble à peu près à ceci
    Une loi fiscale est adoptée, puis des comptables et avocats fiscalistes brillants trouvent des moyens légaux de réduire l’impôt, et l’administration fiscale édicte des règles pour boucher ces failles
    Quand le pouvoir change, certains impôts sont baissés ou de nouveaux allègements sont ajoutés pour gagner des voix et piloter l’économie, puis le gouvernement suivant annule sélectivement les politiques du précédent pour des raisons politiques
    En fiscalité internationale, il faut encore ajouter les techniques d’optimisation entre juridictions, les incitations offertes par chaque pays pour attirer les multinationales, les tentatives de normalisation de l’OCDE et les conventions fiscales bilatérales
    Exemple : Double Irish With a Dutch Sandwich https://www.investopedia.com/terms/d/double-irish-with-a-dut...

    • Cette complexité ne vient pas du fait qu’on cherche à boucher des failles fiscales. Elle vient surtout du fait que les politiques aiment donner des noms aux choses
      Au Canada, il existe depuis longtemps un crédit d’impôt appelé “personal amount”, mais au lieu de dire « les premiers $X de revenu ne sont pas imposés », on le traite comme un crédit d’impôt non remboursable égal au taux d’imposition minimal × $X
      Puis c’est devenu « augmentons le personal amount sans réduire les impôts du 1 % le plus riche », et on a maintenant un personal amount variable selon le revenu
      La “BC Tax Reduction” fonctionne aussi comme un crédit d’impôt supplémentaire pour les revenus d’environ $22k à $36k. Dans les deux cas, cela aurait simplement pu être implémenté via des tranches d’imposition, mais les électeurs réagissent davantage à un nom comme “Tax Reduction” qu’à une nouvelle tranche
    • On peut éviter ce problème dès l’étape 1 avec un taux unique. Il suffit de l’appliquer à tout de la même manière
      Il faut supprimer les exceptions comme le traitement favorable des revenus d’investissement, de l’immobilier, des sociétés ou des fées à trois pattes vivant en zone inondable
      Le marché pourrait alors allouer les efforts humains aux activités les plus utiles
      La productivité gaspillée sur ce sujet est absurde. Des millions de personnes passent leur temps à créer, résoudre et manipuler des énigmes complexes sans aucune preuve que cette complexité soit bénéfique
    • Il y a un problème à appeler failles les exceptions explicites, les postes spécifiques, les déductions et les crédits d’impôt
      Ces dispositifs sont souvent conçus précisément pour être utilisés afin d’éviter l’imposition. Des groupes, des individus et des organisations font du lobbying auprès du gouvernement pour faire inscrire les sujets qui les intéressent sous forme d’exceptions, de déductions ou de crédits d’impôt
      Lorsqu’un comptable ou un avocat fiscaliste les utilise correctement, ce n’est pas « éviter légalement l’impôt », c’est simplement que cet impôt n’était pas dû dès le départ
      Dire que payer exactement l’impôt owed par la loi revient à « éviter l’impôt grâce à une faille » suppose que tous les revenus appartiennent d’abord à l’État, et cette prémisse est inacceptable
  • J’ai dirigé une petite société de traitement de la paie au Canada, et tout était construit en Rails
    À chaque changement de règles, on scrapait le calculateur de la CRA, on faisait des calculs pour plusieurs provinces et niveaux de salaire, puis on faisait sortir les résultats dans rspec
    Cela permettait de tester si les règles avaient été correctement implémentées, et si on n’avait oublié aucune règle ou mal saisi une valeur

  • J’ai fait quelque chose de similaire pour l’IRS il y a quelques années : https://nampas.github.io/tax-map/

    • Je me demande s’il existe un terme pour désigner un graphe orienté avec une disposition circulaire
      Je me demande aussi si toutes les arêtes sont à sens unique, ou s’il y a aussi des arêtes bidirectionnelles. J’espère qu’il n’y en a pas
  • Ce diagramme illustre exactement pourquoi les prestataires de paie existent
    Voir aussi l’article connexe de Bits About Money : https://www.bitsaboutmoney.com/archive/payroll-providers-pow...

    • Au final, cela reste des mathématiques, et le gouvernement vérifie aussi de manière standardisée si ce que les prestataires de paie ont soumis est correct
      Dans ce cas, le gouvernement devrait être en mesure de fournir cette norme lui-même
  • Applaudissements à l’auteur
    À ce stade, la CRA devrait publier une implémentation de référence de toutes les formules pour que les petites entreprises puissent s’en servir

    • Ce serait vraiment bien s’ils publiaient une feuille de calcul LibreOffice
      Même sans la publier, ce serait bien qu’ils en créent une en interne. S’ils devaient eux-mêmes lire leur propre documentation, il y aurait de fortes chances qu’elle soit aussi bien mieux rédigée
    • Pourquoi feraient-ils ça ? Si tout était publié, tout le monde trouverait les bugs et les problèmes, et la CRA devrait alors les traiter
      Ils risqueraient aussi de perdre une bonne partie de leurs revenus tirés des amendes
      À l’université, j’étais surveillant de résidence et j’étais donc logé et nourri « gratuitement », mais lors de ma première déclaration d’impôts au Canada à 20 ans, j’ai sous-déclaré environ 1 000 $. C’était aussi ma première déclaration canadienne en tant que citoyen américain
      Quelques années plus tard, je me suis retrouvé avec environ 5 500 $ d’amende, une somme énorme pour un étudiant qui travaillait à temps partiel. C’est là que j’ai appris que la Colombie-Britannique pouvait appliquer exactement la même pénalité que la CRA
      Avec le recul, j’aurais peut-être mieux fait de ne pas prendre ce poste. Pendant le reste de mon séjour au Canada, j’ai engagé un CPA
      À côté, l’IRS paraît presque chaleureux et rassurant. Au moins, quand on fait une erreur, l’amende est proportionnelle au montant sous-déclaré. Sauf si vous êtes ultra-riche, bien sûr
    • La CRA ne le fera pas. Elle n’a aucune obligation de fournir une réponse claire
    • Dans une autre réponse, quelqu’un a pointé vers ce formulaire web : https://news.ycombinator.com/item?id=38843556
      Ce n’est visiblement pas une feuille téléchargeable, mais c’est déjà ça
  • En France, ce type de règles est fourni sous forme de site web, d’API, de package NPM, et de règles brutes dans le langage https://publi.codes
    https://mon-entreprise.urssaf.fr/développeur

  • « À l’exclusion des résidents du Québec, de la Nouvelle-Écosse, du Yukon et de l’Ontario », soit en pratique 75 % du Canada

    • Pour être juste, pour la Nouvelle-Écosse, le Yukon et l’Ontario, il suffirait d’ajouter quelques nœuds de plus
      C’est juste que je suis en Colombie-Britannique, donc je n’avais pas envie de m’en préoccuper davantage
      Le Québec, en revanche, c’est une toute autre histoire. Là-bas, le calcul des retenues sur salaire est bien plus complexe
    • Le Québec est pratiquement un pays à part
      Il y a énormément de règles RH et d’exigences bizarres qui ne s’appliquent qu’au QC
  • Je suis aux États-Unis, mais je peux affirmer sans hésiter que ce genre de choses explique environ la moitié des raisons pour lesquelles je n’ai pas embauché de salariés dans ma LLC.
    Même si on veut embaucher, on se retrouve en pratique à embaucher aussi un comptable.

    • Avec l’essor du travail à distance, il faut accorder une très grande importance à la relation entre l’État où l’on veut embaucher un salarié et l’État où l’entreprise est domiciliée.
      Certains États sont vraiment pénibles. Par exemple le NJ, la CA, NY et l’OH.
      Une fois enregistré dans un État, l’entreprise peut continuer à être poursuivie pour diverses non-conformités reconnues par cet État, même après que le salarié a quitté ce poste pour un autre.
      Par exemple, on peut recevoir une grosse amende simplement pour ne pas avoir déclaré qu’on n’a plus de salarié dans cet État.
      Les États avec lesquels il était agréable de traiter étaient l’ID, le TN et le TX.
      En général, pour cette raison, il vaut mieux n’embaucher que des salariés dans son propre État. À moins d’en avoir absolument besoin, je ne le ferais pas.
    • Si vous envisagez d’embaucher des développeurs, ou des personnes impliquées dans la recherche et l’expérimentation, il faut bien connaître la Section 174.
      Les coûts liés aux développeurs doivent être amortis sur 5 ans, ce qui peut entraîner une grosse facture fiscale. Cela vaut aussi bien pour les salariés que pour les prestataires.
      Ce serait bien que cette disposition soit abrogée, mais à défaut, comme l’a dit le sénateur Wyden, c’est une règle “stupid” dont personne n’aurait imaginé qu’elle puisse exister.
      https://www.law.cornell.edu/uscode/text/26/174
      Modification : elle ne sera probablement pas abrogée. En revanche, on peut faire adopter une loi permettant de l’ignorer jusqu’à une certaine date future. Une fois que c’est inscrit dans les livres, il devient très difficile de supprimer la règle fiscale à cause du traitement comptable.
    • S’il existe des sociétés spécialisées dans la paie, ce n’est pas pour rien, et aujourd’hui beaucoup de services facilitent même la conformité réglementaire.
      Par exemple, beaucoup de PME que je connais utilisent Gusto, parce que cela facilite l’ajout de prestataires ou de salariés.
      Je ne cherche pas spécialement à faire la promotion de Gusto ; si vous cherchez, vous trouverez beaucoup de services concurrents. Ce n’est pas gratuit, mais l’avantage du modèle SaaS est qu’il peut démarrer avec un coût par salarié puis évoluer avec l’entreprise.
    • Si le problème n’est pas la complexité comptable liée au coût supplémentaire, mais le calcul de la paie, on peut même embaucher au niveau national via remote.com ou deel.com.
      Cela ne vaut que pour les personnes payées sur salaire ou travaillant comme prestataires indépendants. Dans ce cas, ce ne sont toutefois pas de vrais salariés.
      Les employeurs de référence garantissent la conformité au droit local et facturent des frais de service en plus du coût total du salarié.
    • Si le problème consiste à calculer la paie et à la verser aux autorités fédérales et à celles de chaque État, cela ne devrait absolument pas être un obstacle.
      Il existe d’innombrables sociétés de services de paie qui font le calcul et les versements pour 30 à 50 $ par mois et par salarié. Pour le traitement courant de la paie, un comptable n’est pas indispensable.
  • Cela montre comment fonctionne un algorithme, qu’il s’agisse ou non de logiciel.
    On part de quelque chose de souhaitable ou de nécessaire, puis on continue à ajouter de la complexité jusqu’à arriver à un magma qui produit des résultats arbitraires, rend les personnes extérieures folles et, s’il est récité comme une incantation, pourrait même invoquer des démons subalternes.
    La solution évidente qui vient à l’esprit, c’est le refactoring. C’est ce que promettent les politiciens en campagne, et ce que réclament les développeurs juniors quand ils découvrent une nouvelle base de code.
    Mais en pratique, cela se fait rarement. Personne n’arrive à distinguer clairement quelles fonctionnalités et quelles complexités sont inutiles, et lesquelles sont intentionnelles.
    Une deuxième solution consiste à réimplémenter proprement tout cela dans un cadre plus formel, comme un langage à typage statique ou un assistant de preuve. Mais si le système lui-même est déjà contradictoire, cette tentative échoue souvent elle aussi.
    Heureusement, personne ne se soucie des « cas limites bizarres », et on laisse donc les choses en l’état jusqu’à ce que quelqu’un parte avec un million de dollars.

    • En réalité, la CRA et les récents gouvernements fédéraux ont beaucoup travaillé à simplifier l’impôt canadien. C’est bien plus simple aujourd’hui. Bien sûr, ce domaine de la paie fait exception.
      Il y a 10 à 15 ans, il existait une montagne de déductions spéciales de toutes sortes pour acheter des voix.
      Aujourd’hui, si l’on n’est pas travailleur indépendant, qu’on n’a pas d’investissements à l’étranger et qu’on est un salarié ordinaire, la déclaration d’impôts est banale et presque automatisée.
      L’essentiel de la complexité du graphique ci-dessus semble venir du fait que le Canada est une fédération forte, où les provinces disposent chacune de compétences et d’exceptions en la matière. À cela s’ajoutent encore l’assurance-emploi fédérale et le régime de retraite.