DEV Community

MoodFlow
MoodFlow

Posted on

7-Country Pricing on One Codebase: How MoodFlow Handles Localization

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},
}
Enter fullscreen mode Exit fullscreen mode

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},
        ]
    }
Enter fullscreen mode Exit fullscreen mode

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.

👉 https://getmoodflow.com



🔮 Free Daily Fortune!

7 countries, 7 pricing tiers, 2 permanently free tools. Fortune doesn't care about your currency.

👉 Get your free fortune now →


📊 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)