Calculates American sales taxes, state and district. Java source code and sample HTML included. This version computes by adding sales tax to a base price. It also works in reverse given the total paid working backwards to get the tax and original price. In other words it will tell you the sticker price to make something come out even after taxes are added. It also has a spinner that lets get that result without typing. Just select the buyer's state and district, enter the amount of the sale and hit calc. You can adjust the sale amount with a spinner. If you are a business, you don't have to collect sales taxes from people in other states unless you have a business presence in that state. In that case, you must collect just the state tax, not the local tax. The program splits out the state and local taxes so that if you have a business presence in his state, you can tell him the amount he must remit to you (the state part) and the part he must remit voluntarily and directly (the local district part). It knows all American state, county and city level sales taxes. Call for Sales Tax Reform ************************* I think the current US sales tax scheme is nuts. One massive simplification would be to use a single sales tax per vendor, rather than having the vendor compute the tax based on the district the buyer lives. How can the vendor possibly remit to every possible district? The scheme is too complex. It necessitates tax evasion. American sales taxes are complicated to the point of comedy. One of the odd features is sometimes the vendor remits the tax and sometimes the buyer is supposed to do it. However, in practice nearly all buyers "forget" to. For large ticket items, like yachts, the vendor always collects and remits the tax. For smaller items, the vendor only collects the tax if the buyer is in the same district. If you are a business, you don't have to collect sales taxes from people in other states unless you have a business presence in that state. In that case, you must collect just the state tax, not the local tax. The services associated with the goods sold were provided by vendor's district, not the buyer's. For example, the vendor's district provided police, water, roads, bridges, business climate ... What did the buyer's district contribute? nothing! When the buyer and vendor reside in the same district, it does not matter whom you imagine controls the rate. There the services to provide the goods are provided by that district. I think the tax rate should depend on the vendor's district, rather than the buyer's district for the following reasons: 1. Easier to compute. Just one rate. 2. The vendor can't very well lie about his district. The buyer can. 3. Easier to remit. All money goes to the local district. 4. Easier to enforce. A district only has to monitor local business. 5. You collect sale tax on foreign sales. Why should a district subsidise foreigners? If you want some sort of equalisation payments, to shift money between districts, let that be negotiated by the districts, state or federal government and handled with a single yearly cheque to provide the aggregate adjustment. There is no need to involve every interdistrict financial transaction, every vendor and every buyer. I suspect the reason it is as it is to preserve the principle of no taxation without representation. A buyer has no representation to complain about the sales tax in a vendor's district. Canada solved the problem by making the "cheating" legal. When you buy out of province, you don't pay tax. How AmericanTax Works Under The Hood ************************************ There is a file called taxtable.ser. It a serialised set of objects, one for each state, in binary form, compressed. It also contain the additional sales tax for each county and city in that state is tacked onto each state. This in embedded in the americantax.jar as a resource. The program PrepareTaxTables is used to read the tax information about each district from E:/com/mindprod/americantax/districttax.csv and the tax information about each state from E:/com/mindprod/americantax/statetax.csv and merges them into E:/com/mindprod/americantax/taxtables.ser. ANT then embeds the *.ser file in the jar. Unfortunately each state presents its information in a different format, usually designed to be computer-hostile. For each state, I wrote a little program to go to their website and extract district information. I then usually have to manually clean it up, and merge it into the E:/com/mindprod/americantax/districttax.csv. Sometimes I have to do it totally manually. I have not completely this for for all states. You can probably safely ignore all these little scraper programs. They are only used to prepare data, not when AmericanTax is running. Periodically I have to rerun these programs, adjusting them to account for changes in the state websites, to get the up-to-date figure.