How to Set Up a Loyalty Program Like Kohl's Rewards on Shopify

Kohl's Rewards pays 5% back on everything, every day. Next to a typical points program worth about 2%, that is more than double, and it is not a trick. The rate is real.
What is not real is the amount that reaches the customer. Between earning the 5% and spending it, Kohl's runs three separate clocks, and each one quietly returns a share of the money to the business. The advertised rate is 5%. The paid rate is whatever survives those clocks.
That gap is the whole design, and it is the one decision you have to make before you build anything. You can copy all three clocks and advertise a big number while paying a smaller one. Or you can drop the expensive one, pay much closer to what you advertise, and stop running a monthly support queue. We would drop it, and this guide shows you where.
This guide walks through setting up a loyalty program like Kohl's Rewards on your own Shopify store, using Mage. Every setting is included, so you can follow it start to finish. It takes about twenty minutes, and if you would rather not do it yourself, our team will set the whole thing up for you free of charge.
What is Kohl's Rewards?
Kohl's Rewards is Kohl's free loyalty program. Members earn 5% back on qualifying purchases, in store and online, with no card and no fee. That 5% accumulates as a balance, and once a month the balance is converted into Kohl's Cash, the coupon customers actually spend.
There are no tiers, no ladder and no catalogue. It is the simplest program in this series to describe and the most carefully priced.
If you already know it, skip ahead to what you'll set up. Everything below describes Kohl's Rewards as it stands in 2026.
How Kohl's Rewards works
Two things move. A balance that goes up when you shop, and a coupon that gets minted from it once a month. Keeping them separate is the entire mechanic, and it is why the program costs less than its headline suggests.
Kohl's Rewards points, and why there aren't any
Search for Kohl's Rewards points and you will find plenty of people looking for them. There are none. The program has no points currency at all, and that is the most interesting thing about it.
Your balance is denominated in dollars. You earn $5 for every $100 you spend, and you see $5. There is no conversion rate to learn, no ladder to read and no arithmetic between what you earned and what it is worth.
That sounds like a cosmetic choice. It is not. A points currency has a price you set and can change later, which means it has a value customers have to be taught and can be quietly devalued. A dollar balance has neither. What you advertise is what you owe.
How can I earn rewards on Kohl's purchases?
Every qualifying purchase earns 5%, in store or online, with no minimum and no threshold. The rate does not change with how much you spend or how long you have been a member, because there is nothing for it to change with.
Qualifying spend is calculated after all coupons are applied and before shipping, fees and tax. That second half matters more than it looks. A customer paying with a discount code earns 5% of what they actually paid, not 5% of the ticket price, which is what stops the program paying out twice on the same promotion.
When do I get my Kohl's Rewards?
The balance updates within 48 hours of the purchase. Then it sits there, and this is the part people miss: the balance is not spendable. It is a running total, not money.
On the first day of the following month, Kohl's converts the balance into Kohl's Cash in $5 increments and emails it to you. That coupon is valid for 30 days. Anything left over that does not reach a full $5 rolls into next month.
Kohl's Cash
Kohl's Cash is the spendable half, and it exists twice over. The version above is minted from your Rewards balance monthly. The other version comes from advertised Kohl's Cash events, where shoppers earn $10 Kohl's Cash for every $50 spent during a set window, redeemable in a separate window later.
Both are coupons with a printed life. Both stack with other savings. Both are gone if the window closes.
The three things that make it work
Three ideas hold this program up. You can skip to Step 1 and build it without them, but they explain why the settings are what they are.
1. You advertise 5%, but you pay less
Kohl's makes it hard to spend the full 5%, in three ways:
- You need $100 of spending before anything converts, because the balance only comes out in $5 blocks. Spend $70 in a month and you get nothing yet.
- The coupon dies after 30 days. Do not shop in that window and the money is gone.
- The balance itself expires after a year.
The 30 day window is the expensive one. If a third of coupons go unspent, your 5% program really pays 3.3%. If half go unspent, it pays 2.5%, which is an ordinary program with a much better headline.
So here is the decision. Copy all three and you advertise a big number while paying a smaller one. We would not. A customer who watched $18 expire because they did not shop in March does not thank you for the 5%.
This guide keeps two of them and drops the monthly conversion. Customers cash out whenever they like, so the 30 day clock only starts once they have already decided to buy something. You pay close to a real 5%, so budget for 5%.
2. Paying in dollars means there is nothing to price
A points program needs decisions before you can even start. How many points per dollar, what a point is worth, what each reward costs.
Cashback has none of that. The rate is the entire setup. And customers never have to work out what they have: "you have $18.40" explains itself, where "you have 1,840 points" needs a whole page.
The downside is that every dollar is worth the same, so there is no big reward at the top for people to save towards. That matters if your customers only buy once or twice a year, and it is why Kohl's runs the Cash events in Step 6. If you would rather have something to save for, our guide to the Shopify loyalty program covers the points based version.
What you'll set up
We will build this on an apparel brand, a womenswear and menswear label selling tops, denim, outerwear and accessories, with a program called Thread Rewards and a coupon called Thread Cash. Rename both to suit your brand.
| Kohl's Rewards feature | What you'll set up in Mage |
|---|---|
| A balance held in dollars, not points | Store credit mode |
| 5% back on every purchase, every day | Purchase earning rule, $5 per $100 |
| Balance posts within 48 hours | Approval Time of 2 days |
| Converted into $5 Kohl's Cash increments | Flexible redemption, $5 minimum |
| Kohl's Cash valid 30 days | Expiry Days on the reward |
| Usable alongside your other coupons | Combinations, all three checked |
| Balance expires after one year | Store credit expiry, 365 days |
| Reminders before it goes | Expiry reminder email plus wallet push |
| $10 Kohl's Cash for every $50 spent | Tiered bonus campaign, scheduled |
| Targeted offers on qualifying orders | Cashback offer with its own code |
| Earning on in store purchases | Receipt upload rule at the same 5% |
| Occasional exclusive member benefits | Points drops |
| Joining the program | Signup rule |
| Coupons in the Kohl's App wallet | Apple and Google wallet passes |
| Checking your balance | Widget, sidebar and loyalty pages |
Step 1: Switch your program to store credit
Go to Settings → Loyalty. The first card is Program Currency.
| Field | Value |
|---|---|
| Program Currency | Store credit |
Click Switch to store credit and type SWITCH to confirm.
From here everything is money. You type 5.00 and see $5.00. Customers see a dollar balance on every surface, never a point count, which is the entire reason to run this shape instead of a points program. There is more on the mechanics in our guide to Shopify store credit.
Two things become true automatically, and both suit this build. The conversion rate is pinned at 1:1, so $1 of credit is always $1 off and there is no way to devalue the currency later. And redemption is flexible by design, so customers take the amount they want rather than picking from a menu.
While you are configuring, go to Settings → Test mode and switch it on, so test orders do not award real credit. Turn it off before you launch.
Step 2: Set your earning rate
Go to Loyalty → Earning Store Credit and open the Purchase rule. It already exists, so there is nothing to create.
| Field | Value |
|---|---|
| Earning rule name | Earn 5% back on every order |
| Earning points | $5.00 for every $100 spent |
| Exclude discounted products from earning points | Unchecked |
| Approval Time | 2 |
| Status | Active |
Earning points is the card with two boxes in it, and it reads across as a sentence: an amount, then "for every", then a spend amount. It opens at $0.01 for every $1, so change both boxes, not just the first one.
Enter it as $5.00 for every $100 rather than $0.05 for every $1. The two are identical arithmetic, and the first is the version your team will read back to you without reaching for a calculator. It is also the Kohl's line word for word.
Approval Time of 2 days is the "within 48 hours" promise, and it does real work beyond fidelity. Approval time holds credit as pending, so a cancellation in the first 48 hours removes credit the customer never saw as spendable. Apparel has the highest return rate of any category, so 5 or 7 days is a defensible change if you want to cover more of your returns window.
Leave the exclusion box unchecked. This is the setting people tick by instinct and regret later. Ticked, any line carrying a discount stops earning entirely, so every customer checking out with a markdown, a welcome code or their own Thread Cash earns nothing at all. On an apparel store running seasonal reductions that is most of your orders, and it penalises the customers redeeming most often.
Kohl's does something more sensible and Mage matches it with no configuration. Credit is calculated on your merchandise subtotal, so tax and shipping never earn, and that subtotal is already net of discounts, which is the Kohl's "after all coupons are applied" rule exactly.
Step 3: Build the redemption
This is the coupon your customers actually spend, the Thread Cash half. Go to Loyalty → Redeeming Store Credit → Add Reward → Discount → Fixed.
You will notice there is no points cost to enter. In store credit mode the reward is flexible by definition and the rate is pinned, so the form shows a short line reading "Store credit applies 1:1. The amount a customer redeems is the discount they receive." That is the entire pricing decision, already made.
| Field | Value |
|---|---|
| Reward Name | Thread Cash |
| Minimum redemption | 5.00 |
| Maximum redemption | 500.00 |
| Minimum Spend | 0 |
| Expiry Days | 30 |
| Combinations: Product discounts | Checked |
| Combinations: Order discounts | Checked |
| Combinations: Shipping discounts | Checked |
Minimum redemption of $5.00 is the Kohl's $5 increment, improved. Kohl's mints in exact $5 blocks, so a customer holding $12.40 gets $10 and strands $2.40 until next month. Here the $5 is a floor rather than a step: they redeem the whole $12.40 if they want it. Same threshold, none of the stranding, and one fewer thing to explain.
Set it lower than $5 only if you are comfortable minting $1 discount codes, which generate support volume out of all proportion to their value.
Expiry Days of 30 is the Kohl's Cash window, and it is the one clock from the thesis that we keep. It is worth keeping because it is honest: the customer chose the moment they converted, so the 30 days starts when they are already thinking about buying something. That is urgency you created rather than a deadline you imposed.
Check all three Combinations boxes. This is the "use it with any savings coupons you have" rule, and Kohl's is unusually generous here on purpose. Shopify defaults every combination flag to off, so leaving these unchecked is a decision you will make by accident. On an apparel store where something is always reduced, unchecked means your best customers discover their credit is worthless during your biggest sale.
Leave Minimum Spend at 0. Kohl's Cash carries no minimum. Adding one turns "you have $18.40" into "you have $18.40 if you spend $60", which is a different and much weaker message.
Step 4: Set your expiry clock
Go to Loyalty and scroll to the store credit expiry card.
| Field | Value |
|---|---|
| Enable store credit expiry | Checked |
| Expiry mode | Time after store credit is acquired |
| Store credit expires after | 365 |
| Expiry reminder | 30 |
This is the setting most people get wrong, and the modes are not interchangeable. Kohl's says balances that do not convert expire after one year. That is an age rule: each batch of credit dies 365 days after it was earned, whatever the customer does in between.
Time after store credit is acquired is exactly that. The other mode, Customer's last purchase date, resets the clock on the whole balance every time the customer buys, so an active customer never loses anything. It is the friendlier setting and it is what most programs in this series use. It is not what Kohl's does, and choosing it here produces a program that behaves differently in the one place customers notice.
Pick the age rule for fidelity. Pick the inactivity rule if you would rather never expire an active customer's money, and know that you have made the program meaningfully more generous.
Set the reminder to 30 days. It fires the store credit expiring soon email, which reaches a lapsed customer with a specific amount and a specific date in it. Expiry without a warning is a penalty. Expiry with a warning is a reactivation campaign that runs itself, and on a program with no tiers and no ladder it is one of the few scheduled messages you have.
Note that you now have two clocks running at different speeds, which is correct and worth understanding before a customer asks. The balance lives 365 days from when it was earned. A code minted from that balance lives 30 days from when it was redeemed.
Step 5: Add the welcome bonus
Go to Loyalty → Earning Store Credit and open the Signup rule.
| Field | Value |
|---|---|
| Amount earned | 5.00 |
| Status | Active |
Kohl's does not publish a join bonus, and we would add one anyway. $5 is the right number here because it is precisely one redemption at the minimum you set in Step 3, which means a brand new member can convert it to a working discount code on the day they join.
That matters more in a cashback program than a points one. There is no ladder to show them and no tier to aim at, so the first redemption is the only thing that proves the program is real. Make it reachable on day one.
Step 6: Run a Cash event
This is the Kohl's Cash promotion, the $10 for every $50 that Kohl's advertises on the homepage several times a year. It stacks on top of the standing 5% and it steps rather than scaling: $50 earns $10, $99 also earns $10, $100 earns $20.
Go to Loyalty → Bonus Campaigns → Create.
| Field | Value |
|---|---|
| Campaign Name | Thread Cash Event |
| Campaign Type | Tiered |
| Start date and time | First day of your window, 00:00 |
| End date and time | Last day of your window, 23:59 |
Then build the spend tiers:
| Spend at least | Bonus store credit |
|---|---|
| 50 | 10.00 |
| 100 | 20.00 |
| 150 | 30.00 |
| 200 | 40.00 |
| 250 | 50.00 |
Customers earn the single highest tier they qualify for, on top of their normal 5%. That is why the ladder has to be written out rung by rung rather than expressed as a rate, and it is why your top rung is your cap. Under the table above a $600 order earns $50 rather than $120. Extend it if you want to match Kohl's, which publishes no ceiling, or leave it short deliberately and know where your exposure stops.
Look at what a rung costs before you publish it. At $50 for $10 you are paying 20% on that step, on top of the 5% you already pay, so a Cash event is four to five times your normal rate for its window. That is the correct order of magnitude for a headline promotion and completely wrong as a standing offer. Schedule it, run it for a week, let it end.
Approval time is inherited from your Purchase rule, so bonus credit and base credit approve together on the same 48 hour clock. There is nothing to set.
Step 7: Run a targeted promo
A Cash event is store wide. The other thing Kohl's runs constantly is narrower: a flat amount, on a qualifying order, in a fixed window, once per customer, delivered as its own code. Their pickup offer is the shape, $5 back on orders over $49.
Go to Cashback → Create Cashback Offer.
| Field | Value |
|---|---|
| Offer name | $5 back on orders $49+ |
| Reward method | Discount code |
| Discount code prefix | CASH- |
| Combinations | All three checked |
| Cashback amount | 5.00 |
| Who qualifies for this offer? | All customers |
| Maximum awards per customer | 1 |
| Minimum order amount | 49.00 |
| Approve cashback after | 2 days |
| Schedule | Scheduled, your start and end dates |
| Status | Active |
Then set the window on the Cashback page itself:
| Field | Value |
|---|---|
| Expire cashback after | 30 days |
Use a cashback offer rather than a campaign when the offer needs its own rules. Four things it gives you that a bonus campaign does not: a single use, customer locked discount code minted per award, a hard cap through Maximum awards per customer, a minimum order amount that gates the offer rather than laddering it, and the ability to scope the offer to specific products or collections under Order requirements.
That last one is worth remembering even if you do not need it today. It is the only place in this build where you can point an offer at one part of your catalogue.
Keep cashback offers scheduled rather than always on. Cashback and your purchase rule both fire on the same order, so an always on offer pays on top of your 5% every single day. That is the correct behaviour for a promotion and an expensive accident as a permanent setting.
To target the offer more tightly, set Who qualifies for this offer? to Shopify Segment and point it at a segment from your Shopify admin. That is how you reach people who bought a coat eleven months ago, which is a better use of the feature than another store wide discount.
Step 8: Reward in store purchases
Skip this step if you sell online only. If you have a shop floor, this is the part of Kohl's Rewards that most Shopify programs never build, and it is the reason the Kohl's rate feels the same everywhere.
Go to Loyalty → Earning Store Credit → Add Earning Rule → Submit Receipt.
| Field | Value |
|---|---|
| Earning Method | Store credit per amount spent |
| Store Credit per Amount Spent | $5.00 for every $100 spent |
| Only accept receipts from specific stores | Checked |
| Selected stores | Every trading name that appears on your receipts |
| Maximum receipt age | 30 days |
| Minimum purchase amount | 10 |
| Limit how often customers can earn store credit by submitting receipts | Checked |
| Maximum submissions | 4 |
| Time period | Per month |
| Send email reminders when there are pending receipts to review | Checked |
Setting the same $5.00 per $100 makes the promise honest: 5% back, wherever they bought it. A customer who shops both channels sees one balance.
Only accept receipts from specific stores is the setting to get right. Without it, a customer can photograph a supermarket receipt and earn 5% of their weekly shop. List every trading name that appears on your receipts, or legitimate submissions get rejected.
Receipts are scanned automatically for fraud and then land in a review queue at Loyalty → Receipt submissions for you to approve before credit is awarded. That queue is a real commitment, so leave the weekly reminder email on. The monthly submission limit keeps the volume predictable.
Step 9: Surprise your members
Kohl's promises "occasional additional benefits such as exclusive discounts and free shipping" and deliberately never says when. In a program with no tiers to climb, this unpredictability is the only surprise you have, and it is worth more than the credit costs.
Go to Loyalty → Store Credit Drops → Create.
| Field | Value |
|---|---|
| Drop name | Members only bonus |
| Who receives this drop | All customers, or a Shopify Segment |
| Amount | 10.00 |
| Expires after | 7 days |
Set an expiry on every drop. Credit that sits there forever is a top up. Credit that expires in seven days is an event, and that window is what turns a bonus into an order. Drop credit runs on its own clock regardless of what the customer buys in the meantime, so the deadline is real.
Targeting a Shopify segment rather than everyone is where drops earn their keep. Ten dollars to your whole list is a discount. Ten dollars to the 400 people who bought outerwear last September, dropped in the week the weather turns, is a campaign.
Step 10: Reward everything that is not a purchase
Kohl's earns on purchases and nothing else. This is where a Shopify store beats a department store, because every rule here builds the thing a cashback program lacks: a reason to engage between orders.
All three are under Loyalty → Earning Store Credit → Add Earning Rule, and every amount is entered in dollars.
Leave a review. Connect Judge.me, Okendo or Yotpo and set the amount to $2.00. Okendo and Yotpo also give you separate amounts for photo and video reviews, and we would use them: $2 for text, $3 for a photo, $4 for video. On apparel, one customer photo showing fit on a real body does more for your conversion rate than five written reviews.
Photo Challenge. Set a title and instructions, $2.00, How often can a customer earn this? to Repeatable and Days between uploads to 7. Submissions come to you for approval before credit is awarded, so you control what qualifies and you end up with a library of customer photography you are allowed to use.
Birthday. $5.00, with the Date of Birth Eligibility Period set to 7 days. That last field is the one to get right. Left at 0, customers add a birthday of tomorrow, collect, and edit it again next month. Set to 7, the date has to have been on file a week beforehand. More on this in our guide to Shopify birthday rewards.
Watch your total. Every rule here is credit minted on top of 5%, and unlike the purchase rate none of it is proportional to spend, so it costs proportionally most on your smallest customers. Add them one at a time and look at the numbers.
Step 11: Put the balance in a wallet
The Kohl's App wallet, holding every coupon with its barcode, is the most distinctive piece of how Kohl's Rewards gets delivered. Customers do not check a website for their balance. It is on their phone.
Go to Wallet Pass → Builder and build an Apple and Google pass showing the customer's balance. Then go to Wallet Pass → Campaigns and switch on the automations:
| Automation | What it does |
|---|---|
| Reward available | Fires when a customer can afford to redeem, which at a $5 minimum is often |
| Points expiring | Fires ahead of the 365 day balance expiry from Step 4 |
| Reward expiring | Fires ahead of a redeemed code's 30 day expiry |
Reward expiring is the one that matters most here. A customer who converts $20 into a code and then forgets it loses the money on day 31. A push notification three days out is the difference between a redemption and a complaint, and it is the closest thing you have to the Kohl's Cash reminders.
Step 12: Put it in front of customers
A cashback program nobody can see is a rebate scheme. Five surfaces, in the order we would build them:
Account Sidebar. The signed in view, showing the balance and the redeem control. This is where the conversion from Step 3 actually happens, so it is the highest value surface in the entire build. Everything else drives traffic to it.
Rewards Widget. The floating storefront launcher. In store credit mode it shows a dollar figure, which is the whole argument for this program shape.
Loyalty Pages. Your landing page. Add the How it works, Ways to earn, Ways to redeem and FAQ blocks. They populate themselves from what you configured.
Product points calculator. Shows what the customer earns on the product page. On a 5% program this reads as "Earn $6.00 back" on a $120 coat, which is a stronger merchandising line than any point count because it is already denominated in money.
Checkout. Flexible redemption at checkout lets a customer spend their balance without leaving the funnel, and the cashback estimate shows what the order will earn while they are paying.
Spend your time on the How it works block. This program has no ladder, no tiers and no catalogue, so the entire explanation is three sentences: earn 5% on everything, it lands in your balance within two days, spend it whenever you like from $5 up. Say exactly that, in those words, and resist adding anything.
Step 13: Set up your emails
Go to Email Templates and brand these three:
| Template | Fires when |
|---|---|
| Store Credit Earned Email | Credit approves after the 48 hour hold |
| Store Credit Expiry Soon Email | 30 days before the balance expires |
| Birthday Store Credit Email | On a member's birthday, if you built Step 10 |
Kohl's leans on email harder than any other program in this series, because in their model the coupon only exists in an inbox. Yours does not, since the balance is visible on every surface and in the wallet, so these three are reinforcement rather than delivery. The expiry warning is the one that pays for itself.
You don't have to copy all of it
Very few stores need the whole thing, and it comes apart cleanly.
If you want one thing, make it Steps 1 to 3. A dollar balance earning 5% with a $5 minimum redemption is a complete, working loyalty program in three settings, and it is the easiest program of any shape to explain to a customer.
If your margins are tighter than 5%, run the same build at 3% and change nothing else. The shape holds at any rate, which is the advantage of having no ladder to rebalance. Everything in this guide works identically at $3 per $100.
If your customers buy a few times a year, prioritise Steps 6 and 9. A flat rate gives an occasional buyer nothing to aim at, so the scheduled Cash event and the unscheduled drop are where all your urgency comes from.
If you sell apparel, prioritise Step 10. Customer fit photos do more for conversion on clothing than any other category, and paying $2 to $4 for them is the cheapest content you will ever buy.
If you have a shop floor, prioritise Step 8. Matching the online rate on in store receipts is what makes "5% back, everywhere" true rather than marketing, and almost nobody does it.
Take the parts that suit how your customers actually shop.
We'll set it up for you, free
If you would rather not configure any of this yourself, our team will do it for you at no cost. That includes the full build above, tuned to your catalogue and your margins, plus your branding across the widget, sidebar and loyalty pages.
Already running a loyalty program somewhere else? We handle migrations free of charge too, including your existing customer balances, tiers and history, so nobody loses what they have earned. We have migrated stores from Smile.io, LoyaltyLion, Yotpo, Rivo, Stamped, Joy and Bubblehouse.
Talk to our team and tell us what you want your program to look like.
Frequently asked questions
What is Kohl's Rewards? Kohl's Rewards is Kohl's free loyalty program, in which members earn 5% back on qualifying purchases in store and online, with no card and no fee. The earnings build up as a balance, and on the first of the following month that balance is converted into Kohl's Cash in $5 increments, which is valid for 30 days. There are no tiers and no points, and the rate is the same for every member on every order.
How does the Kohl's Rewards program work? Kohl's Rewards runs on two things: a balance that is not spendable and a coupon that is. Every qualifying purchase adds 5% to the balance within 48 hours, calculated after coupons and before tax and shipping. On the first of the following month the balance converts into Kohl's Cash in $5 blocks and is emailed to the member, with any remainder under $5 rolling forward. That is the program as of 2026.
How can I earn rewards on Kohl's purchases? Every qualifying purchase earns 5%, with no minimum spend and no threshold to cross. The rate does not increase with how much you spend or how long you have been a member, because Kohl's Rewards has no tiers. Qualifying spend is calculated after all coupons are applied and before shipping, fees and tax, so a discounted order earns 5% of what was actually paid rather than 5% of the ticket price.
When do I get my Kohl's Rewards? The balance updates within 48 hours of a qualifying purchase, but it is not spendable at that point. Kohl's converts the balance into Kohl's Cash on the first day of the following month, in $5 increments, and that coupon is then valid for 30 days. In the Shopify build in this guide we deliberately drop the monthly wait: the balance is spendable as soon as it clears the 48 hour hold, and the 30 day clock starts when the customer chooses to redeem.
How do I check my Kohl's Rewards points balance? Kohl's shows the balance under Account on the website and in the Kohl's Rewards section of the app, alongside the Kohl's Cash already issued. On a Shopify store you get the same thing in four places at once: the floating rewards widget, the account sidebar, the loyalty landing page, and an Apple or Google wallet pass on the customer's phone. Step 12 covers all of them, and the sidebar is the one to build first.
How do I redeem Kohl's Rewards online? Kohl's Cash is applied at checkout, either automatically from a linked wallet or by entering the coupon number and PIN. In the build in this guide the customer redeems from the sidebar or at checkout, chooses any amount from $5 upward, and gets a discount code they can use immediately. Because the conversion rate is pinned at 1:1, $12.40 of balance is always $12.40 off, with no arithmetic in between.
Do Kohl's Rewards expire? Yes, on two different clocks. An unconverted Kohl's Rewards balance expires one year after it was earned, on an age based rule rather than an inactivity one, so it goes whether or not the member has been shopping. Kohl's Cash minted from that balance expires 30 days after it is issued. In this guide the balance clock is one dropdown, Time after store credit is acquired, set to 365 days in Step 4, and the coupon clock is Expiry Days, set to 30 in Step 3.
How do I set up a loyalty program like Kohl's Rewards on Shopify? Every part of the structure in this guide can be set up in Mage: a dollar denominated balance, the 5% earn rate, a $5 minimum redemption with a 30 day coupon life, expiry on both clocks, scheduled Cash events, targeted cashback offers, earning on in store receipts, surprise credit drops, wallet passes and the customer facing surfaces. This guide covers each step with the exact settings to use, and it takes about twenty minutes.
Should I pay in store credit or points? Pay in store credit when the rate is the whole proposition, and in points when you want a ladder. A dollar balance is instantly legible, needs no conversion rate, and cannot be devalued later, which is why it suits a flat cashback program like this one. Points let you bend the value curve so the top reward is better value than the bottom, which gives occasional buyers something to save for. You cannot do both in one program, so pick the one that matches how often your customers actually buy.
What happens to rewards when a customer returns something? Credit earned on that order is removed automatically, and partial refunds reverse it proportionally. Tax and shipping never earned anything in the first place, so nothing needs unwinding there, and bonus credit from a Cash event is reversed with the order it came from. Setting Approval Time to 2 days, as in Step 2, means most cancellations are handled before the credit is ever confirmed as spendable.
Can I switch from my current loyalty app without losing customer balances? Yes. We migrate balances, tiers and history from other loyalty platforms free of charge, so your customers keep everything they have earned.
Mage is not affiliated with, endorsed by, or sponsored by Kohl's. Kohl's Rewards and Kohl's Cash are trademarks of Kohl's, Inc. This guide references the program for the purpose of comparison and education.






