1 pontos por GN⁺ 2024-01-04 | 1 comentários | Compartilhar no WhatsApp
  • Para calcular diretamente os descontos em folha no Canadá sem usar um serviço externo de folha de pagamento, é preciso implementar as fórmulas de CPP, EI e imposto de renda presentes no Payroll Deductions Formulas da CRA
  • Em 2024, o Canada Pension Plan passou a incluir não só as contribuições básicas e adicionais, mas também os second additional premiums, o que exigiu reescrever a planilha existente do zero
  • A documentação da CRA espalha para frente e para trás os pontos em que os valores são calculados e onde são usados, então foi criado um gráfico de dependências em GraphViz para identificar primeiro quais itens precisavam ser calculados
  • O gráfico é composto por 79 nós, indo de valores de entrada como “Year's Annual Maximum Pensionable Earnings” de US$ 73.200 em 2024 até “Total payroll deductions”
  • As fórmulas em si foram excluídas; foram registradas apenas as relações de dependência entre valores, e ficaram fora do escopo funcionários comissionados, participantes que entram ou saem do CPP e residentes de Quebec, Nova Scotia, Yukon e Ontario

A complexidade de calcular diretamente os descontos em folha da CRA

  • A Canada Revenue Agency publica regularmente o documento Payroll Deductions Formulas, usado para calcular descontos em folha, e ele já está na 119ª edição
  • O documento contém as fórmulas necessárias para calcular os descontos em folha arrecadados pela CRA
    • Canada Pension Plan
    • Employment Insurance
    • Income Tax
  • Para operar uma pequena empresa no Canadá sem usar um provedor externo de folha de pagamento, é preciso implementar essas fórmulas diretamente em uma planilha
  • Assim como em outras partes do sistema tributário, o cálculo dos descontos em folha vem ficando cada vez mais complexo; em 2024, a inclusão dos second additional premiums no CPP exigiu reescrever a planilha

Ordem de cálculo organizada com GraphViz

  • A documentação da CRA dificulta acompanhar de relance quais valores precisam ser calculados primeiro
    • Um valor necessário pode ser calculado antes ou depois de ser usado, obrigando a ficar indo e voltando dentro do documento
  • Para organizar isso, foi criado um gráfico de dependências com GraphViz
  • O gráfico tem 79 nós, e um fluxo representativo é o seguinte
    • “Year's Annual Maximum Pensionable Earnings”: US$ 73.200 para o ano fiscal de 2024
    • Nó final: “Total payroll deductions”
  • O gráfico não inclui as fórmulas em si; registra apenas de quais outros valores cada valor depende
  • Para simplificar o escopo do cálculo, os seguintes casos foram excluídos
    • Funcionários comissionados
    • Funcionários que entram ou saem do Canada Pension Plan
    • Residentes de Quebec, Nova Scotia, Yukon e Ontario
  • A imagem em tamanho completo está disponível em payroll.png, com dimensões de 5627x2033

1 comentários

 
GN⁺ 2024-01-04
Opiniões do Hacker News
  • É uma pena que o governo não forneça as fórmulas públicas em forma de código
    Pelo que sei, o único jeito de processar isso com confiabilidade é usar o formulário web da CRA: https://www.canada.ca/en/revenue-agency/services/e-services/...
    Calcular à mão é penoso e sujeito a erros

    • A Alemanha há muito tempo, pelo menos desde a década de 1970, publica fluxogramas padrão para cálculo de folha de pagamento, com variáveis nomeadas e fórmulas: https://www.bundesfinanzministerium.de/Content/DE/Downloads/...
    • Gostaria que houvesse algo parecido para cálculo de hipotecas
      Por exemplo, o TD Canada não informa, a cada pagamento, quanto do valor amortiza o principal. Acho que fiz o cálculo corretamente, mas é comum haver diferenças de dezenas de dólares em relação ao saldo que o banco mostra depois do pagamento
      No Canadá, também é frustrante não poder usar uma API para obter detalhes e extratos da conta
    • Discordo totalmente de que o governo deva publicar fórmulas públicas em forma de código
      Isso entregaria ao governo um meio de torná-las tão complexas quanto possível. Impostos deveriam ser simples o bastante para que quem paga os entenda completamente
      Não é justo que, porque o governo não conseguiu equilibrar o orçamento, passe a ser necessário software para descobrir algo básico como descontos em folha
      Se calcular à mão é penoso e propenso a erros, o problema maior é não haver uma lei que obrigue o governo a tornar isso viável à mão
    • A França chegou a criar sua própria DSL para impostos: https://github.com/MLanguage/mlang
    • Todas as leis deveriam ser expressas em código
      Assim ficaria rapidamente evidente quantas leis entram em conflito entre si ou são inconsistentes
  • Como alguém que já lidou um pouco com legislação tributária, vejo o ciclo da complexidade tributária mais ou menos assim
    Uma lei tributária é aprovada, contadores e advogados tributaristas inteligentes encontram maneiras legais de reduzir impostos, e a autoridade fiscal emite normas para fechar essas brechas
    Quando o governo muda, ele reduz alguns impostos ou acrescenta isenções para ganhar votos e ajustar a economia, e o governo seguinte reverte seletivamente políticas do anterior por razões políticas
    Se for tributação internacional, somam-se técnicas de planejamento tributário entre várias jurisdições, incentivos de cada país para atrair multinacionais, tentativas de padronização da OCDE e tratados tributários bilaterais
    Ex.: Double Irish With a Dutch Sandwich https://www.investopedia.com/terms/d/double-irish-with-a-dut...

    • Essa complexidade não surgiu da tentativa de fechar brechas fiscais. Em grande parte, surgiu porque políticos gostam de dar nomes às coisas
      No Canadá, há muito tempo existia um crédito tributário chamado “personal amount”, mas, em vez de dizer “os primeiros $X de renda não são tributados”, ele é tratado como um crédito tributário não reembolsável equivalente à alíquota mínima × $X
      Então isso virou “vamos aumentar o personal amount sem beneficiar o 1% de maior renda”, e agora existe um personal amount que varia conforme a renda
      A “BC Tax Reduction” da Colúmbia Britânica também é, em linhas gerais, uma estrutura que dá crédito tributário adicional para quem tem renda de cerca de $22 mil a $36 mil. Ambas poderiam ter sido implementadas simplesmente com faixas de alíquota, mas eleitores reagem mais ao nome “Tax Reduction” do que a uma nova faixa de imposto
    • Se no passo 1 você parar em uma alíquota única, dá para evitar esse tipo de problema. Basta aplicá-la igualmente a tudo
      É preciso eliminar exceções como tratamento favorecido para renda de investimentos, imóveis, empresas ou fadas de três pernas que vivem em áreas de enchente
      Assim, o mercado pode alocar o esforço humano para as atividades mais valiosas
      A produtividade desperdiçada nesse tema é absurda. Milhões de pessoas se dedicam a criar, resolver e manipular enigmas complexos, sem evidência de que essa complexidade seja benéfica
    • Há um problema em chamar exceções explícitas, itens específicos, deduções e créditos tributários de “brechas
      Muitas vezes, esses itens são concebidos justamente para serem usados a fim de evitar tributação. Grupos, indivíduos e organizações fazem lobby junto ao governo para incluir seus temas de interesse como exceções, deduções e créditos tributários
      Quando contadores ou advogados tributaristas os utilizam corretamente, isso não é “evitar impostos legalmente”; trata-se de imposto que, para começo de conversa, não era devido
      Para chamar o pagamento exato do imposto devido segundo a lei de “evitar impostos por meio de brechas”, seria preciso partir da premissa de que toda renda pertence ao governo, e essa premissa é inaceitável
  • Eu administrava uma pequena empresa de processamento de folha de pagamento no Canadá, e fiz tudo em Rails
    Sempre que as regras mudavam, eu raspava a calculadora da CRA para fazer cálculos em várias províncias e faixas salariais, e fazia os resultados serem impressos pelo rspec
    Assim dava para testar se eu tinha refletido corretamente as normas e se não tinha deixado regras de fora ou digitado valores errados

  • Alguns anos atrás, fiz algo parecido para o IRS: https://nampas.github.io/tax-map/

    • Fico curioso se existe um nome para um grafo direcionado em disposição circular
      Também fico curioso se todas as arestas são unidirecionais ou se há arestas bidirecionais. Espero que não haja bidirecionais
  • Esse tipo de diagrama é exatamente o motivo pelo qual existem provedores de processamento de folha de pagamento
    Para um texto relacionado, veja https://www.bitsaboutmoney.com/archive/payroll-providers-pow... em Bits About Money

    • Ainda assim, no fim das contas é matemática, e o governo também verifica a padronização para confirmar se o que os provedores de folha enviaram está correto
      Então o governo deveria ser capaz de fornecer esse padrão
  • Aplausos ao autor
    A esta altura, a CRA deveria publicar a implementação de referência de todas as fórmulas para que pequenos empresários possam usá-las

    • Seria ótimo se publicassem uma planilha do LibreOffice
      Mesmo que não a publiquem, seria bom se ao menos a fizessem internamente. Se eles próprios tiverem de ler a documentação, é bem provável que a documentação também seja escrita muito melhor
    • Por que fariam isso? Se publicarem tudo, todo mundo vai encontrar bugs e problemas, e então a CRA terá de lidar com eles
      Também poderiam perder muita receita arrecadada com multas
      Na época da faculdade, fui monitor de alojamento e recebia moradia e alimentação “gratuitas”; quando declarei impostos no Canadá pela primeira vez, aos 20 anos, subdeclarei cerca de US$ 1.000. Foi a primeira vez que declarei imposto canadense como cidadão dos EUA
      Alguns anos depois, veio uma multa de cerca de US$ 5.500, uma quantia enorme para um estudante universitário que trabalhava meio período. Foi aí que descobri que a BC podia igualar integralmente as multas da CRA
      Olhando para trás, talvez tivesse sido melhor nem ter aceitado esse trabalho. Pelo resto do tempo em que morei no Canadá, contratei um CPA
      Em comparação, o IRS parece até caloroso e acolhedor. Pelo menos, se você comete um erro, a multa é proporcional ao valor subdeclarado. A menos que você seja super-rico
    • A CRA não vai fazer isso. Ela não tem obrigação de fornecer uma resposta clara
    • Em outra resposta, apontaram para este formulário web: https://news.ycombinator.com/item?id=38843556
      Não parece ser uma planilha para download, mas ainda assim é alguma coisa
  • Na França, essas regras são fornecidas como site, API, pacote NPM e como regras brutas na linguagem https://publi.codes
    https://mon-entreprise.urssaf.fr/développeur

  • “Exclui residentes de Quebec, Nova Escócia, Yukon e Ontário” — ou seja, na prática 75% do Canadá

    • Para ser justo, Nova Escócia, Yukon e Ontário exigiriam apenas acrescentar mais alguns nós cada
      É só que, como estou na BC, não quis me preocupar com isso
      Quebec é uma questão completamente diferente. Lá, o cálculo das deduções de folha é muito mais complexo
    • Quebec é praticamente um país à parte
      Há muitas regras e exigências estranhas de RH que se aplicam só a QC
  • Estou nos EUA, mas posso dizer com certeza que coisas assim são cerca de metade do motivo pelo qual não contratei funcionários pela minha LLC
    Mesmo que eu quisesse contratar, na prática seria como contratar também um contador

    • Considerando a onda de trabalho remoto, é preciso levar muito a sério a relação entre o estado em que você quer contratar um funcionário e o estado onde a empresa está registrada
      Alguns estados dão muita dor de cabeça. Por exemplo, NJ, CA, NY e OH
      Ao se registrar em um estado, mesmo depois que esse funcionário sai para outro emprego, a empresa pode continuar na mira por vários tipos de não conformidade reconhecidos por aquele estado
      Por exemplo, pode receber uma multa pesada só por não ter informado que não há mais funcionários naquele estado
      Os estados com os quais foi fácil lidar foram ID, TN e TX
      Em geral, por esse motivo, é melhor contratar apenas funcionários do seu próprio estado. Se não for realmente necessário, eu não contrataria
    • Se você pretende contratar desenvolvedores ou pessoas envolvidas em pesquisa e experimentação, é bom conhecer bem a Section 174
      Os custos com desenvolvedores precisam ser amortizados ao longo de 5 anos, o que pode resultar em uma conta de impostos alta. Vale tanto para funcionários quanto para contratados
      Seria bom se isso fosse revogado, mas, se não for, é uma cláusula “stupid”, nas palavras do Senator Wyden, e que ninguém esperava que existisse
      https://www.law.cornell.edu/uscode/text/26/174
      Atualização: não será revogada. Mas pode ser criada uma lei para ignorá-la até uma determinada data no futuro. Depois que entra nos livros, fica muito difícil remover uma regra tributária por causa do tratamento contábil
    • Como em outras respostas, há um motivo para existirem empresas de processamento de folha, e hoje há muitos serviços que também facilitam a conformidade regulatória
      Por exemplo, muitas empresas de pequeno e médio porte que conheço usam Gusto, porque facilita adicionar contratados ou funcionários
      Não estou tentando fazer propaganda específica da Gusto; pesquisando, há muitos concorrentes. Não é gratuito, mas, por usar um modelo SaaS, tem a vantagem de começar com um custo por funcionário e escalar junto com a empresa
    • Se o problema não for a complexidade contábil causada por custos adicionais, mas sim o cálculo da folha, mesmo para contratação doméstica é possível contratar via remote.com ou deel.com
      Isso vale quando a pessoa é assalariada ou atua como contratada independente. Nesse caso, porém, ela não é realmente funcionária
      Uma empresa de registro empregador garante conformidade com a legislação local e cobra o custo total do funcionário acrescido de uma taxa de serviço
    • Se a questão é calcular e remeter a folha para os órgãos federais e estaduais, isso não precisa ser uma barreira de forma alguma
      Há incontáveis empresas de folha que fazem o cálculo e o repasse por US$ 30 a US$ 50 por mês por funcionário. Para processamento comum de folha, não é indispensável ter um contador
  • Isso mostra como funciona um algoritmo, independentemente de ser software ou não
    Você começa com algo desejável ou necessário e vai acrescentando complexidade até chegar a uma bagunça que produz resultados arbitrários, deixa quem vem de fora maluco e, se lida como um encantamento, pode até invocar um demônio menor
    A solução óbvia que vem à mente é refatoração. É aquela tarefa que políticos prometem em campanhas eleitorais e desenvolvedores juniores exigem ao encontrar uma nova base de código
    Mas, na prática, ela quase nunca acontece. Ninguém consegue distinguir claramente quais funcionalidades e complexidades são desnecessárias e quais foram intencionais
    A segunda solução é implementar tudo de forma limpa em uma estrutura mais formal, como uma linguagem de tipagem estática ou um provador de teoremas. Mas, se o próprio sistema já é contraditório, essa tentativa também costuma falhar
    Felizmente, ninguém se importa com “casos de borda estranhos” e tudo fica como está até alguém fugir levando algo como um milhão de dólares

    • Na prática, a CRA e os governos federais recentes têm feito muito para simplificar os impostos no Canadá. Hoje em dia é bem mais simples. Claro que essa parte de folha de pagamento é a exceção
      Há 10 a 15 anos, havia uma montanha de deduções especiais de todo tipo para comprar votos
      Hoje, se você não é autônomo, não tem investimentos no exterior e é um trabalhador assalariado comum, declarar imposto é trivial e quase automatizado
      A maior parte da complexidade no gráfico acima parece vir do fato de o Canadá ser um país com federalismo forte, em que cada província tem poderes e exceções relevantes. A isso se somam o seguro-emprego federal e o sistema de previdência