Establish this relationship between customers and your tax rate table:
Customers::ZipCode = TaxRates::Zipcode
You can add the TaxRates::TaxRate field to your customers layout and it will show the tax rate for that customer. And you can define a calcualtion field in Customers that simply refers to TaxRates::TaxRate to access the taxrate for that customer but I would not use either of those for invoicing. IF a customer changes their location or the government changes the tax rate, you don't want either change to alter past invoices.
You need this relationship and table:
Customers::CustomerID = Invoices::CustomerID
A taxRate field in Invoices should auto-enter the current tax rate for that customer. If you have defined the calculation field I mentioned earlier, this TaxRate field in invoices can use an auto-enter field option (Either calculation or looked up value can be used for identical results), to copy the current taxRate into the Invoices record.
Use the ZipCode in the INVOICE file since that is what counts.
Your tax table will have fields: Zip Code, Fed Tax, State Tax, County Tax, City Tax etc.
Your invoice file will have corresponding tax rate fields and tax total fields so you can do reports and totals for the variious authorities.
Thus your invoice will look something like:
Invoice Sub Total:
The Tax Rates are brought in using the Calculation function of a field definition. This brings the number in when you create the record and enter the Zip Code.
Then your calculation multiplies each tax rate field by the rate to derive the amount.
You can then create a report with summary for the invoices and the total amounts billed and due.