Multi-Currency Checkout: Accepting Payments Globally¶
Overview¶
4Geeks Payments enables you to accept payments in multiple currencies, providing localized checkout experiences for customers worldwide. As your Merchant of Record, 4Geeks handles currency conversion, cross-border compliance, and local payment methods automatically.
In this tutorial, you will:
- Configure supported currencies
- Set up dynamic currency conversion
- Implement localized checkout experiences
- Handle multi-currency subscriptions
- Monitor exchange rates and conversion fees
Supported Currencies¶
4Geeks Payments supports 135+ currencies. The most commonly used include:
| Region | Currencies |
|---|---|
| Americas | USD, CAD, MXN, BRL, ARS, CLP, COP, PEN, CRC |
| Europe | EUR, GBP, CHF, SEK, NOK, DKK, PLN |
| Asia Pacific | JPY, AUD, NZD, SGD, HKD, INR, KRW, TWD |
| Middle East & Africa | AED, SAR, ZAR, EGP, KES |
Step 1: Configure Supported Currencies¶
- Log in to console.4geeks.io
- Navigate to Payments → Settings → Currencies
- Enable the currencies you want to accept:
- Toggle each currency on/off
- Set rounding rules (e.g., round to nearest 0.99)
- Configure display format (symbol position, decimal places)
Currency Display Settings¶
| Setting | Description | Example |
|---|---|---|
| Symbol position | Before or after amount | \(10.00 vs 10.00\) |
| Decimal places | Number of decimal digits | 2 (10.00) or 0 (10) |
| Thousand separator | Comma, period, or space | 1,000.00 vs 1.000,00 |
| Rounding rule | How to round converted amounts | Round to .99, .00, or nearest |
Step 2: Implement Dynamic Currency Conversion¶
Using Payment Links¶
Payment links automatically detect the customer’s location and display prices in their local currency:
const paymentLink = await axios.post('https://api.4geeks.io/v1/payment-links', {
amount: 4900, // Base amount in your default currency
currency: 'USD', // Base currency
description: 'Pro Plan',
customer_email: 'customer@example.com',
auto_convert: true, // Enable automatic currency conversion
supported_currencies: ['USD', 'EUR', 'GBP', 'MXN', 'BRL'],
success_url: 'https://yoursite.com/success',
cancel_url: 'https://yoursite.com/cancel'
}, {
headers: { 'Authorization': `Bearer ${SECRET_KEY}` }
});
// Customer sees the price in their local currency
// based on their location and browser settings
Using Direct API¶
For custom checkout, specify the customer’s preferred currency:
const charge = await axios.post('https://api.4geeks.io/v1/charges', {
amount: 99000, // Amount in the target currency's smallest unit
currency: 'EUR', // Customer's currency
customer_id: 'cus_xxx',
description: 'Annual Plan',
metadata: {
original_amount: 10800, // Original USD amount
original_currency: 'USD',
exchange_rate: 0.917 // Rate at time of transaction
}
}, {
headers: { 'Authorization': `Bearer ${SECRET_KEY}` }
});
Step 3: Set Up Localized Checkout¶
Detect Customer Location¶
// Option 1: Browser locale
const browserCurrency = navigator.language;
// 'en-US' → USD, 'es-MX' → MXN, 'de-DE' → EUR
// Option 2: IP geolocation (server-side)
const customerCountry = req.headers['cf-ipcountry']; // Cloudflare
// 'US' → USD, 'MX' → MXN, 'DE' → EUR
// Option 3: Customer preference (stored in profile)
const preferredCurrency = customer.preferences.currency;
Display Localized Prices¶
// Fetch real-time exchange rate
const rate = await getExchangeRate('USD', targetCurrency);
// Convert and format
const localAmount = Math.round(baseAmount * rate);
const formattedPrice = formatCurrency(localAmount, targetCurrency);
// "$49.00" → "€45.00" → "MX$980.00"
// Display on checkout page
document.getElementById('price').textContent = formattedPrice;
Local Payment Methods¶
4Geeks Payments automatically offers relevant payment methods based on currency and location:
| Region | Payment Methods |
|---|---|
| United States | Visa, Mastercard, Amex, Apple Pay, Google Pay |
| Europe | Visa, Mastercard, SEPA Direct Debit, iDEAL, Bancontact |
| Latin America | Visa, Mastercard, OXXO, Boleto, PSE, Mercado Pago |
| Asia Pacific | Visa, Mastercard, Alipay, WeChat Pay, PayNow |
Step 4: Handle Multi-Currency Subscriptions¶
Creating a Multi-Currency Plan¶
// Create plan with multiple currency prices
const plan = await axios.post('https://api.4geeks.io/v1/plans', {
name: 'Pro Plan',
currencies: {
USD: { amount: 4900, display: '$49.00/month' },
EUR: { amount: 4500, display: '€45.00/month' },
GBP: { amount: 3900, display: '£39.00/month' },
MXN: { amount: 98000, display: 'MX$980.00/month' },
BRL: { amount: 24500, display: 'R$245.00/month' }
},
interval: 'month',
trial_period_days: 14
}, {
headers: { 'Authorization': `Bearer ${SECRET_KEY}` }
});
Currency Lock for Subscriptions¶
When a customer subscribes, their currency is locked:
- Billing continues in the same currency for the life of the subscription
- Exchange rate fluctuations don’t affect the customer’s price
- Plan changes (upgrade/downgrade) use the same currency
- Customer can request currency change (requires support intervention)
Step 5: Monitor Exchange Rates and Conversion¶
Exchange Rate Dashboard¶
- Go to Payments → Analytics → Multi-Currency
- View:
- Current exchange rates for all enabled currencies
- Rate history over time
- Conversion volume by currency
- Revenue by currency
Conversion Fees¶
| Component | Description |
|---|---|
| Base transaction fee | Standard fee (5% + $0.50) |
| Currency conversion fee | Additional 1-2% for cross-currency transactions |
| Settlement currency | You receive payouts in your configured currency |
Revenue Reporting¶
View revenue broken down by:
- Transaction currency: What the customer paid
- Settlement currency: What you received
- Conversion impact: Gain/loss from exchange rate movements
Best Practices¶
Pricing Strategy¶
- Set competitive local prices: Don’t just convert — research local market rates
- Use psychological pricing: \(49.99 → €44.99 → MX\)949
- Consider purchasing power: Adjust prices for different regions
- Review prices quarterly: Exchange rates and market conditions change
Customer Experience¶
- Show prices in local currency by default
- Display the original currency for transparency
- Explain conversion if the customer’s card currency differs
- Offer currency selection on the checkout page
Risk Management¶
- Monitor exchange rate volatility: Large swings can impact margins
- Set minimum transaction amounts per currency to avoid tiny charges
- Use currency hedging for large, predictable international revenue
- Review cross-border regulations: Some countries have payment restrictions
What’s Next?¶
- Learn about Handling Refunds & Chargebacks
- Explore Tax Compliance as MoR
- Read about 3D Secure for Fraud Prevention
Need Help?¶
- Documentation: docs.4geeks.io/en/payments
- API Reference: docs.4geeks.io/en/api
- Support: Available through the console dashboard
Still questions? Ask the community.