When X-Cart needs to determine a tax or shipping rate that has to apply to a customer’s cart, it checks the customer’s address to see which zone this address belongs to. For that, X-Cart goes consecutively through the customer’s address fields - the country, the state, and the zip/postal code - and matches them against the respective fields of each zone. If it finds that the customer’s country lists among the countries included in a zone, it goes on to check the customer’s state. If the zone’s state list is empty (i.e., the zone includes all the states in the country), the customer’s address identifies as belonging to the zone. If the zone’s state list is not empty, and the customer’s state is not on that list, the customer’s address identifies as not belonging to this zone (so, X-Cart will need to find another zone the address matches with). If the zone’s state list is not empty, and the customer’s state lists among the states included in the zone, the matching process continues on to the zip/postal code field. Similarly to the previous step, the zone’s field for zip/postal codes may be empty. In this case, the customer’s address will identify as belonging to the zone. If the zone’s field contains some zip/postal codes or zip/postal code masks X-Cart will also match the customer’s zip/postal code against the contents of this field and may find the customer’s address to match or not to match the zone.
If the customer’s address is found to match more than one zone, X-Cart will have to range all the zones matching the customer’s address by “weight”: zones with the largest number of parameters (country, state, zip/postal code) that match the customer’s address are deemed to have the greatest “weight”. So, when X-Cart needs to find a tax or shipping rate for an order, and the customer’s address matches more than one zone, X-Cart will first look for rates defined for the zone that has the greatest “weight”. If no rates for this zone can be found, X-Cart will go on to look for rates for the next zone, and so on. The last zone is always the built-in “All Addresses” (Default) Zone. This zone has zero “weight” and is used only if no other zone applies.