Developed for Modular Digital, this Drupal module adds postal code (US ZIP codes, UK postcodes etc) filtering functionality for the Drupal Commerce checkout process. This module provides 2 main modes (whitelisting and blacklisting) which allow shop owners to restrict the areas of a country that they deliver to:
If a customer tries to complete checkout with a postal code that is on the blacklist, they will be prevented from doing so. This allows shop owners to exclude a certain part of the country.
If a customer tries to complete checkout with a postal code that is not on the whitelist, they will be prevented from doing so. This allows shop owners to include only a small part of the country (e.g. they may wish only to accept orders from their locality. A whitelist allows them to do so without needing to exhaustively list all the postal codes that they do not accept)
Matches in both modes are done on partial postal codes, so the blacklist could contain "PL" which would prevent the postal code PL5 4AB from being submitted. Similarly you could whitelist only the "PL" postal code, which would prevent the postal code "BS3 4BC" from being submitted.
Postal code checking block
The core module exposes a postal code checking block allowing customers to check their postal code before proceeding to the checkout.
All module config is stored in a single variable called commerce_postal_code_filter_config. Features integration is therefore afforded by use of the Strongarm and Features modules. (http://drupal.org/project/strongarm + http://drupal.org/project/features)
Billing vs Shipping
By default Drupal Commerce only has a "billing" address on the checkout. This module supports filtering on this address field. In addition, if commerce_shipping is enabled, filtering will be available on the shipping address.
Filtering by shipping address requires commerce_shipping-2.x (http://drupal.org/project/commerce_shipping).