7-Country Pricing on One Codebase: How MoodFlow Handles Localization
The Challenge
MoodFlow serves 7 countries with different:
- Currencies (USD, CNY, IDR, MYR, VND, THB, PHP)
- Payment preferences (some prefer monthly, some annual)
- Purchasing power ($119 means different things in Singapore vs Vietnam)
- Language expectations
How do you price for all of them without 7 separate codebases?
The Solution: Country-Based Pricing Config
PRICING = {
"US": {"currency": "USD", "basic": 8.99, "pro": 17.99, "enterprise": 32.99},
"CN": {"currency": "CNY", "basic": 29, "pro": 59, "enterprise": 119},
"ID": {"currency": "IDR", "basic": 89000, "pro": 179000, "enterprise": 329000},
"MY": {"currency": "MYR", "basic": 39, "pro": 79, "enterprise": 149},
"VN": {"currency": "VND", "basic": 149000, "pro": 299000, "enterprise": 549000},
"TH": {"currency": "THB", "basic": 249, "pro": 499, "enterprise": 899},
"PH": {"currency": "PHP", "basic": 449, "pro": 899, "enterprise": 1649},
}
How It Works
1. Country Detection
- IP geolocation (free tier, fallback to USD)
- User profile setting (paid users can override)
- Browser language header (secondary signal)
2. Display Logic
def get_pricing_for_user(user):
country = user.country or detect_from_ip(request)
pricing = PRICING.get(country, PRICING["US"])
return {
"currency": pricing["currency"],
"tiers": [
{"name": "Basic", "price": pricing["basic"], "credits": 100},
{"name": "Pro", "price": pricing["pro"], "credits": 300},
{"name": "Enterprise", "price": pricing["enterprise"], "credits": 800},
]
}
3. Shared Credit System
Credits are universal. 1 credit = 1 stock lookup = 1 TikTok script = 1 e-commerce description. Doesn't matter which country you're in or which currency you paid with.
The Trade-offs
| Pro | Con |
|---|---|
| One codebase for 7 countries | Manual price updates per country |
| Users see local prices | Currency fluctuation risk |
| Shared credit system | Some users want USD pricing |
| Easy to add new countries | Hard to run global sales |
Why Not Just Use USD Everywhere?
Because an Indonesian creator earning IDR 5M/month cannot pay $32.99 — but they CAN pay IDR 329,000 (~$21). Local pricing isn't just good UX. It's the difference between having users and having nobody.
🔮 Free Daily Fortune!
7 countries, 7 pricing tiers, 2 permanently free tools. Fortune doesn't care about your currency.
📊 Free AI Stock Analysis: Get instant buy/sell signals for SG, MY, ID, US stocks — 5 free queries daily on Telegram: https://t.me/MoodFlowStockBot
Top comments (0)