You can buy a money order at a bank, credit union, post office, grocery store, pharmacy, or check-cashing business. The easiest option depends on where you already do business and whether you need the money order right away. Most places charge between $1 and $5 per money order, though some banks waive the fee for account holders.

Banks and Credit Unions

Your own bank or credit union is often the cheapest place to buy a money order. Many banks waive the fee entirely for customers with a checking or savings account, while others charge $1 to $3. You'll need to go during business hours and bring a valid ID and cash or a debit card to pay.

The downside is that banks have limited hours and may not be convenient if you need a money order on a weekend or evening. Credit unions typically have the same fee structure as banks but may have even fewer locations than a large bank chain.

United States Postal Service (USPS)

The post office sells money orders at every location nationwide. USPS charges a flat fee based on the amount: typically $1.45 for orders up to $500 and $1.95 for orders from $500.01 to $1,000. You can buy one during regular postal hours with cash or a debit card, and you'll need a valid ID.

Post offices are widely available in most towns and cities, and many stay open on Saturdays. However, you cannot buy a money order online or by phone — you must go in person. If your local post office is far away or has limited hours, a grocery store or pharmacy may be faster.

Grocery Stores and Pharmacies

Most large grocery chains and pharmacy chains (Walmart, Target, CVS, Walgreens) sell money orders at their customer service desk or money center. Fees typically range from $0.88 to $3, depending on the store and the amount. These locations often have longer hours than banks, including evenings and weekends, which makes them convenient for after-work or weekend errands.

The trade-off is that not every location offers money orders — call ahead or check the store's website to confirm. Some smaller grocery stores or pharmacies do not carry them at all. When you arrive, bring cash or a debit card and a valid ID.

Check-Cashing Businesses

Check-cashing stores and payday loan shops almost always sell money orders, often with extended hours including evenings and weekends. Fees are usually higher than banks or post offices — typically $2 to $5 per money order — because these businesses rely on transaction fees for revenue.

Use a check-cashing business only if other options are closed or inconvenient. The higher fee is the real cost of the convenience. Bring cash and a valid ID.

Key Takeaways

  • Your bank or credit union often waives the money order fee if you have an account, making it the cheapest option if you have time to visit during business hours.
  • The post office charges a flat $1.45 to $1.95 depending on the amount and is available nationwide, but you must go in person during posted hours.
  • Grocery stores and pharmacies are open longer than banks and typically charge $0.88 to $3, but not every location sells money orders so you should call first.
  • Check-cashing businesses have the longest hours and weekend availability but charge the highest fees, usually $2 to $5 per money order.
  • All sellers require a valid ID and cash or a debit card; you cannot buy a money order with a credit card at most locations.

What to Bring When You Buy

You will need three things: a valid photo ID (driver's license, passport, or state ID card), cash or a debit card to pay the money order amount plus the fee, and the recipient's name spelled correctly. Write down the recipient's name before you go so you do not misspell it at the counter — the money order cannot be changed once it is printed.

Some locations ask for your address or phone number, though this is not required. If you are buying a money order for someone else, bring their name exactly as they want it to appear. Do not leave the money order blank or fill in the recipient's name yourself after you leave the store — the seller must complete it while you are there.

Comparing Fees and Hours

The total cost of a money order is the amount you send plus the fee. A $500 money order costs $501.45 at the post office but might cost $500.88 at Walmart or $503 at a check-cashing store. Over time, if you buy money orders regularly, using your bank or a grocery store saves real money.

Hours matter just as much as price. If you work a standard 9-to-5 job and your bank closes at 5 p.m., a grocery store open until 10 p.m. or a check-cashing business open on Sunday may be worth the extra fee. Plan ahead when you can — buying a money order during your lunch break at the bank costs nothing and takes 10 minutes.

Frequently Asked Questions

Can I buy a money order with a credit card?

Most places do not accept credit cards for money orders because they treat the transaction as a cash advance rather than a purchase. Your best option is a debit card or cash. Some banks may allow credit card purchases if you have an account with them, so call your bank first.

What if the store near me does not sell money orders?

Call ahead before you go. If your nearest grocery store or pharmacy does not carry them, the post office almost certainly does. You can also search online for "money order near me" or call a few check-cashing businesses in your area — they rarely turn down the sale.

Do I need to know the recipient's address to buy a money order?

No. You only need the recipient's name. The seller will print the name on the money order, and the recipient fills in their own address when they cash it. Having the address is helpful for your own records, but it is not required at purchase.

How long does it take to buy a money order?

The transaction itself takes 5 to 10 minutes once you reach the counter. Waiting time depends on how busy the location is. Post offices and check-cashing businesses can have longer lines during lunch hours or on weekends, so go early if you are in a hurry.