{"id":323331,"date":"2026-06-25T20:05:18","date_gmt":"2026-06-25T20:05:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/ruleforge-fees-discounts\/"},"modified":"2026-06-25T20:05:01","modified_gmt":"2026-06-25T20:05:01","slug":"ruleforge-fees-discounts","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/ruleforge-fees-discounts\/","author":17939705,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.2.14","stable_tag":"0.2.14","tested":"7.0","requires":"6.3","requires_php":"7.4","requires_plugins":null,"header_name":"RuleForge \u2013 Fees & Discounts","header_author":"ChilliChalli","header_description":"Create conditional fees and discounts for WooCommerce. A separate Pro version adds tiered discount tables, import\/export, exclusive stack mode, and rule preview.","assets_banners_color":"414e64","last_updated":"2026-06-25 20:05:01","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/chillichalli.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":29,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.2.14":{"tag":"0.2.14","author":"chillichalli","date":"2026-06-25 20:05:01"}},"upgrade_notice":{"0.2.14":"<p>Security hardening: rule editing is now restricted to shop managers\/administrators at the capability level. No action needed.<\/p>","0.2.13":"<p>The active-rule limit has been removed \u2014 the free version now supports unlimited rules. Re-enable any rules that were previously disabled.<\/p>","0.2.3":"<p>WordPress.org compliance pass. Removes in-plugin upgrade prompts; rule data is unchanged.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3586543,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3586543,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3586543,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3586543,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3586543,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.2.14"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3586543,"resolution":"1","location":"assets","locale":"","width":1200,"height":900},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3586543,"resolution":"2","location":"assets","locale":"","width":1200,"height":900},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3586543,"resolution":"3","location":"assets","locale":"","width":1200,"height":900}},"screenshots":{"1":"Rule editor \u2013 Define conditions and actions with flexible JSON syntax","2":"Rule settings \u2013 Control priority and enable\/disable rules","3":"Pro features \u2013 Import\/Export rules and preview with mock cart data"}},"plugin_section":[],"plugin_tags":[239079,6744,66387,268910,286],"plugin_category":[45],"plugin_contributors":[185845],"plugin_business_model":[],"class_list":["post-323331","plugin","type-plugin","status-publish","hentry","plugin_tags-cart-rules","plugin_tags-discounts","plugin_tags-fees","plugin_tags-surcharges","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-chillichalli","plugin_committers-chillichalli"],"banners":{"banner":"https:\/\/ps.w.org\/ruleforge-fees-discounts\/assets\/banner-772x250.png?rev=3586543","banner_2x":"https:\/\/ps.w.org\/ruleforge-fees-discounts\/assets\/banner-1544x500.png?rev=3586543","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/ruleforge-fees-discounts\/assets\/icon.svg?rev=3586543","icon":"https:\/\/ps.w.org\/ruleforge-fees-discounts\/assets\/icon.svg?rev=3586543","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/ruleforge-fees-discounts\/assets\/screenshot-1.png?rev=3586543","caption":"Rule editor \u2013 Define conditions and actions with flexible JSON syntax"},{"src":"https:\/\/ps.w.org\/ruleforge-fees-discounts\/assets\/screenshot-2.png?rev=3586543","caption":"Rule settings \u2013 Control priority and enable\/disable rules"},{"src":"https:\/\/ps.w.org\/ruleforge-fees-discounts\/assets\/screenshot-3.png?rev=3586543","caption":"Pro features \u2013 Import\/Export rules and preview with mock cart data"}],"raw_content":"<!--section=description-->\n<p><strong>Stop leaving money on the table.<\/strong> RuleForge gives you complete control over fees and discounts in your WooCommerce store with powerful, condition-based rules.<\/p>\n\n<p>Whether you need to add payment gateway surcharges, offer location-based discounts, or create complex promotional rules, RuleForge makes it simple.<\/p>\n\n<h4>Why Store Owners Love RuleForge<\/h4>\n\n<ul>\n<li><strong>Set it and forget it<\/strong> \u2013 Rules run automatically on every order<\/li>\n<li><strong>No coding required<\/strong> \u2013 Visual rule builder with JSON power when you need it<\/li>\n<li><strong>Lightning fast<\/strong> \u2013 Optimized queries that won't slow down your checkout<\/li>\n<li><strong>WooCommerce native<\/strong> \u2013 Seamlessly integrates with your existing setup<\/li>\n<\/ul>\n\n<h4>Real-World Use Cases<\/h4>\n\n<p><strong>Payment Gateway Fees<\/strong>\nOffset credit card processing costs by adding a 2-3% surcharge for card payments while keeping cash-on-delivery free.<\/p>\n\n<p><strong>Location-Based Pricing<\/strong>\nAdd handling fees for remote areas, or offer discounts to customers in your local region.<\/p>\n\n<p><strong>Minimum Order Incentives<\/strong>\n\"Spend $100 and get $10 off\" \u2013 Encourage larger orders with automatic discounts.<\/p>\n\n<p><strong>First-Time Buyer Discounts<\/strong>\nWelcome new customers with exclusive discounts on their first order.<\/p>\n\n<p><strong>Tiered Discounts<\/strong>\nThe more they buy, the more they save. Create progressive discount tiers based on cart value.<\/p>\n\n<h4>Free Features<\/h4>\n\n<ul>\n<li><strong>Unlimited Rules<\/strong> \u2013 Create as many active fee and discount rules as you need<\/li>\n<li><strong>Flexible Conditions<\/strong> \u2013 Cart subtotal, billing country, payment gateway, user roles, products, day of week, first order detection<\/li>\n<li><strong>Powerful Actions<\/strong> \u2013 Percentage fees, fixed fees, percentage discounts with optional caps<\/li>\n<li><strong>Priority Control<\/strong> \u2013 Define which rules run first<\/li>\n<li><strong>Lightweight<\/strong> \u2013 No bloat, just the features you need<\/li>\n<\/ul>\n\n<h4>Pro Features<\/h4>\n\n<ul>\n<li><strong>Tiered Discounts &amp; Fees<\/strong> \u2013 Reward bigger carts: buy 3+ save 10%, 6+ save 20%. Build the tier table visually and tier by cart quantity or subtotal, as a percentage or fixed amount<\/li>\n<li><strong>Stack Mode<\/strong> \u2013 Create exclusive rules that stop processing when matched<\/li>\n<li><strong>Import\/Export<\/strong> \u2013 Backup rules or copy between sites with JSON export<\/li>\n<li><strong>Mock Cart Preview<\/strong> \u2013 Test your rules before going live<\/li>\n<li><strong>REST API<\/strong> \u2013 Preview endpoint for headless or custom integrations<\/li>\n<li><strong>Priority Support<\/strong> \u2013 Direct help when you need it<\/li>\n<\/ul>\n\n<h4>Example Rules<\/h4>\n\n<p><strong>2% Credit Card Surcharge (capped at $10)<\/strong>\n    Condition: Payment gateway = stripe\n    Action: Add 2% fee, max $10<\/p>\n\n<p><strong>Free Shipping Threshold Discount<\/strong>\n    Condition: Subtotal &gt;= $75\n    Action: -$5 discount labeled \"Almost Free Shipping!\"<\/p>\n\n<p><strong>UK Customer Handling Fee<\/strong>\n    Condition: Country = GB\n    Action: Add $3 fixed fee<\/p>\n\n<p><strong>Tiered Bulk Discount (Pro)<\/strong>\n    Action: Tiered discount \u2014 buy 3+ = 10% off, 6+ = 20% off, 12+ = 30% off\nBuild it with the visual <strong>Tiered Discount Builder<\/strong>, or with JSON in the Actions box:\n    [{\"type\":\"tiered_discount\",\"basis\":\"quantity\",\"mode\":\"percent\",\"tiers\":[{\"min\":3,\"value\":10},{\"min\":6,\"value\":20},{\"min\":12,\"value\":30}],\"label\":\"Bulk discount\"}]<\/p>\n\n<h4>Built for Performance<\/h4>\n\n<p>RuleForge is designed with performance in mind:<\/p>\n\n<ul>\n<li>Efficient database queries with proper indexing<\/li>\n<li>Minimal footprint \u2013 only loads on relevant pages<\/li>\n<li>No external API calls during checkout<\/li>\n<\/ul>\n\n<h4>Developer Friendly<\/h4>\n\n<ul>\n<li>Clean, well-documented codebase following WordPress coding standards<\/li>\n<li>Extensible architecture for custom conditions and actions<\/li>\n<li>Full REST API access (Pro)<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to the Freemius licensing service (https:\/\/freemius.com) when the site administrator activates the plugin, opts in to usage tracking, activates a Pro license, or checks for plugin updates. Freemius is used to deliver license activation, opt-in analytics (only when the administrator explicitly consents on the activation screen), and Pro update delivery.<\/p>\n\n<p>What data is sent, and when:<\/p>\n\n<ul>\n<li>On activation: the site URL, plugin version, WordPress version, PHP version, and (if the administrator opts in) the administrator's name and email address.<\/li>\n<li>During license activation and renewal checks: the license key and site URL.<\/li>\n<li>On periodic update checks: the plugin version and site URL.<\/li>\n<\/ul>\n\n<p>No customer or order data is ever sent to Freemius.<\/p>\n\n<p>The Freemius service is provided by Freemius, Inc. Their terms and privacy policy apply:<\/p>\n\n<ul>\n<li>Terms of Service: https:\/\/freemius.com\/terms\/<\/li>\n<li>Privacy Policy: https:\/\/freemius.com\/privacy\/<\/li>\n<\/ul>\n\n<h3>Licensing<\/h3>\n\n<p>RuleForge is open source under GPLv2 or later.<\/p>\n\n<p>Pro features are unlocked via <a href=\"https:\/\/freemius.com\">Freemius<\/a> licensing with a 14-day money-back guarantee.<\/p>\n\n<p><strong>Ready to take control of your WooCommerce pricing?<\/strong> <a href=\"https:\/\/chillichalli.com\/ruleforge\">Get RuleForge Pro<\/a><\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload <code>ruleforge-fees-discounts<\/code> to <code>\/wp-content\/plugins\/<\/code><\/li>\n<li>Activate through <strong>Plugins<\/strong> menu<\/li>\n<li>Go to <strong>WooCommerce \u2192 RuleForge<\/strong> to create your first rule<\/li>\n<\/ol>\n\n<p><strong>Quick Start:<\/strong>\n1. Click \"Add New\" to create a rule\n2. Add conditions (e.g., subtotal &gt;= 50)\n3. Add actions (e.g., 5% discount)\n4. Enable the rule and save<\/p>\n\n<p>Your rule is now live and will automatically apply to matching orders.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20woocommerce%3F\"><h3>Do I need WooCommerce?<\/h3><\/dt>\n<dd><p>Yes, RuleForge is built specifically for WooCommerce and requires it to function.<\/p><\/dd>\n<dt id=\"will%20this%20slow%20down%20my%20checkout%3F\"><h3>Will this slow down my checkout?<\/h3><\/dt>\n<dd><p>No. RuleForge is optimized for performance with efficient queries and caching. It adds negligible overhead to your checkout process.<\/p><\/dd>\n<dt id=\"how%20many%20rules%20can%20i%20create%3F\"><h3>How many rules can I create?<\/h3><\/dt>\n<dd><p>There is no limit. The free version lets you create as many active fee and discount rules as you need.<\/p><\/dd>\n<dt id=\"how%20are%20rules%20processed%3F\"><h3>How are rules processed?<\/h3><\/dt>\n<dd><p>Rules run in the order you set with the Priority field (lowest number first). Every matching rule is applied. RuleForge Pro adds exclusive Stack Mode, which stops processing after the first matching rule when you want only one rule to apply.<\/p><\/dd>\n<dt id=\"can%20i%20add%20fees%20to%20specific%20payment%20methods%3F\"><h3>Can I add fees to specific payment methods?<\/h3><\/dt>\n<dd><p>Yes! This is one of the most popular use cases. Add a percentage or fixed fee when customers choose specific payment gateways like Stripe, PayPal, or Cash on Delivery.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20my%20theme%3F\"><h3>Does it work with my theme?<\/h3><\/dt>\n<dd><p>RuleForge works entirely in the backend and doesn't affect your theme. Fees and discounts appear in the standard WooCommerce cart and checkout.<\/p><\/dd>\n<dt id=\"can%20i%20offer%20discounts%20based%20on%20cart%20total%3F\"><h3>Can I offer discounts based on cart total?<\/h3><\/dt>\n<dd><p>Absolutely. Create rules like \"10% off orders over $200\" or \"$15 off when you spend $100+\".<\/p><\/dd>\n<dt id=\"can%20i%20create%20bulk%20or%20tiered%20discounts%3F\"><h3>Can I create bulk or tiered discounts?<\/h3><\/dt>\n<dd><p>Yes, with RuleForge Pro. The Tiered Discount Builder lets you set thresholds like \"buy 3+ save 10%, 6+ save 20%, 12+ save 30%\" \u2014 tiered by cart quantity or subtotal, applied as a percentage or a fixed amount, with an optional maximum cap. The highest matching tier is applied automatically.<\/p><\/dd>\n<dt id=\"is%20there%20a%20money-back%20guarantee%3F\"><h3>Is there a money-back guarantee?<\/h3><\/dt>\n<dd><p>Yes, Pro licenses include a 14-day money-back guarantee through Freemius.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.2.14<\/h4>\n\n<ul>\n<li>HARDENING: Restricted the rule post type to shop managers\/administrators at the capability level (previously its access relied only on the meta-save check), aligning the edit-screen permissions with the data permissions.<\/li>\n<li>HARDENING: Added direct-access (ABSPATH) guards to the remaining internal class files. No functional change.<\/li>\n<\/ul>\n\n<h4>0.2.13<\/h4>\n\n<ul>\n<li>COMPLIANCE: Removed the active-rule limit entirely. The WordPress.org version now supports unlimited active rules and is fully functional, in line with Guideline 5. Any rules previously disabled by the old limit can simply be re-enabled.<\/li>\n<li>The remaining Pro-only features (tiered discount tables, exclusive stack mode, import\/export, mock-cart preview, and the REST preview endpoint) are separate add-on functionality and are not part of the WordPress.org build.<\/li>\n<\/ul>\n\n<h4>0.2.12<\/h4>\n\n<ul>\n<li>Housekeeping: cleared a Plugin Check warning (prefixed an internal catch variable). No functional change.<\/li>\n<\/ul>\n\n<h4>0.2.11<\/h4>\n\n<ul>\n<li>COMPLIANCE: Reworked premium gating to the WordPress.org-compliant model \u2014 the free version is fully self-contained (the rule limit and stack mode use Freemius's premium-build flag, not a live license check).<\/li>\n<li>COMPLIANCE: Removed automatic deactivation of other plugins.<\/li>\n<li>Prefixed the rule post type to <code>ruleforge_rule<\/code> (existing rules are migrated automatically).<\/li>\n<\/ul>\n\n<h4>0.2.10<\/h4>\n\n<ul>\n<li>Maintenance release (packaging\/slug alignment for the WordPress.org listing). No functional change.<\/li>\n<\/ul>\n\n<h4>0.2.9<\/h4>\n\n<ul>\n<li>Renamed to \"RuleForge \u2013 Fees &amp; Discounts\" (slug <code>ruleforge-fees-discounts<\/code>) to meet WordPress.org naming rules. No change to your rules or settings.<\/li>\n<\/ul>\n\n<h4>0.2.8<\/h4>\n\n<ul>\n<li>Internal: annotated two intentional priority-ordering queries so automated checks report cleanly. No functional change.<\/li>\n<\/ul>\n\n<h4>0.2.7<\/h4>\n\n<ul>\n<li>COMPAT: Declared compatibility with WooCommerce High-Performance Order Storage (HPOS) and the block-based cart &amp; checkout, clearing the WooCommerce \"incompatible plugin\" notice.<\/li>\n<\/ul>\n\n<h4>0.2.6<\/h4>\n\n<ul>\n<li>Renamed the plugin for WordPress.org naming compliance. No change to your rules or settings.<\/li>\n<\/ul>\n\n<h4>0.2.5<\/h4>\n\n<ul>\n<li>FIX: Plugin no longer fatals on case-sensitive filesystems (Linux\/WordPress.org) \u2014 the class autoloader now preserves directory case. This affected all non-Windows\/macOS hosts.<\/li>\n<li>FIX: The \"Add New Rule\" screen no longer returns a 403 (\"link expired\") \u2014 the rule save handler now ignores auto-draft\/non-form saves before the nonce check.<\/li>\n<li>NEW: Installing the Pro version now auto-deactivates the free version (Freemius <code>set_basename<\/code>) to prevent both running at once.<\/li>\n<\/ul>\n\n<h4>0.2.4<\/h4>\n\n<ul>\n<li>FIX: Corrected Freemius initialization to the WordPress.org-compliant model (<code>is_premium<\/code>, <code>premium_suffix<\/code>, <code>wp_org_gatekeeper<\/code>) so the free version is generated and gated correctly.<\/li>\n<li>Updated Freemius SDK to 2.13.1.<\/li>\n<\/ul>\n\n<h4>0.2.3<\/h4>\n\n<ul>\n<li>COMPLIANCE: Removed in-plugin \"Upgrade to Pro\" calls-to-action and locked-feature lists from the menu page, rule editor, and rule-limit notice. Pro discovery is now handled via the Freemius Account menu.<\/li>\n<li>COMPLIANCE: Rule-limit notice rewritten as a factual notice (no marketing copy or upgrade link).<\/li>\n<li>COMPLIANCE: Added explicit <code>@fs_premium_only<\/code> header marker so Pro-only source files are stripped from the WordPress.org distribution.<\/li>\n<li>COMPLIANCE: Documented the Freemius external service in readme.txt (data sent, terms, privacy).<\/li>\n<li>FIX: Removed invalid <code>is_premium_only<\/code> key from Freemius init; added <code>is_org_compliant<\/code> flag and explicit menu integration.<\/li>\n<\/ul>\n\n<h4>0.2.2<\/h4>\n\n<ul>\n<li>NEW: Unified the free and Pro editions into a single freemium plugin<\/li>\n<li>NEW: Pro tier with Stack Mode, Import\/Export, and Preview<\/li>\n<li>IMPROVED: Performance optimizations for admin pages<\/li>\n<\/ul>\n\n<h4>0.2.1<\/h4>\n\n<ul>\n<li>Fixed coding standards violations<\/li>\n<li>Initial public release<\/li>\n<\/ul>","raw_excerpt":"Add smart fees and discounts to WooCommerce. Create rules based on cart total, location, payment method, and more.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/323331","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=323331"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/chillichalli"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=323331"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=323331"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=323331"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=323331"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=323331"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=323331"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}