A Canadian payroll dependency chart
daemonology.net
daemonology.net
As you can imagine, doing this by hand is quite painful and error-prone.
For social security, you have to get certified by a completely different set of bureaucrats with partially incompatible requirements:
The simplifications, they are additional! (Usually.)
Also don't get me started that I can't use an api to get my account details and statements in Canada.
It has historically been used to allow for bonds to have uniform repayments across maturities (when the principal of a bond becomes due) - useful in the context of a bank wanting to hedge risks such as interest rate risk, repayment risk (if the bond is callable it can be paid back early, which means the bondholders have cash yielding ~0% instead of whatever the bond yield was)
Mortgages, though not traditional bonds (in that it's not a sophisticated company borrowing) are, depending on the jurisdiction, treated as bonds because they get packaged up and sold as bonds - the underlying bit of financial engineering that, after serious perversion, gave us the 2008 credit crisis
Some sample calculations at:
* https://www.bondsavvy.com/bonds/accrued-interest-calculation
See also perhaps:
Also don't get me started that I can't use an api to get my account details and statements in Canada.
Anyone know if there's any ongoing effort to this effect - i.e. to force banks to implement a common API for querying data held in their accounts?A brief search reveals that Canada is of course missing from https://en.wikipedia.org/wiki/Open_banking
<Rant> I tried to get API access to my bank account and was told by my bank that Open Banking is not for physical persons. I tried to the same for my nonprofit and was told that only licensed PSD2 TPPs ("third-party providers") can use it. The national bank issues those licenses, but provides no information on what the process for obtaining one is. I called some friends and got in touch with someone at a major payment services provider, who explained that to get their license, the national bank insisted on them having essentially unlimited-coverege insurance - something no insusrer in the country was even willing to sell at any price. They managed to get the insurance from elsewhere in the EU and whole process cost them "six figures". Even after that, you still don't get full access to their own accounts, because the whole API is built on the idea of connecting customers with fintech apps, so there are a bunch of limitations intended for privacy and security that don't make any sense in a "I want full access to my own account" scenario. All the advice I got was "just keep scraping". How the fuck do they dare call that "open" banking?!? </Rant>
Or do you see any conclusions about "money APIs" that can be reasonably made from crypto?
Literally in the news as we speak!
https://globalnews.ca/news/10195005/canada-banking-changes-2...
What it ends up looking like, who knows.
Was also part of the implementation phase in the UK and the regulatory powers there definitely sped things up.
Variable rate throws it out of whack of course.
New schedule is calculated with new rate and consists of payments till the end of the term, with additional info about interest and principal amounts.
Same if you do additional payment into the principal - they will give you a new schedule.
If they aren't providing you complete information there is probably a Canadian authority you can reach out to, though you may just need to go higher up the food chain at your bank - accounting can be a little arcane and the people you are speaking to may simply not know.
That being said being off by tens of dollars is absurd, the error is likely in your calculations, and I feel it is their duty to make how they calculate your interest owed plain to you.
Maybe this is just one little upside of mortgage terms in the US being dictated mostly by the gov't through fannie mae and freddie mac.
I've also struggled through figuring it out on my own, and the two things that got me to less than a dollar of difference were: 1) "Mortgage" in Canada is a specific legal term used for fixed term mortgages that compounds every 6 months. Therefore, to get your effective annual you take you have to convert it: ((1 + nom_rate/2)^2)-1 2) You then take your effective rate, divide by the days in the year to get your daily rate. You then take your daily rate, multiply it by your outstanding principle, and multiply it by the number of days since your last payment. That result is the amount of interest you pay, and the rest of your payment goes to pay down principle.
In practice, I have a monthly payment, and just divide my annual effective rate by 12, and call it close enough. The extra precision of daily vs monthly isn't worth the extra complexity in the spreadsheet.
One option is to call the mortgage department and ask them to provide the split. When I asked the agent why I couldn't see it online, she mentioned their system is not setup to show this information. No idea why. Pretty frustrating.
Can you do that anywhere else? Even under the EU's "open banking" system, this is basically impossible unless you use an intermediate that charges absurdly high fees, because they themselves had to pay hugr licensing and insurance fees to be granted access to the "open" APIs. The only other way is scraping, which I imagine is just as possible in Canada as everywhere else.
Say your mortgage is 300,000 and rate 5%. You would pay 15,000 in interest. Subtract from your total yearly payment say 25,000. You pay back 10,000 a year divide by 12 for months or payment period to get the amount.
It may not be authoritative but you can start with https://laws-lois.justice.gc.ca/eng/acts/i-15/page-1.html which should be.
First, they renew their interest rates every 5 years over a 20-30-40 mortgage. Think of it as mandatory refinancing.
Unlike the US where a homeowner can lock in a low interest rate for a very long time.
The U.S. is an anomaly with these loans. Most countries don't do this 30 year fixed low rate mortgages like the U.S. It simply doesn't make sense for lenders to underwrite long loans at low rates.
As 2008 taught us, other ways can come up to try and make money.
Variable rate mortgages were a better bet 88% of the time between 1950 and 2000:
* https://wowa.ca/static/fixed-vs-variable-study.pdf
Post-2000 variable did fairly well as well.
It's the recency bias of the last 1-2 years that have people really freaking out about it.
Typically, you decide on how you are going to approach the interest rate, and for how long. Owners can lock in for a fixed interest rate, or a variable rate that changes with prime. Term is most often 5 years, but latesly shorter or more flexible mortgages are more popular, sometimes between 2-4 years, and some folks who might take a risk on a 5+ year mortgage rate.
The variable rate mortgages out performed fixed rate mortgages for nearly 15-20 years. The tables turned in the past year or two.
during the re-up you can throw down extra money, but that's because it's an open contract, essentially.
Mortgage Calculators are sadly something that appear to need to be build by hand in Excel
I completely disagree. Then you're just handing them a mechanism to make this as complicated as they possibly can. Taxes should be simple enough to be fully understood by the people paying them.
I'm not some algorithmic tool for the government to abuse when it's failed to balance it's budgets and I should not _need_ software to figure out something so basic as a deduction in wages.
> doing this by hand is quite painful and error-prone.
It's a shame there isn't a law forcing the government to make this possible.
For example, Germany has one of the most complex income tax codes in the world, with an average compliance burden of 136 hours[1]. That's a hit to national competitiveness and GDP, and worth addressing in its own right.
If it needs such a thing it is too complex and should be repealed
For example, it was deemed "impossible" to adjust student loan interest rates, because the software would take two years to modify. Either they are completely incompetent, or they are deliberately lying for political reasons.
So yeah, refusing a law because it is "too complex" won't work either.
The only way out is by accepting that the current state is unacceptable, and working on a long and slow fix, during which we don't say "this is unacceptable therefore we require immediate changes". This will fuck people over. But not making those changes properly will fuck people over even more.
We might be on an administrative brink. That takes a radical approach to fix.
Once you have that complexity, you'll always be taking away something from somebody by simplifying.
So all simplifications end up as additional "if" clauses, defeating the purpose.
Unfortunately there will be an input layer that requires predicates or measurements that cannot avoid ambiguity.
Ignoring that, there's Godel's Incomplete Theorem to deliver the final blow. If integer arithmetic cannot be complete and consistent, a set of laws governing society has no hope. If you disagree, you'd at least have to admit that such a set of laws could not include integer arithmetic, and could certainly be no more complex than integer arithmetic. I'd posit that such a restriction renders such a project impossible.
We've chosen completeness (every action can be rendered legal or illegal) over consistency. The alternative - consistency - would make some actions legally undecidable.
You will need the historical formulas, as well as all the underlying data, not even accounting for the publication delays and errors, missing informations, discretionary classifications, etc.
What we need is all that data and code in an introspectable flow of code and data:
<downvote>a blockchain, containing both your data and the smart contract used to perform the computations</downvote>.
There are likely some digital government projects and software providers who's software might be a good fit for this kind of thing.
https://github.com/canada-ca https://github.com/statcan
The Bank of Canada even has one where they host various economic models
I remember in my pursuit of learning about change management and digital transformation, someone tried to explain that too many bureaucracies ultimately have one goal - to ensure their survival at any cost. Maybe not so different than politicians in that way.
But yea, I was joking :)
1. Tax law is passed.
2. Really smart CPAs and Tax Lawyers figure out ways to legally avoid paying taxes.
3. Tax people issue regulations intended to close those loopholes.
4. Administrations change and they want to win votes and tweak the economy so they lower some taxes and add tax breaks.
5. New administration comes in and selectively reverses previous administration's program because of politics.
6. If the tax is international tax, then add really smart tax lawyer doing multi-jurisdictional tricks to lower taxes (e.g Double Irish With a Dutch Sandwich[1]) , governments trying to encourage multi-nationals to do business there by adding incentives to their tax code, the OECD coming in and trying to standardize tax stuff across jurisdictions to prevent this, individual pairs of countries doing tax treaties with each other, etc.
[1] https://www.investopedia.com/terms/d/double-irish-with-a-dut...
For example, for decades Canada has had a "personal amount" tax credit -- for arcane reasons, rather than saying "the first $X of income isn't taxed", the lowest tax bracket starts at $0 but there's a non-refundable credit equal to the lowest tax rate times $X. Then a politician came along and said "we should increase the personal amount so that people can earn more money without paying taxes... but we don't want to decrease taxes on the top 1%". So now we have a "personal amount" which depends on your income. Similarly, in BC we have the "BC Tax Reduction" which is an extra tax credit given to people with incomes between (roughly) $22k and $36k.
Both of those examples could have simply been implemented as tax brackets but voters get far more excited about a "Tax Reduction" than they do about a new tax bracket.
The effect you describe is very real, but "loop hole closure" is certainly a source of complexity too, e.g., the US's insane alternative minimum tax (AMT), which nearly duplicates the amount of tax work to be done by insisting you compute your taxes under a second set of assumptions. The idea was to make sure people who were using "loopholes" (or just like, reasonable features of the tax system) to pay at least above a certain amount.
Of course, the sane solution would have been to choose tax policies that combine together reasonably. As always, loopholes (in the sense of "unjustly low" amounts of tax) are much more likely to be created rather than fixed by complexity.
I'll go find a tiny violin so I may weep for them.
Edit: Hang on. I was wrong, I apologise. It would be a subset of those 0.4%. Now I'll have to find an even tinier violin.
Edit 2: Investopedia says "The AMT is charged when you exercise your ISOs, hold on to your shares, and sell them after the calendar year in which they were awarded to you." OK, TimPC, can you just straight up tell me what size violin I should be aiming for?
Investopedia is misleading because the tax event occurs before the sale. You don't pay AMT in the year you sell you pay AMT in the year you exercise. With RSUs for example, the default behaviour is a portion of your stock is instantly sold to pay the tax and if you want to you can override this and pay the tax through other means. But with Stock Options in a company that is not yet traded you aren't able to do that. The government is unwilling to take shares as well. Instead you pay AMT based on a fictional VC valuation. This means a software engineer who started early at a company and got a 1% stock package in a company that grows to $100 million can only exercise their stock options if they pay taxes on the $1 million in stock. That's a crazy expense that isn't in any way fair or reasonable, and can lead to people forfeiting their stock options entirely since the stock itself pays for $0 of this expense.
s: I'm sure the left is happy with the outcome that engineers in the top 5% of incomes forfeit a bunch of money to investors in the top 0.01% of incomes. /s
Doesn't sound like the problem is entirely on the politicians here.
Preferential treatment for investments over labor? No. Preferential treatment for real estate? No. Preferential treatment for corporations over people? No. Preferential treatment for 3-legged nymphs who live in a flood zone? No. …Etc.
Then the market would be free to allocate human efforts to those which provide the most value.
The amount of human productivity wasted over this topic is insane. Millions of people devoted to creating complex riddles and then disentangling and/or manipulating those riddles—-with zero proof there’s any beneficial outcome from said complexity.
This is simply incorrect, organizations, people, and groups all lobby the government to include their pet line item as an exemption, deduction, or credit.
These are not "loop holes" and a CPA or tax lawyer having the knowledge to fully utilize all of them is not " legally avoid paying taxes" as those taxes where not owed in the first place.
In order to get to the point where paying the correct amount of taxes you owe by law is "using loophole to avoid taxes" one has to assume 100% of all income is belongs to the government and we are just figuring out how much the government is going to allow us to keep. I reject that
Call it brute force but every time the rules updated I'd run scraper against the CRA calculator that would calculate payroll across a variety of provinces and pay ranges and output it as rspec. Then i could test that i was compliant and hadn't missed a rule or typoed a value.
circo draws graphs using a circular layout (see Six and Tollis, GD '99
and ALENEX '99, and Kaufmann and Wiese, GD '02.) The tool identifies
biconnected components and draws the nodes of the component on a cir‐
cle. The block‐cutpoint tree is then laid out using a recursive radial
algorithm. Edge crossings within a circle are minimized by placing as
many edges on the circle's perimeter as possible. In particular, if
the component is outerplanar, the component will have a planar layout.
If a node belongs to multiple non‐trivial biconnected components, the
layout puts the node in one of them. By default, this is the first non‐
trivial component found in the search from the root component.FYI, circo doesn't always output a circle. I recently created https://github.com/MegaManSec/SSH-Snake/blob/main/tools/SSH-... using circo.
According to them/Wikipedia, the layout's name is simply "circular layout". https://en.wikipedia.org/wiki/Circular_layout
Where I live (New Zealand) holiday pay got complex, and quite a few civil service payrolls got it wrong (IIRC by a few different providors). It tooke years for anyone to notice, and has taken years, and billions, to put right.
Keep it simple. Please
I joke, but a little serious when I say asking bureauracies to get details correct, quickly and consistently might be too much, let alone with software that could threaten jobs and meetings. Canada had a payroll implementation failure in government that received international attention: https://en.wikipedia.org/wiki/Phoenix_pay_system
Having implemented more than I've wanted to - too many are still anchored in the past on a mainframe, abstracted away with a web and/or mobile app.
Still worse, many payroll providers, particularly one of the very largest in Canada, actually still processes payroll according to a "model" that's manually run. It's an excel model, run manually by people. You deal with people directly. Do anything off a beaten path? Guess which model to win.
Heck, it would be very nice if they would create a libreoffice spreadsheet, even if they don't publish it. If they had to read their own document, it would probably be far better written.
Perhaps not; I've always had a strong impression, whenever reading documents derived from tax policy, that the "architecture" of such documents is the way it is mainly for maintainability.
Which is to say: the effective tax code at any given moment, is the emergent result of the interactions of all the current tax laws on the books. And there are many such laws. And those individual laws can be updated or repealed; and new laws can also come in that, through a few simple statements, make sweeping changes to the meanings of other laws.
As such, the tax-filing instructions, ideally, have to be constructed in such a way that they cope efficiently with someone being able to pull a single jenga-block out of the tower that is tax law, that topples over a whole slew of other instructions and definitions. The team of tax lawyers and technical writers that maintain the instructions should not have to sit down and rewrite every instruction on every schedule/form, just because one of the core definitions changes. Because that's gonna happen a lot! Every year, even!
If I was in charge of a team of (automation-minded) lawyers and technical writers maintaining the tax-filing instruction repository, I'd probably, ideally, want to factor out the instructions into separate modular files per law — with each file acting as a sort of Aspect-Oriented equivalent of Javadoc. (Or, actually, something very much like Inform 7. See e.g. https://i7-examples.github.io/Bronze/source_1.html)
So you'd see:
• Paragraphs that interpolate definitions as constants from other laws' modules;
• paragraphs that have implicit AOP hooks for other laws' modules to inject additional language into;
• the ability of a law to override specific sentences or wording of the language of the laws so far;
...and so forth.
This would be hell to read, but it'd sure make the job of dealing with changes in the law easy. (And it wouldn't be something you'd really read anyway — more often, it'd be something you'd carefully poke at, while watching the compiled result change live in a split pane. Like writing LaTeX in LyX.)
---
To be clear, I don't imagine that any existing set of tax-form language is actually maintained using some weird AOP DSL.
Rather, I imagine that the maintainers are manually doing the same business process that use of such an AOP DSL would formalize.
They're maintaining a very non-intuitive "storage architecture" for all the instructions that go into these forms, to minimize re-working when the law changes; and then — mostly manually, but maybe with a bit of Excel — collating them together into new schedules and forms each year.
And it's that "storage architecture" — despite not being something as rigid as source code — that still nevertheless forces the language of the instructions into the form you see at tax-filing time, with the weird grammatical shapes, the distant definitions, etc.
The law is the way it is because of the influence of lobbyists. Those lobbyists include lobbyists for companies that do things like payroll. They would like the system to be complex to provide a regulatory moat that keeps other businesses from competing with them. And by siding with this or that special interest that cares about their piece more than how sensible the whole is, the law is easy to turn into a mess.
The saying bureaucracy can't help but beget bureaucracy is another thing that comes to mind.
Also they'd probably lose a lot of revenue they collect from fines.
Personal anecdote about how you don't fuck with the CRA. Back in college in I got "free" room and board for year because I was a resident advisor. When I, an idiot 20 year old, filed my taxes, I did them wrong and under reported by around 1k. First time doing Canadian taxes as a US citizen. A few years later I got a fine for around $5500, which was a huge sum for a college kid working part time. Turns out BC can match the fine levied by the CRA. In hindsight, I would have been better off just not having that job - I think I would have come out ahead. For the rest of the time I lived in Canada I hired a CPA.
The IRS is warm and fuzzy by comparison. At least if you screw up, the fine is proportional to the amount you under report. (unless you're super rich...but that's a different thing)
But, I also don't run a small business, and am just a tax payer. Though when I had a small consultancy and corporation they were also actually fine to deal with.
I seem to recall from the last 4 or 5 filings that those deductions are gone now. The only thing I had to do each year was figure out the capital gains on my RSUs (in USD, so a bit fiddly). And now this year I have nothing like that, so it's just "here's my RRSP contributions, and yes, those T4s look like mine, confirmed, ok bye"
An audit is much more severe and generally involves an in-person interaction and seriously combing through all your accounts and transactions. https://www.canada.ca/en/revenue-agency/services/forms-publi... , https://www.bnnbloomberg.ca/what-s-the-difference-between-a-...
It’s not a downloadable sheet , looks like, but it’s something.
Or Quebec Version
`https://www.revenuquebec.ca/en/online-services/tools/webras/`
This is incredible. I absolutely love the idea of official, government-supported machine readable versions of these kinds of rules.
> There is currently no legal guarantee of any kind about the correctness of the code produced by the Mlang compiler, or by the results produced by the interpreter of Mlang. However, authors have been in contact with DGFiP to validate Mlang, and the system passes all the private DGFiP tests as of Sept. 2022 for the version of the source files responsible for computing the tax on the 2018, 2019, 2020 and 2021 income.
MUMPS ("Massachusetts General Hospital Utility Multi-Programming System"), or M, is an imperative, high-level programming language with an integrated transaction processing key–value database. It was originally developed at Massachusetts General Hospital for managing hospital laboratory information systems.
Mon-entreprise is coded in publi.codes, a more recent language.
Mon-entreprise is focused on the social contributions (payroll), subject of OP.
If not, why not?
"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 is a different matter; far more complicated to calculate payroll deductions for there.
Imagine the complications of moving back and forth between provinces. Or seasonal work, etc.
Another example is Quebec sitting on a gargantuan natural gas reserve, but preferring to keep it in the ground because it's more advantageous to simply receive payments from other provinces (Alberta). Carbon/emission considerations aside, this shows just how broken the incentive structure is for equalization payments between provinces.
But that's just the tip of the iceberg as far as Canadian governmental issues go, and it's hard to know where to start improving things.
This seems like a massive thing to just throw aside.
Meanwhile Alberta burns (and leaks) natural gas and coal and gripes because the rest of the country is punishing them for it, and complains to high heaven that we're not making new markets for them (or others) to burn and leak more of it.
Quebec and Ontario have prioritized manufacturing over resource extraction, and that benefits their population.
But there is no Free Trade between Provinces (Inter-Provincial Trade). Canadian Provinces have more Free Trade with the USA and Mexico than they do with each other. Canada isn't really a country in the economic sense. And aren't there restrictions on professions like Engineers and Nurses such that you can't just pick up sticks and go to work in another Province? There's bureaucratic paperwork to fill out before you are good to go.
I'd place high importance on the employee state to the state you are hiring them out of.
Some states are a nightmare to deal with. For example, NJ, CA, NY and OH. Once you are registered in X state, your company is fair game to be pursued for any kind of perceived (lack of) compliance by that state, long after that employee has left you for another job. For example, you could earn a large fine for not filing to report you have no staff in the state.
States that I found were lovely to deal with were ID, TN, and TX.
Generally speaking, its highly recommendable to hire employees from your state only for this reason. I would not hire unless you are absolutely needing to.
You could be on the hook for a large tax bill since you have to write off developer expenses over 5 years – this is true whether an employee or contractor.
Hopefully it will be repealed* – but if not it is one of those things that no one would expect to exist since it is in the words of Senator Wyden "stupid."
https://www.law.cornell.edu/uscode/text/26/174
* edit It won't be repealed but a law can be created to ignored it until a future date. Once on the books, because of accounting, it is very hard to remove a tax law.
And besides, this information makes me even more happy with an opinion I already have - isn't that what the internet is for?
Employers of record ensure compliance with all local laws and basically just bill you the employee's fully loaded cost, plus their service fee
Now what could be done about this? The obvious answer is refactoring. That's what politicians promise in election campaigns and junior software developers demand when encountering a new code base. It's rarely ever done in practice because no one can disambiguate unnecessary from desired features and complexities. The second answer would be a clean implementation in some more formal framework (a statically typed language, a theorem prover, ...). That second solution often fails when attempted because the system is already unsound. Fortunately, no one cares about those "weird corner cases" and everything is left as-is until someone runs away with a million dollars or so.
10-15 years ago there were piles of special exemptions carved out for all sorts of things (mostly to buy votes.) These days, if you don't have self-employment or foreign investments, etc and are just the typical paycheque-receiving wage slave, filing taxes is trivial and mostly automatic.
The bulk of the complication in the above graph seems to do with the fact that Canada is a highly federal system, with provinces having various relevant powers and oddities carved out as a result of that. That, and the existence federal employment insurance and pension plan systems.
I'm pretty sure we'll see what you're asking for within the next 5-10 years. With them already having the T4s, etc. I don't see why they couldn't have you login to their site, confirm everything, and submit.
But if what you describe comes to pass - even just for simple returns for individuals - I'll be pleasantly surprised.
Sorry, as much as I want to believe this, I have loads of evidence against it:
* I have PDFs of all my annual personal income tax returns. Looking at one year to the next, each year tends to add a couple of line items (as designed in the CRA form - not talking about my personal line items), and each year has a chance of adding a page or two to the overall return package.
* Line numbers got two extra zeros appended in tax year 2019. e.g. Line 121 became Line 12100.
* Ontario has had a surtax for decades instead of rolling it into the marginal rates.
* TFSA was introduced in 2009. FHSA was introduced in 2023. Need I say more?
* The Working Income Tax Benefit, introduced in 2007, now named the Canada Workers Benefit, acts like a pseudo basic personal amount. It would be better to meld this into the marginal tax rates.
* The CPP introduced an "enhancement" in 2019 as an extra line item instead of rolling it into the existing rate table. This is a disingenuous way to present a new tax, and a way to obfuscate it.
* Canada Training Credit, introduced in 2019, adds a page to the tax return.
* Ontario health premium, introduced in 2004, adds just over half a page, instead of rolling it into the marginal rates.
In light of all this, all I can see in the tax code is an ever-expanding morass of complexity that is an enormous time and brain drain on law-abiding taxpayers.
[1] https://assets.publishing.service.gov.uk/media/5dfa35f4e5274...
[1] https://observablehq.com/@nitaku/tangled-tree-visualization-...
I don't have the code handy, but the procedures typically looked like this:
(define (form-1234-line-22--foo-income-dollars) 234.00)
(define (form-1234-line-23--taxable-bar-income-dollars)
(max (+ (form-1234-line-22--foo-income-dollars)
(form-1234-line-21--baz-income-dollars)
(form-1234-schedule-x-line-10--total-blort-dollars))
0.00))
It was a lot of work, but (since I used error placeholders for many code paths my own data wouldn't exercise) not that much more work than I had to do anyway, for doing my returns with just the PDF forms and instructions. (The extra work came when I had to enter and double-check the form data manually in the official format, for this one-off exercise.)I did this exercise to see what it would look like, would it save me time/headache, and did it suggest anything about DSLs for this kind of work (say, for domain experts to codify and maintain something more formal and checkable than the form instructions or tax code).
Then, after seeing how tax form logic ended up that way, one direction would be to define a DSL that makes that easier to work with. For example, if we find everything can be implemented as these procedures, or with maybe with an additional concept (such as to handle cycles like in the article), a simple first step DSL might be another s-expression language that has magic variables that are more akin to spreadsheet cell references, in that the dependencies are evaluated in order. And it might also do things like populate a hashtable with the cached values for application use (e.g., PDF form-filling). That DSL might be implemented as a simple `syntax-case` or `syntax-parse` transformer. If that works and could, we could optimally make it more palatable/marketable/politic by defining a keywords-and-whitespace grammar that parses by transforming those syntax objects to syntax objects in our intermediate s-expression DSL (which transforms to the basic Scheme code approach we worked out originally).
There are other valid ways (say, you want tax law logic to be definable dynamically at run time). Though some involve `eval`, which I discourage. https://lists.racket-lang.org/users/archive/2014-July/063597...
Canadian and US governments have enough information to calculate taxes for you, but choose instead to impose all manner of additional complexity, cost, and time sink on taxpayers of varying degrees of sophistication because it's tradition. Norway has prepared statements automatically for taxpayers for 20+ years.
For the employed, you let your employer worry about it. You might occasionally get given a "tax code" which essentially equates to your tax free allowance. If that happens you just let your employer know and they'll sort it, and you can confirm by checking your payslip.
If you're determined to have over or underpaid tax (e.g. your income went down unexpectedly), your tax code for the following year will be adjusted so that you'll end up clawing back the money over time.
Unless you are self employed or have special circumstances, then you'll avoid having to file a "self assessment" form.
And to be clear, the "special circumstances" are nothing like the US' system of hundreds of different "deductions".
Even if you do have to fill in a self assessment form, you can do so with an online form, which actually takes into account answers rather than making you manually have to do things such as "Skip section 5 if you have put a number of in section 4b or a number less than 3340 in section 2a" that the US forms love to make you do.
Filing my US taxes is literally 99% of all paperwork I have to do each year, and I don't even earn enough to actually have to pay anything. Yet I still have to calculate everything, then write down the right numbers in the "foreign earned income exclusion" boxes, then tally it all up to make sure it's still zero, then make sure I've copied the right numbers to the right boxes and haven't mistakenly transposed any numbers, then copy those zeroes down to the right boxes through the rest of the 1040.
The UK has had this system for decades, it has had online tax filing since 3 July 2000. It's had PAYE (pay as you earn tax, i.e. tax deduction at source) since 1944.
The UK feels stagnant as heck, so I wouldn't recommend people actually move here, but its tax system is trivial to the point of ignorable if you're employed.
-Flat minimal monthly pension contribution either filed as a business expense or just deducted from gross income - subtly different, but functionally the same as long as you have income. Calculated as the pension contribution of someone making 60% of the average wage - the exact number is published on an annual basis.
-Income tax: every January you can select one of several schemes:
1. Two brackets - 17% and 32% with the first 30k PLN ($7k USD) tax-free and ability to file taxes together as a married couple, in which case you effectively average out your and your spouse's incomes and pay taxes accordingly.
2. 19% flat rate, no tax-free range, no rules like for marriages.
3. 12% flat rate, mostly same as 2., except on top of that you can't file business expenses. There a few different rates in this scheme, but IT generally falls under the group charged 12%.
Healthcare contributions depend on tax scheme chosen above and are calculated as a percentage of gross income from the previous month minus deductions and expenses.
1. - 9%, 2. - 4,9%, 3. - 3%.
That is mostly it. Regular employees have more complicated rules with employer contributions on top of gross income and small deductions like for living sufficiently far from the workplace, having an internet connection and whatnot, but they don't add up to much.
For self-employment I send 2 documents per month regarding my expenses (which is somewhat easy if you understand the rules), plus one or two summaries per year. Hiring is a bit more complicated, I only file simplified declarations for employing private people as contractors. Otherwise I'm pretty much a worst case scenario as I file 7 different yearly declarations covering most possible sources of income defined in the law. It's not that bad, but it could be better.
Running a company can be practically automated with an online accounting SaaS, including payroll. Laws tend to be relatively understandable and there isn't much complicated math. Most of the recent confusion was around shitty laws poorly implemented and then partially reverted by our previous government. I did not enjoy that, but there were some decent online writeups explaining how to proceed.
At the end of the year, there is nothing to report and nothing to pay.
It doesn't get much simpler than this.
Are there any countries with good, reasonable tax systems?
VAT is a reasonable alternative to income taxes but neither the question nor my response ever specified "income".Each country in the EU has different income tax systems and other types of tax. VAT is just one aspect that generally doesn't cover even half of the tax burden.
OP is talking about the overall tax system.
That is what I was reacting to. You still need to file taxes in the EU right? I know they have streamlined it a lot in most countries, but there is indeed something to report, no?
If you mean legible, common-law taxation is going to be messy by nature. Civil-law jurisdictions will be more legible. France has published formulas for theirs.
If you mean simple, Estonia deliberately chose a simplified foundation for their post-Soviet era -- a tripod of land-value tax (not a property tax); flat income tax with some basic deductions; and VAT. They are new enough that exceptions are probably modest. https://en.wikipedia.org/wiki/Taxation_in_Estonia
Railroad unions: you want an exemption for your members? Write a diff and go to war with hedge fund managers to get the bits you need to implement your boondoggle. :)
I'm reminded of the "delta this build causes in bytes of flashrom" reports you see at the bottom of a compile job on embedded platforms.
You will never be able to keep up with the legal, bureaucratic, and financial changes. Whatever a local competent accounting firm charges, they will almost always recover their cost in a commercial return.
If you have under 12 employees, than ADP payroll can work in some situation.
While founders-syndrome tricks people into thinking they can do anything... they can't do everything... and often end up doing nothing when bankrupt.
You can learn the hard/expensive/painful way, or do things the easy way the first time to retain more cash to invest back into the firm,
If you are an employee filing a T4, and or a shareholder filing your T5... there is still a minefield of mistakes that can trigger taxable events. Depends how much you can legally retain, but the tax systems are often similar to a crime of omission in that it ensures you will miss most opportunities. These rules are complex on purpose.
Best of luck, and don't drop the soap =)
Ask me more here: www.purposecpa.ca
I personally think that if a government fails to enforce a law to a reasonable standard, then the law should be invalidated. Which is probably quite similar to your idea, and addresses the problems created by discretionary enforcement. But that will never happen either.
This requires constant updating and maintenance because tax laws are always changing.
It's also exactly the kind of thing companies _wouldn't_ use open source for because if the code gets the tax law wrong they have nobody to transfer liability to. Once you have a corporate entity backing a subscription service, insurance underwriters can understand what's going on and you can finally manage your risks.
So, basically, no software devs really at the business analysis layer. The process mapping has to be the code. Decision making in the process mapping has to be editable.
It's quite doable and present with some of the current software packages that operate in the finance / insurance / banking / government / enterprise space.
Imho, how software has historically been created for business is now broken. Software used to aim for a fixed, or slowly changing operating model, and the pandemic kind of introduced a bunch of ongoing change.
Software will become more malleable as a result.
I extend this question to all the people who have posted their own graphs of other similar things.
These days there are a number of companies that specialize in simplifying this, including liability shields, but of course for a fee.
Honestly it’s easier to do it as consulting or freelance contracts, but that puts the employee in exactly the same position as OP. Still, for e.g. typical tech jobs an account to sort it all out for you will be maybe 3k or so, many will opt for that.
If there is an advantage to a Canadian to be employed from a foreign company, it's maybe a bit more up to them if they want to do a bit to stand out a lot.
A single person corporation in Canada akin to a professional corporation like a doctor or lawyer may have is not out of the question, especially with the advantages it can provide.