Category guide
Loyalty program fraud on Shopify: how points get farmed and how to stop it
Loyalty program fraud is the earning or redeeming of rewards by someone the program was never meant to pay: a duplicate account, a self-referral, a refunded order that kept its points. It does not look like fraud. The order is real, the card is real, the parcel ships. What is wrong is the points ledger: a signup bonus paid to someone who already had an account, referral credit paid to a buyer who referred themselves, points earned on an order that was refunded a week later. This guide covers the four patterns that account for most of it, why the loyalty apps do not catch them, and what detection and prevention look like when they run at checkout.
Published 7 September 2026.
What loyalty fraud looks like in a Shopify store
Four patterns. Each one uses a mechanic the program deliberately built, pointed at a buyer the program did not mean to reward.
Duplicate accounts earning signup points
Most programs pay a bonus for creating an account, a bigger one for the first order, and sometimes another for adding a birthday or following on social. Each of those is worth real money at redemption. A buyer with three email addresses collects them three times. The program sees three new members. You see three accounts with one shipping address, if you look.
How to catch it
Check the buyer against prior profiles before the bonus mints. Same phone, same address, or same device as an existing member means no signup bonus, no first-order multiplier. The order still completes at the normal price.
Self-referrals paid in points or credit
Refer-a-friend pays the sharer when the friend buys. When the friend is the sharer with a new email, the program pays the buyer for buying from themselves. Referral apps attribute the order to the share link and issue the reward. They do not ask whether the two people are one person.
How to catch it
Compare the sharer and the redeemer across every signal, not just the email. Matching phone, address, IP, or device means the credit is withheld. OfferGuard runs this twice: as a rule-engine signal at checkout and as an unconditional guard when the referral is attributed, matching on the sharer's email and Shopify customer ID.
Earn, refund, keep the points
A buyer places a large order, earns the points, redeems them on a second order, then refunds the first. If the program does not reverse the earn, the points were free. If it reverses the earn but not the redemption, the account goes negative and nothing happens. Many programs handle the first case badly and the second not at all.
How to catch it
An append-only ledger where every refund writes a clawback event against the original earn, and every free-product redemption can be reversed when that order is refunded. OfferGuard also computes earn on the subtotal after all discounts, so a points redemption cannot generate new points on the amount it just discounted.
Shared households and shared devices
Roommates, siblings, and couples trade referral codes and split signup bonuses. Sometimes that is exactly the word of mouth the program wants. Sometimes it is one person with a spouse's name on the second account. The program cannot tell the difference from the email.
How to catch it
Address-level and device-level matching turns this into a policy decision instead of a blind spot. You decide whether one household can hold one account or several, and the rule enforces it. Fuzzy address matching means "Apt 4B" and "#4B" resolve to the same door.
Why Smile, LoyaltyLion, and Yotpo don't see it
Loyalty apps are built to issue rewards, and they are good at it. Their input is the customer record Shopify hands them: an email, a customer ID, an order. They pay points against that record. None of them ask whether the record belongs to a person who already has another record.
That is not a bug in those products. Identity resolution is a different job. It needs the phone number and shipping address from the checkout, the device signature from the storefront, and the order history to compare them against, all before the order completes. A loyalty app receives the order after it is placed and after Shopify has already decided who the customer is.
The result is that a merchant can run a strict fraud stack and a generous loyalty program side by side and still leak. The fraud app scores the payment. The loyalty app pays the points. Neither one checks whether the buyer behind the fresh email bought last month under a different one.
Loyalty fraud detection: five identity signals before points mint
Detection means answering one question before any bonus is issued: is this buyer new? An email cannot answer it. Five signals together can.
Email is normalized first. Gmail dots are stripped, plus-aliases are removed, googlemail.com becomes gmail.com, and known relay domains from Apple, DuckDuckGo, and Firefox are flagged. Phone numbers are reduced to digits and compared on the last ten. Shipping and billing addresses are canonicalized so that street abbreviations, unit designators, and ZIP+4 suffixes do not produce a false new address. IP is recorded. The device signature comes from a web pixel that starts collecting on the first page view, before the buyer reaches checkout, so a guest checkout still maps to a known device.
The decision runs inside Shopify checkout through the Checkout Extensions API, server-side, in under 100ms. If two or more signals match a prior profile, the buyer is treated as returning. Signup bonuses, first-order multipliers, and referral credit do not apply. The order itself is not blocked unless you want it to be. The buyer pays the normal price and earns the normal rate.
Points then attach to the identity profile, not the email. A second account opened by the same person lands on the same profile, which is why the second signup bonus never pays.
Loyalty fraud prevention by design: earn on the post-discount subtotal, refund clawback, clawback window
Detection stops the buyer who should not be rewarded. Prevention is about the program rules that make the remaining abuse unprofitable. Four of them do most of the work.
Earn on the post-discount subtotal. If a buyer redeems 1,000 points for $10 off, the points for that order are computed on the amount after the $10 came off. A program that earns on the pre-discount amount lets a redemption generate points on money the buyer never spent. OfferGuard's earn calculation requires the subtotal after all discounts, line-level and order-level.
Claw back on refund. Every earn event carries the order that caused it. When that order is refunded, a clawback event is written against the same account, and a free-product redemption on a refunded order is reversed the same way. The ledger is append-only and idempotent on the source event, so a webhook that fires twice writes nothing the second time.
Hold referral credit. Referrer rewards in OfferGuard are paid as Shopify store credit after a hold, seven days by default. A refund inside the hold means the credit is never issued. A refund after the hold that takes the order past the refund threshold debits the credit back. Referral credit is also capped per referrer per 30 days, and the program can require that the referred buyer be a new identity.
Tie tiers to lifetime points, not to accounts. VIP and Elite tiers multiply earn rates, which makes them a target for farming. When tier status belongs to the identity profile, splitting purchases across accounts does not accelerate anyone into a higher tier.
Merchant checklist
- 01
Count how many of your loyalty members share a shipping address, phone number, or device with another member. That number is your exposure.
- 02
Pay signup and first-order bonuses only after the buyer resolves to a new identity, not a new email.
- 03
Compute earn on the post-discount subtotal so redemptions cannot mint points on themselves.
- 04
Reverse earned points on refunds and reverse free-product redemptions when the redeeming order is refunded.
- 05
Hold referral credit for a fixed period (OfferGuard defaults to 7 days) so refunds inside the window cost nothing.
- 06
Cap referral credit per referrer per 30 days. A cap stops a farm without touching a normal customer.
- 07
Log every points event with the order or refund that caused it so a dispute can be traced in one query.
Questions about loyalty fraud
What is loyalty program fraud?
Loyalty program fraud is earning or redeeming loyalty points in ways the program did not intend, using real orders and real payment. The common forms are duplicate accounts collecting signup or first-order bonuses, self-referrals paid in points or store credit, earning points on an order and then refunding it, and one household running several accounts to multiply rewards. Nothing is stolen from a card. The loss shows up as points liability and discounts paid to buyers who would have bought anyway.
Is loyalty fraud the same thing as promo abuse?
It is one branch of it. Promo abuse covers any promotional mechanic gamed by the buyer: welcome discounts, referral credits, intro pricing, free samples, and loyalty points. Loyalty fraud is the points-and-credit branch. The detection method is the same because the weak point is the same: the program trusts the email or account the buyer presents.
How do you detect loyalty fraud?
Resolve the buyer to one identity before points are issued. Normalize the email, compare phone number, shipping and billing address, IP, and device signature against prior orders. If two or more signals match an existing profile, the buyer is not new, and signup bonuses, first-order multipliers, and referral credit should not apply. Then keep a ledger that can reverse points when an order is refunded.
Does the OfferGuard loyalty program need a customer account?
No. Points are tied to the identity profile OfferGuard already builds for checkout enforcement, so a guest checkout earns and redeems against the same profile as a logged-in one. That is also what stops a buyer from opening a second account to collect the signup bonus again.
Related reading
Promo abuse prevention for Shopify
The wider category: coupon fraud, referral fraud, and loyalty fraud, and why Shopify cannot solve any of them natively.
OfferGuard loyalty program
Points, tiers, achievements, and a free-product catalog, all paid against a verified identity.
OfferGuard referral program
Store credit rewards with a refund clawback window and a self-referral guard.
Shopify referral fraud: self-referral detection
Self-referrals, household rings, referral farms, and leaked codes, with the signals that catch each.
Best Smile.io alternatives for Shopify
Nine loyalty apps compared on what they actually do, including which ones verify identity.