Most money order sellers won't take credit cards directly
You cannot buy a money order with a credit card at most places that sell them. Post offices, Walmart, Western Union, and MoneyGram typically accept cash, debit cards, and sometimes checks — but not credit cards. This is a deliberate policy, not a technical limitation. Money order sellers treat credit card purchases as a higher fraud risk and want to avoid the chargeback disputes that come with them.
The one exception is some online money order services, which do accept credit cards. But these are rare, charge higher fees than in-person options, and come with their own restrictions on how much you can send and how quickly.
Key Takeaways
- Post offices, Walmart, Western Union, and MoneyGram do not accept credit cards for money order purchases, though they accept cash and debit cards.
- You can use a credit card to withdraw cash from an ATM, then use that cash to buy a money order, but ATM fees and cash advance fees will add to your cost.
- Some online money order services accept credit cards, but they charge more per transaction and have lower sending limits than in-person sellers.
- If you need a money order and have no debit card or cash, a cash advance from your credit card is usually cheaper than buying through an online service.
Why credit cards are rejected at the counter
Money order sellers reject credit cards because the transaction creates a chargeback risk. If you dispute the charge with your credit card company, the seller has already handed over the money order — they cannot get it back. With a debit card or cash, the money is gone immediately and disputes are much harder to file.
This is not about your creditworthiness. It is about the seller's exposure. A single chargeback costs them time, fees, and the money order amount. Accepting only cash and debit cards eliminates that risk almost entirely.
Using a cash advance to buy a money order
If you have a credit card but no debit card or cash, you can withdraw cash using a cash advance. Go to an ATM or bank branch, use your credit card, and withdraw the amount you need for the money order plus fees. Then use that cash to buy the money order at a post office, Walmart, or Western Union.
This route costs money. Most credit cards charge a cash advance fee of 3% to 5% of the amount withdrawn, with a minimum fee of $5 to $10. You may also pay an ATM fee if you use an out-of-network machine. A $500 cash advance could cost $15 to $25 in fees alone, plus interest starting immediately (cash advances do not have a grace period). Money orders themselves cost $1 to $2 at most retailers.
This is expensive, but it is sometimes the only option if you have no other payment method available.
Online money order services that accept credit cards
A small number of online platforms accept credit cards for money orders. These services are not common and have significant limitations. They typically charge $3 to $5 per money order, compared to $1 to $2 at a post office or Walmart. They also cap how much you can send — often $500 to $1,000 per transaction — and require the recipient to pick up the money order or have it mailed to them, which takes several business days.
These services work best if you need a money order urgently and have no other way to pay. For routine money orders, the fees and delays make them a poor choice compared to walking into a post office with cash or a debit card.
Alternatives to consider instead of a money order
Before you commit to buying a money order with a credit card, consider whether another payment method would work. A personal check costs nothing and is accepted almost everywhere a money order is. A bank transfer or wire transfer moves money directly to the recipient's account and is faster than a money order, though it costs $15 to $30. A payment app like Venmo or PayPal works for people you know and trust.
Money orders are useful when the recipient needs proof of payment, when you do not want to share your bank account details, or when the recipient does not have a bank account. But if any of these alternatives fit your situation, they will cost you less than a credit card cash advance or an online money order service.
What to do if you need a money order right now
If you need a money order today and have only a credit card, your fastest option is a cash advance at an ATM or bank branch. Withdraw the cash, pay the fees, and buy the money order immediately. This costs more than paying with cash or a debit card, but it is faster and cheaper than an online service.
If you can wait a few days, ask the person who needs the money order whether they can accept a check, bank transfer, or payment app instead. If they cannot, then a cash advance is your most practical route. Plan to pay $15 to $30 in fees on top of the money order cost.
Frequently Asked Questions
Can I use a credit card to buy a money order at Walmart?
No. Walmart accepts cash and debit cards for money orders, but not credit cards. You can use a credit card to withdraw cash from a Walmart ATM, then use that cash to buy the money order, but you will pay an ATM fee and a cash advance fee on your credit card.
Do any post offices take credit cards for money orders?
No. The U.S. Postal Service does not accept credit cards for money orders at any location. You must pay with cash, a debit card, or a check. Some post offices have ATMs on-site where you can withdraw cash using a credit card.
Is it cheaper to buy a money order online with a credit card or use a cash advance?
A cash advance is usually cheaper. Online money order services charge $3 to $5 per order. A cash advance typically costs 3% to 5% of the amount, with a $5 to $10 minimum. For a $100 money order, a cash advance costs roughly $3 to $5 plus interest, while an online service costs $3 to $5 with no interest. For larger amounts, the cash advance fee percentage makes it more expensive.
What if I need to send money internationally — can I use a credit card?
International money transfer services like Western Union and MoneyGram do accept credit cards online and at some locations. However, international transfers cost significantly more than domestic money orders — typically $10 to $50 depending on the amount and destination. A bank wire transfer or international payment app may be cheaper for large amounts.