- कनाडा में बाहरी पेरोल सेवा का उपयोग किए बिना खुद पेरोल 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 टिप्पणियां
Hacker News की रायें
अफसोस है कि सरकार public formulas को code के रूप में उपलब्ध नहीं कराती
मेरी जानकारी में इसे भरोसेमंद तरीके से handle करने का एकमात्र तरीका CRA द्वारा दिया गया web form इस्तेमाल करना है: https://www.canada.ca/en/revenue-agency/services/e-services/...
हाथ से calculate करना तकलीफदेह है और गलतियों की संभावना बहुत रहती है
उदाहरण के लिए TD Canada हर बार यह नहीं बताता कि payment का कितना हिस्सा principal में जा रहा है। मुझे लगता है मैंने खुद calculation सही किया है, लेकिन payment के बाद bank जो balance दिखाता है उससे अक्सर कई दर्जन dollar का फर्क आ जाता है
Canada में account details और statements लाने के लिए कोई API भी इस्तेमाल नहीं कर पाना frustrating है
ऐसा करने से हम सरकार को चीजों को जितना हो सके उतना complex बनाने का साधन दे देंगे। tax इतने simple होने चाहिए कि taxpayer उन्हें पूरी तरह समझ सके
सरकार budget balance करने में fail हुई, इसलिए wage deductions जैसी basic चीज समझने के लिए software जरूरी हो जाए—यह अनुचित है
अगर hand calculation तकलीफदेह और error-prone है, तो बड़ी समस्या यह है कि ऐसा कोई कानून नहीं है जो सरकार को इसे हाथ से calculate करने लायक बनाने पर मजबूर करे
तब तुरंत पता चल जाएगा कि कितने कानून आपस में 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...
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 करते हैं
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 नहीं है
ये 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/
यह भी जानना चाहता हूं कि सभी edges one-way हैं या bidirectional edges भी हैं। उम्मीद है bidirectional नहीं होंगे
ऐसी diagrams ही बताती हैं कि payroll processing providers क्यों मौजूद हैं
संबंधित लेख के लिए Bits About Money का https://www.bitsaboutmoney.com/archive/payroll-providers-pow... देखें
तो government को वह standard provide कर पाना चाहिए
लेखक को सलाम
इस मुकाम पर CRA को सभी formulas का reference implementation प्रकाशित कर देना चाहिए, ताकि small businesses उसका उपयोग कर सकें
प्रकाशित न भी करें, तो कम से कम internally बनाकर देखें। अगर उन्हें खुद documents पढ़ने पड़ें, तो संभावना है कि documents भी कहीं बेहतर लिखे जाएंगे
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 न हों
डाउनलोड करने योग्य sheet तो नहीं लगती, लेकिन फिर भी कुछ तो है
France में इस तरह के rules website, API, NPM package, और https://publi.codes language के raw rules के रूप में उपलब्ध हैं
https://mon-entreprise.urssaf.fr/développeur
[https://www.canada.ca/en/revenue-agency/services/e-services/...](<https://canada.ca/en/revenue-agency/…;)या Quebec version भी है
[https://www.revenuquebec.ca/en/online-services/tools/webras/](<https://www.revenuquebec.ca/en/online-services/tools/webras/>)इस तरह के rules को सरकार-समर्थित machine-readable version के रूप में उपलब्ध कराने का विचार सचमुच शानदार है
क्या calculation result को user को अलग से verify करना होगा, और यह सिर्फ सुविधा के लिए है, authoritative standard नहीं?
“Calculations are indicative. They are not a substitute for actual statements from Urssaf, the tax authorities or any other organization.”
[1] https://mycompanyinfrance.urssaf.fr/developer/iframe?module=...
“Quebec, Nova Scotia, Yukon, Ontario residents excluded” यानी असल में Canada का 75%
बस मैं BC में हूं, इसलिए वहां तक ध्यान देने का मन नहीं था
Quebec बिल्कुल अलग मामला है। वहां payroll deductions की calculation कहीं ज्यादा जटिल है
केवल QC पर लागू होने वाले अजीब HR rules और requirements वाकई बहुत हैं
मैं अमेरिका में हूँ, लेकिन पक्का कह सकता हूँ कि ऐसी चीज़ें ही मेरे LLC में कर्मचारियों को न रखने की लगभग आधी वजह हैं
अगर मैं hiring करना भी चाहूँ, तो असल में accountant को भी साथ में hire करने जैसा हो जाता है
कुछ states सच में सिरदर्द हैं। उदाहरण के लिए NJ, CA, NY, OH
किसी state में register करने के बाद, वह कर्मचारी दूसरी नौकरी पर चला जाए तब भी उस state द्वारा मानी गई तरह-तरह की non-compliance चीज़ों के लिए कंपनी लगातार tracking के दायरे में रह सकती है
उदाहरण के लिए, उस state में अब कोई कर्मचारी नहीं है, यह filing न करने के कारण भारी fine लग सकता है
जिन states से deal करना अच्छा रहा वे ID, TN, TX थे
आम तौर पर इसी वजह से अपनी ही state के कर्मचारी hire करना बेहतर है। बहुत ज़रूरी न हो तो मैं hire नहीं करूँगा
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 हटाना बहुत मुश्किल हो जाता है
उदाहरण के लिए, मेरी जानकारी में कई small और mid-sized कंपनियाँ Gusto इस्तेमाल करती हैं, क्योंकि यह contractors या employees add करना आसान बना देता है
मैं खास तौर पर Gusto का प्रचार नहीं कर रहा; search करेंगे तो कई competing services भी मिलेंगी। यह free नहीं है, लेकिन SaaS model होने से प्रति-employee cost से शुरू होकर कंपनी के साथ scale हो सकता है
यह तभी लागू है जब कर्मचारी salaried हो या independent contractor के रूप में काम करता हो। हालांकि उस स्थिति में वह असली employee नहीं होता
Employer of Record local law compliance सुनिश्चित करता है, और employee की total cost में service fee जोड़कर charge करता है
प्रति 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 लेकर भाग न जाए
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 भी जुड़ जाते हैं