Stripe is the payments backbone for hundreds of thousands of SaaS products, developer tools, and online businesses. But when it comes to testing whether a different price would increase revenue, most founders are stuck. Stripe's dashboard lets you create prices and products — but not test them against each other with statistical rigor.
This guide covers every method for testing prices on Stripe, from the quick-and-dirty to the statistically sound, with particular focus on approaches that don't require a developer.
Why Stripe Makes Price Testing Hard
Stripe's architecture is built around a product-price model. You create a Product, then attach one or more Prices to it. Each Price has a fixed unit amount, currency, and billing interval. When a customer subscribes, they're locked to a specific Price ID.
This design is excellent for billing stability but creates friction for experimentation. If you want to test $29/month vs $39/month, you need two separate Prices. You need to route different customers to different checkout flows. And you need to track which checkout generated which subscription — without losing the ability to compare apples to apples.
Stripe does not have a built-in A/B testing feature. It has no concept of "this 50% of visitors should see Price A and this 50% should see Price B." That logic has to live outside Stripe, either in your application code, your checkout page, or a third-party tool.
Method 1: Time-Series Comparison (No Code Required)
The simplest approach: change your price, track the change in your Stripe dashboard, then revert if needed.
How to do it:
- In Stripe Dashboard → Products, edit your product and add a new Price at the test amount.
- Update your checkout link or payment button to point to the new Price ID.
- Wait 4–6 weeks and compare monthly revenue and new subscription count.
- Revert to the original Price ID if results are negative.
Pros: Zero engineering. Works with any Stripe setup. Easy to revert.
Cons: Not a true A/B test. Seasonal variation can confound results. You're exposing 100% of traffic to the test price, which means full downside risk if it performs poorly.
Best for: Founders who want a quick directional signal without engineering investment. Works best when your traffic is stable and predictable.
Method 2: Stripe Payment Links (No Code, Partial Split)
Stripe Payment Links let you create checkout flows with a few clicks. You can create two Payment Links — one for your current price, one for your test price — and manually split traffic between them.
How to do it:
- Create Payment Link A at your current price.
- Create Payment Link B at your test price.
- Share Link A in your regular channels and Link B in a different channel (e.g., your email list vs your social media following).
- Compare conversion rates and revenue across the two channels.
Caveat: This isn't a true A/B test because different channels have different audiences with different price sensitivities. Your email list subscribers may convert at higher rates regardless of price. Use this method for directional signals only.
Method 3: Stripe + PricingSim (No Code, Statistically Sound)
PricingSim imports your Stripe transaction history, estimates your price elasticity, and generates an A/B experiment page that routes visitors to different Stripe checkout URLs based on randomized variant assignment.
How it works:
- Export your Stripe transaction CSV (Reports → Payments → Export).
- Upload to PricingSim. The Bayesian engine analyzes 90+ days of transaction data and suggests 2–3 test prices with confidence scores and projected revenue uplift.
- Click "Create Experiment." PricingSim generates a hosted A/B page with two Stripe checkout buttons — one at each price — and randomized variant assignment via cookie.
- Share the experiment page URL. PricingSim tracks which visitors see which price and which ones convert.
- After 4–8 weeks, the confidence dashboard shows the probability that the test price generates more revenue per visitor.
- Apply the winner (update your main checkout to the winning Price ID) or roll back in one click.
This approach is statistically sound because it randomizes at the visitor level, tracks conversions for both variants simultaneously, and uses Bayesian inference to handle small sample sizes correctly.
Method 4: Manual Split Testing with Stripe Metadata
For developers who want full control, Stripe's product metadata can be used to store experiment parameters. Create two Price objects with a metadata field indicating the variant:
// Price A (control)
stripe.prices.create({
unit_amount: 2900,
currency: 'usd',
recurring: { interval: 'month' },
product: 'prod_xxx',
metadata: { experiment: 'price_test_q1', variant: 'control' }
})
// Price B (test)
stripe.prices.create({
unit_amount: 3900,
currency: 'usd',
recurring: { interval: 'month' },
product: 'prod_xxx',
metadata: { experiment: 'price_test_q1', variant: 'treatment' }
})
Your checkout route then assigns visitors randomly (70/30 or 50/50) and sends them to the corresponding Price ID. Stripe Webhooks capture which variant each subscription originated from.
This approach scales well but requires engineering time upfront.
Price Point Psychology for SaaS Products
Before running a price test, it's worth understanding why certain price points perform better than others — not just what the numbers say, but why buyers respond the way they do.
The anchoring effect
When buyers see your price, they don't evaluate it in isolation. They anchor to the first number they see. This is why $97 often outperforms $100 — not because buyers can't do the math, but because the visual anchor of "9X" feels lower than "1XX." For SaaS, the effect is real but small: focus on value first, then apply anchoring.
The charm pricing threshold
Prices ending in 9 ($29, $49, $99) outperform "round" prices ($30, $50, $100) in most B2C contexts. In B2B or developer-focused SaaS, the effect is weaker — professional buyers are less susceptible to retail price psychology.
The good-better-best structure
Products with 3 tiers see higher average revenue per user than products with 1 or 2 tiers. The middle tier anchors buyers away from the cheapest option and toward a mid-range choice that feels "reasonable." If you currently have only one price, adding a Pro tier at 2× often increases average revenue even if most buyers stick to the base tier.
Annual vs monthly framing
Offering an annual plan at an equivalent monthly discount of 15–20% consistently increases LTV. Buyers who commit to annual plans churn at significantly lower rates than monthly subscribers, improving cohort economics even when the monthly revenue per subscriber looks similar.
Reading Your Stripe CSV for Price Signals
Before running any test, download your Stripe Payments CSV and look for these signals:
Average revenue per new subscriber over time: If it's declining, you may have traffic quality issues or you may have over-optimized for volume at the expense of price.
Refund rate by acquisition period: Spikes in refunds often correspond to promotional periods when buyers had lower purchase intent. These periods should be excluded from elasticity estimates.
Subscription age distribution: If most of your subscribers are recent, you don't have much data on long-term churn behavior. Price tests on new subscriber cohorts give you conversion data but not retention data.
Failed payment rate: If you have a significant percentage of failed payments (involuntary churn), this is often a more urgent problem than pricing. Dunning sequences and payment recovery can have faster ROI than price optimization.
The Fastest Path to a Stripe Price Test
For most solo founders, the fastest path from "I want to test my Stripe price" to "I have statistically meaningful data" is:
- Export your Stripe CSV (5 minutes)
- Import to PricingSim (2 minutes)
- Review the suggested prices and create an experiment (5 minutes)
- Update your marketing to drive traffic to the experiment page (30 minutes)
- Wait 4–8 weeks
- Apply the winner to your main Stripe checkout (2 minutes)
Total active time: under an hour. Total wait time: 4–8 weeks. Expected outcome: a confident answer to "is my current price optimal?" — one of the most important and most neglected questions in any indie product business.