{"id":388578,"date":"2026-10-22T17:40:51","date_gmt":"2026-10-22T17:40:51","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/swipe-again-failed-payment-recovery\/"},"modified":"2026-10-22T17:40:21","modified_gmt":"2026-10-22T17:40:21","slug":"swipe-again","status":"publish","type":"plugin","link":"https:\/\/szl.wordpress.org\/plugins\/swipe-again\/","author":23587987,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.2","stable_tag":"1.0.2","tested":"7.1.3","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"Swipe Again \u2014 Failed Payment Recovery","header_author":"Swipe Again","header_description":"Recover failed WooCommerce subscription payments. Decline-aware smart retries run inside your store through your own gateway, with branded email, SMS, and voice dunning from Swipe Again.","assets_banners_color":"393b37","last_updated":"2026-10-22 17:40:21","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/swipeagain.com\/pages\/woocommerce-integration-guide","header_author_uri":"https:\/\/swipeagain.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":72,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.2":{"tag":"1.0.2","author":"swipeagain","date":"2026-10-22 17:40:21","revision":3760310}},"upgrade_notice":{"1.0.2":"<p>Plugin-check cleanup release, no behavior change.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3760310,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3760310,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3760310,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3760310,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.2"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3760310,"resolution":"1","location":"assets","locale":"","width":1440,"height":1200},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3760310,"resolution":"2","location":"assets","locale":"","width":1440,"height":1200},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3760310,"resolution":"3","location":"assets","locale":"","width":1440,"height":1250}},"screenshots":{"1":"The Swipe Again status screen in WooCommerce \u2014 recovered totals, plan state, and who owns retries, from your live account.","2":"Connecting is a short pairing code \u2014 no API keys to copy.","3":"Choose who owns retries: let Swipe Again manage them, or detect-only with automatic stand-down."}},"plugin_section":[],"plugin_tags":[271825,260081,260080,4079,286],"plugin_category":[41,45],"plugin_contributors":[287941],"plugin_business_model":[],"class_list":["post-388578","plugin","type-plugin","status-publish","hentry","plugin_tags-dunning","plugin_tags-failed-payments","plugin_tags-payment-recovery","plugin_tags-subscriptions","plugin_tags-woocommerce","plugin_category-communication","plugin_category-ecommerce","plugin_contributors-swipeagain","plugin_committers-swipeagain"],"banners":{"banner":"https:\/\/ps.w.org\/swipe-again\/assets\/banner-772x250.png?rev=3760310","banner_2x":"https:\/\/ps.w.org\/swipe-again\/assets\/banner-1544x500.png?rev=3760310","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/swipe-again\/assets\/icon-128x128.png?rev=3760310","icon_2x":"https:\/\/ps.w.org\/swipe-again\/assets\/icon-256x256.png?rev=3760310","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/swipe-again\/assets\/screenshot-1.png?rev=3760310","caption":"The Swipe Again status screen in WooCommerce \u2014 recovered totals, plan state, and who owns retries, from your live account."},{"src":"https:\/\/ps.w.org\/swipe-again\/assets\/screenshot-2.png?rev=3760310","caption":"Connecting is a short pairing code \u2014 no API keys to copy."},{"src":"https:\/\/ps.w.org\/swipe-again\/assets\/screenshot-3.png?rev=3760310","caption":"Choose who owns retries: let Swipe Again manage them, or detect-only with automatic stand-down."}],"raw_content":"<!--section=description-->\n<p><strong>Swipe Again recovers failed subscription payments for WooCommerce stores.<\/strong><\/p>\n\n<p>When a renewal charge fails, most stores either give up or blast the same card again on a fixed schedule. Swipe Again runs a recovery system instead: decline-aware smart retries (timed to the reason the payment failed), plus branded email, SMS, and voice dunning that brings subscribers back to update their card \u2014 all measured so you can see exactly what was recovered.<\/p>\n\n<h4>Retries run inside your store<\/h4>\n\n<p>This plugin is the store-side half of Swipe Again. Failed renewals sync to your Swipe Again account; when a retry is due, the command comes back to this plugin and the charge executes locally through <strong>your store's own payment gateway<\/strong> \u2014 the same code path WooCommerce Subscriptions itself uses for renewals. That means every gateway works (Stripe, PayPal, WooPayments, Square, and the rest), and <strong>card data never leaves your gateway<\/strong> \u2014 Swipe Again never sees, stores, or transmits card numbers.<\/p>\n\n<h4>What you get<\/h4>\n\n<ul>\n<li><strong>Decline-aware smart retries<\/strong> \u2014 soft declines (insufficient funds, do-not-honor, temporary holds) are retried on timings matched to the decline; hard declines (stolen card, invalid number) are never retried.<\/li>\n<li><strong>Branded dunning<\/strong> \u2014 email, SMS, and voice sequences in your brand voice bring subscribers to a card-update page.<\/li>\n<li><strong>90-day backfill on connect<\/strong> \u2014 failed renewals from the last 90 days are pulled in automatically, so recovery starts on your backlog, not just tomorrow's failures.<\/li>\n<li><strong>One owner per card<\/strong> \u2014 WooCommerce Subscriptions ships with its own retry system (off by default). If yours is on, Swipe Again stands down on any order WooCommerce is already retrying \u2014 or, with one click in this plugin's settings, hand retry ownership to Swipe Again and the native system turns off. No double charges, ever.<\/li>\n<li><strong>Live recovery accounting<\/strong> \u2014 your recovered totals, right in WooCommerce \u2192 Swipe Again, straight from your Swipe Again account.<\/li>\n<li><strong>The Swipe Again guarantee<\/strong> \u2014 14-day free trial. Guarantee: if recovered revenue in your first 30 days is under $179, your next month is free. Measured on total recovered revenue while the service is active; terms on our website.<\/li>\n<\/ul>\n\n<h4>How it works<\/h4>\n\n<ol>\n<li>Install and activate this plugin.<\/li>\n<li>Open WooCommerce \u2192 Swipe Again and click <strong>Connect to Swipe Again<\/strong> \u2014 you get a short pairing code.<\/li>\n<li>Type the code in your Swipe Again account (Connect \u2192 WooCommerce). The plugin receives its secure key automatically \u2014 nothing to copy, no API keys to manage.<\/li>\n<li>Choose who owns retries in Settings. Done.<\/li>\n<\/ol>\n\n<h4>Requirements<\/h4>\n\n<ul>\n<li>WordPress 6.2+, PHP 7.4+, WooCommerce 8.0+<\/li>\n<li>WooCommerce Subscriptions (for subscription renewals)<\/li>\n<li>A Swipe Again account \u2014 $179\/month flat after a 14-day free trial, no revenue share, no per-recovery fees<\/li>\n<\/ul>\n\n<h4>Privacy &amp; the service<\/h4>\n\n<p>This plugin connects your store to the Swipe Again service (app.swipeagain.com) \u2014 that connection is the product. It syncs: failed renewal order data (order id, amount, currency, gateway decline information, customer email\/phone for dunning), subscription status changes, and recovery outcomes. It never syncs card numbers or full payment credentials. Syncing stops the moment you disconnect or uninstall. See the Swipe Again privacy policy at https:\/\/swipeagain.com\/pages\/privacy-policy and terms at https:\/\/swipeagain.com\/pages\/terms-of-service.<\/p>\n\n<p>The plugin is fully functional regardless of plan state: connecting, syncing, reporting, and executing retries are plugin functions and are never switched off by this plugin. Service levels (dunning sends, scheduling) follow your Swipe Again account's plan.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to <code>\/wp-content\/plugins\/swipe-again\/<\/code>, or install through the WordPress plugins screen.<\/li>\n<li>Activate the plugin through the 'Plugins' screen.<\/li>\n<li>Open WooCommerce \u2192 Swipe Again and click <strong>Connect to Swipe Again<\/strong>.<\/li>\n<li>Enter the pairing code in your Swipe Again account under Connect \u2192 WooCommerce.<\/li>\n<li>In Settings, choose who owns retries (recommended: let Swipe Again manage retries).<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"which%20payment%20gateways%20does%20this%20work%20with%3F\"><h3>Which payment gateways does this work with?<\/h3><\/dt>\n<dd><p>All of them. Retries execute inside your store through WooCommerce Subscriptions' own scheduled-payment path, so whatever gateway your subscriptions use \u2014 Stripe, PayPal, WooPayments, Square, or any other WooCommerce Subscriptions-compatible gateway \u2014 is the gateway that runs the retry. This is the key difference from hosted retry services, which can only re-charge cards they tokenized themselves.<\/p><\/dd>\n<dt id=\"will%20this%20double-charge%20my%20customers%3F\"><h3>Will this double-charge my customers?<\/h3><\/dt>\n<dd><p>No. Two protections: if WooCommerce Subscriptions' own retry system has a retry pending for an order, Swipe Again stands down and does not touch that order; and every retry command executes at most once \u2014 repeat deliveries replay the recorded outcome instead of charging again. If you hand retry ownership to Swipe Again in Settings, the native retry system is off entirely, so one schedule owns every card.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20i%20disconnect%20or%20my%20plan%20lapses%3F\"><h3>What happens if I disconnect or my plan lapses?<\/h3><\/dt>\n<dd><p>Everything in your store keeps working exactly as before. Syncing and Swipe Again-initiated retries stop; WooCommerce and WooCommerce Subscriptions are untouched. The plugin never disables itself or your store's functions based on plan state.<\/p><\/dd>\n<dt id=\"does%20swipe%20again%20see%20my%20customers%27%20card%20numbers%3F\"><h3>Does Swipe Again see my customers' card numbers?<\/h3><\/dt>\n<dd><p>No. Charges run through your gateway inside your store. Swipe Again receives order and decline information and customer contact details for dunning \u2014 never card numbers, CVCs, or full payment credentials.<\/p><\/dd>\n<dt id=\"how%20much%20does%20it%20cost%3F\"><h3>How much does it cost?<\/h3><\/dt>\n<dd><p>$179\/month flat after a 14-day free trial. No revenue share, no per-recovery percentage, no per-seat pricing. 14-day free trial. Guarantee: if recovered revenue in your first 30 days is under $179, your next month is free. Measured on total recovered revenue while the service is active; terms on our website.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Fix: plugin-check warnings cleanup, no behavior change.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release: pairing-code connection, failed-renewal sync for all gateways, in-store retry execution, 90-day backfill, native-retry coordination with stand-down, WP-Admin status and settings screens.<\/li>\n<\/ul>","raw_excerpt":"Recover failed WooCommerce Subscriptions renewal payments with decline-aware smart retries that run inside your store, through your own gateway.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/388578","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=388578"}],"author":[{"embeddable":true,"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/swipeagain"}],"wp:attachment":[{"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=388578"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=388578"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=388578"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=388578"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=388578"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=388578"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}