डिजिटल वस्तुओं का थोक मंच

डिजिटल गुड्स रीसेलर के लिए मल्टी-करेंसी प्राइसिंग इंजन — 2026

गंभीर B2C रीसेलर का प्राइसिंग इंजन आर्किटेक्चर: थोक USD खींचो, FX (CBR/ECB/P2P-blend) लगाओ, कैटेगरी मार्कअप, FX बफर, राउंड, कैश। TRY/RUB/ARS के लिए हर घंटे।

डिजिटल गुड्स रीसेलर के लिए मल्टी-करेंसी प्राइसिंग इंजन — 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 पर शुरू करें।

अक्सर पूछे जाने वाले प्रश्न

FX रेट कितनी बार रिफ्रेश करें?
स्थिर प्रमुख जोड़ियों (EUR/USD, GBP/USD) के लिए दैनिक। अस्थिर मुद्राओं के लिए प्रति घंटे — RUB, TRY, ARS Q1 2026 में महीने के भीतर 12-25% हिले। रियल-टाइम (1-5 मिनट) केवल तब जब सक्रिय आर्बिट्रेजर आपकी प्राइसिंग को आगे चलाते हों, जो $1M/मा से नीचे दुर्लभ है।
RUB के लिए कौन सा FX स्रोत इस्तेमाल करूँ?
CBR (रूसी सेंट्रल बैंक) कानूनी संदर्भ दर है लेकिन स्पॉट से 0.5-2% पीछे रहती है। रूसी ग्राहकों को सेवा देने वाली B2C प्राइसिंग के लिए CBR को P2P बाज़ार दरों (Bybit P2P, Garantex समकक्ष) के साथ मिलाएँ — सामान्यतः 0.7 × CBR + 0.3 × P2P-blend से वास्तविक प्राइसिंग मिलती है जो अचानक P2P शिफ्ट में मार्जिन नहीं खोती।
उचित FX बफर कितना है?
स्थिर मुद्राओं के लिए 1-2%, RUB/TRY/ARS के लिए 2-4%, पूँजी नियंत्रण या सक्रिय अवमूल्यन वाली मुद्राओं के लिए 5%+। बफर ग्राहक को कोट देने और हमारे साथ निपटान करने के बीच के स्प्रेड को कवर करता है। रिफ्रेश इंटरवल जितना छोटा, बफर उतना छोटा।
अंतिम खुदरा क़ीमत कैश करूँ या कच्चे इनपुट?
अंतिम खुदरा क़ीमत को (SKU, ग्राहक_मुद्रा, ग्राहक_सेगमेंट) के की पर कैश करें, TTL आपके FX रिफ्रेश इंटरवल के बराबर। कच्चे इनपुट कैश करना और हर रिक्वेस्ट पर recompute करना CPU की बर्बादी है और मार्कअप नियमों पर A/B टेस्ट कठिन बनाता है। chargeback साक्ष्य के लिए कंप्यूटेड क़ीमतों का ऑडिट लॉग रखें।
FoxReload API एक्सेस पाएं

संबंधित लेख