# Payflow — Control how customers pay and ship at checkout URL: https://docs.payflow.appfleece.com What can Payflow do? Hide, rename, or reorder payment methods at checkout based on cart contents, customer data, shipping address, discounts, and more. Show or hide shipping rates, rename them for clarity, and set the display order — all driven by the same powerful conditions engine. Display custom text messages below a specific payment method at checkout — perfect for bank transfer details, COD terms, or B2B instructions. Block checkout with custom validation messages when a cart, address, customer, or product combination should not be allowed. Customize when COD appears at checkout using the same conditions engine, and collect an optional custom flat fee by pairing COD with a dedicated shipping rate (Cash on Delivery Setup handles the wiring automatically). Build precise rules using cart totals, product tags, customer lifetime value, shipping address, Shopify Markets, discounts, metafields, and much more. Explore the documentation Getting Started — Install the app, enable customizations, and verify they run at checkout. Guides — Step-by-step tutorials for payment customization, delivery customization, Checkout rules, Cash on Delivery, payment instructions, and tiered fees. Conditions — What you can match on (cart, customer, shipping address, discounts, product attributes, and more). Use Cases — Short, visual tutorials: hide or rename payment and shipping methods by country, weight, B2B, and similar patterns. FAQ — Short answers on rule limits, draft orders, branded payment methods, fees, and more. Reference — Full condition list, condition sets, limitations, and the changelog. How Payflow works Payflow is built entirely on Shopify Functions — Shopify's native server-side extension platform. Rules run at checkout before the page renders, so there are no client-side delays or layout shifts. Need help? For product questions or support, contact us at help@appfleece.com or use the chat on this site. We're here to help you tune checkout payment and delivery options for your store. --- # Conditions URL: https://docs.payflow.appfleece.com/conditions Conditions decide when a customization applies. Every rule has at least one condition under When the following conditions are met. Payflow offers 50+ conditions across six categories. For a flat table of every condition with operators and keys, see the All Conditions Reference. --- # Cart & Order Conditions URL: https://docs.payflow.appfleece.com/conditions/cart-and-order Cart & Order conditions let you trigger customizations based on what is in the customer's cart — the total price, weight, quantity, specific products, tags, or collections. Total amount Condition key: The total amount the customer is shown to pay at checkout. This includes shipping costs and taxes (depending on your store's tax settings). Operators: At least (≥), At most (≤) Use cases: Hide Cash on Delivery for orders over £200 Show a premium shipping option only for orders above a threshold Display bank transfer instructions for high-value orders Example: Total amount → At least → will match any checkout where the customer pays £150 or more. --- Subtotal amount Condition key: The subtotal shown at checkout — the sum of all line item prices before shipping and taxes are applied. If your store's prices include tax, tax is included in the subtotal. Operators: At least (≥), At most (≤) Use cases: Free shipping threshold logic (combined with delivery customization) Different COD rules for different order sizes --- Total weight Condition key: The combined weight of all items in the cart, converted to kilograms. Operators: At least (≥), At most (≤) Use cases: Hide oversized-item shipping options for light carts Restrict certain delivery methods to orders under a weight limit --- Total quantity Condition key: The sum of the quantities of all line items in the cart. Operators: At least (≥), At most (≤), Is (==), Is not (!=) Use cases: Restrict COD to single-item orders Offer bulk shipping only for carts with 5+ items --- Product Condition key: Checks whether one or more specific products are (or are not) in the cart. You select products by their Shopify product ID from your store's catalog. Operators: Is one of, Is not any of Use cases: Hide a payment method when a specific product is in the cart Show special shipping for orders containing a fragile item --- Product variant Condition key: Checks whether specific product variants are present in the cart. Useful when a single product has variants with different requirements (e.g. size, color). Operators: Is one of, Is not any of Use cases: Hide or restrict certain shipping or payment methods when the cart includes specific variants you pick in the editor (for example oversized options, made-to-order variants, or SKUs that need a different fulfillment path than the rest of the product) Apply stricter rules only for the variants that need them while leaving other options of the same product unchanged --- Product tag Condition key: Checks whether products in the cart have matching tags. You can control which items must match using the scope setting, and choose between exact and partial tag matching. Scope: | Scope | Meaning | |---|---| | Matches any item | At least one line item has a matching tag | | Matches all items | Every line item has a matching tag | | Matches no items | No line item has a matching tag | Operators: Is one of, Is not any of, Tag contains text, Tag excludes text Use cases: Hide COD when the cart contains any "fragile" tagged product (Matches any item) Restrict payment methods for "pre-order" tagged items using partial match (Tag contains text) Apply a rule only when the entire cart consists of digital products (Matches all items) Block a shipping method when no item has a "shippable" tag (Matches no items) --- Product tag – all items (legacy) Condition key: Returns true only if all items in the cart have the specified tag. Operators: Is one of, Is not any of --- Collection Condition key: Returns true if any product in the cart belongs to one of the specified Shopify collections. Operators: Is one of, Is not any of Use cases: Restrict certain payment methods for products in the "Hazardous" collection Show specialized shipping for products in "Oversized Items" --- Product variant title Condition key: Checks the variant title (e.g. "Large / Red") of any item in the cart. Useful when you don't have specific variant IDs but know the title format. Operators: Is one of, Is not any of, Text contains, Text does not contain, Is empty, Is not empty --- Contains subscription Condition key: Returns true if at least one item in the cart is part of a selling plan (i.e. a subscription product). Operators: Is true, Is false Use cases: Restrict payment methods for subscription orders (e.g. require credit card only) Offer different shipping options when a subscription product is in the cart Prevent COD for subscription orders --- See also --- # Customer Conditions URL: https://docs.payflow.appfleece.com/conditions/customer Customer conditions let you personalize checkout rules based on who is buying — their account data, purchase history, tags, B2B status, and custom metafields. Customer tag Condition key: Checks whether any of the specified tags are (or are not) applied to the customer's Shopify account. Operators: Is one of, Is not any of, Text contains, Text does not contain Use cases: Show wholesale payment methods only for customers tagged "wholesale" Hide COD for customers tagged "high-risk" Offer VIP shipping rates for customers tagged "vip" Example: Show bank transfer only for "net30" customers: Condition: Customer tag → Is one of → --- Customer is B2B Condition key: Returns true if there is a Shopify B2B company associated with the purchase. This is a Shopify Plus feature and only works with the native Shopify B2B functionality. Operators: Is true, Is false Use cases: Show invoice payment for B2B customers Hide COD for B2B accounts Display different shipping rates for company accounts --- Cart attribute B2B flag Condition key: A cart-attribute-based B2B check that works even without Shopify Plus. Returns true when the cart attribute is set to by your storefront. Operators: Is true, Is false Use cases: Non-Plus stores that manage B2B via a custom cart attribute flag --- Buyer is authenticated (logged in) Condition key: Returns true when the customer is logged in to their Shopify account during checkout. Operators: Is true, Is false Use cases: Restrict certain payment methods to logged-in customers only Show a loyalty discount shipping rate for account holders --- Buyer email Condition key: Checks the email address entered by the buyer at checkout. This works even for guest checkouts. Operators: Is one of, Is not any of, Text contains, Text does not contain, Is empty, Is not empty Use cases: Apply rules for orders from specific business email domains (e.g. contains ) Restrict payment methods for specific known email addresses --- Customer account email Condition key: Checks the email on the customer's Shopify account (as opposed to the email entered at checkout, which may differ for guest orders). Operators: Is one of, Is not any of, Text contains, Text does not contain, Is empty, Is not empty --- Customer first name Condition key: Checks the first name on the customer's Shopify account. Operators: Is one of, Is not any of, Text contains, Text does not contain, Is empty, Is not empty --- Customer last name Condition key: Checks the last name on the customer's Shopify account. Operators: Is one of, Is not any of, Text contains, Text does not contain, Is empty, Is not empty --- Customer display name Condition key: Checks the customer's display name, which can be their name, email, or phone number depending on how they registered. Operators: Is one of, Is not any of, Text contains, Text does not contain, Is empty, Is not empty --- Customer ID Condition key: Checks the Shopify customer ID. Useful for applying rules to a specific set of known customers. Operators: Is one of, Is not any of Use cases: Whitelist specific customers for special payment terms Block specific accounts from using certain payment methods --- Lifetime spend Condition key: Checks the total amount the customer has spent in your store (in your store's default currency). Requires the customer to be logged in. Operators: At least (≥), At most (≤) Use cases: Show VIP payment options for customers who have spent over £1,000 Restrict COD to customers with low purchase history (e.g. less than £100 total spend) Reward loyal customers with free express shipping Example: Offer premium payment terms for high-value customers: Condition: Lifetime spend → At least → --- Number of orders Condition key: Checks how many orders the customer has placed. Requires the customer to be logged in. Operators: At least (≥), At most (≤), Is (==), Is not (!=) Use cases: Restrict COD for first-time buyers (number of orders → Is → 0) Offer special rates for repeat customers (number of orders → At least → 5) New customer onboarding offers --- Customer metafield Condition key: Checks the value of a custom metafield on the customer's account. You specify the metafield namespace and key. Operators: Is one of, Is not any of, Text contains, Text does not contain, Is empty, Is not empty Use cases: Apply rules based on a custom CRM segment metafield Check a "creditlimit" or "paymentterms" metafield for B2B customers Trigger logic based on a loyalty tier metafield --- B2B company name Condition key: Checks the Shopify B2B company name associated with the purchase. Requires Shopify Plus and a B2B company context. Operators: Is one of, Is not any of, Text contains, Text does not contain, Is empty, Is not empty Use cases: Apply different payment terms per company Show specific payment methods for named enterprise accounts --- See also --- # Discount Conditions URL: https://docs.payflow.appfleece.com/conditions/discounts Discount conditions let you trigger checkout customizations based on whether a discount is active and how large it is — both in absolute amount and percentage. Discount amount Condition key: Checks the total discount amount applied to the order, excluding shipping discounts and taxes. Operators: Has discount, No discount, At least (≥), At most (≤) Use cases: Hide a payment method when a coupon code is active (to prevent abuse) Show a "discount customer" payment option when any discount is applied Require bank transfer for heavily discounted orders (discount ≥ £50) Example: Hide COD when a discount over £20 is applied: Condition: Discount amount → At least → Action: Hide → Cash on Delivery --- Discount percentage Condition key: Checks the total discount as a percentage of the order value, excluding shipping and taxes. Operators: Has discount, No discount, At least (≥), At most (≤), Is (==), Is not (!=) Use cases: Restrict payment options when a large percentage discount is applied Offer free shipping only when a specific percentage discount is active Apply different rules for flash-sale orders (e.g. discount ≥ 30%) Example: Hide express shipping when discount is 50% or more: Condition: Discount percentage → At least → Action: Hide → "Express Delivery" --- Common discount scenarios --- See also --- # Localization Conditions URL: https://docs.payflow.appfleece.com/conditions/localization Localization conditions let you customize checkout behavior based on the customer's geographic market or checkout language. These are essential for international stores that serve different regions with different payment preferences. Shopify Market Condition key: Checks which Shopify Market the customer is purchasing through. Markets are configured in your Shopify admin under Settings → Markets. Operators: Is one of, Is not any of Use cases: Show region-specific payment methods (e.g. iDEAL only for Netherlands market) Apply different COD availability per market Display market-appropriate shipping options Rename payment methods differently per market language Example: Show TWINT only for Switzerland market: Condition: Shopify Market → Is one of → Switzerland Action: Show TWINT (or hide TWINT when NOT Switzerland) Example: Use different payment method names per market: Rule 1: Rename "Bank Transfer" → "Bankovní převod" when Shopify Market is Czech Republic Rule 2: Rename "Bank Transfer" → "Banküberweisung" when Shopify Market is Germany --- Checkout language Condition key: Checks the language the customer is using at checkout. This is determined by the language the customer selected or the default language for their market. Operators: Is one of, Is not any of Payflow loads the languages available for your store; when you set this condition, choose from the dropdown—the values match Shopify checkout locale tags (IETF BCP 47), so they stay in sync with what customers actually see. Use cases: Display payment instructions in the customer's language Show localized shipping method names based on checkout language Apply rules for specific language audiences Example: Show Czech bank transfer instructions in Czech: Condition: Checkout language → Is one of → Action: Show payment instructions with Czech text --- Market vs Language — which to use? | Scenario | Use | |---|---| | Rules based on geographic region | Shopify Market | | Rules based on the language displayed | Checkout language | | Store has one market per country | Either works | | Store has one market for multiple languages | Language is more precise | For most stores, Shopify Market is the right choice since it maps directly to geographic regions and their associated currencies, taxes, and payment methods. --- See also --- # Product Attribute Conditions URL: https://docs.payflow.appfleece.com/conditions/product-attributes Product Attribute conditions let you build rules based on the specific properties of products in the cart — their SKU, vendor, type, metafields, price, and more. Combining conditions — Not every condition can be combined with every other in a single rule. Payflow filters the picker automatically. See Condition Sets for details. Variant SKU Condition key: Checks whether any line item in the cart has a variant SKU that matches your value. Operators: Is one of, Is not any of, Text contains, Text does not contain, Is empty, Is not empty Use cases: Restrict COD for products with "HEAVY-" prefix in SKU Show a special shipping option for items with a specific SKU pattern Hide a payment method for clearance items (identified by SKU) --- Product vendor Condition key: Checks whether any product in the cart is from a specific vendor/brand. Operators: Is one of, Is not any of, Text contains, Text does not contain, Is empty, Is not empty Use cases: Apply different shipping rules for products from a specific supplier Restrict payment methods for a specific brand in your multi-vendor store --- Product type Condition key: Checks the Shopify product type field on any product in the cart (set in the product editor under "Organization"). Operators: Is one of, Is not any of Use cases: Hide COD for "Digital" product types Restrict shipping options for "Furniture" products Apply different rules for "Apparel" vs "Electronics" --- Contains gift card Condition key: Returns true if any item in the cart is a Shopify gift card. Operators: Is true, Is false Use cases: Restrict payment methods when a gift card product is in the cart Hide COD for orders containing gift cards (since they require a different fulfillment flow) --- Requires physical shipping Condition key: Returns true if all items in the cart require physical shipping (i.e. no digital/download-only items). Operators: Is true, Is false Use cases: Show local delivery options only when physical items are in the cart Hide shipping methods entirely for fully digital orders --- Line item price Condition key: Checks the unit price of any line item in the cart. Operators: At least (≥), At most (≤), Is (==), Is not (!=) Use cases: Hide COD for carts containing items over a certain price Show a special payment method for high-ticket items --- Line item compare-at price Condition key: Checks the compare-at (original / "was") price of any line item. Returns empty if no compare-at price is set. Operators: At least (≥), At most (≤), Is (==), Is not (!=), Is empty, Is not empty Use cases: Apply different rules for sale items (where compare-at price is set) Hide a payment method when any cart item is discounted --- Cart attribute Condition key: Checks the value of a Shopify cart attribute by key. Cart attributes are custom key-value pairs set programmatically by your storefront (via Liquid or the Cart API). Operators: Is one of, Is not any of, Text contains, Text does not contain, Is empty, Is not empty Use cases: Apply rules based on a custom B2B flag set by your storefront Trigger logic based on an upsell app that sets a cart attribute Check for a referral code or promo attribute --- Product metafield Condition key: Checks the value of a metafield on any product in the cart. You specify the metafield namespace and key. Operators: Is one of, Is not any of, Text contains, Text does not contain, Is empty, Is not empty Use cases: Restrict payment methods based on a custom "requiresageverification" metafield Apply different shipping rules based on a "hazardous_material" product metafield Check a supplier-set "minordervalue" metafield --- Variant metafield Condition key: Checks the value of a metafield on any variant in the cart. You specify the metafield namespace and key. Operators: Is one of, Is not any of, Text contains, Text does not contain, Is empty, Is not empty Use cases: Apply rules based on variant-level custom data Check for a "shipping_class" metafield on variants for custom rate logic --- Line item property Condition key: Checks the value of a custom line item property on any cart line. Line item properties are key-value pairs attached to individual items in the cart (often set by product forms, subscription apps, or custom storefront logic). Operators: Is one of, Is not any of, Text contains, Text does not contain, Is empty, Is not empty Use cases: Apply rules based on a custom property set by a subscription app (e.g. ) Restrict payment methods when a line item carries a specific custom value Check for personalisation data (e.g. an engraving or gift message property) --- See also Cart & Order conditions — totals, products, tags, collections Customer conditions — customer metafields and account data Hide COD for specific products or collections — step-by-step use case with product tags, collections, and SKUs --- # Shipping Address Conditions URL: https://docs.payflow.appfleece.com/conditions/shipping-address Shipping Address conditions let you trigger rules based on where the customer is shipping to. These are among the most commonly used conditions for geo-based payment and shipping customizations. Shipping country Condition key: Checks whether the shipping destination country matches any of the selected countries. Only countries that your store is configured to ship to are available for selection. Operators: Is one of, Is not any of Use cases: Show COD only for domestic orders Hide expensive payment methods for international orders Apply different shipping rates per region Restrict certain payment providers to supported countries Example: Show a bank transfer option only for Czech Republic and Slovakia: Condition: Shipping country → Is one of → Czech Republic, Slovakia --- State / Province Condition key: Checks the state or province the customer is shipping to. Payflow automatically loads the provinces for the countries your store ships to — you select from a modal window rather than entering codes manually. Operators: Is one of, Is not any of Use cases: Restrict COD to certain US states Offer local delivery only in specific provinces --- Shipping city Condition key: Checks whether the shipping city matches your specified value(s). Operators: Is one of, Is not any of, Text contains, Text does not contain Use cases: Show local pickup for orders destined to your city Hide a specific shipping method for cities with known delivery issues --- Shipping postcode Condition key: Checks the shipping postcode/ZIP code. All spaces are automatically removed before matching, so and are treated identically. Operators: Is one of, Is not any of, Text contains, Text does not contain Use cases: Restrict COD or local delivery to specific postcode areas Hide express shipping for postcodes in remote areas Apply surcharges via delivery customization for certain postcodes Example: Show local delivery only for London postcodes: Condition: Shipping postcode → Text contains → , , , , , , --- First name Condition key: Checks the first name on the shipping address. Operators: Is one of, Is not any of, Text contains, Text does not contain, Is empty, Is not empty Use cases: Rarely used directly, but can support custom B2B flows where names carry specific markers --- Last name Condition key: Checks the last name on the shipping address. Operators: Is one of, Is not any of, Text contains, Text does not contain, Is empty, Is not empty --- Address line 1 Condition key: Checks the first line of the shipping address. Operators: Is one of, Is not any of, Text contains, Text does not contain, Is empty, Is not empty --- Address line 2 Condition key: Checks the second line of the shipping address. This field may not be visible in all checkout configurations. Operators: Is one of, Is not any of, Text contains, Text does not contain, Is empty, Is not empty --- Company Condition key: Checks whether the company name field at checkout contains a value. Useful for distinguishing B2B from B2C orders when not on Shopify Plus. Operators: Is one of, Is not any of, Text contains, Text does not contain, Is empty, Is not empty Use cases: Show invoice payment only when a company name is entered Apply B2B pricing logic based on company presence --- Phone Condition key: Checks the phone number entered on the shipping address. Operators: Is one of, Is not any of, Text contains, Text does not contain, Is empty, Is not empty Use cases: Apply rules based on country calling code prefix (e.g. "+420" for Czech Republic) --- Shipping method name Condition key: Checks the title of the shipping method the customer has selected at checkout. Operators: Is one of, Is not any of, Text contains, Text does not contain Use cases: Show a "Pay on Delivery" option only when the customer selects "Local Delivery" Hide bank transfer when an express shipping option is selected --- Shipping type Condition key: Checks the Shopify-defined shipping type of the selected method. Operators: Is one of, Is not any of Common values: , , Use cases: Show COD only when the customer selects local delivery or pickup --- See also --- # Special Conditions URL: https://docs.payflow.appfleece.com/conditions/special Special conditions cover cases that don't fit neatly into cart, address, or customer categories. Always Condition key: Applies the rule on every checkout — no filtering. Select Always under When the following conditions are met when the action should run unconditionally. Common patterns: Reorder payment methods on every checkout — put your preferred method first without any cart or address filter. See Reorder payment methods. Rename a payment method store-wide — change a confusing gateway label for all shoppers. See Rename a payment method. Reorder shipping methods on every checkout — pair Always with manual reorder rows in a Delivery Customization. You can also combine Always with other actions in the same customization when every action should apply unconditionally — for example, reorder two payment methods and rename a third, all on every checkout. --- Payment method Condition key: Checks the payment method the customer has selected at checkout. This condition is only available in Payment Instructions — it does not appear in Payment Customization or Delivery Customization. Operators: Is one of, Is not any of, Text contains, Text does not contain Use cases: Show bank transfer details only when the customer selects Bank Deposit Display COD terms only when Cash on Delivery is the chosen method Show a QR code instruction for a specific payment provider Example: Display Czech bank transfer instructions when the customer picks bank deposit: Condition: Payment method → Is one of → Optionally combine with Shipping country → Is one of → to limit by region --- See also --- # FAQ URL: https://docs.payflow.appfleece.com/faq Browse the questions below or use the sidebar. For platform constraints and workarounds in depth, see Limitations. --- # Why does Payflow keep the cheapest shipping option first? URL: https://docs.payflow.appfleece.com/faq/cheapest-shipping-first Shopify checkout expects the cheapest eligible normal shipping option to remain the default first option. Payflow keeps the cheapest rates first so delivery reordering stays aligned with Shopify checkout behavior. You can still use Delivery Customization to: hide shipping rates rename shipping rates move other rates higher or lower group rates by checkout title keywords group rates by actual checkout price, such as free shipping () or a specific price When you use manual ordering, Payflow keeps the cheapest eligible shipping rates first and applies your ordering to the rest of the list where Shopify allows it. If multiple rates share the same lowest price, Payflow keeps those tied cheapest rates ahead of paid methods. You can still order the tied cheapest methods relative to each other. See Delivery Customization for setup examples. --- # COD fee not showing, still showing after removal, or wrong amount? URL: https://docs.payflow.appfleece.com/faq/cod-fee-not-working Fee not showing at checkout 1. COD Setup is active — open Payflow → Cash on Delivery Setup and confirm the status is Active. 2. Keyword match — the shipping rate name must include the keyword configured in COD Setup (e.g. "COD"). If the rate is called "Standard Shipping + COD fee" and the keyword is , it will match. If the keyword doesn't appear in the rate title, Payflow won't link the rate to the COD payment method. 3. Correct shipping zone — the rate must exist in a zone that covers the customer's address. Open Shopify admin → Settings → Shipping and delivery and verify the zone and rate. 4. Rate not hidden by another rule — check your Delivery Customizations for rules that might hide the COD shipping rate. Fee still showing after removal 1. Disable COD Setup — open Payflow → Cash on Delivery Setup → set to Inactive → Save. Disabling the restriction alone is not enough if the core setup is still active. 2. Delete or rename the shipping rate — the COD shipping rate in Shopify is a real shipping option. If it still exists with the COD keyword in its name, it may still appear. Either delete it or rename it so it no longer contains the keyword. 3. Shopify shipping cache — Shopify can briefly cache shipping rates. Change the shipping address at checkout or wait a few minutes, then reload. Fee amount is wrong Tiered rates — if you use Order amount tiers on the shipping rate, make sure each tier's Minimum, Maximum, and Price are correct. See Tiered fees by order amount. Multiple rates — if you have more than one shipping rate with the COD keyword, the customer sees all of them. Remove duplicates or rename rates so only the intended one matches. All COD bands show at once (wrong fee for cart total) You created several COD shipping rates (one per cart-value band) but only linked them in Cash on Delivery Setup. Fix — add Delivery Customization hide rules with Subtotal amount so only the COD rate for the current cart band stays visible. See COD fee with weight-based shipping. Check — each rule hides the other band labels (Contains text), not the band you want to show. Only the COD fee shows — weight shipping is missing This usually means the COD rate uses Order amount tiers with only the COD surcharge, while your Weight rate is a separate option. Expected behaviour — COD customers must pick a COD shipping rate whose Price already includes weight shipping + COD fee. Prepaid customers pick the Weight rate without COD in the name. Fix (weight + cart total) — duplicate Weight tiers per cart band (prepaid price + flat COD fee on each row) and hide the wrong bands by subtotal. See COD fee with weight-based shipping. Fix (order-amount variant) — one COD rate per weight band with Order amount cart tiers inside each rate, plus Total weight hide rules. Related Cash on Delivery (COD) Setup COD fee with weight-based shipping Tiered fees by order amount Percentage fee on the order? --- # Why are credit card methods different in the US and Canada? URL: https://docs.payflow.appfleece.com/faq/credit-card-methods-us-canada On US and Canada stores, customizing credit card methods (e.g. Visa, Mastercard as separate entries) requires Shopify Plus. Other payment methods can be customized on all plans. This behavior comes from Shopify’s checkout and Payments platform, not from Payflow. Payflow runs within the rules Shopify exposes for each plan and region. --- # Does Payflow apply to draft orders? URL: https://docs.payflow.appfleece.com/faq/draft-orders Yes when the customer completes checkout from a draft order link. It does not apply when a merchant builds an order manually inside Shopify admin — that flow does not run Shopify Functions. --- # Why did hiding PayPal from Express checkout also remove it from the payment list? URL: https://docs.payflow.appfleece.com/faq/express-checkout-behavior Shop Pay, PayPal, Apple Pay, and Google Pay appear in two places at checkout: the Express checkout row (top of the page) and the payment method list (after the address step). When you hide one of these methods, Payflow offers three modes: | Mode | What happens | Plan | |---|---|---| | Hide completely | Removed from Express and the payment list | All plans | | Hide from Express checkout only | Removed from Express, stays in payment list | | | Hide from payment list only | Stays in Express, removed from payment list | | Common pitfall On non-Plus stores, the only available option is Hide completely. If you hide PayPal intending to remove it from Express only, it disappears from the payment list as well — this is a Shopify platform restriction, not a Payflow limitation. If PayPal vanished from your payment list after you hid it from accelerated checkout, check whether your store is on Shopify Plus. If not, you cannot selectively hide — it's all or nothing. What you can do without Plus Hide completely — removes the method everywhere. Do not hide — keep the method in both places. There is no workaround for selective Express hiding on non-Plus plans; Shopify does not expose that capability to Functions on standard plans. See Limitations — Express checkout methods for the full details. --- # Does Payflow take a commission on COD fees or orders? URL: https://docs.payflow.appfleece.com/faq/payflow-pricing No. Payflow does not take any commission, percentage, or per-order fee from your checkout — including COD fees. The COD fee is implemented as a Shopify shipping rate that you create in your own Shopify admin → Settings → Shipping and delivery. Shopify collects the payment and deposits it into your account. Payflow only controls when that rate is visible at checkout; it never touches the money. What the plans include On Free, only one customization can be active at a time, and that limit is shared: it applies whether the rule is Cash on Delivery Setup, a Payment Customization, or a Delivery Customization — not one of each. Pro removes that cap so you can run unlimited active customizations. | | Free | Pro | |---|---|---| | Concurrent active customizations | 1 (shared across COD Setup, Payment, and Delivery) | Unlimited | | Cash on Delivery Setup (fee on a shipping rate) | ✓ | ✓ | | Payment Customizations (hide / rename / reorder) | ✓ | ✓ | | Delivery Customizations (hide / rename / reorder / sort) | ✓ | ✓ | | COD Restrictions (hide COD by conditions) | — | Included | | Commission on fees or orders | None | None | For current pricing, see the Payflow listing on the Shopify App Store. --- # How can I offer a discount for a specific payment method (e.g. prepaid)? URL: https://docs.payflow.appfleece.com/faq/payment-method-discounts Why this isn't possible automatically Shopify evaluates discounts before the customer picks a payment method. When the discount function runs, no payment method has been selected yet — so there is no way for Payflow (or any Shopify app) to grant "5% off only when they choose prepaid" as an automatic checkout action. This is a Shopify platform constraint, not a Payflow limitation. Workaround — discount code + hide rules The practical approach: create a discount code customers enter when they want the deal, then use Payflow to hide payment methods that should not go with that offer. In Shopify admin → Discounts, create a discount code (e.g. ) for 5% off. In Payflow, Create customization → Hide payment methods. Add Discount percentage → Is → (matching the 5% value of the code). Hide the methods that should not pair with the deal (e.g. Pre-defined → Cash on Delivery ). Active, Save, and test: enter the code at checkout — COD disappears; remove the code — COD returns. Customers enter the code when they intend to pay the discounted way; the payment list then matches the deal. For why this ordering exists and more patterns (including automatic discounts and Shopify Plus extensions), see Limitations — payment-method-specific discounts. Related --- # Can I charge a percentage fee on the order (e.g. 3% COD)? URL: https://docs.payflow.appfleece.com/faq/percentage-fee-cod Not as a true percentage line item. Fees tied to cart total must use flat amounts, typically on a shipping rate with order-amount tiers. Payflow’s percentage-to-tiers calculator (in the Help center and Cash on Delivery (COD) Setup) helps you build tier rows that approximate a target percentage — for most stores that is enough in practice. Payflow Pro unlocks unlimited active Payflow customizations when you outgrow the free allowance. Heavier setups (for example several payment, delivery, checkout-rule, payment-instruction, or COD workflows for different checkout paths) need those extra slots. --- # Can I rename Shop Pay, PayPal, or Apple Pay? URL: https://docs.payflow.appfleece.com/faq/rename-branded-payment-methods Not the display name. Methods that show a brand logo at checkout cannot be renamed (a Shopify platform rule). You can still hide or reorder them. Payflow warns you in the editor if you try to rename one. --- # My rule isn't working — what should I check? URL: https://docs.payflow.appfleece.com/faq/rule-not-working Work through this checklist whenever a customization does not behave as expected. 1. Is the customization Active? Open the customization in Payflow. The status must be Active — Testing and Inactive will not run on live checkouts. If you just created or edited the rule, make sure you pressed Save after switching the status. 2. Is the targeting correct? Payflow offers three targeting modes for payment and shipping methods: | Mode | Matches when… | |---|---| | Pre-defined | Exact internal match (best for well-known methods like Cash on Delivery) | | Contains text | The checkout label includes your substring (case-insensitive) | | Equals to | The checkout label is an exact match (case-sensitive, including spaces) | 3. Does the method display only a logo? Payment methods that show a brand logo at checkout (Shop Pay, PayPal, Apple Pay, Google Pay, Amazon Pay, and others) cannot be renamed. They can still be hidden or reordered. If your rename rule targets one of these, it will silently do nothing. See Limitations. 4. Are conditions evaluated at the right time? Some conditions depend on checkout progress: Shipping country can fall back to Shopify's checkout localization country before the full address is entered, then uses the entered shipping country once available. Address-specific conditions (postcode, city, province, street, phone) only fire after the customer enters those address details. The payment or delivery list may look unchanged until then. Shipping method name conditions fire after the customer selects a shipping rate. Customer conditions that require login (lifetime spend, order count, metafields) return empty for guest checkouts. If the rule "works sometimes," check whether the condition's prerequisite is met in your test scenario. 5. Are there conflicting rules? Multiple customizations can target the same method. For example, one rule may hide COD while another's conditions keep it visible. Check your full list of active customizations for overlaps. Other Shopify apps can also create Payment and Delivery Customizations that share the same 25-rule limit. Open Shopify admin → Settings → Payments (or Shipping and delivery) and look for customizations from other apps. 6. Test in a real checkout The Shopify admin order editor and preview modes do not run Shopify Functions. Always test by going through a real checkout on your storefront (you can use a test payment gateway or Shopify's Bogus Gateway). Still stuck? If you've checked every item above and the rule still doesn't apply, contact us at help@appfleece.com or via the in-app chat — include a screenshot of the customization and the checkout where it fails. Related --- # Can I target shipping rates by their actual price? URL: https://docs.payflow.appfleece.com/faq/shipping-rate-price-targeting Yes. Delivery Customization can target the actual checkout price Shopify provides for each shipping rate, not only the rate name shoppers see. This is useful when the rate amount is more reliable than the title: hide free shipping below an order threshold rename rates that are actually free, even if the title does not say "free" move rates priced at a specific amount group economy, premium, or freight rates by price bands Available price targets | Target | Use it for | |---|---| | Free shipping (price is 0) | Rates whose checkout price is exactly | | Price equals | A specific shipping amount | | Price is less than or equal to | Low-cost or economy bands | | Price is greater than or equal to | Expensive express, premium, or freight rates | | Price is between | A bounded price range | Example: hide free shipping below a threshold Use Hide with: shipping target: Free shipping (price is 0) condition: Subtotal amount is at most your threshold, such as That targets rates that are actually free at checkout. It does not depend on the rate name containing "free". Preview behavior Price targets are evaluated at checkout. The admin preview can list your stored shipping rate names, but Shopify does not provide live checkout quote prices there, so price rows are labeled as checkout-price rules. For setup steps, see Delivery Customization. --- # How many rules can I save? URL: https://docs.payflow.appfleece.com/faq/shopify-rule-limits Shopify allows 25 active and 25 testing rules per customization type. In Payflow, that includes Payment customizations, Delivery customizations, Checkout rules, and Payment instructions where Shopify exposes the corresponding Function type. Rules from other apps count toward the same caps. These caps are enforced by Shopify, not by Payflow — we cannot raise them for your store. --- # Getting Started URL: https://docs.payflow.appfleece.com/getting-started Everything you need to get Payflow running on your store. Ready to dive deeper? Explore the Guides for step-by-step tutorials on each feature. --- # Quick Start: Install Payflow & Create Your First Rule URL: https://docs.payflow.appfleece.com/getting-started/quickstart This guide walks you through installing Payflow and creating your first customization rule in under 5 minutes. 1. Install Payflow Go to the Payflow listing on the Shopify App Store and click Add app. Approve the permissions when prompted. 2. Open Payflow in your Shopify admin After installation, Payflow appears under Apps in your Shopify admin. Click it to open the dashboard. 3. Create your first customization Click Create customization on the dashboard. Choose a customization type: Payment Customization — hide, rename, or reorder payment methods Delivery Customization — hide, rename, or reorder shipping methods Checkout Rules — block checkout with a custom message when conditions match Cash on Delivery Setup — dedicated tool for adding a flat COD fee at checkout Payment Instructions — show payment-specific instructions at checkout and on the Thank You page Give your customization a descriptive name (e.g. "Hide COD for orders over £200"). 4. Add conditions Under When the following conditions are met, pick a condition type (e.g. Shipping country, Total amount, Customer tag), choose an operator, and enter the value(s). If the rule should apply on every checkout, select Always — do not leave the conditions block empty. + Add AND condition — another requirement in the same branch (all must match) + Add OR group — a separate branch (rule runs when any branch matches) See Conditions for the full list, and Condition Sets for which conditions can be combined. 5. Target the payment or shipping method Choose which method(s) the rule applies to. You can pick from the Pre-defined list (auto-populated from your store's active methods) or use Contains to match by partial name. See Payment Customization or Delivery Customization for full targeting details. 6. Save and test Click Save. Payflow activates the Shopify Function automatically — your checkout reflects the new rule right away. Next steps --- # Contact Support & Share Function Logs URL: https://docs.payflow.appfleece.com/getting-started/support Our customer support is available via the in-app chat widget. Support is generally available only during weekdays from 9 to 5 PM UK time. To help speed your query, please send as much relevant information as possible, including screenshots. If you wish to contact us via email, please send your questions to help@appfleece.com. If you have a support request, we might ask for permission to access your store or to share function logs with us. Store access We will send you a request for partner access. You can accept it in either of these ways: Email — Shopify sends a message to your store's contact email with a link to grant access. Users and permissions — In Shopify admin, go to Settings → Users and permissions. The request appears under our partner organization name, Appfleece. Share function logs 1. Go to Settings - Apps and sales channels and open Payflow 2. Scroll down and click on Share logs under Share function logs --- # Guides URL: https://docs.payflow.appfleece.com/guides Step-by-step guides that walk you through each Payflow feature in detail. If you are new, start with the Quick Start. --- # Cash on Delivery (COD) Setup URL: https://docs.payflow.appfleece.com/guides/cash-on-delivery Cash on Delivery (COD) is a popular payment option in many markets — customers pay when they receive their order. Payflow lets you offer COD with an optional fee and control exactly when it appears at checkout. How Payflow implements COD fees Shopify does not natively support adding a fee to a payment method. Payflow works around this using a shipping-rate approach: 1. You create a separate shipping rate in Shopify that includes the COD fee (e.g. "Cash on Delivery (+ 2 USD)"). 2. Payflow shows or hides the COD payment method based on which shipping rate the customer selects — if the customer picks the COD shipping rate, the COD payment option appears; otherwise it stays hidden. 3. The COD fee is collected as part of the shipping cost — no workarounds or post-purchase edits needed. Step-by-step setup Step 1: Create shipping rates and a COD payment method in Shopify Before configuring Payflow, complete these steps in your Shopify admin: In Shopify admin → Settings → Shipping and delivery, add at least two shipping options in each relevant zone (for example one zone per country): Standard shipping (or similar) — your normal prepaid rate, without a COD fee baked in. Cash on Delivery — a separate rate that includes your COD collection fee in the shipping price. The name should include a recognizable keyword (e.g. "COD", "Cash on Delivery") that you do not use on prepaid rates, so Payflow can match it. You can use a flat rate for COD, or open Rate type → Order amount to add tiers (for example a fixed COD fee for orders up to a subtotal, then a lower or free COD price above that). Percentage-to-tiers calculator If you want tiered flat fees that approximate a percentage of the order, use Payflow’s Percentage-to-tiers calculator in the Help center or Cash on Delivery Setup (fee %, max order value, optional base shipping fee, tier count). The same pattern also applies to prepaid orders and non-COD payment methods when you model an extra charge as shipping — see the dedicated guide Tiered fees by order amount. Under Settings → Payments → Manual payment methods, add Cash on Delivery (COD). Shopify's built-in manual method is recommended — Payflow detects it and pre-selects it in COD Setup. Step 2: Use the built-in COD Setup tool In Payflow, go to Create customization → Cash on Delivery Setup. Payflow scans your store's shipping methods for common COD keywords across multiple languages and shows any matches automatically. You can also add keywords manually if a shipping method is not detected. Click + Add all detected methods to add every match at once, or pick individual methods with + Add. After adding, the keywords appear as tags. You can also type additional keywords manually in the input field. If you used Shopify's built-in Cash on Delivery (COD) from Step 1, Payflow detects it and pre-selects Cash on delivery method name automatically. Set the status to Active and click Save. COD Restrictions With Payflow Pro, Cash on Delivery Setup includes COD Restrictions: grouped checkboxes for extra rules that hide COD when conditions match. They run at checkout automatically — you do not build separate customizations for each rule. | Category | Sub-rules (examples) | |---|---| | Discounts | Hide COD when any discount is active — discount codes (customer enters the code) usually give clearer checkout than automatic discounts, which can hide COD for everyone before other methods are ever shown | | Cart | Hide COD above/below limits for subtotal, item count, or total weight (kg) | | Location | Limit by market, country, postal/pin (comma list or patterns like ), or state/province | | Products | Hide COD if a product or tag is in the cart | | Customer | Limit by customer tag or hide for guest checkout | COD fee by region If your store ships to multiple countries with different COD fees, set up a separate shipping rate per shipping zone in Shopify admin → Settings → Shipping and delivery — each zone can have its own COD rate with a different fee. As long as each rate name contains a recognizable COD keyword, a single COD Setup in Payflow covers all of them. Just add all keywords and Payflow matches them automatically. Related pages --- # Checkout Rules URL: https://docs.payflow.appfleece.com/guides/checkout-rules Checkout Rules let you stop checkout with a clear customer-facing message when a cart should not be allowed to proceed. They use the same Payflow condition builder as Payment and Delivery Customizations, but the action is a validation error instead of hiding, renaming, or reordering a method. Use Checkout Rules for cases like blocked postcodes, required company details for B2B orders, quantity limits, PO box restrictions, minimum subtotals, or high-value order checks. Create a Checkout Rule In Payflow, click Create customization and select Checkout Rule. Give the rule a clear name, such as "Block PO boxes" or "Company required for invoice orders". Add conditions under When the following conditions are met. Use + Add AND condition for requirements in the same branch, or + Add OR group for alternative branches. Write the message customers should see at checkout when the rule blocks progress. Optional: add localized messages for languages your store supports. Set the rule to Active or Testing, then click Save. When the message appears Checkout Rules run through Shopify's checkout validation system. Payflow can surface validation during checkout interactions and at checkout completion, depending on the rule and the data Shopify has available at that moment. Localized messages If your store has multiple checkout languages, add translations for the validation message. Payflow chooses the message from the checkout language when possible, falls back to the base language, and then falls back to the default message. Keep messages short and actionable. For example: Testing Use Testing status before exposing a new blocker to customers. Go through a real storefront checkout and make sure the rule blocks only the intended carts. If your rule depends on address details, fill in the full address while testing. Related --- # COD Fee with Weight-Based Shipping URL: https://docs.payflow.appfleece.com/guides/cod-fee-with-weight-based-shipping Many carriers charge by package weight, while COD collection fees often depend on order value (cart subtotal). Shopify lets each shipping rate use one rate type — Weight or Order amount — not both on the same rate. This guide shows a practical pattern used by merchants with weight-based shipping profiles: keep your normal Weight rate, add several parallel COD rates (one per fee band) with the COD surcharge baked into every weight tier, then use Payflow to show only the COD rate that matches the cart subtotal. Pair that with Cash on Delivery Setup so COD payment appears only on those rates. What you are building At checkout the customer typically sees: | What they see | How it is priced in Shopify | When it appears | |---------------|------------------------------|-----------------| | Standard home delivery (prepaid) | Weight tiers — your existing carrier table | Always (unless you hide it with other rules) | | Home delivery \| COD band A | Weight tiers — same breakpoints, each price + fee A | Only when cart subtotal is in band A (Payflow) | | Home delivery \| COD band B | Weight tiers — same breakpoints, each price + fee B | Only when cart subtotal is in band B (Payflow) | | Home delivery \| COD band C | Weight tiers — same breakpoints, each price + fee C | Only when cart subtotal is in band C (Payflow) | Payflow then: 1. Cash on Delivery Setup — shows COD payment only when the customer selects a rate whose name matches your COD keyword (e.g. , ). 2. Three Delivery Customization hide rules — each uses Subtotal amount so only one COD band is visible for the current cart. Payflow does not calculate weight or cart total at checkout — you enter final prices in Shopify once per band. Example fee bands (illustration) A merchant ships with MPL home delivery (weight tiers) and charges a flat COD collection fee by order value: | Cart subtotal (store currency) | COD fee added on top of weight shipping | |----------------------------------|----------------------------------------| | 0 – 20,000 Ft | +274 Ft | | 20,001 – 50,000 Ft | +377 Ft | | 50,001 – 100,000 Ft | +649 Ft | They create three COD shipping rates in Shopify (e.g. , , ), each with Weight tiers. For the 0–2 kg row, if the prepaid rate is 1,450 Ft, the three COD rates use 1,724, 1,827, and 2,099 Ft — the same +274 / +377 / +649 on every weight row. Before you start Gather: 1. Existing weight-based shipping in Shopify (your prepaid carrier rate and its tiers). 2. COD fee by cart subtotal — flat amounts per band (not percentages). 3. A naming scheme so Payflow can target rates: - Prepaid rate: no COD keyword in the title. - Each COD band: same carrier name + a shared COD keyword + a unique band label (e.g. ). Step 1 — Add one COD rate per cart-value band (duplicate weight tiers) In Shopify admin → Settings → Shipping and delivery, for each COD fee band add a new shipping rate in the same zone as your prepaid carrier rate: Add rate → name it clearly, e.g. . Include your COD keyword and a band label (, , …) that other bands do not share. Set Rate type to Weight (same as prepaid). Copy the same weight breakpoints as the prepaid rate. In every Price cell, enter prepaid price + COD fee for this band (same surcharge on every row). Repeat for the next band (, , …). Save the zone. Price formula Example for the 0–2 kg row: | Rate | Calculation | Price | | :--- | :--- | ---: | | Prepaid | — | 1,450 Ft | | COD band 1 (cart 0–20,000) | 1,450 + 274 | 1,724 Ft | | COD band 2 (cart 20,001–50,000) | 1,450 + 377 | 1,827 Ft | | COD band 3 (cart 50,001–100,000) | 1,450 + 649 | 2,099 Ft | Apply the same +274 / +377 / +649 (or your real fees) on every weight tier. Shopify stores fixed numbers — they do not auto-update if you change the formula later. Step 2 — Link COD shipping to COD payment (Payflow) Follow Cash on Delivery (COD) Setup: Create customization → Cash on Delivery Setup. Add a keyword that appears in all COD band names (e.g. , ). Confirm the Cash on Delivery manual payment method. Set Active → Save. The preview should list all COD variants (e.g. three of six shipping methods). Customers still see every band until you add the hide rules in Step 3. Step 3 — Show only the COD rate for this cart subtotal Without this step, checkout lists every COD band at once. Create one Delivery Customization per band that hides the other COD variants using Subtotal amount (before shipping and taxes). Pattern (three bands) | Rule name (example) | Subtotal conditions (AND) | Hide rates contains text | |---------------------|----------------------------|------------------------------| | Show COD 1 only | ≥ 0 and ≤ 20,000 | , | | Show COD 2 only | ≥ 20,001 and ≤ 50,000 | , | | Show COD 3 only | ≥ 50,001 and ≤ 100,000 | , | Use Contains text strings that match only the bands you want to hide (see Delivery Customization — hide). Create customization → Hide shipping methods (repeat for each band). Add two subtotal conditions with AND (minimum and maximum for that band). Under Hide, add Contains text rows for the other COD band labels. Set Active → Save. Confirm all three rules appear under Shipping methods in Payflow. For bands 2 and 3, duplicate the same structure with the subtotal ranges and hide targets from the table above. You do not need separate screenshots for each — only the subtotal range and which Contains text targets change. Step 4 — Test at checkout Open a real checkout (not only the admin preview). Prepaid path — select the standard Weight rate → COD payment should not appear. COD path — select the visible COD rate → only Cash on Delivery payment should remain. Change cart subtotal across your bands (e.g. 15,000 → 25,000 → 60,000) and confirm a different COD shipping line appears with the matching price. Change cart weight across bands and confirm the shipping price updates within the same visible COD option. Maintenance tips COD fee or weight price change — update the Price cells in every affected COD rate in Shopify; Payflow rules do not store amounts. New cart band — add a new COD rate (full weight table) and a new hide rule; update existing rules to hide the new label. New weight band — add a row to prepaid and to each COD copy, using the same surcharge per cart band. High order limits — use COD Restrictions or add subtotal hide rules above your maximum. Alternative: Order amount on COD rates If you have few weight bands, you can instead create one COD rate per weight band with Rate type → Order amount (cart tiers inside each rate) and use Payflow Total weight rules to hide the wrong weight band. That avoids duplicating full weight tables per cart band but means more cells in Order amount mode. See the tiered fees page for order-amount tier editing. When this pattern is not a fit | Situation | Better approach | |-----------|------------------| | COD fee is a single flat amount on all orders | One COD rate with one price — see COD Setup | | COD fee scales only with cart total, shipping is flat | One COD rate, Order amount tiers only — see Tiered fees | | You need live percentage math | Not available in Shopify shipping profiles; see Percentage fee FAQ | | Many carriers × many weight × many cart bands | Consider fewer bands or a shipping app with formulas | Related pages --- # Delivery Customization URL: https://docs.payflow.appfleece.com/guides/delivery-customization Delivery Customization controls which shipping rates appear at checkout, their labels, and their order. Like Payment Customization, you enable actions in the sidebar (Allow the following actions), build conditions under When the following conditions are met, and use the + Add AND condition and + Add OR group buttons below the conditions to grow your logic. The preview shows how rates are affected. What a Delivery Customization includes Each Delivery Customization includes: One or more enabled actions — hide, rename, or re-order shipping methods, configured after you tick the relevant options in the sidebar Optional conditions — click + Add AND condition to add another row in the same branch (all must match); click + Add OR group to add another branch (the rule runs when any branch matches) One evaluation — when your conditions match, every enabled action runs together Payflow activates each customization as a native Shopify Function. Which conditions you can combine still depends on condition sets (Shopify Function input limits). See Condition Sets, including Set 6 — Combined. Create a Delivery Customization In Payflow, click Create customization and select Delivery Customization. Enter a descriptive name (e.g. "Hide Express outside UK"). In the sidebar under Allow the following actions, enable the actions you need, then configure targets in the main panel. Optionally add conditions under When the following conditions are met. Click + Add AND condition or + Add OR group below the conditions as needed. Review the preview against your shipping rate names (see Preview and matching shipping rates). Click Save. Hide a shipping method What it does Removes a shipping rate from the list customers see at checkout (for the checkout contexts where your rule applies). When to use Restrict express or same-day options to certain cities or postcodes Hide pickup or local delivery when the address is outside your service area Filter rates by name pattern when you have several similar carrier options How to target | Mode | When to use | |---|---| | Store rates | Choose from the shipping rates defined in Shopify admin → Settings → Shipping and delivery — not a separate Payflow list. You pick the rate by name from your store configuration. If the same name is used in more than one zone or profile, Payflow shows zone context and Configure zones so you can target the right instance or limit the rule to specific regions. | | Text contains | Hide any rate whose checkout title contains your text (case-insensitive). Same idea as Payment Customization — good for patterns (e.g. every rate with "DHL"). | | Text does not contain | Hide rates whose titles do not contain your text — a show-only style filter. Same behaviour as Payment Customization. | | Equals to | Hide only when the rate title equals your string exactly. Same behaviour as Payment Customization. | | Free shipping (price is 0) | Hide rates whose actual checkout price is , even if the rate title does not include "free". | | Price equals / at most / at least / between | Hide rates by the actual checkout amount Shopify provides for that rate. Useful for price bands such as free, economy, premium, or freight rates. | When a rate is a normal row in Shopify admin → Settings → Shipping and delivery, picking it under Store rates is usually the least ambiguous option: Payflow uses the same names you saved, with disambiguation when the same title appears in more than one zone. Under Hide and Rename when you use Select from store rates, Payflow loads your Shopify rates so you can search, multi-select, and add more with + Add shipping method. When a rate exists in more than one zone, you'll see a zone count (for example 2 zones) and region labels; use Configure zones if you want the action to apply only in some of those regions — not everywhere that rate name appears. (Reorder does not use Select from store rates; see Reorder shipping methods.) In Configure zones, choose All zones to affect every place that rate is offered, or Specific zones only to limit the rule — for example hide Standard international in the EU zone but leave it available in your International zone. The dialog summarizes which countries are included before you save. Rename a shipping method What it does Changes the customer-facing name of a shipping rate at checkout. When to use Translate rate names for a market or Shopify Market Replace internal codes ("STDGROUNDV2") with friendly copy Clarify delivery expectations ("Standard — 3 to 5 days") How to target Same modes as Hide: Store rates, Text contains, Text does not contain, Equals to, and price-based targets such as Free shipping (price is 0) or Price between. Dynamic rates follow the same rules: match the checkout title when the name is reliable, or match the actual checkout price when the amount is the reliable signal. You can scope a rename with Shipping country, Shopify Market, Checkout language, or other conditions — whichever matches how you segment customers. Reorder shipping methods What it does Changes the order of shipping rates in the checkout list, or sorts the whole list by price. When to use Surface your preferred default option first Move premium or slow options lower without removing them Keep preferred shipping groups near the top while preserving Shopify's cheapest eligible default Options Move to top — first in the list Move to bottom — last in the list Move to position — fixed index (1 = first) Manual — build ordered groups with Contains text, Text does not contain, Equals to, or price targets such as Free shipping (price is 0) and Price equals (no Select from store rates); anything that does not match a row is collected under All other shipping methods Choose Manual. Add one row per group and set each row to Contains text, Text does not contain, Equals to, or a price target so matching rates are grouped together, then drag rows to set priority — anything that does not match a row is collected under All other shipping methods. Typical patterns: put Cash on delivery (or a carrier keyword) near the top, move all free rates together, then everything else; repeat for more groups if needed. Preview and matching shipping rates The preview panel shows how your actions apply to shipping rate names before you save. It mirrors what customers see once rates are resolved for a cart. Store rates targets rates from Shopify admin → Settings → Shipping and delivery, using the configured names. Used for Hide and Rename only — not for Reorder → Manual. Text contains, Text does not contain, and Equals to compare against the titles Shopify exposes at checkout. Price targets compare against the actual shipping rate amount Shopify exposes at checkout. Use Free shipping (price is 0) for rates that are actually free, or Price equals / at most / at least / between for specific price bands. : For text-based targeting, the preview lists which rate titles matched each keyword. A No match line may appear even though your store has dynamic rates that will match at checkout. If you still cannot target a rate reliably, contact us. Conditions and multiple actions Delivery Customization uses the same condition builder, AND/OR logic, condition sets, and multi-action rules as Payment Customization. For full details, see: Conditions — the + Add AND condition and + Add OR group buttons, condition categories, and condition sets Multiple actions in one customization — when to combine actions vs split into separate rules Related --- # Payment Customization URL: https://docs.payflow.appfleece.com/guides/payment-customization Payment Customization controls which payment methods appear at checkout, what they are called, and in what order they are listed. In the editor, you turn on Allow the following actions in the sidebar (hide, rename, re-order), build when the rule applies under When the following conditions are met, and use the preview on the right to scan what will happen before you save. Below your conditions, two buttons control how logic grows: + Add AND condition (another requirement in the same branch) and + Add OR group (a separate branch, OR’d with the others). What a Payment Customization includes Each Payment Customization includes: One or more enabled actions — in the sidebar, tick Hide payment methods, Rename payment methods, and/or Re-order payment methods, then configure each action’s targets (you can hide several methods in one rule with + Add payment method) Optional conditions — under When the following conditions are met, click + Add AND condition to add another row that must also be true, or + Add OR group to start a new branch (the rule runs when any branch matches) One evaluation — when your conditions match, every enabled action in the customization runs together Payflow activates each customization as a native Shopify Function, so rules are evaluated in real time before the checkout page renders. Not every mix of conditions can live in a single rule: Shopify Functions only receive certain checkout inputs per extension. Payflow maps your rule to the right extension and filters the condition picker accordingly. See Condition Sets for why sets exist and how Set 6 — Combined unlocks many cross-category combinations. Create a Payment Customization In Payflow, click Create customization and select Payment Customization. Enter a name that describes the rule (e.g. "Hide COD for orders over $200"). In the sidebar under Allow the following actions, enable Hide payment methods, Rename payment methods, and/or Re-order payment methods, then fill in each action’s settings in the main panel. Optionally add conditions under When the following conditions are met. To stack requirements, click + Add AND condition. To add an alternative branch, click + Add OR group (see Conditions). Check the preview in the sidebar, then click Save. Hide a payment method What it does Removes the payment method from checkout so customers cannot select it. When to use Remove methods that are not valid for certain countries, order values, or customer types Temporarily disable a provider without changing Shopify payment settings Narrow checkout to a subset of methods using Text does not contain (show-only style rules) How to target | Mode | When to use | |---|---| | Pre-defined | Pick from Payflow’s built-in list of 60+ providers (Stripe, PayPal, Klarna, etc.). Matching uses the provider name Shopify exposes. | | Text contains | Hide any method whose label contains your text (case-insensitive). Good for custom gateways or names not in the pre-defined list. | | Text does not contain | Hide methods that do not contain your text — useful as a filter to show only methods that match a keyword. | | Equals to | Hide only when the method name equals your text exactly (same idea as an exact string match). | When the method you care about appears in Payflow’s Pre-defined list, start there — matching follows the provider labels Shopify uses. If it is missing or the label at checkout looks different, fall back to Text contains or Equals to using the customer-visible name. Rename a payment method What it does Changes the customer-facing label of a payment method at checkout. When to use Translate or localize names for a market Add short instructions next to a method (e.g. bank transfer details in the title) Replace cryptic gateway labels with clearer text How to target Same modes as Hide: Pre-defined, Text contains, Text does not contain, Equals to. Shopify does not allow editing the display name for every payment surface: methods that render as brand logos in checkout keep their platform-controlled label even when you add a rename action in Payflow. For example, rename a method only for certain customers by adding a condition such as Shipping country → Is one of → Czechia. You can use Shopify Market or Checkout language instead if that better matches how you segment shoppers (same rename action; different condition). Reorder payment methods What it does Changes the position of a payment method in the checkout list. When to use Put the preferred or default method first Move niche methods lower without hiding them Align order with your checkout conversion goals Options Move to top — first in the list Move to bottom — last in the list Move to position — fixed index (1 = first) Re-order applies to the main payment method list. Some methods also surface in Shopify’s separate Express row; that row follows different rules than the standard list. Conditions Conditions sit under When the following conditions are met. They decide when your enabled sidebar actions run. The + Add AND condition and + Add OR group buttons These controls appear below your condition rows (labels include the leading +). + Add AND condition — click to add another condition in the same branch. Every row in that branch must be true (logical AND). Example: country is United Kingdom and total amount is at least £100. + Add OR group — click to start a new branch. The customization runs when any one branch matches (logical OR between branches). Inside each branch, use + Add AND condition again to stack more requirements. Example for “US or Canada, and order over $100”: build one branch (country US and amount ≥ 100), click + Add OR group, then build a second branch (country Canada and amount ≥ 100). Another pattern: hide a method when either the order is above a value or the shipment is outside a country — e.g. Total amount (including shipping and taxes) ≥ 200 USD in one branch, OR Shipping country Is not any of India in a second branch, then hide Cash on Delivery (COD) under Pre-defined. If you only need one chain of requirements, stay on a single branch and use + Add AND condition when you need more than one row. Condition sets (combined rules) Conditions belong to sets tied to Shopify Function inputs. Payflow only allows combinations that share a compatible set; the condition dropdown updates as you select conditions so invalid mixes never appear. Set 6 — Combined covers many popular cross-category mixes. Details: Condition Sets. Condition categories | Category | Examples | |---|---| | Cart & Order | Total amount, subtotal, weight, quantity, product, tag, collection | | Product Attributes | SKU, vendor, product type, metafields, gift card, line item price | | Shipping Address | Country, city, postcode, province, company, shipping method | | Customer | Tags, email, lifetime spend, order count, B2B, metafield | | Discounts | Discount amount, discount percentage | | Localization | Shopify Market, checkout language | Multiple actions in one customization Each customization has one block of conditions — When the following conditions are met. When that block matches a checkout, every action you enabled in the sidebar runs together. You cannot assign different conditions to different actions inside the same customization. You cannot combine opposite “when” logic in one rule. For example, you cannot do both of these in a single customization: Hide "Bank Transfer" when shipping country is not Czech Republic Rename "Bank Transfer" when country is Czech Republic Those need two separate customizations, each with its own conditions. When multiple actions do make sense: they share the same “when”. Examples: rename one method and re-order several for the same checkout scenario; when total amount is above a threshold, hide COD and hide another method; or, under one market condition, re-order two different methods. Each action can target a different payment method as long as they should all apply under the same evaluation. Supported payment providers Payflow includes 60+ predefined providers. Anything not listed can still be targeted with Text contains or Equals to. Edge cases (for example methods that cannot be renamed) are covered in Limitations. Related guides and use cases --- # Payment Instructions URL: https://docs.payflow.appfleece.com/guides/payment-instructions Payment Instructions show custom text below a chosen payment method during Shopify checkout. They are often used for bank transfer details, Cash on Delivery notes, or B2B wording. The main feature — payment QR codes on the Thank You page — is available for Czechia and Slovakia only. For CZ/SK stores, Payflow can show a payment QR code on the Thank You page after checkout when you use the options described below — so customers can scan to pay without retyping account numbers or references. QR code for bank transfers Set up QR payment instructions in Payflow Payflow prefills most fields for bank-transfer QR. What you must enter is your Czech account number and bank code or Slovak IBAN, plus a payment reference (variable symbol) — order name is recommended so it matches Shopify admin. Everything else is optional: tweak the instruction text, add Shipping country if you only want the rule in CZ/SK, or leave defaults as they are. In Payflow, click Create customization → Payment Instructions. Give it a clear name (e.g. “Bank transfer – CZ QR”). Under When the following conditions are met, target your bank deposit or bank transfer method — the label must match Shopify admin → Settings → Payments → Manual payment methods. Optional: add Shipping country → Is one of → Czech Republic, Slovakia (or separate rules per country) so this instruction only runs where Payflow can show a QR on the Thank You page. Under instruction content, turn on Dynamically add a payment QR code (exact wording may match your app version). Choose QR format: Czech (QR Platba / CZK) or Slovak (EUR IBAN). Enter account number and bank code (Czech) or IBAN (Slovakia), and set variable symbol / payment reference — order name is recommended. Optional: adjust the instruction text; use placeholders such as only when the editor lists them. Click Save in Payflow, then open the Thank you page in Shopify’s checkout editor (use Payflow’s link if it offers one, or go to Settings → Checkout → Customize). Under Apps → Payflow, add Payment instructions (Thank you) to the layout, place it where you want the payment copy and QR to appear, and click Save on the checkout. The Thank You QR only shows after this block is on the page. Place a test order with bank transfer selected and scan the QR in your banking app to confirm amount, account, and reference. After checkout: Thank You page When the customer pays with bank deposit / bank transfer and your instruction applies, the Thank You page (Czechia and Slovakia only) can show the same payment copy plus the QR code — as in the preview after step 8. Targeting a payment method At checkout, instructions show for the payment method you tie to the rule (e.g. Bank Deposit). You can match by name or choose a predefined provider when the app offers it. Instruction text For QR bank transfer, Payflow usually provides sensible default copy at checkout — you can leave it or shorten it. The editor may offer placeholders (amount, currency, account, reference, and similar) — use only tokens your Payflow UI lists. Generic examples (no QR): Conditions for Payment Instructions Payment Instructions support these condition types only: | Condition | Typical use | |---|---| | Always | Same instruction whenever the payment method matches | | Shipping country | Limit bank/QR instructions to Czech Republic, Slovakia, or other countries | | Payment method | Require a specific method (e.g. bank deposit) to be selected at checkout | Examples: Bank transfer + QR for CZ/SK: Payment method includes your bank method and Shipping country → Is one of → Czech Republic, Slovakia (if you want to restrict by country). Single global bank message: Payment method → your bank method, plus Always or Shipping country as needed. Multiple languages or markets Create one Payment Instruction per language or country group, each with its own conditions and text. Payflow chooses the matching instruction from the order/payment context; for country-specific variants, it uses the order shipping country when available and can fall back to currency when country data is unavailable. Bank transfer – Czech — Shipping country → Is one of → Czech Republic → Czech text (and Czech QR settings). Bank transfer – Slovakia — Shipping country → Is one of → Slovakia → Slovak text (and Slovak / IBAN QR settings). If the editor also offers Shopify Market for Payment Instructions, you can scope variants by market; see Localization conditions for how market differs from shipping country. Related guides --- # Tiered COD & Payment Fees by Order Amount URL: https://docs.payflow.appfleece.com/guides/tiered-fees-by-order-amount Shopify cannot charge shipping as a percentage of the cart — each tier stores a flat price only. Merchants still model “higher order value → higher fee” with Rate type → Order amount on a shipping rate. Checkout is usually shipping before payment: the rate the customer picks must line up with the payment methods they’re allowed to use. This page is split so you can jump to the path you need: Cash on Delivery — fee on a COD shipping rate; Cash on Delivery Setup links that rate to the COD payment method in one flow. Prepaid shipping uses Weight? — add cart-total COD fees via COD fee with weight-based shipping (duplicate weight COD rates + subtotal hide rules, or order-amount tiers per weight band). Other payment methods — same Shopify tiers, but Payflow needs two separate Payment Customizations (Payflow Pro), e.g. Bank Deposit or a gateway only when a specific rate is selected. Cash on Delivery (typical setup) For COD, the fee lives in a separate COD shipping rate (flat or tiered). Cash on Delivery Setup then links that rate to Shopify’s Cash on Delivery (COD) manual method — one guided flow, no manual Payment Customization. Order-amount tiers in Shopify Edit the COD (or any) shipping rate that should scale with cart value: Open Shopify admin → Settings → Shipping and delivery. Edit the rate (or create it). Use a unique title (include a COD keyword such as “COD” if this rate is for Cash on Delivery). Set Rate type to Order amount. Add tiers: Minimum, Maximum, and Price per band. Save. Percentage-to-tiers calculator (optional) Target effective rate as a percent (e.g. ). Top of the last tier — use your store currency. A fixed amount added to every tier (e.g. real postage). Use **** if the whole charge should come only from the percentage-style bands. How many order-amount bands to generate (e.g. 5 tiers). You get a Minimum, Maximum, and Fee (flat) table, a footer summary, Copy as spreadsheet, a short example callout, and How to apply these tiers — all in one screen. Open the tool from the Help center or while editing Cash on Delivery Setup. Copy each row’s Fee into Shopify’s Price for that tier, then Save. Tiers are fixed in the profile (not a live % each checkout) — see Limitations — No percentage-based fee on cart value. Link COD shipping to the COD payment method Finish in Cash on Delivery (COD) Setup: add keywords that match your COD rate name(s), confirm the COD manual payment method, set Active, and Save. Payflow shows COD only when the customer selects a matching shipping rate. --- Other payment methods (same tiers, different Payflow rules) Shopify: Same as above — one named rate per checkout path and optional Order amount tiers. Payflow: No dedicated wizard — you build two Payment Customizations yourself (Payflow Pro). Both use Hide payment methods only: 1. Hide your method when the customer has not chosen the rate where it should appear (Shipping method name → Is not any of → those rates). 2. Hide every other method when they have chosen that rate (Is one of the same rate(s) → Does not contain text with a substring unique to your method). Condition type: Shipping method name. Match the customer-visible title (use Contains text or Refresh rates if admin and checkout differ). Create the shipping rate in Shopify first. Hide the target method when shipping is wrong When: Shipping method name → Is not any of → the rate(s) where this payment method should appear. Hide: Pre-defined / Contains text / Equals to — same targeting modes as any hide rule. Example above: Razorpay is only allowed when Standard shipping is selected; this rule hides Razorpay whenever shipping is anything else. On that rate, hide everything except the target method When: Shipping method name → Is one of → the same rate(s). Hide: Does not contain text → a substring only your method includes (e.g. ). Example above: once they’re on Standard shipping, strip out cards, COD, and other gateways so only Razorpay remains. Why two rules? Without (1), your method could still show when the “wrong” shipping is selected. Without (2), cards/COD/other gateways could still show when the “right” shipping is selected. COD Setup does both ideas for COD in one place. For everything else, keep both customizations. In the screenshots, swap Standard shipping / Razorpay for your real rate name and checkout label. Related pages --- # Reference URL: https://docs.payflow.appfleece.com/reference Lookup tables, platform constraints, and advanced features. --- # Changelog URL: https://docs.payflow.appfleece.com/reference/changelog May 2026 Delivery customizations can now target shipping rates by their actual checkout price, including free rates (), exact amounts, thresholds, and ranges. The "hide free shipping below threshold" template now targets rates that are actually free instead of relying on the word "free" in the rate name. Delivery reorder now keeps all tied cheapest shipping rates ahead of paid rates. Merchants can still order methods within the tied cheapest group. Country-based payment and delivery conditions now fall back to Shopify's checkout localization country before the full shipping address is entered, so rules like "hide COD outside India" can evaluate correctly on first checkout load. Address-specific conditions such as city, ZIP/postcode, province, street, and phone still wait for the buyer's shipping details. Checkout rules now support richer validation flows, including earlier checkout interaction checks and localized customer-facing messages. Payment instructions now include stronger Thank You page block setup guidance and support country-specific instruction variants for bank-transfer and QR workflows. Cash on Delivery companion delivery setup no longer offers shipping city or minimum order-history restrictions, keeping the Shopify Function query within platform limits. Payment-side order-history conditions remain supported. Fixed Set 6 discount detection so discount amount and percentage conditions account for line-level discounts more accurately. To stay within Shopify Function query limits, Set 6 no longer queries collection membership. Apr 2026 Product variant can now be combined with Contains subscription and other Set 2 conditions in a single rule Mar 2026 Added new product attribute conditions: Variant SKU, Product vendor, Product type, Line item price, Line item compare-at price, Cart attribute Added Product metafield and Variant metafield conditions Added Contains gift card and Requires physical shipping conditions Added Customer metafield and B2B company name (Shopify Plus) conditions Jan 2026 Improved performance for stores with large product catalogs Added Discount amount and Discount percentage conditions with "has discount / no discount" operators Nov 2025 Introduced combined condition set allowing cross-type conditions in a single customization Added support for Product variant title text matching Added Buyer email and Phone (shipping address) conditions Sep 2025 Added support for Shopify Market condition Improved condition UI with clearer grouping by category 5 Aug 2024 Added Number of orders, Lifetime spend, Customer ID, Customer display name, Customer first name, and Customer last name conditions 2 Aug 2024 Fixed an issue where some discount conditions may not have been evaluated correctly 16 Jul 2024 Introduced a billing plan for new merchants (two customizations remain free) 3 Jun 2024 Fixed an issue where some product tag conditions may not have been evaluated correctly 11 Apr 2024 Improved the UX with new badges Added new discount conditions (amount off order, amount of products, combined) Added a condition to check if all products contain a tag Added Contains subscription condition 1 Apr 2024 Added Customer is B2B condition (Shopify Plus) 21 Mar 2024 Improved the UX of adding a Cash on Delivery fee 8 Mar 2024 Shipping methods can now be sorted automatically based on price 1 Mar 2024 Added conditions related to customer shipping address Due to the large number of conditions available, some conditions cannot be combined and require a separate customization — see Condition sets 26 Feb 2024 Payflow received a Built for Shopify status 🚀 20 Feb 2024 Improved the UX to align with the latest Shopify standards --- # Condition Sets URL: https://docs.payflow.appfleece.com/reference/condition-sets Payflow conditions are organised into six sets. Each set maps to a dedicated Shopify Function extension, and only conditions within the same set (or across overlapping sets) can be used together in a single rule. Why sets exist Shopify Functions have a fixed input schema — each function can only access a specific subset of checkout data. To support 50+ conditions, Payflow distributes them across multiple function extensions. The result is that some condition combinations are available and others are not. How combinations work Within a set: all conditions can be freely combined. Across sets: some conditions appear in multiple sets. As long as there is at least one set that contains all your selected conditions, the combination works. Set 6 (Combined) is a cross-set function that includes frequently requested multi-set conditions. If the combination you need is not available, contact support — new combinations can be added. --- Set 1 — Cart basics Core cart and address conditions that cover the most common use cases. | Category | Conditions | |---|---| | Cart | Total amount, Total weight, Total quantity, Product, Product variant, Product tag, Collection, Product variant title | | Shipping | Shipping country, Shipping method name, Shipping type, First name, Company | | Customer | Customer tag | --- Set 2 — Shipping & address Extended address, localization, and subscription conditions. | Category | Conditions | |---|---| | Cart | Subtotal amount, Contains subscription, Product variant | | Shipping | Shipping country, Province, Shipping city, Shipping postcode, Last name, Address line 1, Address line 2, Phone | | Customer | Customer B2B, Cart attribute B2B, B2B company name | | Localization | Shopify Market, Checkout language | --- Set 3 — Customer account Conditions that rely on customer account data. Most require the buyer to be logged in. | Category | Conditions | |---|---| | Customer | Buyer is authenticated, Buyer email, Lifetime spend, Total number of orders, Customer display name, Customer email, Customer first name, Customer last name, Customer ID, Customer metafield | --- Set 4 — Discounts Discount-based conditions. | Category | Conditions | |---|---| | Discounts | Discount amount, Discount percentage | --- Set 5 — Product attributes Detailed product-level conditions including metafields and line item data. | Category | Conditions | |---|---| | Product | Variant SKU, Product vendor, Product type, Is gift card, Requires shipping, Line item price, Compare-at price, Cart attribute, Line item property, Product metafield, Variant metafield | --- Set 6 — Combined A cross-set function that includes a curated selection of conditions from multiple sets, enabling combinations that would otherwise not be possible. | Category | Conditions | |---|---| | Cart | Total weight, Total quantity, Product, Product tag, Subtotal amount, Contains subscription | | Shipping | Shipping country, Province, Shipping postcode | | Customer | Buyer is authenticated, Customer tag | | Discounts | Discount amount, Discount percentage | | Product | Is gift card | | Localization | Shopify Market | --- Quick reference | Set | Internal ID | Primary focus | |---|---|---| | Set 1 | | Cart basics — totals, products, tags, country | | Set 2 | | Address details, localization, B2B | | Set 3 | | Customer account data | | Set 4 | | Discount amount and percentage | | Set 5 | | Product attributes, metafields, line items | | Set 6 | | Cross-set combinations | --- Related --- # All Conditions Reference URL: https://docs.payflow.appfleece.com/reference/conditions This page lists every condition available in Payflow. For detailed explanations and use cases, see the individual condition category pages. Cart & Order | Condition | Key | Operators | Details | |---|---|---|---| | Total amount | | ≥, ≤ | Total customer pays (incl. shipping + tax) | | Subtotal amount | | ≥, ≤ | Cart subtotal before shipping | | Total weight | | ≥, ≤ | Combined weight in kg | | Total quantity | | ≥, ≤, ==, != | Sum of all item quantities | | Product | | Is one of, Is not any of | Specific products in cart | | Product variant | | Is one of, Is not any of | Specific variants in cart | | Product tag | | Is one of, Is not any of, Tag contains text, Tag excludes text | Scope: any / all / no items | | Product tag – all items | | Is one of, Is not any of | Legacy — use instead | | Collection | | Is one of, Is not any of | Any item in collection | | Product variant title | | Is one of, Is not any of, Text contains, Text does not contain, Is empty, Is not empty | Variant title text | | Contains subscription | | Is true, Is false | Selling plan items | → Cart & Order conditions --- Product Attributes | Condition | Key | Operators | Details | |---|---|---|---| | Variant SKU | | Is one of, Is not any of, Text contains, Text does not contain, Is empty, Is not empty | SKU of any variant in cart | | Product vendor | | Is one of, Is not any of, Text contains, Text does not contain, Is empty, Is not empty | Brand/supplier | | Product type | | Is one of, Is not any of | Shopify product type field | | Contains gift card | | Is true, Is false | Gift card item in cart | | Requires physical shipping | | Is true, Is false | Physical vs digital items | | Line item price | | ≥, ≤, ==, != | Unit price of any line item | | Line item compare-at price | | ≥, ≤, ==, !=, Is empty, Is not empty | Sale / was-price | | Cart attribute | | Is one of, Is not any of, Text contains, Text does not contain, Is empty, Is not empty | Custom cart attributes by key | | Line item property | | Is one of, Is not any of, Text contains, Text does not contain, Is empty, Is not empty | Custom attribute on a cart line | | Product metafield | | Is one of, Is not any of, Text contains, Text does not contain, Is empty, Is not empty | Product metafield value | | Variant metafield | | Is one of, Is not any of, Text contains, Text does not contain, Is empty, Is not empty | Variant metafield value | → Product Attribute conditions --- Shipping Address | Condition | Key | Operators | Availability | |---|---|---|---| | Shipping country | | Is one of, Is not any of | Payment + Delivery | | State / province | | Is one of, Is not any of | Payment + Delivery | | Shipping city | | Is one of, Is not any of, Text contains, Text does not contain | Payment + Delivery | | Shipping postcode | | Is one of, Is not any of, Text contains, Text does not contain | Payment + Delivery | | First name | | Is one of, Is not any of, Text contains, Text does not contain, Is empty, Is not empty | Payment + Delivery | | Last name | | Is one of, Is not any of, Text contains, Text does not contain, Is empty, Is not empty | Payment + Delivery | | Address line 1 | | Is one of, Is not any of, Text contains, Text does not contain, Is empty, Is not empty | Payment + Delivery | | Address line 2 | | Is one of, Is not any of, Text contains, Text does not contain, Is empty, Is not empty | Payment + Delivery | | Company | | Is one of, Is not any of, Text contains, Text does not contain, Is empty, Is not empty | Payment + Delivery | | Phone | | Is one of, Is not any of, Text contains, Text does not contain, Is empty, Is not empty | Payment + Delivery | | Shipping method name | | Is one of, Is not any of, Text contains, Text does not contain | Payment only | | Shipping type | | Is one of, Is not any of | Payment only | → Shipping Address conditions --- Customer | Condition | Key | Operators | Notes | |---|---|---|---| | Customer tag | | Is one of, Is not any of, Text contains, Text does not contain | Customer account tags | | Customer is B2B | | Is true, Is false | Shopify Plus | | Cart attribute B2B | | Is true, Is false | Custom storefront flag | | Buyer is authenticated | | Is true, Is false | Logged-in status | | Buyer email | | Is one of, Is not any of, Text contains, Text does not contain, Is empty, Is not empty | Email at checkout | | Customer account email | | Is one of, Is not any of, Text contains, Text does not contain, Is empty, Is not empty | Requires login | | Customer first name | | Is one of, Is not any of, Text contains, Text does not contain, Is empty, Is not empty | Requires login | | Customer last name | | Is one of, Is not any of, Text contains, Text does not contain, Is empty, Is not empty | Requires login | | Customer display name | | Is one of, Is not any of, Text contains, Text does not contain, Is empty, Is not empty | Name, email, or phone | | Customer ID | | Is one of, Is not any of | Shopify customer ID | | Lifetime spend | | ≥, ≤ | Requires login | | Number of orders | | ≥, ≤, ==, != | Requires login | | Customer metafield | | Is one of, Is not any of, Text contains, Text does not contain, Is empty, Is not empty | Requires login | | B2B company name | | Is one of, Is not any of, Text contains, Text does not contain, Is empty, Is not empty | Shopify Plus | → Customer conditions --- Discounts | Condition | Key | Operators | |---|---|---| | Discount amount | | Has discount, No discount, ≥, ≤ | | Discount percentage | | Has discount, No discount, ≥, ≤, ==, != | → Discount conditions --- Localization | Condition | Key | Operators | |---|---|---| | Shopify Market | | Is one of, Is not any of | | Checkout language | | Is one of, Is not any of | → Localization conditions --- Special | Condition | Key | Operators | Notes | |---|---|---|---| | Always | | — | Applies to every checkout | | Payment method | | Is one of, Is not any of, Text contains, Text does not contain | Payment Instructions only | → Special conditions --- Operators reference | Operator | Meaning | |---|---| | At least (≥) | Value is greater than or equal to | | At most (≤) | Value is less than or equal to | | Is (==) | Value exactly equals | | Is not (!=) | Value does not equal | | Is one of | Value matches any item in the list | | Is not any of | Value matches none of the items in the list | | Text contains | Value contains the text (partial match) | | Text does not contain | Value does not contain the text | | Tag contains text | Tag includes the substring (partial match) | | Tag excludes text | Tag does not include the substring | | Is empty | No value is set | | Is not empty | A value is set | | Is true | Boolean is true | | Is false | Boolean is false | | Has discount | Any discount is applied | | No discount | No discount is applied | --- # Limitations URL: https://docs.payflow.appfleece.com/reference/limitations Shopify Functions (the underlying technology Payflow is built on) come with a number of platform-level restrictions. This page documents what you may run into. Cannot rename wallet and logo-based methods US & Canada: credit card methods require Shopify Plus These credit card rules are imposed by Shopify (checkout and Payments by region and plan), not by Payflow. Express checkout methods Shop Pay, Apple Pay, Google Pay, and PayPal also appear in the Express checkout row at the top of the Shopify checkout page (above the address form). Hiding When hiding an Express-checkout-compatible method, Payflow offers three modes: | Mode | Behaviour | Plan requirement | |---|---|---| | Hide completely | Removes the method from both the Express row and the payment list | All plans | | Hide from Express checkout only | Removes from Express row, keeps in payment list | | | Hide from payment list only | Removes from payment list, keeps in Express row | | Selective hiding (Express-only or list-only) requires Shopify Plus on all stores globally — this is not limited to US/Canada. Reordering Reordering Express checkout methods is not supported by Shopify. Rule limits per customization type Shopify enforces the following limits per store: 25 active rules per customization type (Payment / Delivery / Checkout rules / Payment Instructions) 25 testing-mode rules per customization type Rules created by other apps count toward the same limit. You can view all active customizations under Settings → Payments or Settings → Shipping and delivery in Shopify admin. Draft orders — admin UI is excluded Payflow customizations apply to both standard checkout and draft order checkouts (e.g. when a customer completes a draft order via a link). However, they do not apply when a merchant is manually creating an order inside the Shopify admin UI — that flow does not run Shopify Functions. Fees for Cash on Delivery Shopify does not natively support adding a fee to a payment method. Payflow's COD Setup works around this by embedding the fee inside a shipping rate: You create a separate shipping rate that includes the COD fee (e.g. "Standard + COD fee: €3"). Payflow shows or hides that rate based on the selected payment method. Because of this approach, Payflow cannot collect a partial or separate fee before the order is placed. If prepaid shipping is weight-based but the COD surcharge depends on cart total, Shopify cannot run both on one rate. Common patterns: duplicate Weight COD rates (one per cart band, fee baked into each tier) and Payflow Subtotal amount hide rules, or parallel COD rates with Order amount tiers and Total weight hide rules — see COD fee with weight-based shipping. No percentage-based fee on cart value Merchants often ask for an extra charge as a percentage of the cart (for example “add 3% to COD orders” or a card-handling fee on prepaid checkouts). That is not possible as a true percentage line item: any similar charge must appear as a flat price on a shipping rate (or another fixed checkout price Shopify exposes), not a formula tied to subtotal or total. Workaround — tiered flat fees by order amount: In Shopify admin → Settings → Shipping and delivery, edit the shipping option that carries the surcharge. Set Rate type to Order amount, then add tiers: each row is a min/max cart-value band with its own flat price. Larger orders can use a higher flat fee in the next band, which approximates a rising surcharge without using percentages. Payment-method-specific discounts Shopify checkout cannot apply a discount because the customer chose a particular payment method. Discount Functions run earlier in the pipeline than Payment Customization; when discounts are evaluated, the customer has not selected a payment method yet, and the discount function input does not include a selected-payment field. That ordering is a platform constraint, not something Payflow or another app can override inside Functions. Practical pattern (works on all plans): Offer the incentive as a discount code the customer enters, and use Payflow discount conditions to hide payment methods that should not pair with that deal (for example hide Cash on Delivery once the “prepaid only” code is applied). Until the code is applied, the full payment list stays visible, so customers can compare options before they opt in. Everything stays at checkout time with no post-purchase order editing. On Shopify Plus, a Checkout UI Extension on the payment step can read the selected payment option and call discount APIs (for example auto-applying or removing a code when the customer switches methods). That can feel smoother than asking for a code, but payment-step extensions are Plus-gated; until Shopify exposes payment choice to Discount Functions or widens extension access, hide methods when a discount is active remains the pragmatic approach for Basic, Shopify, and Advanced stores. Inventory-based conditions not available is not exposed in any Shopify Function input, so it is not possible to build conditions based on stock levels (e.g. "hide COD if any item is low stock"). OTP or phone verification at checkout Payflow cannot add OTP, SMS verification, or phone verification to checkout. Shopify Functions do not have access to send messages or block checkout submission — this capability is outside what any Function-based app can provide. 10 KB data limit per customization Each Payment Customization, Delivery Customization, and Payment Instructions customization stores its rules in Shopify with a 10.00 KB maximum size. That includes every condition value you enter (for example long comma-separated postcode lists, product tags, or method names) plus the rest of the rule configuration. While editing, Payflow shows a Data limit bar in the app. As usage rises, the bar turns red and you may see a warning such as: Approaching limit. You may want to save this customization and create a new one soon. If you are close to the cap, save the current customization and start a new customization for additional rules instead of growing one setup indefinitely. --- # Duplicate, Export & Import Customizations URL: https://docs.payflow.appfleece.com/reference/more-actions More actions — duplicate, export, replicate, and the rest — is available on the saved customization page when you open a rule, and from the dashboard table (each row’s menu) without opening the editor first. More actions menu Open More actions from either place to see: | Action | What it does | |--------|----------------| | Set as inactive / Set as active | Toggles whether the rule runs. For an active rule, the menu shows Set as inactive; for an inactive rule, it shows Set as active. Nothing is deleted. | | Duplicate | Creates a second customization of the same type (Payment, Delivery, etc.) with the same configuration. Edit the copy independently. | | Replicate | Copies conditions and their values to the other type (menu: Replicate as shipping customization from Payment, or Replicate as payment customization from Delivery). You still choose payment method names or shipping rate names for Hide / Rename / Re-order — those strings differ between layers. | | Export | Downloads the customization as a JSON file — archive, share, or Import existing to load it again. | | Delete | Removes the customization permanently. | Duplicate Use Duplicate when you want two similar rules of the same kind — for example a second Payment Customization with a small change — without rebuilding conditions from scratch. Replicate Replicate mainly copies conditions and their values into a new customization of the opposite type. It does not carry over which payment methods or shipping rates you target — names and picker options differ between Payment and Delivery — so you must enter or select the right payment method or shipping rate labels for Hide, Rename, or Re-order in the new editor. The menu label depends on where you start: From a Payment Customization → Replicate as shipping customization → new Delivery Customization with the same conditions; add delivery actions (for example Hide on specific shipping rates). From a Delivery Customization → Replicate as payment customization → new Payment Customization with the same conditions; add payment actions (for example Hide on Cash on Delivery). Use it when totals, country, cart contents, or other rules should line up on both payment methods and shipping — not only one side. A common pattern with Cash on Delivery Setup is hiding COD as a payment method and also hiding the COD shipping rate that carries the fee, so shoppers cannot pick the rate on ineligible carts. Export Export saves the rule as a JSON file. Import existing on the Payflow dashboard reads that same format: choose the file and Payflow recreates the customization. That is useful for copying the same rules to another store, for backups, or for advanced workflows where a developer edits the JSON before import. Create customization still starts a blank rule from scratch. Import existing and Create customization sit above the dashboard table of saved customizations. Related --- # Use Cases URL: https://docs.payflow.appfleece.com/use-cases Short, visual recipes for the most common Payflow setups. Each use case links back to the full guide for deeper configuration. Payment method rules Shipping & delivery rules Looking for something else? Cash on Delivery fee — see the Cash on Delivery Setup guide Percentage-based COD fee — see Tiered fees by order amount B2B payment rules — use Customer conditions with Payment Customization --- # Hide COD for Specific Products or Collections URL: https://docs.payflow.appfleece.com/use-cases/hide-cod-by-product Use a Product tag or Collection condition to hide COD only when certain items are in the cart — without affecting COD availability store-wide. Setup (product tag) Tag the products that should not allow COD (e.g. ) in Shopify admin → Products, then: Create customization > Hide payment methods. Add Product tag → Matches any item → Is one of → . Target COD: Pre-defined → Cash on Delivery , or Text contains if the checkout label differs. Active, Save, and verify at checkout with a tagged product in the cart. Related --- # Hide Cash on Delivery for High-Value Orders URL: https://docs.payflow.appfleece.com/use-cases/hide-cod-for-high-value-orders Total amount includes shipping and tax; Subtotal amount is product value only (typical for risk caps). Example threshold: 200 in your store currency. Setup Create customization > Hide payment methods. Add Total amount or Subtotal amount → At least (≥) → . Target COD: Pre-defined → Cash on Delivery , or Text contains if the checkout label differs. Active, Save, and verify at checkout. Related --- # Hide a Payment Method by Country URL: https://docs.payflow.appfleece.com/use-cases/hide-payment-method-by-country Use Shipping country when the destination country is what matters, or Shopify Market when your rule follows Shopify Markets. Shipping country can fall back to Shopify's checkout localization country before the customer completes the address, then uses the entered shipping country once available. Example below: Bank Deposit only when shipping to Czechia — hide it for every other country (Is not any of → Czechia on the allowlist). For COD in Czech Republic and Slovakia only, add both countries to that allowlist the same way. Setup Create customization > Hide payment methods. Add Shipping country or Shopify Market → Is not any of → the countries or markets where the method should stay (your allowlist), e.g. Czechia . Target the method: Pre-defined → e.g. Bank Deposit . Active, Save, and verify at checkout. Related --- # Hide Shipping by Cart Weight URL: https://docs.payflow.appfleece.com/use-cases/hide-shipping-by-cart-weight Total weight is in kilograms. Use Contains text when several rates share a carrier name; use Store rates to pick titles from Shopify. Setup Create customization > Hide shipping methods. Add Total weight → At least (≥) → your limit (e.g. ). Under Hide, target rates: Contains text with a shared substring (e.g. carrier name) or Store rates for specific titles. Active, Save, and verify at checkout. Related --- # Add a Surcharge for a Specific Payment Method URL: https://docs.payflow.appfleece.com/use-cases/payment-method-surcharge Shopify cannot add a fee to a payment method directly. The workaround: create a shipping rate that carries the fee, then use two Payment Customizations to wire the right payment method to that rate. How it works Create the shipping rate in Shopify Open Shopify admin → Settings → Shipping and delivery . Add a rate with a clear title (e.g. "Standard + Tabby fee: $3"). Optionally set Rate type → Order amount with tiers to approximate a percentage. Rule 1 — Hide the payment method when the fee rate is not selected When: Shipping method name → Is not any of → the fee rate title. Hide: the target payment method. Rule 2 — Hide other methods when the fee rate is selected When: Shipping method name → Is one of → the same fee rate title. Hide: Does not contain text → a substring unique to your method. Active , Save both, and verify at checkout. Both rules are required: Rule 1 prevents the method from showing on other rates; Rule 2 locks checkout to only that method when the fee rate is selected. For a full walkthrough with worked examples, see Tiered fees — other payment methods. Related --- # Rename a Payment Method at Checkout URL: https://docs.payflow.appfleece.com/use-cases/rename-payment-method Use Checkout language or Shopify Market when the new label should only apply in some contexts. For a rename on every checkout, add Always under When the following conditions are met — you cannot leave the conditions block empty (Quickstart). Setup Create customization > Rename payment methods. Add Checkout language → Is one of → e.g. Czech . For every checkout, use Always instead. Add one row per rename: choose Predefined or Contains text , set the payment method name as it appears at checkout , then Rename to . Shopify Payments → Platba kartou Contains text Credit card → Platba kartou (Apple Pay) Active, Save, and verify at checkout. Related --- # Rename Shipping for B2B or Tagged Customers URL: https://docs.payflow.appfleece.com/use-cases/rename-shipping-for-b2b-customers Pair Customer (B2B, Customer tag, etc.) with Rename so wholesale shoppers see different rate titles without changing the underlying Shopify rate. Setup Create customization > Rename shipping methods. Add a Customer condition → operator and values (e.g. Customer is B2B Is true, or Customer tag Is one of → your tag). Rename → target the rate (Contains text or Store rates) → Rename to the B2B-facing label. Active, Save, and verify at checkout. Related --- # Reorder Payment Methods at Checkout URL: https://docs.payflow.appfleece.com/use-cases/reorder-payment-methods Under When the following conditions are met, add Always (most common) to reorder on every checkout. Or use other condition rows when the rule should only apply. Setup Create customization > Re-order payment methods. Add Always (most common), or choose other conditions when the rule should only apply. Target the method (Predefined, Text contains, or Equals to), then Move to top, Move to bottom, or Move to position. Predefined → Cash on Delivery (COD) Predefined → PayPal Predefined → Shopify Payments All other payment methods will appear here. Active, Save, and verify at checkout. Related --- # Show or Hide Shipping by Customer Tag or Discount URL: https://docs.payflow.appfleece.com/use-cases/show-shipping-for-tagged-customers Use Customer tag or Discount conditions to control which shipping rates appear. Common scenarios: wholesale-only rates, VIP free shipping, or hiding a rate when a large discount is applied. Setup — show a rate only for tagged customers The simplest pattern: hide the rate for everyone except tagged customers. Create customization > Hide shipping methods. Add Customer tag → Is not any of → (or your tag). This means the rule fires for customers who do not have the tag. Under Hide, target the rate: Store rates or Contains text with the rate name. Active, Save, and verify at checkout with a tagged and an untagged customer. Related ---