Nice writeup. When you go multi region the architecture problem stops being about rates and starts being about classification: the same SKU can be taxed three different ways depending on where the buyer sits and what the product is. Canada is a good stress test for that. Ontario is a flat 13 percent HST, BC is 5 percent GST plus 7 percent PST, and Quebec is 5 percent GST plus 9.975 percent QST where the QST is calculated on the price before GST is applied. So even within one country you need product categories, not just province rows. A design that has served me well: keep a rate provider per region behind one interface, cache aggressively since rates change rarely but read constantly, and always resolve the buyer location from a validated address before you touch the rate table. If you want to offload the Canada leg, TrueNorth API has a calculate tax endpoint covering all 13 provinces and territories with 41 product tax categories, which maps well onto exactly this provider pattern.