What the answer looks like
Illustrative output on sample data
Illustrative example: how Lexi answers this for a fried chicken chain with 60 locations. It compares new members with matched non-members on gross margin for 12 months after joining.
- Joining offer: free meal worth $9 at cost, plus bonus points worth $3. Cost per member: $12.
- Incremental gross margin: $2.40 a month per member
- Payback period = 12 ÷ 2.40 = 5 months
What the data shows
The average member earns back the joining offer in five months and adds about $17 of margin by the end of the first year.
What it means
Members who joined in the app pay back in three months. Those who joined at the counter for the free meal take nine.
What to do
Keep the offer in the app, and replace the counter offer with bonus points on the next visit.
Want me to show payback by location?
Member payback period formula
Why it matters
Joining offers cost money up front, and the return comes slowly through extra visits. Knowing how long each new member takes to pay back the offer, and what they are worth after that, shows whether the offer is the right size and which joining channels are worth growing.
Frequently asked questions
How do you calculate the payback period for a loyalty program?
Divide the cost of the joining offer by the extra monthly margin each new member generates compared with similar non-members. The result is the number of months until the offer has paid for itself. Measure by joining channel, since payback often varies widely.
What makes a joining offer pay back faster?
Offers that bring members back for a second visit soon after joining pay back fastest, such as points toward the next order. Offers redeemed on the spot, at a visit that would have happened anyway, cost the same and earn back far more slowly.
Why compare new members with non-members?
Members would have spent something without the program. Comparing them with similar non-members isolates the extra margin the program creates, which gives a fair payback period. Counting all member spend as program value overstates the return.