When it comes to Valentine's Day deals on roses, skip the online florists, where you'll pay $4.50 or more per stem. Instead, shop at grocery stores, warehouse clubs, and Walmart, where you can find roses for less than $2 per stem (and under $1 in some cases!).
We compared rose prices at Costco, Trader Joe’s, Walmart, Sam’s Club, Costco, Sprouts, Kroger, and Whole Foods — here’s how they stack up in the lead-up to Valentine's Day 2026.
Update: We're seeing some rose-flation this year. Walmart, Sam's Club, and Trader Joe's rose prices are all a bit higher than last year. And Costco's $19.99 deal (for two dozen) is sold out at many locations in the final days before Valentine's Day.
There’s a faster way to save. It’s in our app. Download the KCL app for free now .
What's on this page:
Where to Find the Cheapest Price on Roses for Valentine's Day 2026

Note that offers, prices, and colors may vary by region or store. Most of these prices are in-store only (online orders will involve delivery fees, and in some cases, the low price isn't available for online shoppers). The Whole Foods deal is for Prime members only and starts Feb. 11.
Aldi: Dozen Roses for as Low as $9.99 ($0.83 per Rose)
Shop in-store for rose bouquets in red, orange, pink, white, and more, for $9.99, according to the Aldi weekly ad. We spotted $6.99 bouquets on Jan. 21, and stores quickly sold out. But $9.99 is still the best deal we're seeing on a dozen roses this year. Store supply varies.
Sam’s Club: 18 Roses for $15.97 ($0.89 per Rose) — Low Stock
The Sam's Club Member's Mark bouquets get you 18 roses and cost $15.97 (up just a bit from $15.87 last year). This deal is selling out fast and is completely gone at some stores.
You'll need to be a member to get this deal; Sam's Club membership costs $50 per year at the Club level. If you want to order online, you can use curbside pickup for free, or you can opt for delivery. Delivery is free for Plus members on orders over $50. If you're a Club member, you'll pay $12 for delivery.
Walmart: Dozen Roses for $10.97 ($0.91 per Rose)
You'll pay $10.97 (up from $9.97 last year) for a dozen, which breaks down to $0.89 per rose. Walmart also has a half dozen roses for $5.92.
These prices are available online or in-store. Want to order online? If you order for pickup, you won't pay a fee, but if you order for Walmart delivery, you'll pay a $9.95 delivery fee. If you have a Walmart+ membership, you can get free delivery of the roses (assuming your cart totals at least $35). Otherwise, you'll pay a $7.95 - $9.95 delivery fee.
We suggest checking the in-store prices closer to Valentine's Day. We saw a dozen roses go down to $9.97 in 2025).
Trader Joe’s: Dozen Roses for $10.99 ($0.92 per Rose)
Trader Joe's price for a dozen roses is up from last year (we saw them priced as low as $9.99 in 2025). At $0.92 per rose, Trader Joe’s offers a price just above Walmart's. And when we last checked, the roses were in good shape with a vast selection. If you don't want roses, Trader Joe's has a lot of other affordable floral options, including potted plants for as low as $5.99.
Whole Foods: 2 Dozen Roses for $29.99 ($1.25 per Rose) — Prime Members Only ($34.99 for Non-Prime Members)
From Feb. 11 - 14, Amazon Prime members can get two dozen roses for $29.99 ($1.25 per rose) at Whole Foods stores. That's up from last year's deal ($24.99 for two dozen). To get the discount, you needed to swipe your Whole Foods app or Amazon app (available for iOS or Android) during checkout.
You can order this deal online, but for pickup at a Whole Foods store only, not delivery. You'll need to choose a pickup window. Some colors were already sold out at the stores we checked, so act quickly (or be open to substitutions).
Sprouts: Dozen Roses for $15.99 ($1.33 per Rose)
You can buy Sprouts roses in person for $15.99 (up from $14.99 last year), or order online and opt for free in-store pickup on orders over $35; otherwise, pay $3.99 for pickup. If you want your flowers delivered, fees depend on your area and delivery window. In my area, the delivery fee ranges from $1.99 - $8.99, depending on how long I'm willing to wait and, of course, you'll want to tip.
Note: Prices vary by area. We've seen prices ranging from $14.99 - $17.99 for a dozen.
Costco: 2 Dozen Roses for $36.99 ($1.54 per Rose)
This price has been fluctuating as Valentine's Day gets closer. We saw the 24-rose bouquet for just $19.99 last week, and now it's $36.99 (and sold out at many locations we called). Need a backup? You can get a bouquet of assorted blooms for $17.99.
Last year, Costco had two dozen roses for as low as $18.99. You can also buy roses in bulk online from Costco.com, where they’re $0.85 per stem when you buy 100. Ordering online may offer a convenience factor, but you'll get the best price by shopping in person.
Of course, you'll need to be a Costco member to get these prices. Costco membership costs $65 per year at the Gold Star level.
Kroger: Dozen Roses for $22 ($1.83 per Rose)
Kroger sells a dozen of their Bloom Haus roses (single color and mixed) online and in-store (supply varies by location) for $22. That’s $1.83 a stem. Two weeks before Valentine's Day we saw this same bouquet for just $14, so we are clearly in the final stretch now.
Want a more affordable option? Kroger has Bloom Haus bouquets with assorted flowers for just $5.
You'll need to order these for store pickup or grab them yourself in-store to avoid delivery fees.
Lowe's: Dozen Paper Roses for $19.98 ($1.67 per Rose)
You'll pay more per rose for this non-traditional option, but these blooms won't wilt. Lowe's paper rose bouquets come in a variety of colors and include artificial baby's breath too. You can order them for free store pickup, or shipping (free when you spend at least $45). But that's assuming they're in stock. These flowers are available only at some stores, and they usually sell out quickly after being stocked.
Amazon: A dozen roses are $44.99 ($3.75 per rose); they ship free for Prime members and include a vase.
Technically, these flowers come through Benchmark Bouquets, but they have a storefront on Amazon, meaning you can order them via your Amazon account and get free shipping if you're a Prime member. A dozen red roses with vase included will run you $44.99; they were $38.81 last year. While you'll pay $3.75 per stem (which is more expensive than any of the options above), you don't have to go inside a store and can take advantage of Amazon's next-day shipping for Prime members.
1-800 Flowers: Dozen Roses for $46.74 ($3.89 per Rose), Plus $16.99 Shipping
Online florists offer convenience (and the ability to ensure your blooms arrive on Feb. 14), but you'll pay more than twice as much per rose as you would at a grocery store. Right now, the best price at a full-service online florist is for mixed roses (multiple colors) at 1-800 Flowers. At $3.89 a stem before you even take the $16.99 delivery fee into account, these are one of the most expensive options on our list. And this price does not include a vase.
You can use delivery services like DoorDash or Instacart as a work-around to get affordable flower delivery.
If you don't want to go to a store (or maybe you want to send flowers to someone else's address), online delivery services are a good compromise between shopping in person and using a full-service online florist. Most deliver from grocery stores and allow you to send flowers to an address of your choice, assuming the delivery service you choose serves that area.
DoorDash lets you order flowers from local grocery stores for a markup.
DoorDash partners with various grocery store chains. You'll pay whatever the grocery store charges for a bouquet, plus a small markup, plus delivery fee, plus tip.
For example, DoorDash delivers from a Sprouts near me. They charge $17.99 for a dozen roses — that's a $2 upcharge compared to the $15.99 in-store price — plus $17 in delivery and service fees (and don't forget to tip).
Before taking the tip into account, I'm paying $34.99, which is $19 over what I'd pay in-store. But it's still cheaper than I'd pay an online florist.
Instacart gives you free delivery on your first three orders.
If you're new to Instacart, they're waiving delivery fees on your first three orders right now. If you're not new to Instacart, you'll pay a delivery fee of $1.99 - $10.99, depending on how big of a rush you're in.
KCL TIP: If you have an Instacart+ membership ($99 per year or $9.99 per month), you get free delivery on orders over $35, every time.
Instacart also partners with regional grocery stores. Ours happens to have a dozen roses for $12.79. For same-day delivery, we'd pay $10.48 in delivery and service fees, but if we're willing to wait a few days, we'll pay just $4.48 for delivery and service fees (plus tip, of course). Even better, we can schedule a delivery day and window, so we're essentially getting the convenience of a full-service florist for a fraction of the delivery cost.
You May Also Be Interested In:
Download the KCL app to add and redeem coupons in store











![Import from Rich Text Editor for tipPost [Where to Buy Cheap Flowers, Plus Get Florals Ar...] - 6](https://content-images.thekrazycouponlady.com/nie44ndm9bqr/1MvlHn6ga1bsQ4XWCepUNf/a5bcabf1a5150d2edc3949a8094540dc/doordash-delivery-food-winter-3-reuploaded-feature-1674670224-1674670224-e1704739083970.jpg?w=320&fit=max&auto=format&q=90)










































