What’s harder than splitting the atom? Reconciling credit card points.
Those of you who obsessively track your points down to the last digit will know what I’m talking about. It’s rarely the case that transaction amount * mpd rate= total miles, because of how banks calculate and round points. In fact, rounding policies may mean you don’t always get the headline rates that banks advertise.
For example, if you spend S$9.99 in Singapore on your UOB PRVI Miles card, you may think you’ll earn S$9.99*1.4=13.99 miles.
Not quite. UOB rounds your S$9.99 transaction down to the nearest S$5, and give you 3.5 UNI$ for each block of S$5. However, since there’s an odd number block here, the 3.5 UNI$ is further rounded down to 3 UNI$, which is equal to 6 miles. Therefore, your mpd isn’t 1.4, it’s actually 0.6 (and yes, this means that if you spend S$4.99, you earn zero miles)!
Which banks offer transaction level points breakdowns? Read this guide to find out 
It’s an extreme case, of course, and the effect gets smaller as your transaction gets bigger, but it does show how rounding can mess up what should otherwise be a simple calculation.
In this post, we’ll look at the rounding policies of different general spending cards in the market.
General Spending Cards
Here’s how each general spending card rounds and awards points, sorted by the minimum spend required to earn points.
Card  Remarks  Min Spend to Earn Points 
UOB PRVI Miles AMEX/MC/Visa  Round down transaction to nearest S$5, divide by 5, then multiply by 3.5 (local) or 6.0 (FCY). Round down to the nearest whole number  S$5 
Round down transaction to nearest S$5, divide by 5, then multiply by 3.5 (local) or 5.0 (FCY). Round down to the nearest whole number  S$5  
Round down transaction to nearest S$5, divide by 5, then multiply by 6.0 (local or FCY)  S$5  
Divide transaction by 5 and multiply by 3.0 (local) or 5.0 (FCY). Round down to the nearest whole number  S$1.67 (local) S$1 (FCY) 

Round down transaction to nearest S$1, then multiply by 1.2 (local) or 2.3 (FCY). Round to the nearest whole number  S$1  
Citi PremierMiles Visa 
Round down transaction to nearest S$1, then multiply by 1.2 (local) or 2.0 (FCY). Round to the nearest whole number  S$1 
Citi PremierMiles AMEX 
Round down transaction to nearest S$1, the multiply by 1.3 (local) or 2.0 (FCY). Round to the nearest whole number  S$1 
Citi Prestige 
Round down transaction to nearest S$1, then multiply by 3.25 (local) or 5.0 (FCY). Round to the nearest whole number  S$1 
HSBC Visa Infinite 
Round transaction to nearest S$1, then multiply by 2.5 (local) or 5.0 (FCY). Round down to nearest whole number. If cardholder has “Step Up Earn Rate” (Spent >S$50K in previous year), multiply by 3.125 (local) or 5.625 (FCY)  S$0.50 
Round transaction to the nearest S$1, then multiply by 3.0 (local) or 5.0 (FCY)  S$0.50  
Multiply transaction by 1.1 (local) or 2.0 (FCY in Jun/Dec), then round to the nearest whole number  S$0.46 (local) S$0.25 (FCY) 

Multiply transaction by 1.2 (local) or 2.0 (FCY in Jun/Dec), then round to the nearest whole number  S$0.42 (local) S$0.25 (FCY) 

SCB Visa Infinite 
Multiply transaction by 2.5 (local and FCY), then round to the nearest whole number. Bonus 1.0 (local) and 5.0 (FCY) points is contingent on hitting S$2K in a statement cycle and is awarded later 
S$0.20 
SCB X Card 
For local, multiply transaction by 3.0, then round to nearest whole number. For FCY, multiply by 3.0, round to nearest whole number, then multiply by 2.0, round to nearest whole number, then add  S$0.17 
Multiply transaction by 4.5 (local) or 9.0 (FCY), no rounding 
S$0.01 
A few things to point out:
Round versus round down
It’s important to note whether your bank rounds or rounds down transaction and points amounts
 Round means 3.6 becomes 4, 3.4 becomes 3 (.5 is always rounded up)
 Round down means that both 3.6 and 3.4 become 3
Obviously, the former is more generous than the latter.
For example, the AMEX KrisFlyer Ascend does not round transactions; it rounds the KrisFlyer miles awarded to the nearest whole number. Therefore, a S$36.35 transaction would earn 43.62 miles (36.35*1.2), rounded up to 44 miles.
In contrast, the UOB PRVI Miles rounds down your transaction to the nearest S$5, then rounds down the awarded UNI$ again. So this same S$36.35 transaction would first be rounded down to S$35, then the resulting 24.5 UNI$ (35/5*3.5) would be rounded down to 24 UNI$.
Fractional points
Of all the banks here, BOC is the only one I’m aware of which awards fractional points. If I spend S$10.80 and S$6.85, for example, I’ll get 48.6 points and 30.825 points respectively, or 79.425 points in total. Most other banks would have rounded those figures down to 48 and 30, for a total of 78.
It’s a small difference to be sure, but it really means every cent counts.
Best cards to use for small amounts
The effect of rounding is most noticeable on small transactions, and here’s how different cards compare for local spending.
Three interesting observations:
 The BOC Elite Miles is far and away the best option, not just because of its headline earn rate of 1.5 mpd, but because literally every cent earns miles (how long you’ll wait to get it and whether you can deal with clawbacks is another question altogether)
 The UOB PRVI starts off poorly because of its “round down to S$5” policy, but as the transaction amount increases it generally becomes the second best card to use after the BOC
 The DBS Altitude suffers (although to be fair, we’re talking minute amounts) because unlike other 1.2 mpd cards, it rounds points down instead of to the nearest whole number.
Here’s the same table for foreign currency spending
Credit Card Calculator 
I’ve taken a stab at creating a credit card calculator for general spending cards, where you can plug in your spending amount and see how each card performs. It’s based on my own experience and communitycontributed data points, so free to play around with it and update me if you see any errors in formulas. I’ll eventually add one for specialized spending cards too, so contribute your formulas if you have them! 
Excel formulas
If you’re the sort who uses Excel to calculate your points, here’s formulas to plug and play. “X” refers to the transaction amount.
Card  Formula for Points 
Local: ROUNDDOWN (ROUNDDOWN(X/5,0)*3.5,0) FCY: ROUNDDOWN (ROUNDDOWN(X/5,0)*6,0) 

Local: ROUNDDOWN (ROUNDDOWN(X/5,0)*3.5,0) FCY: ROUNDDOWN (ROUNDDOWN(X/5,0)*5,0) 

Local & FCY: ROUNDDOWN (ROUNDDOWN(X/5,0)*6,0) 

Local: ROUNDDOWN ((X/5)*3,0) FCY: ROUNDDOWN ((X/5)*5,0) 

Local: ROUND (ROUNDDOWN(X,0)*1.2,0) FCY: ROUND (ROUNDDOWN(X,0)*2.3,0) 

Citi PremierMiles Visa 
Local: ROUND (ROUNDDOWN(X,0)*1.2,0) FCY: ROUND (ROUNDDOWN(X,0)*2,0) 
Citi PremierMiles AMEX 
Local: ROUND (ROUNDDOWN(X,0)*1.3,0) FCY: ROUND (ROUNDDOWN(X,0)*2,0) 
Citi Prestige 
Local: ROUND (ROUNDDOWN(X,0)*3.25,0) FCY: ROUND (ROUNDDOWN(X,0)*5,0) 
HSBC Visa Infinite 
Local (Regular): ROUNDDOWN (ROUND(X,0)*2.5) FCY (Regular): ROUNDDOWN (ROUND(X,0)*5) Local (Step Up): ROUNDDOWN (ROUND(X,0)*3.125) FCY (Step Up): ROUNDDOWN (ROUND(X,0)*5.625) 
Local: ROUND(X,0)*3 FCY: ROUND(X,0)*5 

Local: ROUND(X*1.1,0) FCY: ROUND(X*2,0) 

Local: ROUND(X*1.2,0) FCY: ROUND(X*2,0) 

SCB Visa Infinite 
Local & FCY: ROUND(X*2.5,0) 
SCB X Card 
Local: ROUND(X*3,0) FCY: ROUND(X*3,0)+ ROUND(X*2,0) 
Local: X * 4.5 FCY: X * 9 
Conclusion
If your mind has turned to mush by now, I don’t blame you! That’s a lot of math to take in, so head on over to the Credit Card Calculator if you want a quick answer.
I’ve created a separate post for specialized spending cards too, which you can view here.
[Credit for this article goes to Nan Shen, Jon, Lembu, and other members of The Milelion Community who contributed data points and helped check my working. Thanks guys!]
Signing up for cards or making purchases through the links in this article may generate a referral commission that supports the running of The Milelion. Found this post useful? Subscribe to ourTelegram Channel to get these posts pushed directly to your phone, or our newsletter (on the right of your screen) for the latest deals and hacks delivered to your inbox.