{"id":234081,"date":"2025-05-19T16:09:59","date_gmt":"2025-05-19T16:09:59","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/pay-with-flex\/"},"modified":"2026-01-04T17:32:04","modified_gmt":"2026-01-04T17:32:04","slug":"pay-with-flex","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/pay-with-flex\/","author":23289038,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"3.3.2","stable_tag":"3.3.2","tested":"6.9.4","requires":"6.7","requires_php":"8.1","requires_plugins":null,"header_name":"Flex HSA\/FSA Payments","header_author":"Flex","header_description":"Accept HSA\/FSA payments directly in the checkout flow.","assets_banners_color":"4c449e","last_updated":"2026-01-04 17:32:04","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/pay-with-flex\/","header_author_uri":"https:\/\/withflex.com\/","rating":0,"author_block_rating":0,"active_installs":20,"downloads":1542,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","faq","changelog"],"tags":{"2.1.0":{"tag":"2.1.0","author":"withflex","date":"2025-05-19 16:20:36"},"2.1.1":{"tag":"2.1.1","author":"withflex","date":"2025-05-19 20:40:43"},"2.1.3":{"tag":"2.1.3","author":"withflex","date":"2025-05-23 02:43:12"},"2.2.0":{"tag":"2.2.0","author":"withflex","date":"2025-05-28 01:56:30"},"3.0.0":{"tag":"3.0.0","author":"withflex","date":"2025-06-04 01:25:22"},"3.1.0":{"tag":"3.1.0","author":"withflex","date":"2025-06-08 19:41:37"},"3.1.1":{"tag":"3.1.1","author":"withflex","date":"2025-06-11 00:09:41"},"3.1.10":{"tag":"3.1.10","author":"withflex","date":"2025-10-23 15:15:25"},"3.1.11":{"tag":"3.1.11","author":"withflex","date":"2025-11-05 21:06:41"},"3.1.12":{"tag":"3.1.12","author":"withflex","date":"2025-11-07 03:44:19"},"3.1.13":{"tag":"3.1.13","author":"withflex","date":"2025-11-08 02:29:14"},"3.1.14":{"tag":"3.1.14","author":"withflex","date":"2025-11-11 23:03:17"},"3.1.15":{"tag":"3.1.15","author":"withflex","date":"2025-11-13 20:03:39"},"3.1.16":{"tag":"3.1.16","author":"withflex","date":"2025-11-19 00:34:11"},"3.1.2":{"tag":"3.1.2","author":"withflex","date":"2025-07-07 15:11:32"},"3.1.3":{"tag":"3.1.3","author":"withflex","date":"2025-07-30 04:59:42"},"3.1.4":{"tag":"3.1.4","author":"withflex","date":"2025-08-04 14:29:05"},"3.1.5":{"tag":"3.1.5","author":"withflex","date":"2025-08-14 01:35:18"},"3.1.6":{"tag":"3.1.6","author":"withflex","date":"2025-08-28 17:10:30"},"3.1.7":{"tag":"3.1.7","author":"withflex","date":"2025-10-02 18:51:36"},"3.1.8":{"tag":"3.1.8","author":"withflex","date":"2025-10-09 00:57:04"},"3.1.9":{"tag":"3.1.9","author":"withflex","date":"2025-10-16 18:28:32"},"3.2.0":{"tag":"3.2.0","author":"withflex","date":"2025-12-26 03:29:12"},"3.2.1":{"tag":"3.2.1","author":"withflex","date":"2025-12-27 17:53:44"},"3.3.0":{"tag":"3.3.0","author":"withflex","date":"2025-12-30 03:41:45"},"3.3.1":{"tag":"3.3.1","author":"withflex","date":"2026-01-03 18:11:59"},"3.3.2":{"tag":"3.3.2","author":"withflex","date":"2026-01-04 17:32:04"}},"upgrade_notice":{"3.1.7":"<p>This version fixes a security vulnerability that allowed an attacker to retrieve order details within a short window\nafter the order was placed.<\/p>","1.0.0":"<p>This version fixes a critical error and implements a webhook handler to prevent orders from failing to be marked as\npayment complete.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3296658,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3296658,"resolution":"256x256","location":"assets","locale":""},"icon.svg":{"filename":"icon.svg","revision":3296658,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3296658,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3296658,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["2.1.0","2.1.1","2.1.3","2.2.0","3.0.0","3.1.0","3.1.1","3.1.10","3.1.11","3.1.12","3.1.13","3.1.14","3.1.15","3.1.16","3.1.2","3.1.3","3.1.4","3.1.5","3.1.6","3.1.7","3.1.8","3.1.9","3.2.0","3.2.1","3.3.0","3.3.1","3.3.2"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3296658,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3296658,"resolution":"2","location":"assets","locale":""},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3296658,"resolution":"3","location":"assets","locale":""},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3296658,"resolution":"4","location":"assets","locale":""}},"screenshots":{"1":"Accept HSA\/FSA Payments: https:\/\/www.withflex.com\/","2":"Understand HSA\/FSA payments as a growth channel in the Flex dashboard.","3":"Customers are redirected to Flex to checkout securely using their HSA\/FSA card.","4":"Flex promotes your brand to engaged buyers looking to spend the $150B in HSA\/FSA accounts."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[237484,237483,1887,286],"plugin_category":[45],"plugin_contributors":[242509,242508],"plugin_business_model":[],"class_list":["post-234081","plugin","type-plugin","status-publish","hentry","plugin_tags-fsa","plugin_tags-hsa","plugin_tags-payments","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-davidbarratt","plugin_contributors-withflex","plugin_committers-withflex"],"banners":{"banner":"https:\/\/ps.w.org\/pay-with-flex\/assets\/banner-772x250.png?rev=3296658","banner_2x":"https:\/\/ps.w.org\/pay-with-flex\/assets\/banner-1544x500.png?rev=3296658","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/pay-with-flex\/assets\/icon.svg?rev=3296658","icon":"https:\/\/ps.w.org\/pay-with-flex\/assets\/icon.svg?rev=3296658","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/pay-with-flex\/assets\/screenshot-1.png?rev=3296658","caption":"Accept HSA\/FSA Payments: https:\/\/www.withflex.com\/"},{"src":"https:\/\/ps.w.org\/pay-with-flex\/assets\/screenshot-2.png?rev=3296658","caption":"Understand HSA\/FSA payments as a growth channel in the Flex dashboard."},{"src":"https:\/\/ps.w.org\/pay-with-flex\/assets\/screenshot-3.png?rev=3296658","caption":"Customers are redirected to Flex to checkout securely using their HSA\/FSA card."},{"src":"https:\/\/ps.w.org\/pay-with-flex\/assets\/screenshot-4.png?rev=3296658","caption":"Flex promotes your brand to engaged buyers looking to spend the $150B in HSA\/FSA accounts."}],"raw_content":"<!--section=description-->\n<p>Flex integrates with WooCommerce to enable merchants to accept Health Savings Account (HSA) and Flexible Spending Account (FSA) payments. Our plugin helps you tap into the growing $150 billion HSA\/FSA market and makes it easy to offer compliant, seamless payment options to your customers.<\/p>\n\n<h3>Features:<\/h3>\n\n<ul>\n<li>Accept HSA\/FSA payments directly in your WooCommerce checkout flow<\/li>\n<li>Product sync and eligibility assistance<\/li>\n<li>IIAS support for products deemed \"always eligible\"<\/li>\n<li>Letter of Medical Necessity (LOMN) directly in checkout for products deemed \"dual use\"<\/li>\n<\/ul>\n\n<h3>Flex partners have seen:<\/h3>\n\n<ul>\n<li>20% increase in average order volume<\/li>\n<li>17% increase in revenue<\/li>\n<li>Access to a $150 billion and growing HSA\/FSA market<\/li>\n<\/ul>\n\n<h3>How to Get Started:<\/h3>\n\n<p>Visit <a href=\"https:\/\/www.withflex.com\">withflex.com<\/a> to learn more or contact us at <a href=\"mailto:&#x68;&#101;&#108;&#x6c;&#111;&#064;&#x77;&#105;&#x74;&#x68;&#102;&#x6c;&#x65;&#120;&#x2e;c&#111;&#x6d;\">&#x68;&#101;&#108;&#x6c;&#111;&#064;&#x77;&#105;&#x74;&#x68;&#102;&#x6c;&#x65;&#120;&#x2e;c&#111;&#x6d;<\/a> to get started.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id='what%20are%20hsas%20and%20fsas%3F'><h3>What are HSAs and FSAs?<\/h3><\/dt>\n<dd><p>Health savings accounts (HSAs) and flexible spending accounts (FSAs) are tax advantaged accounts that can be used for health related purchases.<\/p><\/dd>\n<dt id='what%20can%20hsa%20or%20fsa%20dollars%20be%20spent%20on%3F'><h3>What can HSA or FSA dollars be spent on?<\/h3><\/dt>\n<dd><p>Traditionally, health expenses are limited to spending at healthcare facilities (think doctor\u2019s office, dentist office etc) or on a specific list of items, usually available at a pharmacy like CVS or Walgreens.<\/p>\n\n<p>Flex works with wellness partners to enable you to spend your HSA\/FSA money with them as well. Our partners include sleep, fitness, and meditation apps, nutrition programs, in person gyms, wearables and even medical tourism! Reach out to support@withflex.com if you\u2019re interested in learning more!<\/p><\/dd>\n<dt id='what%20is%20a%20letter%20of%20medical%20necessity%3F'><h3>What is a Letter of Medical Necessity?<\/h3><\/dt>\n<dd><p>A Letter of Medical Necessity is a note from a licensed healthcare provider stating that a product is needed to treat or manage a medical condition. Some products require this documentation to qualify for HSA or FSA payment, as required by the IRS.<\/p>\n\n<p>Flex makes this process simple by offering asynchronous telehealth visits directly at checkout. If a Letter is needed, customers can complete a quick consultation and receive approval to pay with HSA\/FSA. Within 24 hours of purchase, Flex will email an itemized receipt and any necessary documentation.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>3.3.2<\/h4>\n\n<ul>\n<li>Fixed a fatal error caused by <a href=\"https:\/\/github.com\/humbug\/php-scoper\">PHP Scoper<\/a> being run in PHP 8.5 which it <a href=\"https:\/\/github.com\/humbug\/php-scoper\/issues\/1139\">does not yet support<\/a> and <a href=\"https:\/\/github.com\/humbug\/php-scoper\/issues\/1138\">silently fails<\/a>.<\/li>\n<\/ul>\n\n<h4>3.3.1<\/h4>\n\n<ul>\n<li>Fixed a bug that prevented dynamic pricing from working correctly.<\/li>\n<li>Fixed a PHP compatibility issue that could prevent the plugin from activating on PHP 8.1-8.3.<\/li>\n<\/ul>\n\n<h4>3.3.0<\/h4>\n\n<ul>\n<li>Added support for custom fees.<\/li>\n<\/ul>\n\n<h4>3.2.1<\/h4>\n\n<ul>\n<li>Fixed a memory leak when a checkout session is created multiple times.<\/li>\n<\/ul>\n\n<h4>3.2.0<\/h4>\n\n<ul>\n<li>Added support for dynamic pricing.<\/li>\n<li>Removed checkout session cache since idempotency system will prevent duplicate checkout sessions from being created.<\/li>\n<\/ul>\n\n<h4>3.1.17<\/h4>\n\n<ul>\n<li>Fixed a race condition where an order could be marked as <code>payment_complete<\/code> multiple times, once by the redirect and again by the webhook.<\/li>\n<\/ul>\n\n<h4>3.1.16<\/h4>\n\n<ul>\n<li>Fixed a bug that prevented checkout when the cart contained a free item.<\/li>\n<\/ul>\n\n<h4>3.1.15<\/h4>\n\n<ul>\n<li>Fixed a fatal error with WordPress 6.7 and PHP &lt;8.4.<\/li>\n<\/ul>\n\n<p><h4>3.1.14<\/h4><\/p>\n\n<ul>\n<li>Added support for WordPress 6.7.<\/li>\n<\/ul>\n\n<h4>3.1.13<\/h4>\n\n<ul>\n<li>Fixed a bug that prevented pages &gt;1 from being synced on plugin or payment method activation.<\/li>\n<\/ul>\n\n<h4>3.1.12<\/h4>\n\n<ul>\n<li>Fixed a bug that prevented products and prices from being created if they already exist under a different account.<\/li>\n<li>Changed the plugin and payment method activation behavior. Product &amp; Price syncing is now spawned asyncoursly which significantly improves the plugin activation speed.<\/li>\n<\/ul>\n\n<h4>3.1.11<\/h4>\n\n<ul>\n<li>Fixed a bug where prices without cents were being incorrectly calculated.<\/li>\n<\/ul>\n\n<h4>3.1.10<\/h4>\n\n<ul>\n<li>Fixed an error where WC_Payment_Gateway was accessed too early.<\/li>\n<\/ul>\n\n<h4>3.1.9<\/h4>\n\n<ul>\n<li>Fixed version inconsistency between the plugin file and the readme.<\/li>\n<\/ul>\n\n<h4>3.1.8<\/h4>\n\n<ul>\n<li>Changed PHP Scoper Excludes by using stubs.<\/li>\n<\/ul>\n\n<h4>3.1.7<\/h4>\n\n<ul>\n<li>Fixed a security vulnerability that allowed an attacker to retrieve completed orders within a short window after the order was placed.<\/li>\n<\/ul>\n\n<h4>3.1.6<\/h4>\n\n<ul>\n<li>Fixed plugin incompatibility by scoping dependencies.<\/li>\n<\/ul>\n\n<h4>3.1.5<\/h4>\n\n<ul>\n<li>Fixed an incompatibility with the Cloudflare plugin.<\/li>\n<\/ul>\n\n<h4>3.1.4<\/h4>\n\n<ul>\n<li>Fixed an exception that prevented the plugin from being activated.<\/li>\n<li>Changed telemetry metadata to only include data that is already available.<\/li>\n<\/ul>\n\n<h4>3.1.3<\/h4>\n\n<ul>\n<li>Fixed an exception that prevented the plugin from being activated.<\/li>\n<li>Upgraded Sentry to 4.14.2.<\/li>\n<li>Upgraded Jetpack Autoloader to 5.0.9.<\/li>\n<\/ul>\n\n<h4>3.1.2<\/h4>\n\n<ul>\n<li>Changed the plugin activation\/deactivation behavior. Activating the plugin will now register the webhooks and attempt perform a product sync if the API key is available. Deactivating the plugin will delete the webhooks.<\/li>\n<li>Fixed an edge case were discounts were not applied if the Price did not already exist.<\/li>\n<li>Removed error reporting when an order is not found when receiving a webhook event. This error exclusively gets thrown by merchants with more than one environment.<\/li>\n<li>Removed the Flex payment method when the cart or order currency is not United States Dollar (USD).<\/li>\n<li>Fixed the validation and error message display on the payment gateway settings page.<\/li>\n<li>Changed the webhook verification to verify new and legacy webhooks.<\/li>\n<\/ul>\n\n<h4>3.1.1<\/h4>\n\n<ul>\n<li>Fixed a bug that would cause the <a href=\"https:\/\/wordpress.org\/plugins\/woocommerce-gateway-stripe\/\">WooCommerce Stripe Payment Gateway<\/a> to crash.<\/li>\n<li>Changed the Product descriptions in Flex by removing the HTML before saving them.<\/li>\n<li>Changed the Price descriptions in Flex by removing the HTML before saving them.<\/li>\n<\/ul>\n\n<h4>3.1.0<\/h4>\n\n<ul>\n<li>Added support for <a href=\"https:\/\/woocommerce.com\/document\/coupon-management\/\">Coupons<\/a>.<\/li>\n<li>Added support for Sale Price.<\/li>\n<li>Fixed a bug that prevented product sync when the payment method was enabled for the very first time.<\/li>\n<\/ul>\n\n<h4>3.0.0<\/h4>\n\n<ul>\n<li>Added support for processing <a href=\"https:\/\/woocommerce.com\/document\/woocommerce-refunds\/#automatic-refunds\">refunds<\/a> from within WooCommerce.<\/li>\n<li>Added the <code>FLEX_TELEMETRY<\/code> constant which allows users to opt-out of telemetry by setting the constant to <code>false<\/code>.<\/li>\n<li>Fixed <code>PHP Notice: Function _load_textdomain_just_in_time was called incorrectly.<\/code><\/li>\n<\/ul>\n\n<h4>2.2.0<\/h4>\n\n<ul>\n<li>Added support for <a href=\"https:\/\/woocommerce.com\/checkout-blocks\/\">WooCommerce block-based checkout<\/a>.<\/li>\n<\/ul>\n\n<h4>2.1.3<\/h4>\n\n<ul>\n<li>Fixed a critical error with PHP &lt; 8.4<\/li>\n<\/ul>\n\n<h4>2.1.2<\/h4>\n\n<ul>\n<li>Added additional context (checkout_session_id) to exceptions.<\/li>\n<li>Added exception reporting. When an exception is thrown within the plugin, the exception is reported to Flex for investigation.<\/li>\n<\/ul>\n\n<h4>2.1.1<\/h4>\n\n<ul>\n<li>Removing the <code>assets<\/code> directory which is not required to be included in the plugin.<\/li>\n<\/ul>\n\n<h4>2.1.0<\/h4>\n\n<ul>\n<li>Added the <code>cancel_url<\/code> to the checkout session which allows customers to return to the WooCommerce checkout.<\/li>\n<li>Changed the default setting of <code>enabled<\/code> to <code>no<\/code>. This makes it more clear that the API Key must be provided in order to enable the payment method.<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>Renamed plugin to \"Pay with Flex\" (<code>pay-with-flex<\/code>).<\/li>\n<li>Renamed <code>WC_FLEX_API_KEY<\/code> to <code>FLEX_API_KEY<\/code>.<\/li>\n<li>Removed <code>WooCommerce<\/code> from the PHP namespaces.<\/li>\n<li>Renamed method <code>from_woo_commerce<\/code> to <code>from_wc<\/code>.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Fixed a critical error where a method was incorrectly named.<\/li>\n<li>Taxes &amp; Shipping are now correctly passed from WooCommerce to Flex.<\/li>\n<li>Webhook Handler. The plugin registers a Flex Webhook when the payment method is enabled.<\/li>\n<\/ul>\n\n<h4>1.0.0-beta.1<\/h4>\n\n<ul>\n<li>API Key handling via the admin or with the <code>WC_FLEX_API_KEY<\/code> constant.<\/li>\n<li>Test mode based on the API Key that is provided<\/li>\n<li>Flex Product &amp; Price sync.<\/li>\n<li>Checkout Session creation and redirection back to WooCommerce in classic checkout.<\/li>\n<\/ul>","raw_excerpt":"This is the official plugin for accepting payments via the Flex payment gateway on a WooCommerce store.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/234081","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=234081"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/withflex"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=234081"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=234081"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=234081"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=234081"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=234081"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=234081"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}