Shanon Maglente | 

Where to Buy Cheap Valentine's Day Flowers: Starting at $0.79 per Rose

The Krazy Coupon Lady is an ad-supported service. Many offers on our site contain affiliate links, and we may earn a small commission if you make a purchase using them. Some posts are sponsored by the maker of the product, and we receive a fee for the post. See our full advertiser disclosure.

When it comes to Valentine's Day deals on roses, skip the online florists, where you'll pay $2.50 or more per stem. Instead, shop at grocery stores, warehouse clubs, and Walmart, where you can find roses for under $2 per stem (and as low as $0.79).

We compared rose prices at Costco, Trader Joe’s, Walmart, Sam’s Club, Costco, Sprouts, and Whole Foods — here’s how they stack up in the lead-up to Valentine's Day 2025. The good news: There's not much rose-flation happening this year (most prices are the same as last year).

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).

Download The Krazy Coupon Lady app or text HACKS to 57299 for the latest money-saving tips, deals, and coupons.

Where to Find Roses for the Cheapest Price for Valentine's Day 2025

Where to Get Cheap Roses for Valentine’s Day 2025
  • Winner: Costco has the lowest price per rose at $0.79. Not a Costco member? Go for Walmart or Trader Joe's (both $0.83 per rose).

Costco offers the cheapest roses when you buy them in-store: two dozen for $18.99 ($0.79 per rose).

costco-roses-bouquets-flowers-valentines-day-kcl-5

At $0.79 per rose, Costco has the cheapest per-rose price in 2025. But you need to shop in-store to get them. You can also buy roses in bulk from Costco.com, where they’re $1.30 per stem when you buy 50. 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 the in-store roses. Costco membership costs $65 per year at the Gold Star level.

Walmart roses are $9.97 per dozen or $4.97 per half dozen ($0.83 per rose).

roses-valentines-day-walmart-2022-2

If you're not a Costco member, Walmart is your next-best bet. You'll pay $9.97 for a dozen, or $4.97 per half dozen, which breaks down to $0.83 per rose.

You'll have to go in-store to get these prices, though. While you can order roses online for Walmart curbside pickup or delivery, the price will be higher ($14.97 for a dozen). 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.

Trader Joe’s has a dozen roses for $9.99 ($0.83 per rose)

trader-joes-flowers-10

At just $0.83 per rose, Trader Joe’s offers Walmart-like prices. Plus, the roses were in good shape when we checked, and there’s a vast selection. If you don't want roses, check out our picks for other affordable Trader Joe's bouquet options.

Sam’s Club has 18 roses for $15.87 ($0.88 per rose).

sams-club-roses-bouquets-flowers-valentines-day-kcl-4

In fourth place for cost-per-rose is Sam's Club. Its Member's Mark bouquets come with 18 roses and cost $15.87.

You'll need to be a member to get this deal, and Sam's Club membership costs $50 per year at the Club level. If you opt for curbside pickup of your roses, keep this in mind: Sam's Club charges $4 for store pickup orders unless you upgrade to Plus membership ($110 per year) or place an order of at least $50.

At Whole Foods, Prime Members can get two dozen roses for $24.99 ($1.04 per rose) from Feb. 10 - 14.

whole foods 2 dozen roses

From Feb. 10 - 14, Amazon Prime members can get two dozen roses for $24.99 at Whole Foods stores. To get the discount, you need to swipe your Whole Foods app or Amazon app (available for iOS or Android) during checkout.

You can get this deal in stores only. If you order online for Whole Foods delivery or pickup, you'll have to pay a higher price of $34.99, plus the $9.95 delivery fee (even if you have Prime membership). If you pick up your order, you'll pay no extra fee.

Sprouts has a dozen roses for as low as $14.99 ($1.25 per rose).

You can buy Sprouts roses in person for $14.99, 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 ranged from $1.99 - $8.99, depending on how long I was 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.

Lowe's sells a 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.

Kroger has a dozen roses for $22 ($1.83 per rose).

kroger-valentine-flowers-13

Kroger sells a dozen roses (single color and mixed) for $22. That’s $1.83 a stem, making them one of the pricer options this year. We called several locations to confirm their pricing. However, last year, we saw a dozen roses priced at $12 closer to Valentine's Day, so consider waiting.

1-800 Flowers has 24 mixed roses for $59.99 ($2.50 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.21 a stem after you take the $16.99 shipping fee into account, these are one of the most expensive options on our list. And to get this price, you need to leave off the vase (which is $12 extra).

Amazon has a dozen roses for $38.81 ($3.23 per rose), and they ship free for Prime members and include a vase.

Technically, these flowers come through Bench Mark 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 $38.81. While you'll pay $3.23 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.

Grab a no-frills fresh bouquet at Aldi for $4.99 each.

aldi-flowers-kcl-3

Look for fresh bouquets to show up in Aldi stores as Valentine's Day approaches. We spotted some near checkout on Jan. 30. At $4.99, these bouquets are cheap, so don't expect anything fancy, and don't expect roses.

You can use delivery services like DoorDash or Instacart as a work-around to get affordable flower delivery.

Import from Rich Text Editor for tipPost [Where to Buy Cheap Flowers, Plus Get Florals Ar...] - 6

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 an 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 offers lets you order flowers from local grocery stores for a small 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 $16.99 for a dozen roses (that's a $2 upcharge compared to the $14.99 in-store price), plus $8.48 in delivery fees (and don't forget to tip). Before taking the tip into account, I'm paying $10.48 over what I'd pay in store, which is cheaper than online florists' delivery fees (1-800 Flowers charges $16.99, for example). And I'm taking advantage of the low bouquet cost thanks to ordering from a grocery store.

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. And mine happens to have a dozen roses for $11.59. Because I'm willing to wait a few days for delivery, I'll pay $1.99 for delivery (plus tip, of course). Even better, I can schedule a delivery day and window, so I'm essentially getting the convenience of a full-service florist for a fraction of the delivery cost.

Related Reading: