The Inevitable Tax Discussion
So, taxes suck, we all know this. The problem is that they're really hard to implement in Ubercart. The folks that wrote the Washington tax module kick ass BTW. I'm sure there are other good ones out there too.
First, some background. I'm only talking about US taxes here, and only sales taxes. Use tax / excise tax isn't as big of an ecommerce issue. Florida has hellish tax rules, as does California and Tennessee, so they may have to have some special case stuff done for them, but I think there is at least a semi-consistent way to implement taxes for most other states. I was the PM for a huge project to create a tax management system for SAP, so here is what my experience taught me.
Let's see if we can figure out how to make this work for Ubercart.
How taxes work
What determines tax rates
Taxes are typically destination based. Really, its where ever the "Point of Title Transfer" (POTT) occurs for a good. This means that if someone comes up to your shop in Oregon (where there is no sales tax), they can buy a good tax free, but if they ship it to you in Nevada, you're required to pay sales tax (technically speaking - more on this later) in Nevada. If I drove to northern California to meet at a location there, I technically have to pay California sales tax.
If you're a business buying something for resale, you get that good tax free, provided that you've filled out and filed the appropriate reseller exemption in the state where the POTT will occur. This typically has to be on file both with the state (and sometimes the municipality) and the vendor of the good.
Tax rates are based upon jurisdictions and product types. Jurisdictions are typically 2 or 3 levels in the US, and 1 or 2 levels in Canada (CST and GST). In the US, we assign jurisdictions primarily based on which state the good is being delivered to. Secondly, we can add additional tax based on the county or city. And sadistic states like Washington and California make us go down to the zip-code level (and sometimes even zip + 4 level). There are over 2500 tax rate changes yearly within the US just related to jurisdictions. Whole companies dedicate their entire business models to either finding tax offenders or protecting companies from losing in a tax audit.
Product types are a lot harder. There are literally thousands upon thousands of product types that exist from the more generic like "agricultural products" to "dietary supplements". These are also state dependent, as California taxes "baby diapers - natural" and "baby diapers - synthetic" differently (I'm totally not making that up). Often these also come with max taxes, graduated taxes, and other kinds of crappy tax schemes that are really difficult to define in software.
Finally, you have the idea of "Nexus". Nexus means that your business is on the radar of that state as being eligible to remit sales tax. This is where there is a big ecommerce gotcha. Many states require a business to either have a physical location in that state, or be marketing specifically to customers in that state to be given nexus. Ecommerce was traditionally exempted from this, but it's changing more and more each day - especially in B2B ecommerce. This is a huge tax liability concern, and we need to be thinking about how to implement it now before states that are struggling (like California) start giving everyone nexus just for shipping to that state (which they are perfectly capable of doing).
Effective dates are essential for this system to work. Tax changes occur with great regularity - to the point where compliance becomes a nearly full time job after having to keep track of more than 2 or 3 states. Tax codes need to be able to be turned off and on based upon dates in the system.
An additive hierarchy of jurisdictions should be implemented. Ideally, this would allow for an infinite amount of jurisdiction types or levels. This would suffice for most countries that I know of - including many VAT scenarios.
A reseller certificate system would be awesome for B2B ecommerce. This could be as simple as a checkbox that says "reseller certificate on file for product type X" and link that to a product class or taxonomy.
Tax functionality needs to be included in the API. Companies with nexus in many states almost always look to outside "tax engine" software to manage their tax compliance. An integration pathway to these systems is essential.
I can't think of a good way to handle the product type issue. There are literally thousands. Most require research to actually figure out fully or the knowledge of an auditor.
Holy crap tax in Tennessee, Florida and California is really really complicated (especially Florida... WTF "discretionary sales surtax")
Reseller certificate management is a complex issue - this could be a can of worms. Regardless SOME implementation of it is really important.