Post Office money order fees vary by the amount you send
The United States Postal Service (USPS) charges a flat fee for each money order, and that fee depends on how much money you're sending. As of 2024, USPS charges $1.45 for money orders up to $500, and $1.95 for money orders from $500.01 to $1,000. These are the only two price tiers — there is no charge for money orders under $1, and you cannot send more than $1,000 in a single money order through USPS.
The fee is separate from the amount you're sending. If you buy a $100 money order, you pay $100 plus $1.45 to the post office. That $1.45 goes to USPS; it does not appear on the money order itself or get deducted from what the recipient receives.
USPS prices can change, so confirm the current fee at your local post office or on USPS.com before you go. Some post offices also accept payment by card or check for the fee itself, though most require cash or a debit card.
Key Takeaways
- USPS charges $1.45 for money orders up to $500 and $1.95 for money orders from $500.01 to $1,000.
- The fee is paid to the post office in addition to the face value of the money order.
- You cannot send more than $1,000 in a single USPS money order, but you can buy multiple money orders if you need to send more.
- Money orders from other sources — banks, check-cashing stores, or retailers — may charge different fees and have different limits.
- The recipient does not pay any fee; they cash or deposit the money order at full face value.
How to buy a money order at the post office
Walk into any post office with cash or a debit card and tell the clerk you want to buy a money order. You will need to know the exact amount you want to send and have the recipient's name ready. The clerk will fill in the money order with the payee name, and you sign it. The whole process takes about five minutes.
Bring a form of ID if you're buying a money order for more than $3,000 in a single day, or if you're buying multiple money orders that add up to more than $3,000. This is a federal reporting requirement, not a post office rule. The clerk will ask for your name and address, which goes on the money order stub you keep for your records.
You can also buy money orders at many banks, credit unions, Walmart, grocery stores, and check-cashing businesses. Each has its own fee structure and limits, so compare before you decide where to buy.
When USPS money orders make sense versus other options
USPS money orders are useful when you need to send cash without using a personal check or wire transfer, and when the recipient doesn't have a bank account. They're also traceable — you keep a receipt with a serial number, and you can look up whether the money order was cashed. That matters if there's a dispute about whether the payment arrived.
However, USPS money orders are slower than digital transfers. Mailing a money order takes three to five business days, and the recipient has to physically cash or deposit it. If you need the money to arrive the same day or within 24 hours, a wire transfer, ACH transfer, or payment app will be faster.
Banks and credit unions often charge less for money orders than USPS does — sometimes $0.50 to $1.00 per order if you have an account with them. Walmart and other retailers may charge $0.88 to $1.25. If you're sending multiple money orders, the savings add up. Check what your bank offers before you go to the post office.
Tracking and replacing a lost or stolen money order
When you buy a money order at the post office, the clerk gives you a receipt with a serial number printed on it. Keep this receipt. If the money order is lost or stolen before the recipient cashes it, you can file a claim with USPS using that serial number. USPS will check whether the money order has been cashed, and if it hasn't, they can issue a replacement.
The claim process takes time — usually two to three weeks — and USPS may ask you to sign an affidavit stating that you did not receive the money order back and that the recipient did not cash it. You will need the serial number from your receipt to file the claim. If USPS confirms the money order was never cashed, they will refund your money or issue a new money order at no additional charge.
If the money order has already been cashed by someone else, USPS cannot recover the funds. This is why it's important to only give a money order to someone you trust, or to mail it in a secure way — registered mail with signature confirmation, for example.
Money orders from non-USPS sources and their costs
Banks and credit unions often offer money orders to account holders at a lower cost than USPS. Fees typically range from $0.50 to $1.50 per money order, depending on your account type and the bank. Some banks include a certain number of assistance programs orders per month or year as part of premium checking accounts. Call your bank to ask what they charge.
Walmart and other retailers sell money orders through MoneyGram or Western Union. Walmart's MoneyGram money orders cost around $0.88 to $1.25 for amounts up to $1,000, which is slightly cheaper than USPS. Check-cashing stores and payday lenders also sell money orders, but their fees are often higher — $2 to $5 per order — because they target customers without bank accounts.
The trade-off is convenience. You can buy a money order at Walmart while you're already shopping, without making a separate trip to the post office. But if you have a bank account, your bank is usually the cheapest option.
What happens if you need to send more than $1,000
USPS will not sell you a single money order for more than $1,000. If you need to send $2,500, you have to buy three money orders: two for $1,000 each and one for $500. You pay the fee for each one — so in that example, you'd pay $1.95 three times, for a total of $5.85 in fees.
This is where other options become worth considering. A wire transfer through your bank costs $15 to $30 but handles any amount in one transaction. An ACH transfer is free and works for most payments, though it takes one to three business days. If you're sending money to someone you know well and trust, a personal check costs nothing and is legal for any amount.
If you don't have a bank account and need to send a large amount, you can buy multiple money orders, but plan ahead — it takes time to fill out and pay for each one. Some post offices have limits on how many money orders one person can buy in a single day, so call ahead if you need more than five or six.
Frequently Asked Questions
Can I buy a money order online and pick it up at the post office?
No. USPS does not sell money orders online or allow you to order them in advance. You must go to a post office in person, bring cash or a debit card, and buy the money order at the counter. Some banks allow you to order money orders online for pickup at a branch, so check with your bank if you have an account.
What if I make a mistake filling out the money order?
Tell the clerk immediately. They can void the money order and issue a new one for the same fee — you don't pay twice. Once you leave the post office, you cannot change the payee name or amount, so double-check before you sign.
Do I need to show ID to buy a money order?
You need ID only if you're buying more than $3,000 in money orders in a single day. For smaller amounts, the post office does not require ID, though the clerk will ask for your name and address for the receipt.
Can the recipient cash a money order at any bank?
Yes. Any bank or credit union will cash a USPS money order, even if the recipient doesn't have an account there. Some check-cashing stores also cash USPS money orders, though they may charge a small fee. The recipient should bring the money order and a form of ID.
Is a money order safer than sending cash in the mail?
Yes. If cash is lost or stolen in the mail, it's gone. A money order has a serial number, and if it's lost before being cashed, you can file a claim and get a replacement. However, once someone cashes the money order, the funds are theirs — so only send a money order to someone you trust.