Plugin slug: goup-payment-gateway-by-shipping-method · Version: 1.0.5 · Author: GoUpWP · https://goupwp.com/plugins/payment-gateway-by-shipping-method
What it does
Shows, hides or restricts WooCommerce payment methods depending on the shipping method the customer selected. Typical uses: cash on delivery only with local pickup, no cheque payments with express courier, a specific gateway for freight. Rules can target a specific shipping instance in a zone (for example "Flat rate — UK") or every instance of a type (all local pickup methods).
Works with the classic checkout, the Checkout Block (rules re-evaluate instantly as the shipping choice changes, without a page reload), the "pay for order" page and HPOS.
Installation
- Download the plugin ZIP from your GoUpWP account (Account → Licenses → Download).
- In WordPress go to Plugins → Add New → Upload Plugin, choose the ZIP and click Install Now, then Activate.
- WooCommerce must be installed and active; the plugin shows a notice and stays idle until it is.
- Open WooCommerce → License: Payment Gateway by Shipping Method and paste the license key from your account. Activation unlocks
one-click updates and support for this site. A
localhost,*.test,*.localorstaging.site counts as a staging activation and does not use your production seat.
The plugin keeps working if the license expires: only updates and support pause until it is renewed.
Setup
Open WooCommerce → Payment by Shipping Method → Rules → Add rule.
- Shipping methods: choose zone instances or method types; the Checkout Block's local pickup locations are listed as well.
- Action: Disable the selected gateways or Allow only the selected gateways.
- Gateways, Priority, Enabled.
Settings: Zero-gateway safety (Safe restores the original gateways if the rules remove all of them, Strict shows none) and an optional custom "no payment methods" message for the classic checkout. Rules can be duplicated, toggled, bulk-edited and exported/imported as JSON.
Testing
The Tester tab simulates a chosen shipping method and shows the resulting gateways and matched rules. Diagnostics lists zones, instances, gateways and safe-mode conflicts observed on the storefront.
Developer hooks
goup_pgsm_rules( array ),goup_pgsm_rule_matches( bool, array $rule, array $shipping_ids, string $strategy )goup_pgsm_shipping_method_ids( array )— alter the detected selected shipping methods.goup_pgsm_original_gateways( array $ids, array $shipping_ids ),goup_pgsm_available_gateways( array, array $all, array $shipping_ids, RuleResult )goup_pgsm_shipping_package_match_strategy( 'any'|'all' )for multi-package carts,goup_pgsm_zero_gateway_behavior( 'safe'|'strict' )
Troubleshooting
- Rules ignored on the first checkout load — no shipping method is chosen yet; rules apply as soon as one is selected (the Checkout Block updates instantly, the classic checkout on its next refresh).
- Rule editor showed an error — fixed in 1.0.3; update the plugin.
- Enable Debug logging and read WooCommerce → Status → Logs for every evaluation.
Updates and licensing
- Updates arrive through the normal Dashboard → Updates and Plugins screens. Every package is downloaded over a signed, time-limited link and verified against its SHA-256 checksum before WordPress installs it.
- View details on the Plugins screen shows the changelog for the new version.
- If the license is not active you still see that an update exists; the row explains that renewing restores one-click updates.
- The license page shows the installed version, the environment this site was classified as (production or staging), your activation counts and the renewal date, and has a Check for updates button.
- Deactivate on this site frees the seat so the key can be used on another site. Deleting the plugin from the Plugins screen also frees the seat automatically.
- Nothing is sent to goupwp.com except the license key, an installation ID, the site URL and the WordPress, PHP and plugin versions used for compatibility checks.
Support and maintenance
- Open a ticket from Account → Support on goupwp.com; include the output of the plugin's Diagnostics tab.
- Keep WordPress, WooCommerce and the plugin updated and test changes on a staging site first.
- The plugin declares compatibility with WooCommerce High-Performance Order Storage (HPOS) and the Cart and
Checkout Blocks, and is translation-ready (
languages/). - Uninstalling removes the plugin's data only when the Delete data on uninstall option is enabled, so a reinstall keeps your configuration; license data is always removed.
Release history
1.0.5 27 September 2026 · tested with WordPress 7.1
- Hardened gateway filtering so extension hooks may only remove existing IDs or exact gateway objects; injected/replaced objects are rejected and unexpected failures return WooCommerce's original gateway set.
- Added re-entrancy protection, fresh-result isolation, same-request option-change detection, and bounded/cached shipping and gateway discovery.
- Enabled rules now require live shipping and gateway references; imports with missing dependencies are kept disabled with an explanation.
- All admin mutations are POST-only with capability and nonce checks. Import validation now uses actual file size, strict schema comparison, bounded collections, and a 500-rule limit.
- Reduced Checkout Blocks data to the minimum public rule fields and restricted logs to sanitized operational identifiers.
- Unified the rules, settings, diagnostics, status badges, buttons, cards and focus states with the GoUpWP blue design system.
- Expanded unit and real WooCommerce integration coverage for Safe/Strict Mode, ANY/ALL package matching, cache invalidation and custom messages.
1.0.4 26 September 2026 · tested with WordPress 7.1
- GoUpWP admin identity: every plugin screen now opens with a GoUpWP header showing the plugin name, version, documentation, support and licence status.
- GoUpWP styling for settings, rule tables, tabs, cards and buttons, scoped to this plugin's screens so WordPress and other plugins are untouched.
- GoUpWP mark on the Plugins screen, Documentation and Support links in the plugin row, and GoUpWP icons on the Dashboard → Updates screen.
1.0.3 20 September 2026 · tested with WordPress 7.1
- Updates: the installer now fetches a freshly signed download link at install time and verifies the SHA-256 checksum, so "Update now" works hours after WordPress last checked for updates.
- Updates: update checks are cached for six hours and the Plugins screen shows a clear message (with a link to the license page) when an update exists but the license is not active.
- License screen: named per plugin in the WooCommerce menu, shows the installed version and a "Check for updates" button, and every string is translatable.
- Plugins screen: Settings and License links on the plugin row.
- Uninstall: releases the license seat on goupwp.com and removes all license data, regardless of the data-retention setting.
- Code style: all source files expanded to readable, documented PHP.
- Fixed a fatal error when opening the rule editor (shipping zones could not be loaded).
1.0.2 20 September 2026 · tested with WordPress 7.1
- License screen now explains activation failures (unrecognised key, wrong plugin, site limit reached, expired) and shows the environment, activation counts and end date.
- Activate and Deactivate always contact goupwp.com immediately instead of waiting out a network backoff.
1.0.1 20 September 2026 · tested with WordPress 7.1
- Added the GoUpWP licensing and update client.
- Normalized plugin headers and code style.