डिजिटल गुड्स रीसेलर के लिए मल्टी-करेंसी प्राइसिंग इंजन — 2026
यदि आप B2C डिजिटल-गुड्स स्टोरफ्रंट चलाते हैं और FoxReload (या किसी USD-नामांकित थोक सप्लायर) से सोर्स करते हैं, तो प्राइसिंग इंजन आपके बिज़नेस में कोड का सबसे महत्वपूर्ण हिस्सा है। यह सीधे मार्जिन, प्रतिस्पर्धात्मकता, और FX पर कितनी बार पैसा गँवाते हैं, निर्धारित करता है। यह गाइड आर्किटेक्चर, गणित, और एक TypeScript रेफरेंस implementation दिखाता है जो एज केस संभालता है।
प्राइसिंग पाइपलाइन
पाइपलाइन शुद्ध परिवर्तनों की एक शृंखला है। प्रत्येक चरण अलगाव में टेस्ट किया जा सकता है:
wholesale_price_usd (FoxReload कैटलॉग से)
→ × fx_rate_to_customer_currency
→ × (1 + category_markup_pct)
→ × (1 + fx_buffer_pct)
→ मुद्रा-उपयुक्त इन्क्रीमेंट पर राउंड
→ TTL के लिए कैश
ठीक इसी क्रम में क्यों: मार्कअप ग्राहक-मुद्रा थोक मूल्य पर लागू करना है (USD पर नहीं), ताकि FX हलचलों की परवाह किए बिना प्रतिशत मार्जिन बना रहे। FX बफर ऊपर लगाया जाता है क्योंकि यह निपटान-समय की स्लिपेज को कवर करता है, मार्जिन नहीं।
TypeScript रेफरेंस implementation
interface PricingInput {
sku: string;
wholesaleUsd: number; // GET /v1/catalog से
customerCurrency: 'RUB' | 'EUR' | 'USD' | 'TRY' | 'INR';
category: 'game-code' | 'gift-card' | 'esim' | 'recharge';
customerSegment: 'retail' | 'vip' | 'wholesale';
}
const CATEGORY_MARKUP: Record<string, number> = {
'game-code': 0.22, // गेम टॉप-अप पर 22%
'gift-card': 0.18, // गिफ्ट कार्ड पर 18%
'esim': 0.35, // eSIM पर 35%
'recharge': 0.12, // मोबाइल रिचार्ज पर 12%
};
const FX_BUFFER: Record<string, number> = {
'USD': 0.005,
'EUR': 0.01,
'RUB': 0.025, // RUB अस्थिर, चौड़ा बफर
'TRY': 0.04, // TRY बहुत अस्थिर
'INR': 0.012,
};
const SEGMENT_DISCOUNT: Record<string, number> = {
'retail': 1.0,
'vip': 0.95,
'wholesale': 0.88,
};
async function computeRetailPrice(input: PricingInput): Promise<number> {
const fxRate = await getFxRate('USD', input.customerCurrency);
const wholesaleLocal = input.wholesaleUsd * fxRate;
const withMarkup = wholesaleLocal * (1 + CATEGORY_MARKUP[input.category]);
const withBuffer = withMarkup * (1 + FX_BUFFER[input.customerCurrency]);
const withSegment = withBuffer * SEGMENT_DISCOUNT[input.customerSegment];
return roundForCurrency(withSegment, input.customerCurrency);
}
function roundForCurrency(price: number, ccy: string): number {
if (ccy === 'RUB' || ccy === 'INR') return Math.ceil(price); // पूर्णांक
if (ccy === 'TRY') return Math.ceil(price * 2) / 2; // 0.50 इन्क्रीमेंट
return Math.ceil(price * 100) / 100; // 0.01 इन्क्रीमेंट
}
FX स्रोत चयन
FX रेट एक वस्तुनिष्ठ संख्या नहीं — यह इस पर निर्भर करता है कि आप किसके विरुद्ध हेज कर रहे हैं। उपयोग-मामलों के अनुसार व्यावहारिक स्रोत:
| मुद्रा | स्रोत | रिफ्रेश |
|---|---|---|
| EUR, GBP, JPY | ECB दैनिक संदर्भ | दैनिक 16:00 CET |
| RUB | 0.7 × CBR + 0.3 × P2P blend (Bybit, Garantex) | प्रति घंटे |
| TRY | TCMB + 1% समायोजन | प्रति घंटे |
| ARS | BCRA आधिकारिक + blue-chip blend | प्रति घंटे |
| INR | RBI संदर्भ | दैनिक |
| USD/USDT | 1:1 (या लाइव जोड़ी यदि प्रासंगिक) | रियल-टाइम |
विशेषकर RUB के लिए: शुद्ध CBR अवमूल्यन घटनाओं में आपको पैसा हानि देगा क्योंकि ग्राहक Bybit पर CBR अपडेट होने से तेज़ी से USDT ख़रीद लेते हैं। blend आपको बाज़ार के क़रीब रखता है ताकि आप प्रतिस्पर्धी रहें बिना मार्जिन छोड़े।
कैशिंग रणनीति
कैश की: (sku, ग्राहक_मुद्रा, ग्राहक_सेगमेंट)। TTL: आपके FX रिफ्रेश इंटरवल के बराबर — अस्थिर मुद्राओं के लिए 1 घंटा, स्थिर के लिए 24 घंटे। Redis या समकक्ष को soft-eviction पैटर्न के साथ इस्तेमाल करें ताकि आप थोड़ी पुरानी क़ीमत (5-10 मिनट पुरानी) परोसें, बजाय हर रिक्वेस्ट पर recompute करने के।
ऑडिट लॉग के लिए स्टोरेज स्कीमा:
CREATE TABLE pricing_decisions (
id BIGSERIAL PRIMARY KEY,
computed_at TIMESTAMPTZ NOT NULL,
sku TEXT NOT NULL,
customer_currency CHAR(3) NOT NULL,
customer_segment TEXT NOT NULL,
wholesale_usd NUMERIC(10,4) NOT NULL,
fx_rate NUMERIC(14,6) NOT NULL,
markup_pct NUMERIC(5,4) NOT NULL,
buffer_pct NUMERIC(5,4) NOT NULL,
final_price NUMERIC(12,2) NOT NULL,
cache_key TEXT NOT NULL,
INDEX idx_sku_time (sku, computed_at DESC)
);
90 दिन रखें। यह डेटा chargeback विवादों के लिए अनमोल है ("इस टाइमस्टैम्प पर ग्राहक ने यही सटीक क़ीमत देखी थी") और मार्कअप नियमों पर A/B टेस्ट करने के लिए।
बस यही पूरा इंजन है। FoxReload से GET /v1/catalog खींचें, ऊपर के पाइपलाइन में डालें — और आपके पास प्रोडक्शन में मार्जिन-सुरक्षित मल्टी-करेंसी प्राइसिंग है। foxreload.com पर शुरू करें।
