# Create Checkout Session Source: https://docs.flexype.io/api-reference/checkout/create-session POST /session Create a new checkout session for a customer with cart items. The `session_id` returned by this endpoint must be used for all subsequent checkout operations. Sessions expire after 1 hour of inactivity if not completed. The `country_code` must be in ISO 3166-1 alpha-2 format (e.g. `IN`, `US`). Each entry in `items` is the full Shopify cart line-item object. Pass it through as-is from the storefront cart — `product_id`, `variant_id`, and `quantity` are the required fields; the rest enrich analytics and display. # Get Checkout Session Source: https://docs.flexype.io/api-reference/checkout/get-session GET /session/{id} Retrieve the full state of a checkout session by its ID. Returns the complete session state — cart items with computed pricing, applied coupons, free-gift add-ons, loyalty coin balance, and payment/session lifecycle state. Use the `session_id` returned by [Create Session](/api-reference/checkout/create-session). Monetary amounts in this response are in the **major** currency unit (e.g. `3595` = ₹3595). A few fields worth calling out: * `pricing.shipping` is `-1` until a delivery address is provided, then it reflects the calculated charge. * `add_ons` lists free-gift products unlocked once `pricing` crosses each offer's `target`. # Introduction Source: https://docs.flexype.io/api-reference/introduction Public APIs for the FlexyPe checkout system: session creation, OTP-based authentication, and checkout flow. The FlexyPe Checkout API lets you create checkout sessions, authenticate customers with phone-based OTP, and drive the checkout flow end to end. All endpoints accept and return JSON. ## Base URL All API requests are made to: ``` https://api.flexype.io ``` ## Authentication Endpoints are authenticated with an API key sent as a bearer token in the `Authorization` header: ```bash theme={null} Authorization: Bearer YOUR_API_KEY ``` ### API key management In the dashboard, navigate to **Settings → API Keys** to manage your keys. Create, view, and revoke API keys for your store. Click **Generate API Key**, provide a name, and click **Generate**. The secret is shown **only once**. Copy it and store it somewhere secure — once you leave the page, the secret is no longer visible and you'll need to generate a new key. Send the key as a bearer token on every request: ```bash theme={null} curl https://api.flexype.io/session/{sessionId} \ -H "Authorization: Bearer YOUR_API_KEY" ``` Never expose your secret API keys in client-side code or public repositories. Treat them like passwords. ## Rate limits The API allows **100 requests per minute**. Requests without valid authentication headers are rate limited **by IP address**. When you exceed a limit, the API responds with HTTP `429 Too Many Requests`. Back off and retry after a short delay. ## Response format Every response wraps its result in a consistent envelope. ```json Success theme={null} { "status": "SUCCESS", "data": { } } ``` ```json Error theme={null} { "status": "FAILURE", "error": { "code": "error.invalid-request", "message": "Human-readable error message" } } ``` # Changelog Source: https://docs.flexype.io/changelog/changelog Track all the latest updates and improvements to FlexyPe ## New RTO Rule Engine Hero Dark * Added advanced Order & Cart Rules to set conditions based on cart value, item count, COD history, and returned orders. * Introduced Customer & Product Filters for targeting by user, location (pincode), products, and collections. * Enhanced COD & Partial COD control with flexible restrictions to reduce risk and improve order success. ## Nector Partnership Hero Dark * Integrated with Nector to offer advanced payment processing solutions * Broadened payment method support for merchants and customers * Streamlined and faster onboarding flow for Nector users ## PayU Partnership Hero Dark * Formed a strategic alliance with PayU to power payment gateway services * Upgraded payment infrastructure for greater reliability and scale * Enhanced merchant onboarding experience for quicker go-live # Abandoned Checkouts Source: https://docs.flexype.io/features/abandoned-checkout See exactly where customers drop off in checkout, and recover those carts automatically. An **abandoned checkout** is a session where the customer opened FlexyPe checkout, got far enough to be identified, but never completed payment. The dashboard shows each of those sessions, how far the customer got, and what was in their cart — so you can recover the sale or fix what stopped it. Completed checkouts appear under [Orders](/features/orders). This section is only for sessions that did not convert. ## The abandoned checkouts list Open **Abandoned Checkouts** from the left navigation. Abandoned checkouts table showing checkout ID, email, phone, amount, session state such as Payment Page or Address Page, and date created | Column | What it shows | | ----------------- | -------------------------------------------------- | | **Checkout ID** | Identifier for the abandoned session | | **Email** | Customer email, with a one-click copy button | | **Phone** | Dial code and phone number | | **Amount** | Value of the cart that was left behind | | **Session State** | The stage the customer reached before dropping off | | **Date Created** | When the session started | Click a row to open the full session. As with orders, the list defaults to the **last 7 days** — widen the date picker to look further back. ### Drop-off stages The **Session State** tells you where checkout broke down, which is usually the single most useful signal on this page: | State | What the customer did | | --------------------- | ------------------------------------------------------------------- | | **Login Completed** | Identified themselves, then left before entering an address | | **Address Page** | Reached or filled the address step, then left | | **Payment Page** | Reached the payment step but never started a payment | | **Payment Initiated** | Started a payment that did not complete — including failed attempts | Read the distribution, not individual rows. A pile-up on **Address Page** points at address friction or shipping costs revealed too late. A pile-up on **Payment Initiated** points at gateway failures — check the **Transactions** panel on those sessions. ## Searching, filtering, and exporting The controls work exactly as they do on [Orders](/features/orders#searching-and-filtering). Open the bar with the **search and filter icons** above the table, or Cmd/Ctrl + F; Esc closes it. Abandoned checkouts page with the search bar open and the field selector expanded showing All, Email, Name, and Phone options * **Search** across **All** fields, or narrow to **Email**, **Name**, or **Phone** There is no **Order ID** option here — abandoned sessions never became orders, so they have no order name. Search by checkout ID is not supported either; use email or phone to find a specific customer's session. * **Filter** with **Add Filter**, by payment status, payment method, and payment provider. Each accepts multiple values, and filters combine * **Date range** from the button in the top-right, separate from the filter bar * **Sort** with the sort icon by date created, or click the **Amount** column header to rank carts by value * **Export** a CSV of everything matching your current filters, delivered by email Sort by amount, descending, to work your highest-value abandoned carts first. Those are usually worth a personal follow-up rather than an automated one. ## Session details Opening an abandoned session shows the same panels as an order, minus anything that only exists once an order is placed: Abandoned checkout detail showing checkout items with a Copy checkout url button, checkout summary, customer contact and address panels, additional details, and an empty transactions panel * **Items** — everything in the cart, with variants, quantities, and any discounts or coupons already applied * **Summary** — subtotal, discounts, shipping, taxes, and the total the customer would have paid * **Customer** — contact details, addresses entered so far, and how many orders they have placed with you before * **Transactions** — every payment attempt, including failures, with the gateway, method, and state * **Conversion details** — sessions before this one, checkout visits, days since first visit, and the full UTM set * **Exit checkout reasons** — what the customer told you on the way out, when they answered the exit survey Use **Copy checkout url** to get a link to that exact checkout, which you can paste into a manual follow-up message. Abandoned sessions cannot be edited. Editing is an order-level action, available only after a session converts. ## How automatic recovery works FlexyPe watches every checkout session and, shortly after a session goes quiet without converting, triggers recovery. Recovery only proceeds when all of these are true: * The session is **still incomplete** — an order was never placed * The customer is **identified**, so there is somebody to contact * The customer has **not started a newer session**, so you never chase a customer who already came back These checks are why the recovery count is smaller than the raw abandoned-checkout count. Sessions from unidentified visitors, and sessions superseded by a newer visit, are deliberately skipped. FlexyPe recreates the customer's cart on your store, carrying over: * Every item and quantity * Coupon codes that were already applied * The UTM parameters from the original visit, so recovered sales stay attributed correctly * The stage at which the customer dropped off The link reopens FlexyPe checkout with the customer's original session restored — items, addresses, and applied discounts intact — so they resume instead of starting over. FlexyPe emits an [Abandoned Checkout Recovery webhook](/webhooks/2026-05/acr) carrying the session, customer, and cart, so your CRM or messaging tool can send the follow-up on your own schedule and in your own voice. The abandoned checkout event fires **15 minutes** after a checkout session opens without completing. See [Event Triggers](/webhooks/event-triggers) for the exact conditions. ### Recovering visitors who never reached checkout Customers who browsed but never started checkout are covered by a separate event — [Abandoned Session Recovery](/webhooks/2026-05/asr), which fires after 15 minutes of inactivity. Use it to reach shoppers earlier in the funnel than this page covers. ## Reducing abandonment in the first place Recovery is the fallback. Checkout can also intervene at the moment a customer tries to leave, using an exit flow you configure under [Checkout Customization](/features/customization/general): Reminds the customer of a discount they qualify for and offers to apply it on the spot. If no coupon applies, they see the standard confirmation instead. Warns that items in the cart are nearly out of stock, adding urgency to completing the order now. Asks why the customer is leaving, with options you define plus a free-text box. Answers show up in the **Exit checkout reasons** panel on that session. A plain confirmation warning that progress will be lost, for when you don't want an offer or a survey. Run the exit survey for a few weeks first. Once you know why people leave, switch to the flow that addresses the top reason — a saving reminder does nothing for someone who left because delivery was too slow. ## Frequently asked questions The customer left before identifying themselves. These sessions still count toward abandonment but cannot be recovered, since there is no way to reach the customer. No. If the customer starts a newer session, the older one is skipped for recovery. Yes. Once payment completes, the session becomes an order and moves to [Orders](/features/orders). Customers are starting payments that do not complete. Open the **Transactions** panel on a few of them — repeated failures from one gateway usually point at a provider configuration issue rather than customer hesitation. The link restores the original session. If the customer's cart is no longer purchasable — for example an item sold out — checkout reflects that when they arrive. Recovery events are delivered by webhook so your existing messaging stack owns the send. Talk to support about what is available for your account if you would rather FlexyPe handled it. ## Need help? Sessions that converted, with full payment detail Payload and setup for the abandoned checkout event # Amount off Products/Order Source: https://docs.flexype.io/features/coupons/amount-off Percentage or fixed-amount discounts on the whole order or on specific products. The workhorse discount. Takes a percentage or a fixed amount off, either the entire order or only the products you choose. Use it for sales, welcome offers, and category promotions. Shared setup, eligibility, and usage limits are covered in [Coupons](/features/coupons/overview). This page covers only what's specific to this type. ## What this type does Setup step showing coupon code or automatic, discount code field, amount off order or amount off products, percentage off or fixed amount, and maximum purchase amount cap ### What should this discount do? | Option | Applies to | | ----------------------- | ------------------------------------------- | | **Amount off order** | The cart total | | **Amount off products** | Only the products or collections you select | Choosing **Amount off products** adds a picker where you select **specific products** or **specific collections**. ### What is the discount value? | Option | Behaviour | | ------------------ | ------------------------------------- | | **Percentage off** | A percentage of the applicable amount | | **Fixed amount** | A flat currency amount | Two modifiers matter: * **Maximum purchase amount cap** — the ceiling on a percentage discount. `20% off` with a ₹500 cap never gives away more than ₹500 * **Only apply discount once per order** — with product-level discounts, decides whether the discount applies to every eligible item or just once Always cap a percentage discount if your catalogue has expensive items. Uncapped, `25% off` on a ₹20,000 order costs you ₹5,000. ## How it calculates | Setup | Cart | Result | | ---------------------------------------------------------- | ------ | -------------------------------- | | 20% off order | ₹2,000 | ₹400 off → pay ₹1,600 | | 20% off order, cap ₹300 | ₹2,000 | ₹300 off → pay ₹1,700 | | ₹200 off order, min cart ₹999 | ₹850 | Not applied — cart below minimum | | 30% off products, applies to 2 eligible items at ₹500 each | ₹1,000 | ₹300 off | | 30% off products, **once per order**, same cart | ₹1,000 | ₹150 off — one item only | ## What the customer sees Here's the same coupon — `SUMMER25`, 25% off the order — from the customer's side of checkout. Checkout shows a **Coupons** row under the order summary. The order stands at its full ₹221.00. FlexyPe checkout showing order summary with subtotal and grand total of 221 rupees, and a Coupons row below it Opening it lists every coupon the customer can use, with the saving already calculated — **Save ₹55.25 on this order**. There's also a field to type a code that wasn't offered automatically. Coupons that don't fit the current cart appear under **OTHER COUPONS** with the reason in red, and their **APPLY** button greyed out. Coupons drawer listing Flat 25% OFF with code SUMMER25 and an apply button, and an ineligible bundle coupon marked This coupon is not applicable Only coupons with **Show discount coupon to customer** enabled appear in this list. A hidden coupon still works — the customer just has to type the code. The discount posts as its own **Coupon Discount** line, the item price shows the original struck through, and the grand total drops to ₹165.75. A confirmation appears under the Coupons row. Checkout order summary showing subtotal 221 rupees, coupon discount minus 55.25, grand total 165.75, and a message saying you saved 55.25 on this order Reopening the drawer shows the applied coupon with an **✕** to remove it, and **View Details** expands the description customers see — this is the text set by **Custom discount details** in the Preview step. Coupons drawer showing SUMMER25 applied with minus 55.25, a remove cross, expanded details reading flat 25 percent off on the total order value, and an APPLIED badge The saving is calculated per cart before the customer applies anything, so a coupon that looks generous on a small cart shows exactly what it's worth. Worth checking your own offers this way — it's how customers judge them. ## Examples **Setup:** Automatic · Amount off order · 20% off **Condition:** No purchase requirements Every customer sees 20% off in cart and at checkout, no code needed. **Setup:** Coupon code `MONSOON30` · Amount off products · 30% off · applies to the Monsoon collection **Condition:** No purchase requirements Only items in that collection are discounted; the rest of the cart is untouched. **Setup:** Coupon code `SUMMER25` · Amount off order · 25% off · maximum cap ₹750 **Condition:** Minimum purchase amount ₹1,500 Protects margin on large carts while still reading as a headline 25% offer. **Setup:** Coupon code `WELCOME200` · Amount off order · fixed ₹200 off **Condition:** Minimum purchase amount ₹999 **Eligibility:** First order only New customers only, and the minimum keeps the discount from swallowing small orders. ## Frequently asked questions No **maximum purchase amount cap** is set, so the percentage applies to the full cart however large it gets. **Only apply discount once per order** is enabled. Turn it off for the discount to hit every eligible item. Fixed amounts are predictable and safe on a wide-ranging catalogue. Percentages scale with cart value, which is better for driving larger orders — pair them with a cap. Shared setup, limits, and combining rules Price a group of items together instead # Bundle Discount Source: https://docs.flexype.io/features/coupons/bundle Price a group of items together — multi-packs, mix-and-match sets, and starter kits. Prices a group of items together, so buying the set costs less than buying the pieces. Use it for multi-packs of one product, mix-and-match sets from a collection, and curated kits. Shared setup, eligibility, and usage limits are covered in [Coupons](/features/coupons/overview). This page covers only what's specific to this type. ## What this type does Bundle Discount setup step showing applies to specific products or collections, single product pack options, quantity, and fixed bundle price, fixed amount, or percentage off discount types ### Applies to | Option | Bundle is built from | | ------------------------ | ------------------------------------- | | **Specific products** | The products you pick | | **Specific collections** | Any products inside those collections | * **Single Product Pack Options** — allows a bundle made of multiple quantities or variants of the **same** product. This is what makes 3-packs and multi-buys possible. Leave it off and the bundle must mix different products ### Quantity How many items form the bundle. Once the customer reaches that quantity, the discount applies — and it stops applying to items beyond it. ### Discount types | Type | Behaviour | | ---------------------- | ------------------------------------------------- | | **Fixed bundle price** | The customer pays a set price for the whole group | | **Fixed amount off** | A specific amount comes off the total | | **Percentage off** | A percentage comes off the total | * **Set a maximum number of uses per order** — caps how many bundles one cart can claim **Fixed bundle price** is the strongest offer psychologically — "3 for ₹999" reads better than "save ₹300". Use it when your bundle items are similarly priced, since every combination costs the customer the same. ## How it calculates Items at ₹400 each, bundle quantity 3: | Discount type | Value | Cart of 3 | Customer pays | | ------------------------------ | ----- | ---------------- | ---------------------- | | Fixed bundle price | ₹999 | ₹1,200 | ₹999 | | Fixed amount off | ₹300 | ₹1,200 | ₹900 | | Percentage off | 20% | ₹1,200 | ₹960 | | Fixed bundle price, max 1 use | ₹999 | 6 items (₹2,400) | ₹999 + ₹1,200 = ₹2,199 | | Fixed bundle price, max 2 uses | ₹999 | 6 items (₹2,400) | ₹1,998 | With **Fixed bundle price** and mixed price points, the customer will naturally fill the bundle with your most expensive eligible items. Bundle products of similar value, or use percentage off instead. ## Examples **Applies to:** Specific products · **Single Product Pack Options** enabled **Quantity:** 3 **Discount type:** Fixed bundle price ₹999 The multi-pack play. Single Product Pack Options is what allows three of the same item to count as a bundle. **Applies to:** Specific collections **Quantity:** 3 **Discount type:** Percentage off 20% Customer picks any three from the collection. Percentage off keeps the discount proportional whatever they choose. **Applies to:** Specific products — the kit items **Quantity:** 4 **Discount type:** Fixed amount off ₹400 Curated set for new customers, with a predictable cost to you per kit sold. **Applies to:** Specific collections **Quantity:** 2 **Discount type:** Percentage off 15% · **max 3 uses per order** Rewards bulk buying but stops a wholesale-sized cart claiming the discount indefinitely. ## Frequently asked questions Enable **Single Product Pack Options**. Without it, a bundle must contain different products. They're charged at full price unless the cart contains enough for another complete bundle and uses per order allow it. Customers are filling the bundle with your highest-priced eligible items. Restrict the bundle to similarly priced products, or switch to percentage off. Bundle prices a group as a unit — "3 for ₹999". [Buy X Get Y](/features/coupons/buy-x-get-y) rewards a purchase with different items — "buy 2, get an accessory free". If the customer is choosing a set, use Bundle. Shared setup, limits, and combining rules Reward a purchase with different items instead # Buy X Get Y Source: https://docs.flexype.io/features/coupons/buy-x-get-y Reward a qualifying purchase with discounted or free items — BOGO, buy 2 get 1, and accessory pushes. The customer buys a qualifying set of items, and gets another set discounted or free. This is how you run BOGO, buy-2-get-1, and "add an accessory for ₹300 less" offers. Shared setup, eligibility, and usage limits are covered in [Coupons](/features/coupons/overview). This page covers only what's specific to this type. ## What this type does The Condition step splits into two halves — what the customer must buy, and what they then get. Buy X get Y condition step showing Customer buys with quantity and product scope, and Customer gets with quantity, product scope, and percentage off, amount off each, or free reward options ### Customer buys | Setting | Options | | ------------- | ------------------------------------------------------------- | | **Qualifier** | **Minimum quantity of items** or **Minimum purchase amount** | | **Scope** | Any items, **specific products**, or **specific collections** | ### Customer gets | Setting | Options | | ------------ | ----------------------------------------------------- | | **Quantity** | How many reward items | | **Scope** | Any items, specific products, or specific collections | | **Reward** | **Percentage off**, **Amount off each**, or **Free** | There's one more control that matters more than it looks: * **Set a maximum number of uses per order** — caps how many times the deal repeats in a single cart Without a maximum, the offer repeats for every qualifying group. A cart of 10 qualifying items triggers a buy-2-get-1 deal five times. Set the cap unless that's genuinely what you want. Buy X Get Y is supported for one-time purchases only. ## How it calculates | Setup | Cart | Result | | ---------------------------------------------- | -------------------------- | ----------------------------- | | Buy 1 → get 1 Free, same collection, max 1 use | 2 qualifying items at ₹500 | 1 item free → ₹500 off | | Buy 1 → get 1 Free, **no max** | 6 qualifying items at ₹500 | Deal triggers 3× → ₹1,500 off | | Buy 2 → get 1 at 50% off, max 1 | 3 items at ₹400 | ₹200 off | | Buy ₹1,500 worth → get 1 accessory ₹300 off | ₹1,600 cart + accessory | ₹300 off the accessory | ## Examples **Setup:** Coupon code `BOGO50` (or Automatic) **Customer buys:** Minimum quantity 1, from the target collection **Customer gets:** Quantity 1, same collection, **Free** **Max uses per order:** 1 The cleanest version of the offer, and the cap keeps a large cart from turning into a giveaway. **Customer buys:** Minimum quantity 2, specific products **Customer gets:** Quantity 1, same products, **Percentage off 50%** **Max uses per order:** 2 Encourages three-item carts while capping exposure at two rounds. **Customer buys:** Minimum purchase amount ₹1,500, any items **Customer gets:** Quantity 1, accessories collection, **Amount off each ₹300** **Max uses per order:** 1 Attaches a margin-friendly add-on to an order the customer was already placing. **Customer buys:** Minimum quantity 1, any items **Customer gets:** Quantity 1, slow-moving collection, **Free** **Max uses per order:** 1 Moves dead stock without discounting anything you actually want to sell at full price. ## Frequently asked questions Enable **Set a maximum number of uses per order**. Without it, the deal repeats for every qualifying group in the cart. Yes. The buy side and get side are configured independently, which is exactly how accessory and cross-sell offers are built. Yes — the reward items must be in the cart. The in-app note says it directly: customers must add the specified quantity to their cart. No. Buy X Get Y supports one-time purchases only. Shared setup, limits, and combining rules Simpler alternative when there's no "buy X" condition # Exclusive Free Gift Source: https://docs.flexype.io/features/coupons/free-gift Add a complimentary product to the order — gift with purchase, samples, and stock clearance. Gives the customer a product for free rather than money off. Shown as **Freebie** in the coupons list. Use it for gift-with-purchase, sampling, and moving stock you'd rather not discount in price. Shared setup, eligibility, and usage limits are covered in [Coupons](/features/coupons/overview). This page covers only what's specific to this type. ## What this type does Exclusive Free Gift setup step with a four-step progress bar, a discount code field, free products picker, and free quantity field | Field | What it does | | ----------------- | ------------------------------------------------------- | | **Free products** | The products given away. Search or **Browse** to select | | **Free quantity** | The maximum number of free items | This type has **four** steps, not five — there's no Preview step, so visibility and custom wording aren't configurable here. Products added as a freebie are excluded from every other coupon, **even when this coupon is combinable**. A gifted item can't also be discounted by a second promotion. ## How it calculates | Setup | Cart | Result | | ------------------------------------------ | --------------- | ------------------- | | Free sample, quantity 1, no condition | Any cart | 1 sample added free | | Free item, quantity 1, minimum cart ₹1,499 | ₹1,200 | Not applied | | Free item, quantity 1, minimum cart ₹1,499 | ₹1,600 | 1 item free | | Free item, quantity 2 | Qualifying cart | Up to 2 free items | ## Examples **Setup:** Coupon code `GIFTBOX` · free travel-size product · quantity 1 **Condition:** Minimum purchase amount ₹1,499 A classic threshold gift. Raises average order value without cutting the price of anything you sell. **Setup:** Automatic · free sample of the new product · quantity 1 **Condition:** No purchase requirements Every customer gets a sample, which is usually cheaper than paid discovery and puts the product in real hands. **Setup:** Coupon code `EXTRAGIFT` · free product from the slow-moving line · quantity 1 **Condition:** Minimum purchase amount ₹999 Moves stock without publishing a markdown that resets what customers think the product is worth. **Setup:** Automatic · free premium item · quantity 1 **Eligibility:** Total order count, minimum 5 Only long-standing customers see it, and they don't need to enter anything. ## Frequently asked questions No. Freebie products are excluded from all other coupons, even combinable ones. This type has no Preview step, so those options aren't available for free gifts. It behaves like any other unavailable product at checkout. Pick a gift you can reliably supply for the length of the campaign. Select several products as free products and set the quantity to how many the customer receives. Shared setup, limits, and combining rules When the gift should depend on buying something specific # Free Shipping Source: https://docs.flexype.io/features/coupons/free-shipping Remove the delivery charge at checkout, with a cap on which shipping rates you'll absorb. Removes the shipping charge at checkout. Usually the cheapest way to lift average order value — customers add an item to clear the threshold, and you pay only the delivery cost rather than margin on the goods. Shared setup, eligibility, and usage limits are covered in [Coupons](/features/coupons/overview). This page covers only what's specific to this type. ## What this type does Free shipping setup step with coupon code or automatic options, discount code field, and an exclude shipping rates over a certain amount checkbox | Field | What it does | | ------------------------------------------------ | -------------------------------------------------- | | **Exclude shipping rates over a certain amount** | Sets a threshold above which a rate is not covered | That single control is what stops free shipping becoming expensive. With it, standard delivery is free while premium express delivery stays chargeable. Set the exclusion just above your standard rate. If standard is ₹60 and express is ₹250, excluding rates over ₹100 covers standard and leaves express paid. ## How it calculates | Setup | Cart / rate chosen | Result | | -------------------------------- | ------------------ | -------------------------------- | | Free shipping, no exclusion | Standard ₹60 | ₹60 off | | Free shipping, no exclusion | Express ₹250 | ₹250 off — you absorb it all | | Free shipping, exclude over ₹100 | Standard ₹60 | ₹60 off | | Free shipping, exclude over ₹100 | Express ₹250 | Not covered — customer pays ₹250 | | Free shipping, minimum cart ₹799 | ₹650 cart | Not applied | ## Examples **Setup:** Automatic · exclude rates over ₹100 **Condition:** Minimum purchase amount ₹799 The standard AOV play. Customers see the threshold in the cart and top up to reach it. **Setup:** Automatic · exclude shipping rates over ₹100 **Condition:** No purchase requirements Everyone gets free standard delivery; anyone in a hurry pays for the upgrade. **Setup:** Coupon code `FREESHIP99` · exclude rates over ₹100 **Eligibility:** First order only Removes the delivery-charge objection for new customers without discounting product prices. **Setup:** Automatic · exclude rates over ₹100 **Usage limits:** Active period covering the weekend only Time-boxed promotion that switches itself off — no need to remember to disable it. ## Frequently asked questions No rate exclusion is set, so expensive express rates are being fully absorbed. Set **Exclude shipping rates over a certain amount** just above your standard rate. Their chosen rate is above the exclusion threshold. This is by design — only rates at or below it are covered. Shipping rates and any COD charge are configured per zone in [Shipping](/features/shipping). This coupon acts on the shipping rate. Automatic, if the goal is raising order value — the offer only works when customers know about it before checkout. Use a code when it's a targeted campaign perk. Shared setup, limits, and combining rules Where the rates themselves are configured # Coupons Source: https://docs.flexype.io/features/coupons/overview Every discount type FlexyPe supports, the shared setup flow, and how coupons behave together. Coupons are how you run every kind of promotion at checkout — a flat percentage off, a free gift, buy-one-get-one, bundles, free shipping, or a reward aimed only at customers who bought from you before. This page covers what every coupon shares: the list, the setup flow, usage limits, and how coupons interact. Each type has its own page for the parts that differ. ## Choosing a type A percentage or fixed amount off the order or specific products Buy a qualifying set, get another set discounted or free Target customers by what they bought before Add a complimentary product to the order Remove the delivery charge at checkout Price a group of items together Pick by what you're trying to achieve: | Goal | Type | | -------------------------------------- | ---------------------------------------------------------------------------------- | | Run a storewide or category sale | [Amount off Products/Order](/features/coupons/amount-off) | | Move more units per order | [Buy X Get Y](/features/coupons/buy-x-get-y) or [Bundle](/features/coupons/bundle) | | Bring back past customers | [Purchase Driven](/features/coupons/purchase-driven) | | Raise average order value cheaply | [Free Shipping](/features/coupons/free-shipping) above a threshold | | Clear slow stock without cutting price | [Exclusive Free Gift](/features/coupons/free-gift) | | Sell multi-packs of one product | [Bundle](/features/coupons/bundle) with single-product packs | ## The coupons list Open **Coupons** from the left navigation. Every coupon shows its performance alongside its configuration, so you can tell which promotions are earning their discount. Coupons table listing codes with type chips, orders, gross sales, discount amount, net sales, date created, visibility, active toggle, and edit and delete actions | Column | What it shows | | ------------------- | ------------------------------------------------------------------------------------------------------------ | | **Code** | The coupon code, with chips for its type and behaviour — `Automatic`, `Free Shipping`, `Freebie`, `Combines` | | **Orders** | Orders placed using this coupon | | **Gross sales** | Order value before the discount | | **Discount amount** | Total discount given away | | **Net sales** | What you actually earned after the discount | | **Date created** | When the coupon was made | | **Visibility** | Whether customers can see it at checkout | | **Active** | Turn the coupon on or off without deleting it | | **Action** | Edit or delete | Compare **Discount amount** against **Net sales** to spot promotions moving volume without making money. High orders and thin net sales usually means you're discounting revenue you'd have earned anyway. ### Finding coupons Filter by: * **Coupon Type** — Cart Amount, Product Amount, Buy X Get Y, Purchase Driven, Freebie, Free Shipping, Bundle * **Application Type** — Code or Automatic * **Status** — Active, Scheduled, Expired * **Platform** — Shopify or FlexyPe * **Combines** — Combinable or Not Combinable Sort by created date, updated date, start date, end date, or code. ## The setup flow Click **Add Coupon** and choose a type. The type determines which fields you see. Create Coupon dialog listing Amount off Products or Order, Buy X get Y, Purchase Driven, Exclusive Free Gift, Free shipping, and Bundle Discount Most types then walk through five steps, with a live summary on the right that updates as you go: **Setup → Condition → User Eligibility → Usage Limits → Preview** Two types differ. [Purchase Driven](/features/coupons/purchase-driven) adds a **User Behaviour** step after Setup, making six. [Exclusive Free Gift](/features/coupons/free-gift) has no Preview step, making four. ### Step 1 — Setup Coupon setup step with coupon code or automatic options, a discount code field, amount off order or products, percentage off or fixed amount, and a maximum purchase amount cap checkbox **How does the discount apply?** | Option | Behaviour | | --------------- | --------------------------------------------------------- | | **Coupon Code** | The customer must type the code at checkout | | **Automatic** | Applied for the customer, visible in cart and at checkout | Use **Automatic** for offers every eligible customer should get, and **Coupon Code** when the discount is earned, targeted, or tied to a specific campaign. The rest of this step is type-specific — see the individual type pages. ### Step 2 — Condition Condition step offering no purchase requirements, minimum or maximum purchase amount, or minimum or maximum quantity of items | Requirement | Meaning | | ------------------------------------- | --------------------------------- | | **No purchase requirements** | Applies to any cart | | **Minimum/Maximum purchase amount** | Cart value must fall in the range | | **Minimum/Maximum quantity of items** | Item count must fall in the range | Requirements can be measured against the **entire cart**, **specific products**, or **specific collections** — so "spend ₹2,000 on skincare" is a valid condition. ### Step 3 — User eligibility User eligibility step with all users, specific users, or customer segment options, and all orders, first order only, or total order count options **User Specific** — who can use it: * **All users** * **Specific users** — upload a list; a sample file is provided * **Customer segment** — target a segment **User Eligibility** — based on order history: * **All orders** * **First order only** — new-customer acquisition offers * **Total order count** — set a minimum and maximum number of past orders **First order only** is the acquisition lever; **Total order count** is the retention lever. Mixing them up is the most common reason a campaign reaches the wrong audience. ### Step 4 — Usage limits Usage limits step with total and per customer usage caps, combine with other discounts, discount active period with start date and optional end date, and a disable COD option | Control | What it does | | ---------------------------------------------------------- | ------------------------------------------------------------------- | | **Number of times this discount can be used in total** | Hard cap across all customers | | **Number of times this discount can be used per customer** | Stops one customer draining the promotion | | **Combine with other discounts** | Allows this coupon to stack with others. Off means it applies alone | | **Discount active period** | Start date and time, with an optional end date | | **Disable COD** | Restricts the order to prepaid payment methods only | **Disable COD** on aggressive discounts. Deep-discount orders paid by cash on delivery are the most likely to be returned, and you've already given away the margin. ### Step 5 — Preview Preview step with show discount coupon to customer, custom discount title and details options, and a summary panel listing setup, condition, eligibility, and limits * **Show discount coupon to customer** — whether the coupon is listed at checkout for customers to find and apply. Leave off for codes shared only through a campaign * **Custom discount title** and **Custom discount details** — override the wording shown at checkout Read the summary panel once before submitting. It's the fastest way to catch a promotion that's wider than you intended. ## How coupons behave together A coupon only stacks with another when **Combine with other discounts** is enabled on it. Otherwise it applies alone, and the customer gets one discount rather than several. Products given as a free gift are never discounted again by another coupon, even a combinable one. Automatic coupons apply without the customer typing anything. Visibility is separate — it only controls whether the coupon is listed at checkout. A coupon with a future start date shows as **Scheduled** and does nothing until then. Past its end date it shows as **Expired**. Both keep their configuration and reporting. ## Frequently asked questions Check, in order: the coupon is **Active**; today falls inside the **active period**; the cart meets the **purchase requirement**; the customer passes **eligibility**, especially First order only; and neither the total nor per-customer **usage limit** is exhausted. Both need **Combine with other discounts** enabled. If either has it off, it applies alone. Yes. Switch off **Active** in the list. Reporting is preserved and you can switch it back on later. Set **Number of times this discount can be used per customer** under Usage limits. ## Need help? Questions about a specific coupon or campaign Discounts tied to a payment method rather than a code # Purchase Driven Source: https://docs.flexype.io/features/coupons/purchase-driven Target customers by what they bought before — past coupon use, order value, or order count. Every other coupon type looks at what's in the cart right now. Purchase Driven looks at what the customer did **before**. It's the retention tool: win-backs, loyalty rewards, and offers aimed at people who used a specific campaign in the past. Shared setup, eligibility, and usage limits are covered in [Coupons](/features/coupons/overview). This page covers only what's specific to this type. ## An extra step Purchase Driven is the only type with **six** steps. A **User Behaviour** step sits between Setup and Condition: **Setup → User Behaviour → Condition → User Eligibility → Usage Limits → Preview** Purchase Driven setup step with a six-step progress bar showing Setup, User Behaviour, Condition, User Eligibility, Usage Limits, and Preview ## The User Behaviour step User Behaviour step showing behaviour period with start date and optional end date, and customer behaviour options for use coupon codes, minimum order amount, and minimum number of orders ### Customer behaviour Pick the past action that qualifies someone: | Option | Qualifies customers who | | ---------------------------- | ------------------------------------------------------------------ | | **Use coupon codes** | Previously used a specific coupon — pick it with **Select Coupon** | | **Minimum order amount** | Previously placed at least one order meeting an amount threshold | | **Minimum number of orders** | Have at least a set number of past orders | ### Behaviour period A start date and an optional end date. **The past activity only counts if it happened inside this window.** This is what makes the type precise. Without it you'd be targeting all-time behaviour; with it you can target "customers who bought during the festive sale" or "anyone who used our launch code in March". The behaviour period describes **when the customer's past activity happened**. The active period, set later under Usage Limits, describes **when this new coupon can be used**. They're different dates and they're easy to confuse. ## How it calculates | Behaviour rule | Behaviour period | Qualifies? | | --------------------------- | ---------------- | ------------------------------------------------------- | | Used coupon `FESTIVE20` | 1–31 Oct | Customer used it 12 Oct → **yes** | | Used coupon `FESTIVE20` | 1–31 Oct | Customer used it 3 Nov → no | | Minimum order amount ₹5,000 | Last 6 months | Customer's biggest order in window was ₹5,200 → **yes** | | Minimum number of orders 3 | Last 12 months | Customer has 2 orders in window, 5 all-time → no | ## Examples **Setup:** Coupon code `WELCOMEBACK` · 15% off **User Behaviour:** Use coupon codes → `FESTIVE20` · behaviour period covering the festive window Reaches exactly the people who bought on discount last season, and nobody else. **Setup:** Coupon code `LOYAL15` · 15% off · cap ₹500 **User Behaviour:** Minimum number of orders 3 · behaviour period covering the last year Recognises repeat buyers without opening the discount to first-timers. **Setup:** Coupon code `VIP500` · fixed ₹500 off **User Behaviour:** Minimum order amount ₹5,000 **Condition:** Minimum purchase amount ₹4,000 Targets customers who've spent big before, and asks for a substantial cart again. **Setup:** Automatic · 10% off **User Behaviour:** Minimum number of orders 1 · behaviour period ending several months ago Because the window closed months back, this reaches people who bought then and haven't since. ## Frequently asked questions Usually the **behaviour period** is too narrow, or it's set to a future or current window when you meant a past one. Check that real orders exist inside those dates. **Total order count** is a simple lifetime count. Purchase Driven measures behaviour inside a date window and can key off order value or a specific past coupon. Use eligibility for "has ordered before", Purchase Driven for anything more targeted. The behaviour rule selects one coupon. For several, create one Purchase Driven coupon per source campaign. Their past orders have to be identifiable, so the discount resolves once the customer is identified at checkout. Shared setup, limits, and combining rules Check a customer's past order history # Address Source: https://docs.flexype.io/features/customization/address Customize the address step with banners, coupons, upsells, and address form flexibility. Customization Address # Customization - Address The **Address** tab configures checkout details at the delivery address step. *** ## Banner * Add or disable banner messages (e.g., seasonal sales, shipping notices). * Customize colors and button text. *** ## Coupons * Show coupon options and UI style. * Support both coupon cards and manual code entry. *** ## Upselling Display relevant upsell recommendations at the address stage. *** ## Address Form Options * **Additional Address Line:** Add extra space for detailed instructions. * **Required Additional Line:** Make it mandatory for gated communities or complex deliveries. *** # General Source: https://docs.flexype.io/features/customization/general Brand and configure your checkout with logos, colors, layouts, and advanced options. Customization General *Video walkthrough available – [Watch on YouTube](#)* # Customization - General The **General** tab allows you to define how your checkout looks and feels for customers. From logo and colors to layouts and product visibility, this section ensures your checkout aligns with your brand identity. *** ## Logo and Colors Customization General - Logo and Colors * **Upload Logo** (WEBP, PNG, JPG, GIF up to 150×40 px). * **Color Scheme** includes primary button color, text color, and upsell background color. * **Layout Control** lets you reorder sections like Banner, Order Summary, Coupons, and Upselling. *** ## Layout Options and Advanced Features Customization General - Layout options * **Exit Checkout Layout**: Default, Out of Stock Warning, or Savings Reminder. * **Coupon Layouts**: Choose between Layout 1 (basic) or Layout 2 (highlighted offers). * **Order Summary Enhancements**: Show quantity changer, compare-at pricing, additional product details. * **Upselling Section**: Configure title and display product recommendations. * **Redirect Options**: Redirect to Shopify checkout with custom text. * **Other Options**: * Gift Card CTA * COD availability reasons * Auto-redirect international users *** # Login Source: https://docs.flexype.io/features/customization/login Configure login step elements like banners, coupons, upsells, and trust badges. Customization Login # Customization - Login The **Login** tab allows you to tailor the experience when customers log in during checkout. *** ## Banner * Add promotional text or coupon highlights. * Customize **banner background** and **text color**. *** ## Coupons * Enable coupon display during login. * Show locked coupon messages (encourages customers to log in to apply discounts). * Choose coupon UI: *as cards* or *as code entry field*. *** ## Upselling Enable product recommendations even at the login stage, driving early upsell opportunities. *** ## Trust Badges Add and display trust badges like *Risk-Free*, *Cash on Pickup*, or *100% Natural* to build credibility during login. *** # Checkout Customization Source: https://docs.flexype.io/features/customization/overview The **Checkout Customization** suite empowers brands to shape every element of their checkout flow—from logos and colors to upsells, payments, and trust badges. Deliver a visually consistent, conversion-optimized experience across all steps. ## Overview FlexyPe’s **Checkout Customization** suite gives complete control over every stage of the checkout journey — from branding and layout to upsells, coupons, and payments.\ Create a consistent, high-converting checkout experience that matches your brand identity. *** ## Customization Areas Define your brand look with logos, colors, and layouts across the checkout. Personalize the login step with banners, trust badges, and upsell prompts. Add banners, coupons, and upsells while ensuring accurate delivery details. Configure layouts, highlight payment offers, and manage billing or GST info. *** ## Key Highlights * **Branding:** Upload logos, set colors, and define button and background styles. * **Banners:** Display offers or messages at login, address, or payment steps. * **Coupons:** Enable coupon display and locked coupons to boost engagement. * **Upselling:** Recommend products at multiple stages to increase order value. * **Trust Elements:** Add badges like *“Secure Payment”* or *“Cash on Pickup.”* * **Layout Control:** Reorder checkout sections and choose coupon or payment layouts. * **Payments:** Manage available methods and highlight UPI, wallet, or EMI offers. * **Address Flexibility:** Add optional lines or make them mandatory for accuracy. *** ## Strategic Value Checkout customization helps you: * Build **brand trust** through consistent visuals and clear messaging. * **Increase conversions** by reducing friction at every step. * **Boost average order value** via contextual upsells and highlighted offers. * **Improve retention** with transparent, user-friendly checkout experiences. # Payments Source: https://docs.flexype.io/features/customization/payments Control payment step options, UI layouts, and method-specific configurations. Customization Payments # Customization - Payments The **Payments** tab allows you to optimize how customers interact with billing, GST, and payment options. *** ## Billing & GST Enable a dedicated section for customers to enter billing details and GST info. Useful for tax invoices and compliance. *** ## Payment Method UI * Choose between **Layout 1, Layout 2, Layout 3**. * Highlight savings (e.g., “Extra 5% off with UPI”). *** Customization Payments - Payment Methods ## Payment Methods Manage all available methods: * **UPI** * **Cash on Delivery (COD)** * **Debit/Credit Cards** * **Wallets** * **EMI Options (e.g., Snapmint)** * **Pay Later, Net Banking, etc.** Each method can be edited, enabled/disabled, or highlighted with promotions. *** ## Why It Matters A well-configured payment step ensures customers see relevant and trusted options, increasing successful conversions and reducing drop-offs. *** # Dashboard Source: https://docs.flexype.io/features/dashboard The **FlexyPe Dashboard** provides a centralized view of your store’s performance, bringing together sales, customer insights, discount impact, and payment analytics into one unified interface.