Biểu đồ phụ thuộc của bảng lương Canada
(daemonology.net)- Để tự tính các khoản khấu trừ lương tại Canada mà không dùng dịch vụ trả lương bên ngoài, cần triển khai các công thức CPP, EI và thuế thu nhập trong Payroll Deductions Formulas của CRA
- Năm 2024, Canada Pension Plan không chỉ bao gồm khoản đóng cơ bản và bổ sung mà còn cả second additional premiums, khiến bảng tính cũ phải được viết lại từ đầu
- Tài liệu của CRA phân tán vị trí tính toán và vị trí sử dụng các giá trị ở nhiều chỗ trước sau, nên tác giả đã tạo biểu đồ phụ thuộc GraphViz để xác định các mục cần tính trước
- Biểu đồ gồm 79 nút, nối từ các giá trị đầu vào như “Year's Annual Maximum Pensionable Earnings” năm 2024 là $73,200 đến “Total payroll deductions”
- Không đưa bản thân công thức vào, chỉ ghi lại quan hệ phụ thuộc giữa các giá trị; nhân viên hưởng hoa hồng, người tham gia/rút khỏi CPP, và cư dân Quebec, Nova Scotia, Yukon, Ontario được loại khỏi phạm vi
Độ phức tạp khi tự tính khấu trừ lương của CRA
- Canada Revenue Agency định kỳ phát hành tài liệu Payroll Deductions Formulas dùng để tính khấu trừ lương; hiện đã đến ấn bản thứ 119
- Tài liệu này chứa các công thức cần thiết để tính các khoản khấu trừ lương do CRA thu
- Canada Pension Plan
- Employment Insurance
- Income Tax
- Nếu điều hành một doanh nghiệp nhỏ tại Canada và không muốn dùng nhà cung cấp dịch vụ trả lương bên ngoài, bạn phải tự triển khai các công thức này trong bảng tính
- Giống như các phần khác của hệ thống thuế, việc tính khấu trừ lương ngày càng phức tạp; năm 2024, CPP được bổ sung second additional premiums, khiến cần viết lại bảng tính
Trình tự tính toán được sắp xếp bằng GraphViz
- Tài liệu của CRA khó theo dõi ngay được giá trị nào cần tính trước
- Giá trị cần thiết có thể được tính trước hoặc sau khi nó được sử dụng, khiến phải liên tục nhảy qua lại trong tài liệu
- Để sắp xếp việc này, tác giả đã tạo biểu đồ phụ thuộc bằng GraphViz
- Biểu đồ có 79 nút, với luồng tiêu biểu như sau
- “Year's Annual Maximum Pensionable Earnings”: $73,200 cho năm tính thuế 2024
- Nút cuối: “Total payroll deductions”
- Biểu đồ không đưa vào bản thân các công thức, mà chỉ ghi lại mỗi giá trị phụ thuộc vào những giá trị nào khác
- Để đơn giản hóa phạm vi tính toán, các trường hợp sau được loại trừ
- Nhân viên hưởng hoa hồng
- Nhân viên tham gia hoặc rút khỏi Canada Pension Plan
- Cư dân Quebec, Nova Scotia, Yukon, Ontario
- Ảnh kích thước đầy đủ được cung cấp tại payroll.png, với kích thước 5627x2033
1 bình luận
Ý kiến trên Hacker News
Thật tiếc là chính phủ không cung cấp công thức công khai dưới dạng mã
Theo tôi biết, cách duy nhất để xử lý đáng tin cậy là dùng biểu mẫu web do CRA cung cấp: https://www.canada.ca/en/revenue-agency/services/e-services/...
Tính tay thì khổ sở và dễ sai
Ví dụ TD Canada không cho biết mỗi kỳ trả nợ thì bao nhiêu tiền đi vào gốc. Tôi nghĩ mình tự tính đúng, nhưng sau khi thanh toán, số dư ngân hàng hiển thị thường lệch vài chục đô la
Ở Canada, việc không thể dùng API để lấy chi tiết tài khoản và sao kê cũng gây bực bội
Làm vậy chẳng khác nào trao cho chính phủ phương tiện để khiến nó phức tạp hết mức có thể. Thuế phải đủ đơn giản để người nộp có thể hiểu hoàn toàn
Việc chính phủ thất bại trong cân bằng ngân sách không có nghĩa là những thứ cơ bản như khấu trừ lương lại nhất thiết phải cần phần mềm mới tính ra được
Nếu tính tay đau khổ và hay sai, vấn đề lớn hơn là không có luật buộc chính phủ phải thiết kế sao cho có thể tính bằng tay
Khi đó sẽ nhanh chóng lộ ra có bao nhiêu luật mâu thuẫn hoặc thiếu nhất quán với nhau
Từ góc nhìn từng xử lý một chút về luật thuế, tôi nghĩ vòng lặp phức tạp của thuế đại khái như sau
Luật thuế được thông qua, các kế toán viên và luật sư thuế thông minh tìm cách giảm thuế hợp pháp, rồi cơ quan thuế ban hành quy định để bịt các lỗ hổng đó
Khi chính quyền thay đổi, họ hạ một số loại thuế hoặc thêm miễn giảm để lấy phiếu và điều tiết nền kinh tế, rồi chính quyền tiếp theo vì lý do chính trị lại chọn lọc đảo ngược chính sách của chính quyền trước
Nếu là thuế quốc tế thì còn thêm các kỹ thuật tiết thuế đi qua nhiều khu vực tài phán, ưu đãi của các nước để thu hút tập đoàn đa quốc gia, nỗ lực chuẩn hóa của OECD, và cả các hiệp định thuế song phương
Ví dụ: Double Irish With a Dutch Sandwich https://www.investopedia.com/terms/d/double-irish-with-a-dut...
Canada từ lâu đã có khoản tín dụng thuế “personal amount”, nhưng thay vì nói “$X thu nhập đầu tiên không bị đánh thuế”, họ xử lý bằng khoản tín dụng thuế không hoàn lại bằng thuế suất thấp nhất × $X
Rồi khi thành “hãy tăng personal amount nhưng tránh giảm thuế cho nhóm 1% thu nhập cao nhất”, giờ đã xuất hiện personal amount thay đổi theo thu nhập
“BC Tax Reduction” của BC cũng có cấu trúc đại khái là cho thêm tín dụng thuế với người có thu nhập khoảng $22k~$36k. Cả hai đều có thể được triển khai đơn giản bằng các bậc thuế suất, nhưng cử tri phản ứng với cái tên “Tax Reduction” hơn là một bậc thuế mới
Cần loại bỏ các ngoại lệ như ưu đãi thu nhập đầu tư, ưu đãi bất động sản, ưu đãi doanh nghiệp, ưu đãi cho tiên ba chân sống ở vùng lũ
Khi đó thị trường có thể phân bổ nỗ lực của con người vào những việc có giá trị nhất
Năng suất bị lãng phí vào chủ đề này thật vô lý. Hàng triệu người bám vào việc tạo ra, giải và thao túng những câu đố phức tạp, trong khi không có bằng chứng nào cho thấy sự phức tạp đó có lợi
Những mục này thường được dự định để dùng nhằm tránh bị đánh thuế. Các nhóm, cá nhân và tổ chức vận động chính phủ đưa những hạng mục họ quan tâm vào dưới dạng ngoại lệ, khấu trừ hoặc tín dụng thuế
Việc kế toán viên hay luật sư thuế tận dụng đúng các mục đó không phải là “né thuế hợp pháp”, mà ngay từ đầu đó vốn không phải là khoản thuế phải nộp
Muốn gọi việc chỉ nộp đúng số thuế owed tax theo luật là “né thuế bằng lỗ hổng” thì phải mặc định rằng mọi thu nhập đều thuộc về chính phủ, và tiền đề đó là không thể chấp nhận
Tôi từng vận hành một công ty xử lý lương nhỏ ở Canada, và đã làm toàn bộ bằng Rails
Mỗi khi quy tắc thay đổi, tôi scrape máy tính của CRA để tính cho nhiều tỉnh và dải lương, rồi cho xuất kết quả bằng
rspecNhờ đó có thể kiểm thử xem mình đã phản ánh đúng quy định chưa, có bỏ sót quy tắc hay nhập sai giá trị không
Vài năm trước tôi từng làm một thứ tương tự cho IRS: https://nampas.github.io/tax-map/
Cũng tò mò liệu tất cả các cạnh đều một chiều, hay có cả cạnh hai chiều. Mong là không có cạnh hai chiều
Những sơ đồ như thế này chính là lý do nhà cung cấp xử lý lương tồn tại
Xem bài liên quan trên Bits About Money: https://www.bitsaboutmoney.com/archive/payroll-providers-pow...
Vậy thì chính phủ phải có khả năng cung cấp chuẩn đó
Vỗ tay cho tác giả
Đến mức này thì CRA nên công bố triển khai tham chiếu cho mọi công thức để các doanh nghiệp nhỏ có thể dùng
Dù không công khai, cũng nên thử làm nội bộ. Nếu chính họ phải đọc tài liệu, nhiều khả năng tài liệu cũng sẽ được viết tốt hơn nhiều
Họ cũng có thể mất nhiều khoản thu từ tiền phạt
Hồi đại học tôi là quản lý ký túc xá nên được ăn ở “miễn phí”, và khi lần đầu khai thuế Canada ở tuổi 20, tôi đã khai thiếu khoảng $1.000. Khi đó tôi là công dân Mỹ lần đầu khai thuế Canada
Vài năm sau tôi bị phạt khoảng $5.500, một khoản khổng lồ với một sinh viên đang làm bán thời gian. Lúc đó tôi mới biết BC có thể áp phạt tương ứng đúng bằng mức phạt của CRA
Nhìn lại thì có lẽ không làm công việc đó còn tốt hơn. Trong quãng thời gian còn lại sống ở Canada, tôi đã thuê CPA
So ra thì IRS ấm áp và dễ chịu hơn nhiều. Ít nhất nếu mắc lỗi, tiền phạt sẽ tỷ lệ với số tiền khai thiếu. Trừ khi bạn là siêu giàu
Có vẻ không phải là bảng có thể tải xuống, nhưng dù sao cũng có thứ gì đó
Ở Pháp, các quy tắc kiểu này được cung cấp dưới dạng website, API, gói NPM, và các quy tắc thô bằng ngôn ngữ https://publi.codes
https://mon-entreprise.urssaf.fr/développeur
[https://www.canada.ca/en/revenue-agency/services/e-services/...](<https://canada.ca/en/revenue-agency/…;)Hoặc cũng có phiên bản Québec
[https://www.revenuquebec.ca/en/online-services/tools/webras/](<https://www.revenuquebec.ca/en/online-services/tools/webras/>)Ý tưởng cung cấp loại quy tắc này dưới dạng phiên bản máy đọc được do chính phủ hỗ trợ thật sự rất hay
Có phải người dùng vẫn phải tự kiểm tra lại kết quả tính toán, và đây chỉ là tiện ích chứ không phải chuẩn có thẩm quyền không
“Các phép tính chỉ mang tính tham khảo. Chúng không thay thế cho các bản kê khai thực tế từ Urssaf, cơ quan thuế hoặc bất kỳ tổ chức nào khác.”
[1] https://mycompanyinfrance.urssaf.fr/developer/iframe?module=...
“Không bao gồm cư dân Québec, Nova Scotia, Yukon, Ontario” — như vậy thực tế là 75% Canada rồi
Chỉ là tôi ở BC nên không muốn bận tâm đến tận đó
Québec là một vấn đề hoàn toàn khác. Ở đó việc tính khấu trừ lương phức tạp hơn nhiều
Có rất nhiều quy tắc và yêu cầu nhân sự kỳ lạ chỉ áp dụng cho QC
Dù ở Mỹ, tôi có thể nói chắc rằng những thứ như thế này chiếm khoảng một nửa lý do khiến tôi không tuyển nhân viên cho LLC của mình
Ngay cả khi muốn tuyển, về thực chất cũng giống như phải tuyển kèm cả một kế toán
Một số bang thật sự rất phiền phức. Ví dụ như NJ, CA, NY, OH
Khi đăng ký ở một bang nào đó, ngay cả sau khi nhân viên đó rời sang công ty khác, công ty vẫn có thể tiếp tục bị bang đó theo dõi vì đủ loại vấn đề không tuân thủ mà bang ghi nhận
Chẳng hạn, bạn có thể bị phạt nặng chỉ vì không khai báo rằng mình không còn nhân viên nào ở bang đó
Những bang dễ làm việc hơn là ID, TN, TX
Nói chung vì những lý do này, tốt nhất chỉ nên tuyển nhân viên trong bang của mình. Nếu không thật sự cần thiết thì tôi sẽ không tuyển
Chi phí cho lập trình viên phải được khấu hao trong 5 năm, nên bạn có thể nhận một hóa đơn thuế rất lớn. Dù là nhân viên hay nhà thầu cũng như nhau
Sẽ tốt nếu điều khoản này bị bãi bỏ, nhưng nếu không, thì đúng như cách Senator Wyden nói, đây là một điều khoản “stupid” đến mức chẳng ai ngờ nó lại còn tồn tại
https://www.law.cornell.edu/uscode/text/26/174
Sửa: Nó sẽ không bị bãi bỏ. Tuy nhiên có thể ban hành luật để bỏ qua điều khoản này cho đến một ngày nhất định trong tương lai. Một khi đã đưa vào sổ sách, vì xử lý kế toán nên việc loại bỏ luật thuế trở nên rất khó
Ví dụ, nhiều doanh nghiệp vừa và nhỏ mà tôi biết dùng Gusto, vì dịch vụ này giúp thêm nhà thầu hoặc nhân viên dễ dàng
Tôi không có ý quảng bá riêng Gusto; nếu tìm kiếm sẽ thấy nhiều dịch vụ cạnh tranh. Chúng không miễn phí, nhưng vì là mô hình SaaS nên có ưu điểm là bắt đầu với chi phí tính theo từng nhân viên và có thể mở rộng cùng công ty
Chỉ áp dụng khi nhân viên nhận lương cố định hoặc làm việc với tư cách nhà thầu độc lập. Tuy nhiên trong trường hợp đó, họ không phải là nhân viên thực sự
Employer of Record bảo đảm tuân thủ luật địa phương và tính phí bằng cách cộng phí dịch vụ vào tổng chi phí của nhân viên
Có vô số công ty dịch vụ bảng lương tính toán và chuyển tiền với chi phí $30~$50 mỗi tháng cho mỗi nhân viên. Với xử lý bảng lương thông thường, không nhất thiết phải có kế toán
Điều này cho thấy cách một thuật toán vận hành, bất kể có phải phần mềm hay không
Bắt đầu từ những thứ đáng mong muốn hoặc cần thiết rồi liên tục thêm độ phức tạp, cuối cùng bạn sẽ đi đến một mớ hỗn độn tạo ra kết quả tùy tiện, khiến người ngoài phát điên, và nếu đọc như bùa chú thì còn có thể triệu hồi cả một con quỷ cấp thấp
Giải pháp hiển nhiên xuất hiện trong đầu là refactoring. Đó là việc các chính trị gia hứa khi tranh cử, và các lập trình viên junior đòi làm khi gặp một codebase mới
Nhưng trên thực tế hầu như không làm được. Vì không ai phân biệt rõ được chức năng và độ phức tạp nào là không cần thiết, cái nào là có chủ đích
Giải pháp thứ hai là triển khai sạch sẽ trong một khung hình thức hơn, như ngôn ngữ kiểu tĩnh hoặc trình chứng minh định lý. Nhưng nếu bản thân hệ thống đã mâu thuẫn, nỗ lực này cũng thường thất bại
May mắn là chẳng ai quan tâm đến “các trường hợp biên kỳ lạ”, và mọi thứ cứ được để nguyên cho đến khi có ai đó ôm khoảng một triệu đô la bỏ trốn
10~15 năm trước từng có cả núi khoản khấu trừ đặc biệt đủ loại để mua phiếu bầu
Ngày nay, nếu không có những thứ như tự kinh doanh hay đầu tư nước ngoài và chỉ là người làm công ăn lương thông thường, việc khai thuế rất đơn giản và gần như đã được tự động hóa
Phần lớn độ phức tạp trong biểu đồ trên có vẻ là do Canada là một quốc gia liên bang mạnh, nên mỗi tỉnh bang đều có thẩm quyền và ngoại lệ liên quan riêng. Thêm vào đó còn có bảo hiểm việc làm và hệ thống lương hưu liên bang