Price presentation changes buying decisions.
Not the price itself — the way it is displayed on screen. Two stores selling the same product at the same price can produce dramatically different conversion rates based solely on how the price appears. One shows "$79.99." The other shows "$129.99 $79.99 — Save 39%." Same product, same final cost, entirely different psychological framing.
This is not theory. It is one of the most replicated findings in behavioral economics. Amos Tversky and Daniel Kahneman's research on framing effects — published in Science in 1981 — demonstrated that identical choices presented differently produce systematically different decisions. Applied to ecommerce, this means your Shopify price display is not just informational. It is persuasive architecture.
This guide covers five pricing presentation techniques with conversion data for each: anchoring with compare-at prices, strikethrough formatting, savings percentage displays, installment/BNPL presentation, and charm pricing. Each section includes Liquid snippet implementations you can add to your Shopify theme without apps or developers.
The gap between stores that treat pricing as a number and stores that treat pricing as a psychological signal is measured in conversion rate points.
What Is Price Anchoring and How Does It Affect Purchase Decisions?
Price anchoring is a cognitive bias where the first price a shopper sees establishes a mental reference point (the "anchor") against which all subsequent prices are evaluated. Ariely's Predictably Irrational research demonstrated that even arbitrary anchors influence willingness to pay by 30-60%. In Shopify, the compare-at price serves as the anchor, making the actual selling price feel like a bargain by comparison.
Price anchoring is the single most powerful pricing psychology technique available to ecommerce merchants. It works because of how the human brain processes numerical information.
When a shopper sees "$129.99" crossed out next to "$79.99," their brain does not simply register the $79.99 price. It performs an automatic comparison. The $129.99 anchor establishes "what this product is worth." The $79.99 price then registers as "what I am paying." The gap between these two numbers creates perceived value — the shopper feels they are getting a $50 discount, regardless of whether the product was ever actually sold at $129.99.
Dan Ariely's MIT experiments showed this effect with remarkable clarity. When students were shown arbitrary numbers (the last two digits of their Social Security numbers) before bidding on products, those with higher arbitrary numbers bid 60-120% more than those with lower numbers. The anchor was completely random — yet it still influenced willingness to pay.
For Shopify merchants, this translates to a concrete implementation: every product on sale should display both the compare-at price and the current price. Products without a sale should still consider anchoring strategies — showing the value of included accessories, the cost of alternatives, or the per-unit price for bundles.
The ethical boundary: Anchoring is manipulative when the compare-at price is fabricated. If a product was never sold at $129.99, displaying that as a compare-at price is deceptive and may violate FTC guidelines. Legitimate anchoring uses actual previous prices, MSRP, or competitor pricing.
What Does the Conversion Data Show for Different Price Display Formats?
A/B testing across thousands of ecommerce stores shows that strikethrough pricing with a savings percentage badge produces the highest conversion lift at 12-18% over plain price display. Installment pricing displays (e.g., "4 payments of $20.00") lift conversion by 20-30% for products priced above $100. Plain price display is the lowest-converting format in every study.
The comprehensive data:
| Price Display Format | Avg. Conversion Lift vs. Plain Price | Best For Price Range | AOV Impact | Source |
|---|---|---|---|---|
| Plain price ("$79.99") | Baseline (0%) | N/A | Baseline | — |
| Strikethrough only (" |
+8.4% | $30-$200 | +3% | VWO |
| Strikethrough + savings % ("Save 39%") | +14.7% | $30-$200 | +5% | Dynamic Yield |
| Strikethrough + savings $ ("Save $50") | +11.2% | $100+ | +7% | Optimizely |
| Installment display ("4 x $20.00") | +24.3% | $100+ | +18% | Affirm/Klarna data |
| Per-unit pricing ("$2.50/oz") | +6.1% | Consumables | -2% | Nielsen |
| Charm pricing ($79 vs $80) | +2.8% | Under $100 | -1% | Journal of Consumer Research |
| Bundle savings ("$159 value for $99") | +16.5% | Bundles | +22% | Shopify Plus data |
Several findings stand out:
1. Savings percentages outperform savings dollars for products under $100. "Save 39%" is more psychologically impactful than "Save $31.20" for a $79.99 product because percentages feel larger. For products over $100, the reverse is true — "Save $150" is more impactful than "Save 30%" on a $500 product because the absolute dollar amount is substantial.
2. Installment pricing is the highest-impact single change for high-AOV stores. Displaying "4 payments of $75" instead of "$299.99" reduces the perceived price by 75% while the actual price remains identical. Affirm and Klarna both report 20-30% conversion lifts and 18-25% increases in AOV when installment pricing is displayed on the product page.
3. Charm pricing still works, but the lift is small. Pricing at $79 instead of $80 still produces a measurable 2-3% conversion lift in most studies. The "left-digit effect" is real but modest compared to other pricing display techniques.
For more on how trust signals interact with pricing displays, see our guide on Shopify trust icons that convert.
How Do You Implement Strikethrough Pricing With Savings Display in Shopify?
Shopify's Liquid templating language provides built-in support for compare-at pricing through the
product.compare_at_priceobject. A custom snippet can calculate savings as both a percentage and dollar amount, conditionally display the most impactful format based on price range, and add visual emphasis through CSS styling — all without JavaScript or external apps.
The Price Display Snippet
Create snippets/price-display.liquid:
{% comment %}
Enhanced Price Display with Anchoring
Usage: {% render 'price-display', product: product, variant: product.selected_or_first_available_variant %}
{% endcomment %}
{% assign current_price = variant.price %}
{% assign compare_price = variant.compare_at_price %}
{% assign has_discount = false %}
{% if compare_price > current_price %}
{% assign has_discount = true %}
{% assign savings_amount = compare_price | minus: current_price %}
{% assign savings_percent = savings_amount | times: 100 | divided_by: compare_price %}
{% endif %}
<div class="price-display" aria-label="Product pricing">
{% if has_discount %}
<div class="price-display__compare">
<s class="price-display__was" aria-label="Original price">
{{ compare_price | money }}
</s>
<span class="price-display__badge" aria-label="Discount">
{% if current_price >= 10000 %}
Save {{ savings_amount | money }}
{% else %}
Save {{ savings_percent }}%
{% endif %}
</span>
</div>
{% endif %}
<span class="price-display__current {% if has_discount %}price-display__current--sale{% endif %}"
aria-label="{% if has_discount %}Sale price{% else %}Price{% endif %}">
{{ current_price | money }}
</span>
{% if current_price >= 5000 %}
{% assign installment = current_price | divided_by: 4 %}
<p class="price-display__installment">
or 4 interest-free payments of {{ installment | money }} with
<strong>Shop Pay</strong>
</p>
{% endif %}
</div>
The Styling
.price-display__compare {
display: flex;
align-items: center;
gap: 8px;
margin-bottom: 4px;
}
.price-display__was {
color: #9ca3af;
font-size: 0.95rem;
text-decoration: line-through;
}
.price-display__badge {
background: #dc2626;
color: white;
font-size: 0.75rem;
font-weight: 700;
padding: 2px 8px;
border-radius: 4px;
}
.price-display__current {
font-size: 1.5rem;
font-weight: 700;
color: #111827;
}
.price-display__current--sale {
color: #dc2626;
}
.price-display__installment {
font-size: 0.85rem;
color: #6b7280;
margin-top: 4px;
}
Conditional Formatting Logic
The snippet includes intelligent formatting:
- Products under $100: Displays savings as a percentage (e.g., "Save 39%") because percentages feel larger for lower-priced items.
- Products $100 and above: Displays savings as a dollar amount (e.g., "Save $150") because the absolute number is more impactful.
- Products $50 and above: Automatically shows a Shop Pay installment breakdown to reduce perceived price for higher-ticket items.
This conditional logic is the key differentiator from default Shopify themes, which typically use a one-size-fits-all approach to price display.
How Does Installment Pricing Affect Conversion on High-Ticket Products?
Installment pricing (Buy Now, Pay Later displays) reduces perceived price by 75% by showing the per-payment amount instead of the full price. Klarna reports that merchants displaying installment pricing at the product page level see average conversion increases of 30% and AOV increases of 41%. The effect is strongest for products priced $100-$500 and diminishes above $1,000 where financing becomes a more considered decision.
The psychology is simple: "$75/month" feels fundamentally different from "$299" even though the total cost is identical. The brain processes the smaller number as the "price" and the monthly commitment as a secondary consideration.
This is not exploitation — it mirrors how consumers already think about large purchases. Mortgages, car payments, and phone plans are all evaluated on monthly cost rather than total cost. Installment displays on Shopify simply apply the same framing to product purchases.
Implementation options for Shopify:
-
Shop Pay Installments. Native Shopify solution. Displays automatically for eligible products. No additional cost to merchants. Limited to stores using Shopify Payments.
-
Afterpay / Klarna / Affirm widgets. Third-party BNPL providers offer product page widgets that display installment breakdowns. Each adds 100-200ms of page load time but provides the BNPL brand recognition that increases shopper confidence.
-
Custom Liquid calculation. For stores that want the visual format without committing to a specific BNPL provider, a Liquid snippet can calculate and display "4 payments of $X" with a note to select the BNPL option at checkout.
The custom Liquid approach is included in the price display snippet above. For stores using a specific BNPL provider, replacing the generic "Shop Pay" text with the provider's logo increases trust in the installment option.
For strategies on presenting product value beyond price, see our guide on product benefits sections for Shopify.
What Is Charm Pricing and Does It Still Work in 2026?
Charm pricing — ending prices in .99 or .97 — exploits the left-digit effect where the brain encodes $79.99 as "seventy-something" rather than "eighty." A 2023 meta-analysis in the Journal of Consumer Research confirmed that charm pricing still produces a 2-4% conversion lift in ecommerce, though the effect weakens for luxury products where round numbers ($80, $100) signal quality and confidence.
Charm pricing is the oldest pricing psychology technique in retail, and the data confirms it still works — with caveats.
Where charm pricing works:
- Value-oriented products priced under $100
- Commodity categories with high price sensitivity
- Sale prices (making the discount feel larger)
- Products where the buyer is comparing across multiple options
Where charm pricing hurts:
- Luxury or premium products where round numbers signal quality
- Subscription products where simplicity reduces friction
- B2B products where professional buyers prefer clean numbers
- Donations and tips where round numbers feel more generous
The implementation in Shopify is straightforward — set your prices with .99 endings in the Shopify admin. However, the interaction between charm pricing and other display techniques matters. A compare-at price of "$129.00" with a sale price of "$79.99" creates a mismatch that can look inconsistent. A compare-at of "$129" with a sale of "$79" looks cleaner when paired with a "Save 39%" badge.
The trend toward round pricing. An increasing number of DTC brands are moving to round prices ($80, $45, $120) to signal confidence and simplicity. This works for brands with strong identity and low price sensitivity. For value-focused stores, charm pricing remains effective.
How Does Price Display Interact With Other Page Elements?
Price display does not exist in isolation. Its effectiveness is modulated by surrounding elements: trust icons within 50 pixels of the price increase confidence in the displayed value, comparison tables that show competitor pricing strengthen anchoring effects, and urgency elements (countdown timers, stock levels) accelerate the decision triggered by a compelling price display.
Price presentation works best as part of a system. Isolated, a strikethrough price produces an 8% lift. Combined with a trust icon, a savings badge, and a free shipping note, the same price display produces a 19% lift. The elements compound.
The optimal price display ecosystem on a product page:
- Compare-at price (anchor) — Sets the reference point
- Current price (offer) — The actionable number
- Savings badge — Makes the discount explicit
- Installment breakdown — Reduces perceived cost
- Free shipping indicator — Removes a hidden cost fear
- Trust icons — Confirms transaction safety
- Stock level — Adds urgency to act on the price
Each element addresses a different stage of the purchase decision cascade: "Is this worth the price?" (anchoring) → "Can I afford it?" (installments) → "Are there hidden costs?" (free shipping) → "Is this safe to buy?" (trust) → "Should I buy now or later?" (urgency).
For more on urgency elements and their interaction with pricing, see our guide on countdown timer conversion data.
Want price displays that are engineered to convert? LiquidBoost's pricing snippets include conditional formatting, automatic savings calculation, and installment displays — all optimized for conversion psychology. Explore LiquidBoost pricing snippets →
How Do You Handle Multi-Currency and Regional Price Display?
Multi-currency price display adds complexity because currency formatting conventions differ across regions (comma vs. period decimal separators, currency symbol position, tax-inclusive vs. tax-exclusive display). Shopify Markets handles currency conversion automatically, but the display formatting of compare-at prices, savings badges, and installment breakdowns requires custom Liquid logic to maintain consistency across all currencies.
Key considerations for international stores:
Tax-inclusive vs. tax-exclusive display. EU, UK, and Australian markets require tax-inclusive pricing. North American markets traditionally show tax-exclusive prices. Your price display snippet must detect the market and format accordingly. Shopify Markets provides the cart.taxes_included variable for this purpose.
Currency symbol placement. USD, GBP, and EUR place the currency symbol before the number ($79, £79, €79). Some currencies place the symbol after (79 kr, 79 zł). The money Liquid filter handles this automatically, but custom savings calculations need to use the same filter.
Decimal separator conventions. The US uses a period (79.99). Germany uses a comma (79,99). Again, the money filter handles this, but any custom JavaScript calculations must respect the locale.
Installment calculations across currencies. A "4 payments of $20" display must recalculate when the currency changes. If your installment display uses Liquid, the calculation happens server-side and respects the converted price automatically. JavaScript-based installment widgets may require additional locale handling.
What Are the Legal Requirements for Price Display?
Price display regulations vary by jurisdiction but generally require that compare-at prices represent genuine previous selling prices, that discount claims are truthful, and that total costs (including mandatory fees and taxes where required) are prominently displayed. The FTC in the US, the ASA in the UK, and the ACCC in Australia all enforce rules against misleading price comparisons.
FTC Guidelines (United States). The FTC's Guides Against Deceptive Pricing state that a "former price" must be a price at which the product was "openly and actively" offered for sale for a "reasonably substantial" period. Setting a compare-at price of $200 for a product that was never sold above $100 violates these guidelines.
Consumer Rights Act (United Kingdom). The UK requires that reference prices reflect the lowest price in the previous 30 days. A product discounted from £100 to £70 can only display "Was £100" if £100 was the lowest price in the preceding 30-day period.
Australian Consumer Law. The ACCC requires that any price comparison is to a genuine price at which the product has been offered. "Was/now" pricing where the "was" price was artificially inflated triggers enforcement action.
Practical implication: Set your Shopify compare-at prices to actual previous selling prices. If you raise prices specifically to create a larger discount appearance, you risk regulatory action. The safest approach is to set the compare-at price to the product's MSRP or your own previous selling price and keep documentation of when that price was active.
Frequently Asked Questions
Should I show savings as a percentage or a dollar amount?
Show percentages for products under $100 and dollar amounts for products over $100. At lower price points, "Save 39%" feels larger than "Save $31.20." At higher price points, "Save $150" feels larger than "Save 30%." The crossover point varies by category, but $100 is a reliable general threshold. Some stores test both and find the optimal crossover for their specific audience.
Does strikethrough pricing work if my products are never on sale?
If your products are not genuinely discounted, do not use strikethrough pricing. Fabricated compare-at prices violate FTC guidelines and erode trust when shoppers compare prices across sites. Instead, use alternative anchoring: show the cost of buying components separately, the value of included bonuses, or the competitor price for equivalent products.
How do installment displays affect return rates?
Klarna and Afterpay data show a modest increase in return rates (3-7%) for orders placed using BNPL, likely because the lower perceived commitment makes purchasing feel less consequential. However, the net revenue impact is still strongly positive because the 20-30% conversion lift far outweighs the marginal return increase.
Should I round prices for a premium brand?
Yes. Premium and luxury brands consistently perform better with round prices. A study in the Journal of Consumer Research found that round prices ($100 vs. $99.99) are processed more fluently, which aligns with the premium positioning. Round prices signal confidence — the brand is not trying to trick you into thinking $99.99 is substantially less than $100.
How often should I update my pricing display format?
Test your pricing display format quarterly. Consumer expectations evolve — installment pricing was novel in 2020 but is expected by 2026. Savings badges that produced lifts three years ago may have become so ubiquitous that they are now visual wallpaper. Regular testing ensures your price display stays ahead of habituation.
Keep Reading:
- Shopify Trust Icons: Which Security Symbols Actually Convert?
- Product Benefits Section for Shopify: Why Features Alone Don't Sell
- Shopify Trust Marks: Certifications and Guarantees That Convert
Here is a thought experiment: if two stores sell your exact product at your exact price, but one makes the shopper feel like they are getting a deal and the other makes them feel like they are paying full price — which store wins? The answer reveals why price display is not a detail. It is the decision architecture.