Demo — invented data, read-only. Nothing here is anyone’s real spending.
RewardsMaxx
HSBC VISA REVOLUTION
•••• 5368
+ Add screenshot
Last upload 2 Aug · statementLast transaction 24 Jun
Reward points
0
Earned this cycle
Balance 254 HSBC Rewards

This cycle

17
17 days left
1 Aug31 Augcalendar · monthly · by posting date
Spend
S$0.00
Qualifying
S$0.00
Earned
0 mi
Transactions
0
Left to bonus cap
S$1,000.00
Online or contactless at an eligible merchantS$0.00 of S$1,000.00

Every cycle so far

Earned (Reward points)
73
Worth (miles)
24
Blended rate
0.33 mpd
Spend
S$73.02
Cycles
1
Lost to rounding
S$0.00
Blended rate divides by every dollar spent. That is what makes it the figure to compare cards on: it is what this card returned on everything you put through it.
S$73.02 of spend has no known payment method 100% of the total. This card's bonus depends on HOW you paid, and statements never print that, so those rows earn the base rate here. Set the method on a transaction below and tick “remember” to fix every future one from that merchant. It is left blank rather than guessed: calling an in-store tap a mobile payment would invent a rate you never earned.
  • Everything else · 0.33 mpd100%
CycleSpendReward pointsTotal rewards · milesHighest tierRateWasted
1 Jun30 JunS$73.0273 *240%0.33 mpdS$73.02
Rate is total rewards over every dollar spent, so it moves with the “earned on” column rather than because the card changed. A figure marked * has no statement yet and is what we compute.

Where this cycle went

No spend in this cycle yet.

Spend, last six months

Average S$14.60 over 5 months, excluding the month still running

Transactions

MCC marked ≈ is inferred from the merchant name rather than supplied by the bank. “≈ unused” means the inference was not confident enough to unlock a bonus, and “✓ yours” is one you recorded.
Record an MCC for a merchantIf your bank's app shows the real MCC, put it here. It outranks any inference but never the code the bank printed on the statement.
1 of 1 row
  • KINGDOM SPAS$73.02
    23 Jun → 24 Junhealthcare7298earlier · 1 Jun
    73 Reward points1.00/$base

Card facts

Counted byPosting date — the day it reached the bank, not the day you paidCycleCalendar month, monthly
Income Req.S$30,000 p.a. with S$50k TRB, else S$65,000 p.a.Points Validity37 months
Annual FeeNoneMin. Transfer25,000 points (10,000 miles)
Miles with Annual FeeNoneTransfer Partners20
FCY Fee3.25%Transfer FeeNone
Local Earn0.4 mpdPoints Pool?Yes
FCY Earn0.4 mpdLounge Access?No
Special Earn4-8 mpd on dining, shopping, transport, membership clubs and travel*Airport Limo?No
* Whitelist card: only the MCCs listed in clause 7 earn the bonus, and only online or contactless — chip and magstripe do not.

How this card earns

TierRateCap
Online or contactless at an eligible merchant3.33 mpdS$1,000.00 of spend
Everything else0.33 mpduncapped
Reward pointsmiles · 30,000 minimum transfer · no transfer fee · expires after 36 months
Rule notes and caveats
HOW IT EARNS
- 1 base + 9 bonus = 10 Reward points per S$1 online or contactless, capped
  at 9,000 Bonus Points per CALENDAR month (= S$1,000 of spend). Base points
  are uncapped. No annual fee, ever.
- 3.33 mpd IS THE KRISFLYER FIGURE, and the programme you transfer to
  changes it. HSBC's rewards catalogue converts at different ratios per
  partner: at 25,000 points : 10,000 units the same 10 points a dollar is
  4 mpd, which is what British Airways Executive Club (Avios) and several
  other partners pay. This rule models KrisFlyer because that is the
  programme the rest of this wallet earns into and mixing two ratios in one
  "miles" number would make the totals meaningless. Read every figure on
  this card as KrisFlyer miles; a transfer to Avios is worth about 20% more.
- 3.33 mpd, NOT the 4 the marketing says. HSBC devalued the KrisFlyer
  transfer on 16 Jan 2025 to 30,000 points : 10,000 miles, from 25,000. Ten
  points a dollar at a third of a mile each is 3.33; the old ratio would
  overstate the card by 20%. MileLion's April 2026 review agrees on 3.33,
  though it prints the BASE as 0.4 mpd, which is the pre-devaluation figure
  — clause 7.1 gives 1 Reward point per S$1, so the base is 0.33.
- Whitelist card: nothing earns the bonus unless its MCC is on the clause 7
  list, so an unrecognised merchant correctly falls to the base rate.

WATCH OUT
- Bonus points are credited LATE — clause 10, by the last day of the
  following calendar month, so up to two months after the transaction.
- The cap is per CALENDAR month while the statement cycle is not, so a
  statement straddling a month boundary contains parts of two cap windows.

NOT MODELLED
- MODELLED, not assumed: the enhanced tier is a per-card setting, off by
  default. Turn it on for this card in Wallet if you hold the balance.
  Clause 9's table, read 2026-08-06: a cardholder holding
  S$50,000+ average daily balance in an HSBC Everyday Global Account earns
  1 base + 19 bonus = 20 Reward points per S$1, capped at 22,800 Bonus
  Points a month (= S$1,200 of spend). At 30,000:10,000 that is 6.67 mpd,
  not the 8 the marketing quotes — the same devaluation that makes the
  standard tier 3.33 rather than 4. Needs a per-card user setting; this
  wallet is modelled on the standard tier and is under-reported if that
  balance is held. Now carried as a second tier and chosen by the setting.
- The 30,000-point minimum transfer is inferred from the 3:1 ratio, not
  quoted. HSBC allows 5-point top-ups past the threshold, which the DSL
  cannot express.

EVIDENCE
- Checked 2026-07-30 against the CURRENT terms. This file was written from
  the "10X Reward Points Program" document of 15 July 2024, replaced by the
  "Revolution Credit Card Reward Points Programme" from 1 April 2026. Both
  PDFs are still served, so the old citation looked healthy. The numbers
  survived the change and the tiers needed no edit.

Product

Cardholders: SAM TAN HUI LING, CASEY LIM JUN HAO

Approved oni

Not printed on a statement. Yours first appears on the statement to 14 Aug, so it was approved on or before then.
Leave it blank if you are not sure. A wrong date is worse than none — an expiry predicted from a guess would read as fact.

Usually paid by

Neither statements nor most app screens print how a payment was made, so most rows arrive with no channel at all. Nothing is assumed unless you say so here — assuming online by default made this card pay 4 mpd on restaurant dinners and six statements read up to 54% above what the bank actually paid. Set it only where it is true of the card. A channel you set on a single transaction always wins, and so does one worked backwards from a statement's printed reward total — that is arithmetic on what the bank actually paid, and this is a habit.“Only rows no statement has claimed” keeps the assumption to the cycle nothing else can speak for — app screenshots of spend the statement has not reached yet. When that statement arrives it supersedes those rows and the assumption is taken back off them, leaving the printed reward total to settle the channel. Use it on a card that prints one; use “every row” on a card where the habit is simply true of how you pay.

Relationship rate

With the balance the card earns 1 base + 19 bonus points per S$1 on eligible spend, capped at 22,800 bonus points a month (S$1,200 of spend), against 1 + 9 and 9,000 (S$1,000) without it. That is 6.67 mpd instead of 3.33 at the KrisFlyer ratio. OFF by default — assuming it would overstate the card for everyone who does not hold the balance, and no statement can catch that.

Cycle

Read off your statement where one has been imported. Only used by cards billed on a statement cycle rather than a calendar month.

Add from a screenshot

The current cycle has no statement yet, so nothing else can tell you how close you are to a minimum or a cap. Screenshot the transaction list in your banking app and upload it here — several consecutive scrolls are fine, in order.A points balance or expiry schedule works too — the yuu app's home and Expiring Points screens are read as readily as a transaction list. Reading them takes about half a minute per image: they go through the local model one at a time, so the page will sit still for a while. It is working.
Read on this machine by the local model — the images are never uploaded anywhere else. Rows land marked as coming from a screenshot, and the statement replaces them when it arrives rather than adding to them.

Statements

  • 15 Jun – 14 Jul
    hsbc.pdf
    visionnot kept
  • 15 May – 14 Jun
    2026-06-13_Statement hsbc.pdf
    visionnot kept
  • 15 Apr – 14 May
    2026-05-14_Statement hsbc.pdf
    visionnot kept
  • 16 Mar – 14 Apr
    2026-04-14_Statement hsbc.pdf
    visionnot kept
  • 16 Feb – 15 Mar
    2026-03-14_Statement hsbc.pdf
    visionnot kept
  • 15 Jan – 15 Feb
    2026-02-14_Statement hsbc.pdf
    visionnot kept
  • 15 Dec – 14 Jan
    2026-01-14_Statement hsbc.pdf
    visionnot kept
  • 15 Nov – 14 Dec
    2025-12-13_Statement hsbc Dec 25.pdf
    visionnot kept
  • 15 Oct – 14 Nov
    2025-11-14_Statement hsbc Nov 25.pdf
    visionnot kept
  • 15 Sep – 14 Oct
    2025-10-14_Statement hsbc Oct 25.pdf
    visionnot kept
  • 15 Aug – 14 Sep
    2025-09-13_Statement hsbc Sep 25.pdf
    visionnot kept
  • 15 Jul – 14 Aug
    2025-08-14_Statement hsbc Aug 25.pdf
    visionnot kept
The original PDFs, kept so you can check any figure here against the document it came from.

Terms and conditions

The documents this card's rules were written from, kept as downloaded. A T&C is revised in place — the page a rate was read off in March may say something else today and nothing here would change — so what is linked is OUR copy, with the date the issuer printed on it.Commentary is linked but deliberately not archived — it is someone else's writing, and a local copy of it is neither ours to keep nor evidence of anything. Refresh with npx tsx scripts/fetch-terms.ts --all.
RewardsMaxx