1 पॉइंट द्वारा GN⁺ 2024-01-04 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • कनाडा में बाहरी पेरोल सेवा का उपयोग किए बिना खुद पेरोल deductions की गणना करने के लिए CRA के Payroll Deductions Formulas में दिए गए CPP, EI और income tax formulas को implement करना पड़ता है
  • 2024 में Canada Pension Plan में basic और additional premiums के साथ second additional premiums भी शामिल हो गए, इसलिए मौजूदा spreadsheet को शुरू से फिर लिखना पड़ा
  • CRA दस्तावेज़ में किसी value की calculation कहाँ होती है और उसका उपयोग कहाँ होता है, यह आगे-पीछे बिखरा हुआ है, इसलिए पहले क्या calculate करना है यह समझने के लिए GraphViz dependency chart बनाया गया
  • यह chart 2024 के “Year's Annual Maximum Pensionable Earnings” $73,200 जैसे input values से लेकर “Total payroll deductions” तक जाने वाले 79 nodes से बना है
  • formulas खुद शामिल नहीं किए गए; केवल values के बीच dependency relations दर्ज किए गए हैं, और commission employees, CPP में शामिल/बाहर होने वाले लोग, तथा Quebec, Nova Scotia, Yukon, Ontario के निवासियों को दायरे से बाहर रखा गया है

CRA पेरोल deductions को सीधे calculate करते समय की जटिलता

  • Canada Revenue Agency नियमित रूप से पेरोल deductions की गणना के लिए Payroll Deductions Formulas दस्तावेज़ प्रकाशित करती है, और अभी इसका 119वाँ edition उपलब्ध है
  • इस दस्तावेज़ में CRA द्वारा वसूले जाने वाले पेरोल deductions की गणना के लिए आवश्यक formulas शामिल हैं
    • Canada Pension Plan
    • Employment Insurance
    • Income Tax
  • कनाडा में छोटा व्यवसाय चलाते हुए यदि आप बाहरी पेरोल provider का उपयोग नहीं करना चाहते, तो इन formulas को spreadsheet में सीधे implement करना पड़ता है
  • टैक्स सिस्टम के अन्य हिस्सों की तरह पेरोल deductions की गणना भी लगातार अधिक जटिल होती जा रही है, और 2024 में CPP में second additional premiums जुड़ने से spreadsheet को फिर से लिखना पड़ा

GraphViz से व्यवस्थित किया गया calculation order

  • CRA दस्तावेज़ में कौन-सी value पहले calculate करनी है, यह एक नज़र में समझना कठिन है
    • ज़रूरी values का calculation उनके उपयोग से पहले या बाद में हो सकता है, इसलिए दस्तावेज़ में बार-बार आगे-पीछे जाना पड़ता है
  • इसे व्यवस्थित करने के लिए GraphViz के साथ dependency chart बनाया गया
  • chart में 79 nodes हैं, और उसका प्रमुख flow इस प्रकार है
    • “Year's Annual Maximum Pensionable Earnings”: 2024 tax year के अनुसार $73,200
    • अंतिम node: “Total payroll deductions”
  • chart में formulas को शामिल नहीं किया गया; केवल यह दर्ज किया गया है कि कौन-सी value किन दूसरी values पर निर्भर करती है
  • calculation scope को सरल रखने के लिए निम्न मामलों को बाहर रखा गया है
    • commission employees
    • Canada Pension Plan में शामिल होने या उससे बाहर होने वाले कर्मचारी
    • Quebec, Nova Scotia, Yukon, Ontario के निवासी
  • पूर्ण आकार की image payroll.png पर उपलब्ध है, और image size 5627x2033 है

1 टिप्पणियां

 
GN⁺ 2024-01-04
Hacker News की रायें
  • अफसोस है कि सरकार public formulas को code के रूप में उपलब्ध नहीं कराती
    मेरी जानकारी में इसे भरोसेमंद तरीके से handle करने का एकमात्र तरीका CRA द्वारा दिया गया web form इस्तेमाल करना है: https://www.canada.ca/en/revenue-agency/services/e-services/...
    हाथ से calculate करना तकलीफदेह है और गलतियों की संभावना बहुत रहती है

    • जर्मनी लंबे समय से, कम-से-कम 1970 के दशक से, payroll calculation के लिए standard flowchart named variables और formulas के साथ publish करता आया है: https://www.bundesfinanzministerium.de/Content/DE/Downloads/...
    • mortgage calculation के लिए भी कुछ ऐसा ही होता तो अच्छा होता
      उदाहरण के लिए TD Canada हर बार यह नहीं बताता कि payment का कितना हिस्सा principal में जा रहा है। मुझे लगता है मैंने खुद calculation सही किया है, लेकिन payment के बाद bank जो balance दिखाता है उससे अक्सर कई दर्जन dollar का फर्क आ जाता है
      Canada में account details और statements लाने के लिए कोई API भी इस्तेमाल नहीं कर पाना frustrating है
    • मैं इस बात से बिल्कुल सहमत नहीं हूं कि सरकार को code के रूप में public formulas देने चाहिए
      ऐसा करने से हम सरकार को चीजों को जितना हो सके उतना complex बनाने का साधन दे देंगे। tax इतने simple होने चाहिए कि taxpayer उन्हें पूरी तरह समझ सके
      सरकार budget balance करने में fail हुई, इसलिए wage deductions जैसी basic चीज समझने के लिए software जरूरी हो जाए—यह अनुचित है
      अगर hand calculation तकलीफदेह और error-prone है, तो बड़ी समस्या यह है कि ऐसा कोई कानून नहीं है जो सरकार को इसे हाथ से calculate करने लायक बनाने पर मजबूर करे
    • France ने tax के लिए अपनी DSL तक बनाई है: https://github.com/MLanguage/mlang
    • सभी कानून code में express किए जाने चाहिए
      तब तुरंत पता चल जाएगा कि कितने कानून आपस में conflict करते हैं या inconsistent हैं
  • tax law पर थोड़ा काम करने के अनुभव से, मुझे लगता है tax complexity का cycle roughly ऐसा है
    tax law pass होता है, smart accountants और tax lawyers legal तरीके से tax घटाने के रास्ते खोजते हैं, और tax authorities उन loopholes को बंद करने के लिए rules निकालती हैं
    सरकार बदलने पर votes पाने और economy को adjust करने के लिए कुछ taxes घटाए जाते हैं या exemptions जोड़े जाते हैं, और अगली सरकार political reasons से पिछली सरकार की policies को selectively reverse करती है
    international taxation हो तो अलग-अलग jurisdictions में घूमने वाली tax-saving techniques, multinationals को attract करने के लिए देशों के incentives, OECD की standardization कोशिशें, और bilateral tax treaties भी जुड़ जाते हैं
    उदाहरण: Double Irish With a Dutch Sandwich https://www.investopedia.com/terms/d/double-irish-with-a-dut...

    • यह complexity tax loopholes बंद करने की वजह से पैदा नहीं हुई। ज्यादातर इसलिए हुई क्योंकि politicians चीजों को नाम देना पसंद करते हैं
      Canada में लंबे समय से “personal amount” tax credit था, जिसमें “पहले $X income पर tax नहीं लगेगा” कहने के बजाय lowest tax rate × $X के बराबर non-refundable tax credit दिया जाता है
      फिर “top 1% high-income earners को tax cut दिए बिना personal amount बढ़ाएं” वाली बात आई, और अब income के हिसाब से बदलने वाला personal amount मौजूद है
      BC का “BC Tax Reduction” भी लगभग $22k~$36k income वालों को extra tax credit देने वाली structure है। दोनों को सिर्फ tax brackets से implement किया जा सकता था, लेकिन voters नए tax bracket की तुलना में “Tax Reduction” नाम पर ज्यादा react करते हैं
    • step 1 में single tax rate पर खत्म कर दें तो ऐसी problems रोकी जा सकती हैं। सब पर एक जैसा लागू कर दें
      investment income preference, real estate preference, corporate preference, flood area में रहने वाली तीन टांगों वाली परी के लिए preference जैसे exceptions हटाने होंगे
      तब market human effort को सबसे valuable कामों में allocate कर सकेगा
      इस विषय पर बर्बाद हो रही productivity absurd है। लाखों लोग complex puzzles बनाने, सुलझाने और manipulate करने में लगे हैं, जबकि इस complexity के beneficial होने का कोई evidence नहीं है
    • explicit exceptions, itemization, deductions और tax credits को “loopholes” कहना problem है
      ये items अक्सर taxation से बचने के लिए इस्तेमाल करने के इरादे से ही बनाए जाते हैं। groups, individuals और organizations अपने interest वाले items को exceptions, deductions और tax credits के रूप में शामिल कराने के लिए government को lobby करते हैं
      accountants या tax lawyers का इन्हें सही तरह से use करना “legally avoiding tax” नहीं है; वह tax तो शुरू से owed था ही नहीं
      कानून के हिसाब से exactly owed tax भरने को “loophole से tax avoidance” कहना हो तो यह assumption रखना पड़ेगा कि सारी income सरकार की है, और यह premise स्वीकार्य नहीं है
  • Canada में एक छोटी payroll processing company चलाता था, और सब कुछ Rails में बनाया था
    rules बदलने पर CRA calculator को scrape करके कई provinces और payroll ranges के लिए calculations करता, और results को rspec से output कराता था
    इससे test कर पाता था कि rules सही से reflected हैं या नहीं, कोई rule छूटा तो नहीं, या कोई value गलत enter तो नहीं हुई

  • कुछ साल पहले IRS के लिए कुछ similar बनाया था: https://nampas.github.io/tax-map/

    • circular layout वाले directed graph के लिए कोई term है क्या, यह जानने की उत्सुकता है
      यह भी जानना चाहता हूं कि सभी edges one-way हैं या bidirectional edges भी हैं। उम्मीद है bidirectional नहीं होंगे
  • ऐसी diagrams ही बताती हैं कि payroll processing providers क्यों मौजूद हैं
    संबंधित लेख के लिए Bits About Money का https://www.bitsaboutmoney.com/archive/payroll-providers-pow... देखें

    • फिर भी आखिरकार यह math ही है, और payroll processing provider ने जो submit किया है वह सही है या नहीं, इसकी standardization भी government verify करती है
      तो government को वह standard provide कर पाना चाहिए
  • लेखक को सलाम
    इस मुकाम पर CRA को सभी formulas का reference implementation प्रकाशित कर देना चाहिए, ताकि small businesses उसका उपयोग कर सकें

    • LibreOffice spreadsheet प्रकाशित कर दें तो सचमुच अच्छा होगा
      प्रकाशित न भी करें, तो कम से कम internally बनाकर देखें। अगर उन्हें खुद documents पढ़ने पड़ें, तो संभावना है कि documents भी कहीं बेहतर लिखे जाएंगे
    • वे ऐसा क्यों करेंगे? अगर सब कुछ सार्वजनिक कर दिया, तो हर कोई bugs और issues ढूंढ निकालेगा, और फिर CRA को उन्हें संभालना पड़ेगा
      penalties से आने वाली काफी revenue भी खो सकते हैं
      कॉलेज के दिनों में मैं dorm RA था, इसलिए “मुफ्त” room और board मिलता था, और 20 साल की उम्र में पहली बार Canadian taxes file करते समय मैंने लगभग $1,000 कम report कर दिया था। एक US citizen के तौर पर यह मेरी पहली Canadian tax filing थी
      कुछ साल बाद लगभग $5,500 की penalty आई, जो part-time काम करने वाले college student के लिए बहुत बड़ी रकम थी। तभी पता चला कि BC, CRA penalties को हूबहू match कर सकता है
      पीछे मुड़कर देखूं तो शायद वह काम न करना ही बेहतर होता। Canada में रहने के बाकी समय मैंने CPA hire किया
      तुलना में IRS तो गर्मजोशी भरा और आरामदेह लगता है। कम से कम गलती हो तो penalty underreported amount के अनुपात में आती है। बशर्ते आप ultra-rich न हों
    • CRA ऐसा नहीं करेगा। उस पर स्पष्ट जवाब देने की कोई बाध्यता नहीं है
    • किसी दूसरे reply में इस web form की ओर इशारा किया गया था: https://news.ycombinator.com/item?id=38843556
      डाउनलोड करने योग्य sheet तो नहीं लगती, लेकिन फिर भी कुछ तो है
  • France में इस तरह के rules website, API, NPM package, और https://publi.codes language के raw rules के रूप में उपलब्ध हैं
    https://mon-entreprise.urssaf.fr/développeur

  • “Quebec, Nova Scotia, Yukon, Ontario residents excluded” यानी असल में Canada का 75%

    • न्याय की बात करें तो Nova Scotia, Yukon, Ontario के लिए बस कुछ और nodes जोड़ने होंगे
      बस मैं BC में हूं, इसलिए वहां तक ध्यान देने का मन नहीं था
      Quebec बिल्कुल अलग मामला है। वहां payroll deductions की calculation कहीं ज्यादा जटिल है
    • Quebec असल में लगभग अलग देश जैसा है
      केवल QC पर लागू होने वाले अजीब HR rules और requirements वाकई बहुत हैं
  • मैं अमेरिका में हूँ, लेकिन पक्का कह सकता हूँ कि ऐसी चीज़ें ही मेरे LLC में कर्मचारियों को न रखने की लगभग आधी वजह हैं
    अगर मैं hiring करना भी चाहूँ, तो असल में accountant को भी साथ में hire करने जैसा हो जाता है

    • remote work के चलन को देखते हुए, जिस state में आप कर्मचारी hire करना चाहते हैं और जिस state में कंपनी है, उनके रिश्ते को बहुत गंभीरता से देखना चाहिए
      कुछ states सच में सिरदर्द हैं। उदाहरण के लिए NJ, CA, NY, OH
      किसी state में register करने के बाद, वह कर्मचारी दूसरी नौकरी पर चला जाए तब भी उस state द्वारा मानी गई तरह-तरह की non-compliance चीज़ों के लिए कंपनी लगातार tracking के दायरे में रह सकती है
      उदाहरण के लिए, उस state में अब कोई कर्मचारी नहीं है, यह filing न करने के कारण भारी fine लग सकता है
      जिन states से deal करना अच्छा रहा वे ID, TN, TX थे
      आम तौर पर इसी वजह से अपनी ही state के कर्मचारी hire करना बेहतर है। बहुत ज़रूरी न हो तो मैं hire नहीं करूँगा
    • अगर आप developer hire करने या research/experimentation में शामिल किसी व्यक्ति को hire करने की सोच रहे हैं, तो Section 174 को अच्छी तरह समझ लें
      developer costs को 5 साल में amortize करना पड़ता है, जिससे बड़ा tax bill आ सकता है। कर्मचारी हो या contractor, दोनों पर यही लागू है
      काश यह repeal हो जाए, लेकिन अगर नहीं हुआ तो Senator Wyden के शब्दों में यह “stupid” है, फिर भी किसी ने उम्मीद नहीं की थी कि ऐसा प्रावधान रहेगा
      https://www.law.cornell.edu/uscode/text/26/174
      edit: repeal नहीं होगा। हालांकि ऐसा कानून बनाया जा सकता है कि भविष्य की किसी तारीख तक इसे ignore किया जाए। एक बार books में आ जाने के बाद accounting treatment की वजह से tax law हटाना बहुत मुश्किल हो जाता है
    • दूसरी replies की तरह, payroll processing कंपनियाँ मौजूद होने की वजह है, और आजकल compliance को भी आसान बनाने वाली बहुत-सी services हैं
      उदाहरण के लिए, मेरी जानकारी में कई small और mid-sized कंपनियाँ Gusto इस्तेमाल करती हैं, क्योंकि यह contractors या employees add करना आसान बना देता है
      मैं खास तौर पर Gusto का प्रचार नहीं कर रहा; search करेंगे तो कई competing services भी मिलेंगी। यह free नहीं है, लेकिन SaaS model होने से प्रति-employee cost से शुरू होकर कंपनी के साथ scale हो सकता है
    • अगर समस्या extra costs से पैदा होने वाली accounting complexity नहीं, बल्कि payroll calculation है, तो domestic employment के लिए भी remote.com या deel.com के ज़रिये hire किया जा सकता है
      यह तभी लागू है जब कर्मचारी salaried हो या independent contractor के रूप में काम करता हो। हालांकि उस स्थिति में वह असली employee नहीं होता
      Employer of Record local law compliance सुनिश्चित करता है, और employee की total cost में service fee जोड़कर charge करता है
    • अगर मुद्दा federal और state agencies को payroll calculate करके remit करने का है, तो वह बिल्कुल barrier होने की ज़रूरत नहीं है
      प्रति employee $30~$50 महीने में calculation और remittance करने वाली payroll service कंपनियाँ अनगिनत हैं। सामान्य payroll processing के लिए accountant जरूरी नहीं होता
  • यह दिखाता है कि software हो या न हो, कोई algorithm कैसे काम करता है
    desirable या necessary चीज़ों से शुरू करके complexity लगातार जोड़ते जाएँ, तो आप ऐसे गड़बड़झाले तक पहुँचते हैं जो arbitrary results पैदा करता है, outsiders को पागल कर देता है, और अगर उसे मंत्र की तरह पढ़ें तो छोटे दर्जे के demon तक summon कर सकता है
    solution के तौर पर स्वाभाविक रूप से refactoring याद आती है। वही काम जिसका politicians चुनाव के समय वादा करते हैं, और junior developers नए codebase से रूबरू होते ही मांग करते हैं
    लेकिन असल में यह लगभग कभी नहीं होता। क्योंकि कोई भी साफ़-साफ़ अलग नहीं कर पाता कि कौन-सी features और complexity अनावश्यक हैं और कौन-सी intended हैं
    दूसरा समाधान है इसे static typed language, theorem prover जैसे ज्यादा formal framework में साफ-सुथरे ढंग से implement करना। लेकिन अगर system खुद ही पहले से contradictory है, तो यह कोशिश भी अक्सर fail हो जाती है
    खुशकिस्मती से कोई भी “weird edge cases” की परवाह नहीं करता, और चीज़ें तब तक वैसी ही रहती हैं जब तक कोई लगभग एक million dollars लेकर भाग न जाए

    • असल में CRA और हाल की federal governments ने Canadian taxes को simplify करने की काफी कोशिश की है। आजकल यह कहीं ज्यादा simple है। बेशक payroll वाला हिस्सा exception है
      10~15 साल पहले votes खरीदने के लिए तरह-तरह के special deductions का ढेर लगा था
      आजकल अगर self-employment या foreign investments जैसी चीज़ें नहीं हैं और आप सामान्य salaried employee हैं, तो tax filing मामूली और लगभग automated है
      ऊपर वाले graph की अधिकांश complexity शायद इसलिए है कि Canada एक मजबूत federal देश है, इसलिए हर province के पास संबंधित powers और exceptions हैं। इसके ऊपर federal employment insurance और pension schemes भी जुड़ जाते हैं