Payments, decoded
Merchant category codes, and why they are not categories
Every card payment carries a four-digit MCC. What it is for, where it goes wrong, and why a budgeting app cannot sort spending by it alone.
Written for: Product teams 3 min read Updated
Every card payment carries a four-digit merchant category code, or MCC. It is tempting to treat it as a ready-made spending category: 5411 is groceries, 5812 is restaurants, done. Teams that build budgeting features on MCCs alone usually find out within a month why that does not hold. Here is what MCCs are for, and where they go wrong.
What an MCC is
MCCs are defined in the ISO 18245 standard and used by the card networks, which publish their own lists and rules on top. The code describes the type of business a merchant does, as declared when it signed up to accept cards. It exists for the payment system's needs, not yours: interchange rates (what a merchant pays per transaction), risk rules, tax reporting in some countries, and card controls such as "no gambling" or "travel rewards".
| MCC | Meaning | A spending category would say |
|---|---|---|
| 5411 | Grocery stores, supermarkets | Groceries, usually. Also the pharmacy and electronics counters inside a hypermarket. |
| 5812 | Eating places, restaurants | Restaurants. |
| 5814 | Fast food restaurants | Restaurants, or "takeaway", depending on the app. |
| 5541, 5542 | Service stations, automated fuel dispensers | Fuel, though the station shop sells snacks and car washes too. |
| 4121 | Taxicabs and limousines | Transport: ride hailing and taxis. |
| 4784 | Tolls and bridge fees | Transport: road tolls. |
| 5999 | Miscellaneous and specialty retail | Anything at all. |
| 7399 | Business services, not elsewhere classified | Anything at all, often online. |
Where MCCs break down
The catch-all codes
A large share of payments, especially online and through facilitators, carry catch-all codes such as 5999 and 7399. These say "some kind of shop" or "some kind of service" and nothing more. If your category model relies on the MCC, those payments all land in "Other", and "Other" becomes your biggest category.
One company, one code
An MCC is set per merchant account, not per purchase. A supermarket that also sells phones, a fuel station with a café, an airline that sells hotel packages: each purchase gets the account's code, whatever you bought. A delivery platform carries a single code for groceries, restaurant meals and pharmacy orders alike.
Facilitators choose for the merchant
When a small business signs up through a payment facilitator, the facilitator assigns its code, often from a short list, and it is not always precise. Two very different shops on the same facilitator can carry similar codes.
Codes are about payments, not people
MCCs do not distinguish a subscription from a one-off purchase, a gift card from a meal, or a refund from a sale. They also say nothing about the brand, which is what users actually recognise.
The same code, different spending
CARREFOUR MOE DUBAI AE MCC 5411
- CARREFOUR
- Carrefour: the weekly shop, or a television from the electronics aisle. The code is the same.
- MCC 5411
- Supermarket, for every purchase at this account.
What works better
Use the MCC as one signal among several, not as the answer:
- Identify the merchant first. A recognised brand carries much more information than a four-digit code: what it sells, whether it is a subscription, what users call it.
- Categorise by what the merchant sells at the point of sale. A fuel brand is fuel, even if the parent company is an energy group; a supermarket inside a mall is groceries, not shopping.
- Keep the MCC as a tie-breaker when the name is ambiguous, for example a short name that belongs to both a restaurant and a clothing shop.
- Let users correct categories and remember their choice; no model gets personal categories right for everyone.
Field note
When a caller sends us an MCC with a descriptor, we use it as a hint, never as the answer. It is most useful exactly where the text is weakest: short names, cut-off names and names shared by unrelated businesses in different countries.
Categories from DescriptorAPI
Each merchant we return carries a category and subcategory from a fixed list designed for spending, not for interchange, plus an MCC where we are confident of it. Send the transaction's own MCC in the request if you have it; it improves results for ambiguous lines. See the quickstart for the request format.