Skip to main content

Regional Pricing & Localization

Regional pricing allows you to offer the same core product across different countries at price points calibrated for local purchasing power, using local currencies and local payment methods.


The Emerging Market Conversion Problem​

Charging a flat global price (e.g. $9.99 USD) across all markets introduces major conversion bottlenecks:

  1. Purchasing Power Disparity: In Nigeria or Kenya, $9.99 USD (~₦15,500 / ~KSh 1,300) can represent a prohibitive percentage of discretionary income.
  2. FX Volatility & Bank Limits: Local bank cards frequently block international foreign currency (USD) transactions or impose extreme FX conversion surcharges.
  3. Unfamiliar Payment Rails: Forcing a Kenyan user to enter credit card details instead of triggering an M-Pesa STK push reduces checkout completion rates by up to 70%.

Multi-Market Pricing & Rail Matrix​

SolydFlow pairs localized pricing with local payment methods:

MarketCurrencyRecommended Local PricePrimary GatewayPreferred Local Methods
NigeriaNGN₦5,000Paystack / MonnifyLocal Debit Cards, Bank Transfer, USSD
KenyaKESKSh 500Safaricom (Daraja) / PaystackM-Pesa STK Push
GhanaGHSGH₵ 65FlutterwaveMTN Mobile Money, Telecel Cash
South AfricaZARR 99PaystackCapitec Pay, Ozow Instant EFT
United States / EUUSD / EUR$4.99 / €4.99StripeApple Pay, Google Pay, Visa, Mastercard

Anti-Pattern vs. SolydFlow Best Practice​

❌ The Anti-Pattern (Hardcoded Client-Side Logic)​

Hardcoding country codes and currency logic inside your mobile or web app breaks whenever you update pricing or add a new country:

❌ Fragile & Hard to Maintain
// Avoid this:
let price = 20; // Default USD
let currency = "USD";

if (user.country === "NG") {
price = 5000;
currency = "NGN";
} else if (user.country === "KE") {
price = 500;
currency = "KES";
}

✅ The SolydFlow Pattern (Dynamic Server-Driven Offerings)​

The SDK resolves localized packages automatically based on Geo-IP and console routing rules:

lib/screens/paywall_screen.dart
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:solydflow_flutter/solydflow_flutter.dart';

Widget buildLocalizedCard(SolydPackage pkg) {
// SolydFlow automatically serves the correct currency & PPP amount
final double displayPrice = pkg.amountMinor;
final String formatted = NumberFormat.simpleCurrency(name: pkg.currency).format(displayPrice);

return ListTile(
title: Text(pkg.name),
subtitle: Text("$formatted / ${pkg.duration}"),
trailing: ElevatedButton(
onPressed: () => SolydFlow.purchasePackage(context, pkg.identifier),
child: const Text("Subscribe"),
),
);
}

Regional Discounts & Promotions​

You can attach promotional campaigns to specific markets without discounting global tiers. For example:

  • Independence Day Flash Sale (Nigeria): Apply a 30% discount only to pro_monthly_ngn (reducing price from ₦5,000 to ₦3,500).
  • Global Base (pro_monthly_usd): Remains untouched at $4.99 USD.