Membership Information

You have selected the Premium Cantonese Flashcard Account membership level.

🎓

Premium Member

Your complete Cantonese learning journey starts here

Loading price...

  • 1,000+ flashcards across 100+ real-life topics
  • Native audio & Jyutping — perfect your tones instantly
  • Grammar exercise bank — from particles to sentence patterns
  • Save favourite cards & track your progress anytime
  • New content every week — always something fresh to learn
  • Works on any device — phone, tablet, or desktop

💳 Stripe
🅿️ PayPal
🍎 Apple Pay
🔵 Google Pay

✔️ 7-day money-back guarantee  ·  Cancel anytime  ·  Encrypted payment

🌏 Trusted by 200+ learners from Hong Kong, UK, Canada, Australia & beyond

Already have an account? Log in here →

(function() {
const currencyMap = {
GB: { code: 'GBP', symbol: '£' },
US: { code: 'USD', symbol: '$' },
CA: { code: 'CAD', symbol: 'CA$' },
AU: { code: 'AUD', symbol: 'A$' },
NZ: { code: 'NZD', symbol: 'NZ$' },
SG: { code: 'SGD', symbol: 'S$' },
MY: { code: 'MYR', symbol: 'RM' },
TW: { code: 'TWD', symbol: 'NT$' },
JP: { code: 'JPY', symbol: '¥' },
DE: { code: 'EUR', symbol: '€' },
FR: { code: 'EUR', symbol: '€' },
NL: { code: 'EUR', symbol: '€' },
BE: { code: 'EUR', symbol: '€' },
IE: { code: 'EUR', symbol: '€' },
HK: { code: 'HKD', symbol: 'HK$' },
};
const HKD_BASE = 100;

async function getCountry() {
try {
const res = await fetch('https://1.1.1.1/cdn-cgi/trace');
const text = await res.text();
const match = text.match(/loc=([A-Z]{2})/);
return match ? match[1] : 'HK';
} catch(e) { return 'HK'; }
}

async function showPrice() {
const priceEl = document.getElementById('pmpro-price-main');
const subEl = document.getElementById('pmpro-price-sub');
if (!priceEl) return;

try {
const country = await getCountry();
const currency = currencyMap[country] || { code: 'USD', symbol: '$' };

if (currency.code === 'HKD') {
priceEl.innerHTML = 'HK$' + HKD_BASE + ' / month';
subEl.textContent = 'Billed monthly · Cancel anytime';
return;
}

const rateRes = await fetch('https://open.er-api.com/v6/latest/HKD');
const rateData = await rateRes.json();
const rate = rateData.rates[currency.code];

if (rate) {
const amount = currency.code === 'JPY' ? Math.round(HKD_BASE * rate) : (HKD_BASE * rate).toFixed(2);
priceEl.innerHTML = currency.symbol + amount + ' / month';
subEl.textContent = '≈ HK$' + HKD_BASE + ' · Billed monthly · Cancel anytime';
} else {
priceEl.innerHTML = 'HK$' + HKD_BASE + ' / month';
subEl.textContent = 'Billed monthly · Cancel anytime';
}
} catch(e) {
priceEl.innerHTML = 'HK$' + HKD_BASE + ' / month';
subEl.textContent = 'Billed monthly · Cancel anytime';
}
}

showPrice();
})();

The price for membership is $100.00 per Month.

Do you have a discount code?

Account Information

LEAVE THIS BLANK
Already have an account? Log in here