{"id":374805,"date":"2026-09-25T06:32:48","date_gmt":"2026-09-25T06:32:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/unpaid-order-guard-for-woocommerce\/"},"modified":"2026-09-25T06:32:37","modified_gmt":"2026-09-25T06:32:37","slug":"jeytech-unpaid-transfer-guard","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/jeytech-unpaid-transfer-guard\/","author":23573036,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1.2","requires":"6.5","requires_php":"7.4","requires_plugins":null,"header_name":"JeyTech Unpaid Transfer Guard for WooCommerce","header_author":"JeyTech","header_description":"Automatically cancel unpaid bank transfer (BACS) orders after a delay you choose \u2014 with a dry-run preview first.","assets_banners_color":"3c4048","last_updated":"2026-09-25 06:32:37","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":30,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"jeytech","date":"2026-09-25 06:32:37","revision":3712491}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3712517,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3712517,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.jpg":{"filename":"banner-1544x500.jpg","revision":3712517,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.jpg":{"filename":"banner-772x250.jpg","revision":3712517,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3712491,"resolution":"1","location":"assets","locale":"","width":1120,"height":498},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3712491,"resolution":"2","location":"assets","locale":"","width":1120,"height":430}},"screenshots":{"1":"Settings: delay, dry-run or live mode, with a confirmation box.","2":"Preview of the orders that would be cancelled now."}},"plugin_section":[],"plugin_tags":[39374,127760,244945,280224,286],"plugin_category":[45],"plugin_contributors":[282653],"plugin_business_model":[],"class_list":["post-374805","plugin","type-plugin","status-publish","hentry","plugin_tags-bacs","plugin_tags-bank-transfer","plugin_tags-cancel-orders","plugin_tags-unpaid-orders","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-jeytech","plugin_committers-jeytech"],"banners":{"banner":"https:\/\/ps.w.org\/jeytech-unpaid-transfer-guard\/assets\/banner-772x250.jpg?rev=3712517","banner_2x":"https:\/\/ps.w.org\/jeytech-unpaid-transfer-guard\/assets\/banner-1544x500.jpg?rev=3712517","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/jeytech-unpaid-transfer-guard\/assets\/icon-128x128.png?rev=3712517","icon_2x":"https:\/\/ps.w.org\/jeytech-unpaid-transfer-guard\/assets\/icon-256x256.png?rev=3712517","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/jeytech-unpaid-transfer-guard\/assets\/screenshot-1.png?rev=3712491","caption":"Settings: delay, dry-run or live mode, with a confirmation box."},{"src":"https:\/\/ps.w.org\/jeytech-unpaid-transfer-guard\/assets\/screenshot-2.png?rev=3712491","caption":"Preview of the orders that would be cancelled now."}],"raw_content":"<!--section=description-->\n<p>When a customer picks <strong>Direct bank transfer<\/strong>, WooCommerce puts the order <strong>on hold<\/strong> and keeps the stock aside. If the transfer never arrives, the order stays there until someone cancels it by hand. WooCommerce's \"Hold stock (minutes)\" setting does not help: it only applies to <em>pending payment<\/em> orders, not to on-hold bank transfer orders.<\/p>\n\n<p>Unpaid Transfer Guard cleans them up for you, safely:<\/p>\n\n<ul>\n<li><strong>Pick a delay<\/strong> \u2014 for example 7 days, or 48 hours.<\/li>\n<li><strong>Dry-run first<\/strong> \u2014 right after activation, the plugin only <em>lists<\/em> the orders it would cancel. Nothing is changed until you switch to live mode and tick a confirmation box.<\/li>\n<li><strong>Automatic, every hour<\/strong> \u2014 in live mode, expired orders are cancelled through the WooCommerce API, with an order note explaining why.<\/li>\n<li><strong>Stock goes back automatically<\/strong> \u2014 WooCommerce restores the stock of a cancelled order itself; the plugin never touches stock levels.<\/li>\n<li><strong>Last-second checks<\/strong> \u2014 each order is checked again right before being cancelled, so an order paid in the meantime is left alone.<\/li>\n<li><strong>Clear logs<\/strong> \u2014 every run is written to WooCommerce \u2192 Status \u2192 Logs.<\/li>\n<\/ul>\n\n<p>Only on-hold orders paid by <strong>Direct bank transfer<\/strong> are concerned. Cheque, cash on delivery and card orders are never touched.<\/p>\n\n<p>Compatible with High-Performance Order Storage (HPOS) and the Cart &amp; Checkout blocks.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate the plugin (WooCommerce must be active).<\/li>\n<li>Go to <strong>WooCommerce \u2192 Unpaid orders<\/strong>.<\/li>\n<li>Choose the delay, check the preview of the orders that would be cancelled.<\/li>\n<li>When the preview looks right, select <strong>Live<\/strong>, tick the confirmation box and save.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"will%20it%20cancel%20orders%20as%20soon%20as%20i%20activate%20it%3F\"><h3>Will it cancel orders as soon as I activate it?<\/h3><\/dt>\n<dd><p>No. The plugin starts in dry-run mode: it only lists the orders that would be cancelled. Real cancellations start only after you select live mode and tick the confirmation box.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20the%20stock%3F\"><h3>What happens to the stock?<\/h3><\/dt>\n<dd><p>WooCommerce puts the stock back when an order is cancelled, exactly as when you cancel it by hand. The plugin does not change stock levels itself, so stock is never restored twice.<\/p><\/dd>\n<dt id=\"are%20customers%20notified%3F\"><h3>Are customers notified?<\/h3><\/dt>\n<dd><p>Cancelling an order triggers WooCommerce's own emails, as when you cancel it by hand: the \"Cancelled order\" email to the store admin and, if enabled in WooCommerce \u2192 Settings \u2192 Emails, the \"Cancelled order\" email to the customer. Check these settings before switching to live mode.<\/p><\/dd>\n<dt id=\"what%20if%20the%20transfer%20arrives%20just%20before%20the%20delay%20ends%3F\"><h3>What if the transfer arrives just before the delay ends?<\/h3><\/dt>\n<dd><p>Mark the order as paid (Processing) as usual: the plugin only cancels orders that are still on hold. Each order is checked again right before being cancelled.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20hpos%20and%20the%20checkout%20block%3F\"><h3>Does it work with HPOS and the Checkout block?<\/h3><\/dt>\n<dd><p>Yes. The plugin only uses the WooCommerce order API, and declares compatibility with High-Performance Order Storage and the Cart &amp; Checkout blocks.<\/p><\/dd>\n<dt id=\"can%20it%20handle%20cheque%20payments%20too%3F\"><h3>Can it handle cheque payments too?<\/h3><\/dt>\n<dd><p>Not in this version: only Direct bank transfer (BACS) orders are handled.<\/p><\/dd>\n<dt id=\"how%20often%20does%20it%20run%3F\"><h3>How often does it run?<\/h3><\/dt>\n<dd><p>Every hour, in batches of 50 orders. If more orders are waiting, the next batch starts right away. You can also run it manually from the settings page.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release: delay in days or hours, dry-run preview, hourly cancellation of expired on-hold bank transfer orders, order notes, logs.<\/li>\n<\/ul>","raw_excerpt":"Automatically cancel unpaid bank transfer (BACS) orders after X days \u2014 with a dry-run preview.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/374805","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=374805"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/jeytech"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=374805"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=374805"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=374805"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=374805"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=374805"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=374805"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}