When I had to do this, I used Taxware. IIRC there are something like 28,000 tax jurisdictions in the USA, and postal code is not enough information to determine the rate. There was an example where one side of a street in Colorado had one tax rate, and the other side of the street had a different rate.
We had a Taxware server and I used LWP to connect to it.