The Merchant Category Code (MCC) is the all-important four-digit number that describes a merchant’s primary business activities. Banks offer bonus miles based on MCCs, so the right MCC can be all the difference between earning a ton of miles on a big ticket purchase, or walking away empty-handed.
It used to be that MCCs were completely opaque to cardholders, and the only way to discover them was to make a small test transaction, wait a few days, then call up the bank and ask how it coded.
Thankfully, things are a lot simpler these days. Even though the Visa Supplier Locator is no longer available to the general public, there’s three even better ways of finding the MCC without spending a single cent.
How can you find the MCC?
Below is a summary of the three options that cardholders can use to discover MCCs.
Method | Ease of Use | Reliability |
❓Heymax | ●●● | ● |
📱 Instarem app | ●● | ●● |
🤖 DBS digibot | ● |
●●● |
I want to emphasise upfront that “ease of use” and “reliability” are all relative. Heymax already provides a solid baseline for reliability, and the DBS digibot is still simple enough to use, despite requiring more steps than the other two methods.
Here’s how each of these works, and potential pitfalls to take note of.
Heymax
![]() |
|
Heymax | |
Sign up for a Heymax account with the code MILELION and get 700 Max Miles as a welcome bonus after adding a card, purchasing a voucher and viewing the redemption page | |
✓ Key Advantages |
|
🞭 Key Disadvantages |
|
Heymax is the most idiot-proof solution for looking up MCCs: just type in the merchant and hit enter. There’s no need to block a card, test a transaction, or even have access to the merchant.
While it’s generally reliable, you might not be able to find the specific merchant you’re looking for, possibly because it processes transactions under a different legal name from the customer-facing entity.
Also, it’s less useful in situations where a merchant processes transactions under a range of MCCs (e.g. e-commerce sites like Amazon, Lazada, Qoo10, Shopee). It can list all the potential MCCs, but can’t tell you exactly which one will be used.

In these cases, it’s better to use the Instarem or DBS digibot methods outlined below so you can be certain that whatever appears there is how the actual transaction will code.
Also note that Heymax taps the Visa API to look up MCCs. There is a slight (though remote) chance that Mastercard may use a different MCC.
❓ Does that really happen? |
It’s very rare you’ll have a situation where Visa and Mastercard throw up different MCCs, but it’s not impossible. Cast your mind back to early 2020, when Mastercard classified GrabPay top-ups as MCC 6540 (POI Funding Transactions), but Visa classified it as MCC 7399 (Business Services Not Elsewhere Classified). This meant you could earn 4 mpd on GrabPay top-ups with the Citi Rewards Visa, but not the Mastercard! That didn’t last forever, of course, but it’s just an example of how the two card networks can sometimes sing a different tune. |
Instarem app
![]() |
|
Instarem | |
✓ Key Advantages |
|
🞭 Key Disadvantages |
|
Amaze Cardholders can use the Instarem app to check the MCC of a merchant, either by:
- Blocking all card functionality and attempting to make a transaction
- Paying by Amaze Wallet with an insufficient balance
For method (1), go to Card > Manage and disable both in-store purchases and online purchases.
Then use your Amaze Card and attempt to make a transaction with the merchant in question (if you’re prompted for an OTP, go ahead and enter it). It will fail, of course, but that’s what we want.
After the transaction fails, visit the Activity tab and you’ll be able to see the MCC of the merchant.
For method (2) you don’t need to disable anything. Simply select Amaze Wallet as the payment method and attempt to make a transaction, ensuring that the balance in the wallet is insufficient.
The transaction will again fail, but you can then go back to the Instarem app, tap on Activity, and see the failed transaction’s details including MCC.

This method is extremely robust, but because Amaze is a Mastercard, and there is a very slight chance that if you were to do the transaction with a Visa card, the MCC may come out different. I want to emphasise it’s highly unlikely, but you can’t rule it out altogether.
DBS digibot
![]() |
|
digibot | |
✓ Key Advantages |
|
🞭 Key Disadvantages |
|
The DBS digibot requires relatively more steps than HeyMax or Instarem, but will also provide the most accurate information. Simply put: there is no chance you’ll get the wrong MCC if you follow the steps properly.
The first step is to temporarily block a DBS card via the DBS digibank app. You can do this by tapping More on the bottom right hand corner, then scrolling down until you see Payment Controls.
Select the card you wish to use, then toggle the card lock option. Ensure the card gets greyed out, with a lock symbol appearing on top.
Now go to the merchant and attempt to make the transaction. It will fail, since your card is locked- that’s exactly what we want to happen.
Return to the DBS digibank app or login to DBS ibanking and summon the digibot.
- For the app, tap the question mark on the top right corner and scroll down to tap “Ask digibot”
- For desktop, click the digibot icon
at the bottom right corner
Navigate to Check my Recent Transactions > Credit Cards > Select the card you used > View Transaction History > Declined Transactions.
You’ll then see your failed transaction, together with the MCC.
Now that you know the MCC, you can proceed to unblock the card and make the transaction for real (or use a different bank’s card, whichever is more suitable).
Do remember that Visa and Mastercard may, in rare cases, use different MCCs. So if you’re blocking a Mastercard to make the test transaction, make sure the final card you use is also a Mastercard (and vice versa).
My preferred method
For me personally, the Instarem app method is the perfect balance between accuracy and convenience. In fact, I keep my Instarem card blocked most of the time, partly as an anti-fraud measure, but also because it’s my default way of checking MCCs.
Yes, it does mean that every transaction involves a couple more steps than usual, but with miles on the line, a little extra hassle is bearable.
Conclusion
Opaque MCCs are a thing of the past now, with cardholders having multiple ways of verifying an MCC before spending a single cent.
While it might not be worth the hassle to do with a S$5 coffee, I would certainly make a point of checking before swiping any big ticket purchase.
One thing about the Heymax app is that it logs you out very frequently + insists on you logging in before using it. Really frustrating experience.
Yeap this.
I thought I am the only one facing this annoying issue
Does debit card work for the Digibot?
anyone experience if a merchant could have different MCC codes with different bank issuers ?
DBS, Maybank and Citibank have shown different codes at the same eatery, sometimes 5812 other times 5814, very odd
shouldn’t be the case, since the MCCs are dependent on the card network (visa/mc) and not card issuer (Dbs/uob).
one possibility is that the merchant itself processes over a range of mccs, but hard to believe a restaurant would do that
It is possible for branches of franchises to have different MCC. Sometimes Mall A restaurant X is not having same MCC with Mall B Restaurant X . Maybe that contributes to the inconsistency
Doesn’t seems like Digibot and Amaze works anymore…
Since digibot gives the MCC description, how do you lookup the MCC code from the MCC description?
https://www.citibank.com/tts/solutions/commercial-cards/assets/docs/govt/Merchant-Category-Codes.pdf
try KardoAI. it maps via MasterCard direct.
DBS Digibot does not seem to show merchant category for some transactions. Any idea why this is the case? This happens to me consistently for the same merchants (such as Shopee) on all transaction types. (billed, unbilled, declined)