No Shipping No Checkout
Block checkout when no shipping rate is available for the customer's address. Payment methods disappear, the Place Order button is replaced with a message, and the checkout form stays editable so the customer can fix their address and try again.
What It Does
The plugin watches WooCommerce's calculated shipping. The moment a cart that needs shipping returns zero shipping rates for the customer's address, it:
- Removes all payment methods, so the card fields disappear
- Replaces the Place Order button with your message, so there is nothing to click
- Shows the message inside the order review, without hiding the checkout form, so the customer can correct their address
- Blocks the order on submission as a safety net, on both the classic and the block-based checkout
It is rate-source agnostic: it does not decide which locations are restricted. Your shipping methods decide where a rate is available, and the plugin enforces the block wherever a rate is not.
Use Cases
- Geo-restricted products — certain states or regions must not be shipped to; configure the exclusion in your shipping method and this plugin enforces the block at checkout
- Weight, dimension, or order-value limits — some carts are unshippable to certain destinations based on carrier rules
- High-risk merchant compliance — payment processors require a hard stop at checkout so restricted-product orders to banned destinations cannot be placed
- Any scenario where "no rate available" should mean "cannot check out"
Features
- Works with the classic (shortcode) checkout and the block-based Cart & Checkout
- Only blocks after the customer has entered a destination — never blocks an empty or unknown address
- Never traps the customer on a page they cannot recover from
- Ignores carts that do not need shipping (virtual or downloadable orders)
- Customizable block message
- Simple on/off toggle
- HPOS (High-Performance Order Storage) compatible
- Developer filters:
nsnc_should_block_checkout,nsnc_block_message,nsnc_is_enabled
Requirements
- WordPress 5.6+
- PHP 7.2+
- WooCommerce 5.0+ (tested up to 11.0)
Works with any shipping method that can decline to offer a rate: core Shipping Zones, Flat Rate, table-rate plugins, and live carrier rates.
Installation
- Upload the plugin ZIP via Plugins → Add New → Upload Plugin, or copy the folder to
wp-content/plugins/ - Activate No Shipping No Checkout for WooCommerce
- Edit the message under WooCommerce → No Shipping No Checkout (optional)
- Configure your shipping method(s) so restricted destinations receive no rate — the plugin does the rest
Changelog
- 1.3.0
- Dedicated Setup page with tabbed interface, live status checklist, and translation-ready POT template. Tested up to WordPress 7.1 and WooCommerce 11.0.
- 1.2.0
- First-run onboarding redirect, contextual Help tabs, branded status header, and uninstall cleanup.
- 1.1.0
- Optional "About CCMS" tab with consent-based newsletter opt-in. No data leaves the site unless the admin explicitly subscribes.
- 1.0.2
- Fixed a checkout lock-out where the checkout form could be hidden behind the "there are some issues" template.
- 1.0.1
- Fixed a false block on page load when the customer had a previously-calculated address in the session.
- 1.0.0
- Initial release.
Plugin Details
- Version: 1.3.0
- License: GPL-2.0-or-later
- WordPress: 5.6+
- WooCommerce: 5.0 – 11.0
- PHP: 7.2+
- Author: CCMS
Need Help?
Email support@ccmssolutions.com or call (954) 693-6422 for setup and compliance assistance.
Contact Support