METALS
AuGoldLoading…
AgSilver
PtPlatinum
PdPalladium
RhRhodium
🛢Oil (WTI)
AuGold
AgSilver
PtPlatinum
PdPalladium
RhRhodium
🛢Oil (WTI)

☕ Offrir un café

Enjoying this Platinum analysis? Support further development with a coffee!

Your support helps maintain and improve this Platinum analysis tool. Thank you! ❤️
Payment processed securely via PayPal as a donation.

Pt Prix du Platine aujourd'hui (XPT/USD)

Live spot price · Historical charts · Inflation-adjusted price · Autocatalyst & Hydrogen demand · Physical buy calculator

Prix au Comptant 18 Devises Graphique 5 Ans Toujours Gratuit
Pt
Prix au Comptant du Platine (XPT/USD) · LIVE
Loading…
per troy oz · Mis à jour toutes les 5 min · Source : Yahoo Finance
EUR
GBP
CHF
JPY
CAD
CNY
Platinum Price in All Units
per troy oz (31.1035 g)
par gramme
par kilogramme
par tola (11.664 g)
Platinum Price Chart (XPT/USD)
Current Price
52-Week High
$1,108
52-Week Low
$876
Record Historique
$2,308 (Mar 2008)
Inflation-Adjusted Platinum Price

Platinum's all-time high of $2,308/oz (March 2008) equals approximately $3,400 in 2026 dollars. At current prices (~$980), platinum trades at a significant discount to its inflation-adjusted ATH – a key argument for the platinum investment thesis.

Platinum Price Seasonality (Avg. Monthly Returns)

Platinum historically shows strength in January–March (auto industry restocking) and October. Summer months (June–August) tend to be weaker due to reduced industrial activity. Source: WPIC historical data 2000–2025.

Platinum Industrial Demand – Key Sectors (2025)
Sector Demand (koz) Share Trend Visual
🚗 Autocatalysts (Gasoline) 1,050 28% → Stable
🚌 Autocatalysts (Diesel) 870 23% ↓ Declining
💎 Jewellery (Japan, China) 560 15% → Stable
🔬 Chemical Industry (catalysts) 450 12% ↑ Growing
Hydrogen Fuel Cells 180 5% ↑↑ Fast Growing
🖥️ Electronics & Glass 260 7% ↑ Growing
💊 Medical (cisplatin, devices) 120 3% ↑ Growing
📦 Investment (ETF + bars) 260 7% ↑ Growing

Source: World Platinum Investment Council (WPIC) Platinum Quarterly Q4 2025. Total demand ~3,750 koz.

Global Platinum Mine Supply – Pays Concentration (2025)

Platinum supply is uniquely concentrated – over 70% comes from a single country. This geographic concentration creates a significant geopolitical risk premium.

🇿🇦 South Africa
73%
🇷🇺 Russia
11%
🇿🇼 Zimbabwe
8%
🇨🇦 Canada
4%
🌍 Other
4%

Source: World Platinum Investment Council (WPIC), 2025. Total mine supply ~5,500 koz.

Platinum ETF Holdings (Top Funds)
Aberdeen Std. Phys. Plat.
PPLT (NYSE Arca)
~470 koz
▲ +2.1% YTD
WisdomTree Platinum
PHPT (LSE)
~185 koz
▲ +1.4% YTD
iShares Platinum Trust
IPLT (NYSE)
~95 koz
▼ -0.8% YTD
Sprott Phys. Platinum
SPPP (NYSE Arca)
~62 koz
▲ +3.2% YTD

Source: WPIC, fund prospectuses. Holdings as of Q4 2025 estimates.

Hydrogen Economy – Platinum Demand Outlook

Projected platinum demand from hydrogen fuel cells and electrolysers (koz/year). Source: WPIC, BloombergNEF, IEA Hydrogen Report 2025.

Physical Platinum Buy Calculator

How much physical platinum can you buy? Entrez un montant et choisissez votre devise.

Pt Platinum (troy oz)
Au Gold equivalent
ℹ️ Rate info
Platinum Coins & Bars – Estimated Retail Prices

Estimated retail prices including typical dealer premiums. Actual prices may vary.

Questions Fréquentes – Prix du Platine
What is the platinum price today?
The current platinum spot price (XPT/USD) is displayed live at the top of this page, updated every 5 minutes from Yahoo Finance (NYMEX Platinum Futures, PL=F). Platinum is quoted in USD par once troy and automatically converted to EUR, GBP, CHF and 15 other currencies using real-time exchange rates from the Frankfurter API (ECB data).
Why is platinum currently cheaper than gold?
Platinum traded above gold for most of the 20th century. The reversal since 2015 is primarily driven by the decline of diesel vehicles in Europe (diesel autocatalysts use platinum), the rise of gasoline and hybrid vehicles (which use palladium instead), and reduced investment demand. Many analysts consider the current gold-to-platinum premium a historical anomaly that may reverse as hydrogen fuel cell demand grows.
What is platinum used for?
Approximately 51% of annual platinum demand comes from autocatalysts – catalytic converters that reduce harmful emissions in gasoline and diesel vehicles. Platinum is also essential for hydrogen fuel cells (PEM technology), jewellery (especially in Japan and China), chemical industry catalysts, glass manufacturing (LCD screens, fibre optic cables), and medical devices including the cancer treatment drug cisplatin.
Will platinum benefit from the hydrogen economy?
Yes – platinum is the primary catalyst in hydrogen fuel cells (PEM fuel cells) and in electrolysers for green hydrogen production. Each fuel cell stack requires 30–60 grammes of platinum. As governments invest heavily in hydrogen infrastructure (EU Hydrogen Strategy, US Inflation Reduction Act, Japan's Green Growth Strategy), demand for platinum from this sector is projected to grow from ~180,000 oz today to potentially 500,000–1,000,000 oz per year by 2030 (WPIC, BloombergNEF).
How rare is platinum compared to gold?
Platinum is approximately 30 times rarer than gold in the Earth's crust. Annual platinum mine production is around 5,500,000 onces troy, compared to approximately 100,000,000 onces troy of gold. Furthermore, over 70% of global platinum supply comes from a single country – South Africa – making supply highly concentrated and sensitive to geopolitical and operational disruptions.
What is the platinum price par gramme?
The platinum price par gramme is calculated by dividing the troy ounce price by 31.1035. Use the unit converter above to see the live platinum price par gramme, kilogram and tola in USD and EUR. At a platinum price of $980/oz, the price par gramme is approximately $31.50.

Prix du Platine aujourd'hui — Cours en Direct et Analyse

Numexo.io fournit le prix du platine en temps réel (XPT/USD). Le platine est l'un des métaux les plus rares au monde, produit principalement en Afrique du Sud (environ 70 % de la production mondiale) et en Russie. Il est essentiel dans les catalyseurs automobiles, les piles à combustible à hydrogène et la joaillerie haut de gamme.

Platine vs Or — Dynamique de Prix

Historiquement, le platine se négociait à une prime par rapport à l'or en raison de sa rareté plus grande. Depuis 2015, cette relation s'est inversée, le platine se négociant à un escompte significatif par rapport à l'or. Cette divergence reflète la baisse de la demande de catalyseurs diesel après le scandale Volkswagen de 2015 et la montée des véhicules électriques.

`; }).join(''); } // ── LIGHTWEIGHT CHARTS ────────────────────────────────────────── // Historical platinum les données de prix (XPT/USD) – approximate values const DATA_90D = [{"time":"2025-12-03","value":952},{"time":"2025-12-04","value":958},{"time":"2025-12-05","value":945},{"time":"2025-12-08","value":961},{"time":"2025-12-09","value":968},{"time":"2025-12-10","value":955},{"time":"2025-12-11","value":972},{"time":"2025-12-12","value":980},{"time":"2025-12-15","value":975},{"time":"2025-12-16","value":982},{"time":"2025-12-17","value":990},{"time":"2025-12-18","value":985},{"time":"2025-12-19","value":978},{"time":"2025-12-22","value":992},{"time":"2025-12-23","value":998},{"time":"2025-12-24","value":1005},{"time":"2025-12-26","value":1010},{"time":"2025-12-29","value":1002},{"time":"2025-12-30","value":995},{"time":"2025-12-31","value":988},{"time":"2026-01-02","value":995},{"time":"2026-01-05","value":1002},{"time":"2026-01-06","value":998},{"time":"2026-01-07","value":1008},{"time":"2026-01-08","value":1015},{"time":"2026-01-09","value":1022},{"time":"2026-01-12","value":1018},{"time":"2026-01-13","value":1025},{"time":"2026-01-14","value":1032},{"time":"2026-01-15","value":1028},{"time":"2026-01-16","value":1035},{"time":"2026-01-19","value":1042},{"time":"2026-01-20","value":1038},{"time":"2026-01-21","value":1045},{"time":"2026-01-22","value":1040},{"time":"2026-01-23","value":1048},{"time":"2026-01-26","value":1052},{"time":"2026-01-27","value":1058},{"time":"2026-01-28","value":1055},{"time":"2026-01-29","value":1062},{"time":"2026-01-30","value":1068},{"time":"2026-02-02","value":1072},{"time":"2026-02-03","value":1065},{"time":"2026-02-04","value":1070},{"time":"2026-02-05","value":1078},{"time":"2026-02-06","value":1082},{"time":"2026-02-09","value":1075},{"time":"2026-02-10","value":1080},{"time":"2026-02-11","value":1088},{"time":"2026-02-12","value":1085},{"time":"2026-02-16","value":1078},{"time":"2026-02-17","value":1072},{"time":"2026-02-18","value":1068},{"time":"2026-02-19","value":1075},{"time":"2026-02-20","value":1080},{"time":"2026-02-23","value":1072},{"time":"2026-02-24","value":1065},{"time":"2026-02-25","value":1058},{"time":"2026-02-26","value":1062},{"time":"2026-02-27","value":1068},{"time":"2026-03-02","value":1072}]; const DATA_1Y = [{"time":"2025-03-03","value":920},{"time":"2025-04-01","value":935},{"time":"2025-05-01","value":948},{"time":"2025-06-02","value":932},{"time":"2025-07-01","value":918},{"time":"2025-08-01","value":925},{"time":"2025-09-01","value":942},{"time":"2025-10-01","value":958},{"time":"2025-11-03","value":965},{"time":"2025-12-01","value":952},{"time":"2026-01-02","value":995},{"time":"2026-02-02","value":1072},{"time":"2026-03-02","value":1072}]; const DATA_5Y = [{"time":"2021-03-01","value":1225},{"time":"2021-06-01","value":1185},{"time":"2021-09-01","value":1020},{"time":"2021-12-01","value":975},{"time":"2022-03-01","value":1085},{"time":"2022-06-01","value":952},{"time":"2022-09-01","value":882},{"time":"2022-12-01","value":1012},{"time":"2023-03-01","value":988},{"time":"2023-06-01","value":1008},{"time":"2023-09-01","value":912},{"time":"2023-12-01","value":905},{"time":"2024-03-01","value":895},{"time":"2024-06-01","value":985},{"time":"2024-09-01","value":942},{"time":"2024-12-01","value":928},{"time":"2025-03-01","value":920},{"time":"2025-06-01","value":932},{"time":"2025-09-01","value":942},{"time":"2025-12-01","value":952},{"time":"2026-03-02","value":1072}]; const DATA_1M = DATA_90D.slice(-22); const DATA_1W = DATA_90D.slice(-7); const DATASETS = { '1W': DATA_1W, '1M': DATA_1M, '3M': DATA_90D, '1Y': DATA_1Y, '5Y': DATA_5Y }; function initChart() { const container = document.getElementById('platinumChart'); if (!container || typeof LightweightCharts === 'undefined') return; lwChart = LightweightCharts.createChart(container, { width: container.clientWidth, height: 340, layout: { background: { color: 'transparent' }, textColor: '#94a3b8' }, grid: { vertLines: { color: 'rgba(255,255,255,0.04)' }, horzLines: { color: 'rgba(255,255,255,0.04)' } }, crosshair: { mode: LightweightCharts.CrosshairMode.Normal }, rightPriceScale: { borderColor: 'rgba(255,255,255,0.1)' }, timeScale: { borderColor: 'rgba(255,255,255,0.1)', timeVisible: true }, }); lwSeries = lwChart.addAreaSeries({ lineColor: '#e2e8f0', topColor: 'rgba(226,232,240,0.3)', bottomColor: 'rgba(226,232,240,0.0)', lineWidth: 2, }); lwSeries.setData(DATA_90D); lwChart.timeScale().fitContent(); window.addEventListener('resize', () => { if (lwChart) lwChart.applyOptions({ width: container.clientWidth }); }); document.querySelectorAll('.tf-btn').forEach(btn => { btn.addEventListener('click', () => { document.querySelectorAll('.tf-btn').forEach(b => b.classList.remove('active')); btn.classList.add('active'); const tf = btn.dataset.tf; const data = DATASETS[tf] || DATA_90D; lwSeries.setData(data); lwChart.timeScale().fitContent(); }); }); } // ── INFLATION CHART ───────────────────────────────────────────── function initInflationChart() { const ctx = document.getElementById('inflationChart'); if (!ctx) return; new Chart(ctx, { type: 'line', data: { labels: ['2000','2002','2004','2006','2008','2010','2012','2014','2016','2018','2020','2022','2024','2026'], datasets: [ { label: 'Nominal Price (USD)', data: [450, 540, 845, 1145, 2100, 1720, 1545, 1385, 985, 820, 875, 1020, 935, 980], borderColor: '#e2e8f0', backgroundColor: 'rgba(226,232,240,0.1)', borderWidth: 2, fill: true, tension: 0.3, pointRadius: 0, }, { label: 'Inflation-Adjusted (2026 USD)', data: [780, 900, 1320, 1680, 3050, 2380, 2050, 1780, 1220, 980, 1020, 1120, 980, 980], borderColor: '#f59e0b', backgroundColor: 'transparent', borderWidth: 2, borderDash: [5,3], fill: false, tension: 0.3, pointRadius: 0, } ] }, options: { responsive: true, maintainAspectRatio: false, plugins: { legend: { labels: { color: '#94a3b8', font: { size: 10 }, boxWidth: 12 } }, tooltip: { callbacks: { label: ctx => `$${ctx.parsed.y.toLocaleString()}` } } }, scales: { x: { ticks: { color: '#64748b', font: { size: 10 } }, grid: { display: false } }, y: { ticks: { color: '#64748b', font: { size: 10 }, callback: v => '$' + v.toLocaleString() }, grid: { color: 'rgba(255,255,255,0.04)' } } } } }); } // ── SEASONALITY CHART ─────────────────────────────────────────── function initSeasonalityChart() { const ctx = document.getElementById('seasonalityChart'); if (!ctx) return; const months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']; const avgReturns = [2.1, 1.4, 1.8, 0.6, -0.3, -1.2, -0.8, -0.4, 0.5, 1.6, 0.9, 0.3]; new Chart(ctx, { type: 'bar', data: { labels: months, datasets: [{ label: 'Avg. Monthly Return (%)', data: avgReturns, backgroundColor: avgReturns.map(v => v >= 0 ? 'rgba(226,232,240,0.7)' : 'rgba(239,68,68,0.6)'), borderColor: avgReturns.map(v => v >= 0 ? '#e2e8f0' : '#ef4444'), borderWidth: 1, }] }, options: { responsive: true, maintainAspectRatio: false, plugins: { legend: { display: false }, tooltip: { callbacks: { label: ctx => (ctx.parsed.y >= 0 ? '+' : '') + ctx.parsed.y.toFixed(1) + '%' } } }, scales: { x: { ticks: { color: '#64748b', font: { size: 10 } }, grid: { display: false } }, y: { ticks: { color: '#64748b', font: { size: 10 }, callback: v => v + '%' }, grid: { color: 'rgba(255,255,255,0.04)' }, suggestedMin: -2, suggestedMax: 3 } } } }); } // ── HYDROGEN DEMAND CHART ─────────────────────────────────────── function initHydrogenChart() { const ctx = document.getElementById('hydrogenChart'); if (!ctx) return; new Chart(ctx, { type: 'bar', data: { labels: ['2022','2023','2024','2025','2026E','2027E','2028E','2029E','2030E'], datasets: [{ label: 'Hydrogen Pt Demand (koz)', data: [35, 65, 110, 180, 260, 360, 480, 640, 850], backgroundColor: ctx2 => { const i = ctx2.dataIndex; return i >= 4 ? 'rgba(16,185,129,0.5)' : 'rgba(226,232,240,0.6)'; }, borderColor: ctx2 => { const i = ctx2.dataIndex; return i >= 4 ? '#10b981' : '#e2e8f0'; }, borderWidth: 1, }] }, options: { responsive: true, maintainAspectRatio: false, plugins: { legend: { display: false }, tooltip: { callbacks: { label: ctx => ctx.parsed.y.toLocaleString() + ' koz' } } }, scales: { x: { ticks: { color: '#64748b', font: { size: 10 } }, grid: { display: false } }, y: { ticks: { color: '#64748b', font: { size: 10 }, callback: v => v + 'k' }, grid: { color: 'rgba(255,255,255,0.04)' } } } } }); } // ── API HELPERS ───────────────────────────────────────────────── function getYesterdayStr() { const d = new Date(); d.setDate(d.getDate() - 1); if (d.getDay() === 0) d.setDate(d.getDate() - 2); if (d.getDay() === 6) d.setDate(d.getDate() - 1); return d.toISOString().split('T')[0]; } async function fetchFawazPrice(code) { const url = `https://cdn.jsdelivr.net/npm/@fawazahmed0/currency-api@latest/v1/currencies/${code.toLowerCase()}.json`; const res = await fetch(url, { signal: AbortSignal.timeout(8000) }); if (!res.ok) throw new Error('API error'); const data = await res.json(); return data[code.toLowerCase()]['usd']; } async function fetchFawazPriceYesterday(code) { const url = `https://cdn.jsdelivr.net/npm/@fawazahmed0/currency-api@${getYesterdayStr()}/v1/currencies/${code.toLowerCase()}.json`; try { const res = await fetch(url, { signal: AbortSignal.timeout(8000) }); if (!res.ok) return null; const data = await res.json(); return data[code.toLowerCase()]['usd']; } catch { return null; } } async function fetchFrankfurterRates() { const CURRENCIES = 'AUD,BRL,CAD,CHF,CNY,CZK,DKK,EUR,GBP,HUF,INR,JPY,MXN,NOK,PLN,SEK,TRY,USD'; const res = await fetch(`https://api.frankfurter.dev/v1/latest?base=USD&symbols=${CURRENCIES}`, { signal: AbortSignal.timeout(8000) }); if (!res.ok) throw new Error('Frankfurter error'); const data = await res.json(); fxRates = { USD: 1, ...data.rates }; } async function fetchYahooPrices() { const proxyUrl = '/assets/data/yahoo_prices.php'; try { const res = await fetch(proxyUrl, { signal: AbortSignal.timeout(6000) }); if (!res.ok) throw new Error('proxy error'); const data = await res.json(); if (data.success && data.prices) return data.prices; } catch (e) { /* fallback below */ } return null; } // ── MAIN API FETCH ────────────────────────────────────────────── async function loadAllData() { try { const yahooPrices = await fetchYahooPrices(); let yahooGold = null, yahooPlatinum = null, yahooSilver = null, yahooPalladium = null, yahooOil = null; if (yahooPrices) { if (yahooPrices.gold) yahooGold = yahooPrices.gold.price; if (yahooPrices.platinum) yahooPlatinum = yahooPrices.platinum.price; if (yahooPrices.silver) yahooSilver = yahooPrices.silver.price; if (yahooPrices.palladium) yahooPalladium = yahooPrices.palladium.price; if (yahooPrices.oil) yahooOil = yahooPrices.oil; } const [platinumT, goldT, silverT, palladiumT, platinumYT, goldYT] = await Promise.allSettled([ yahooPlatinum ? Promise.resolve(yahooPlatinum) : fetchFawazPrice('XPT'), yahooGold ? Promise.resolve(yahooGold) : fetchFawazPrice('XAU'), yahooSilver ? Promise.resolve(yahooSilver) : fetchFawazPrice('XAG'), yahooPalladium ? Promise.resolve(yahooPalladium) : fetchFawazPrice('XPD'), fetchFawazPriceYesterday('XPT'), fetchFawazPriceYesterday('XAU'), ]); await fetchFrankfurterRates(); platinumPrice = platinumT.status === 'fulfilled' ? platinumT.value : null; goldPrice = goldT.status === 'fulfilled' ? goldT.value : null; const silverPrice = silverT.status === 'fulfilled' ? silverT.value : null; const palladiumPrice = palladiumT.status === 'fulfilled' ? palladiumT.value : null; platinumPriceYesterday = platinumYT.status === 'fulfilled' ? platinumYT.value : null; const goldYesterday = goldYT.status === 'fulfilled' ? goldYT.value : null; // Update source label let srcLabel = 'fawazahmed0 API'; let updateInterval = '15 min'; if (yahooPlatinum) { srcLabel = 'Yahoo Finance (NYMEX)'; updateInterval = '5 min'; } const srcEl = document.getElementById('priceSource'); if (srcEl) srcEl.textContent = `per troy oz · Updated every ${updateInterval} · Source: ${srcLabel}`; // Update oil price if (yahooOil && typeof yahooOil === 'object') { OIL_LIVE_PRICE = yahooOil.price || OIL_LIVE_PRICE; OIL_LIVE_CHANGE_PCT = yahooOil.change_pct || OIL_LIVE_CHANGE_PCT; OIL_LIVE_CHANGE_NOM = yahooOil.change || OIL_LIVE_CHANGE_NOM; } const rhodiumPrice = 4800; const rhodiumYesterday = 4750; if (platinumPrice) { updatePriceHero(platinumPrice, platinumPriceYesterday); updateUnits(platinumPrice); updateCoins(platinumPrice); updateCalculator(); // Update live chart if (lwSeries) { const today = new Date().toISOString().split('T')[0]; try { lwSeries.update({ time: today, value: platinumPrice }); } catch(e) {} } } updateTicker({ gold: goldPrice, goldY: goldYesterday, silver: silverPrice, silverY: null, platinum: platinumPrice, platinumY: platinumPriceYesterday, palladium: palladiumPrice, palladiumY: null, rhodium: rhodiumPrice, rhodiumY: rhodiumYesterday, }); } catch (err) { console.error('loadAllData error:', err); } } // ── FAQ ACCORDION ─────────────────────────────────────────────── document.querySelectorAll('.faq-question').forEach(q => { q.addEventListener('click', () => { const item = q.closest('.faq-item'); const wasOpen = item.classList.contains('open'); document.querySelectorAll('.faq-item').forEach(i => i.classList.remove('open')); if (!wasOpen) item.classList.add('open'); }); }); // ── LANG DROPDOWN ─────────────────────────────────────────────── const langBtn = document.getElementById('langButton'); const langDrop = document.getElementById('langDropdown'); langBtn.addEventListener('click', e => { e.stopPropagation(); langDrop.classList.toggle('active'); }); document.addEventListener('click', () => langDrop.classList.remove('active')); // ── INIT ──────────────────────────────────────────────────────── document.addEventListener('DOMContentLoaded', () => { initChart(); initInflationChart(); initSeasonalityChart(); initHydrogenChart(); loadAllData(); setInterval(loadAllData, 5 * 60 * 1000); // ── BOOKMARK BUTTON ── document.getElementById('bookmarkBtn').addEventListener('click', () => { if (window.sidebar && window.sidebar.addPanel) { window.sidebar.addPanel(document.title, window.location.href, ''); } else if (window.external && ('AddFavorite' in window.external)) { window.external.AddFavorite(window.location.href, document.title); } else { const isMac = navigator.platform.toUpperCase().includes('MAC'); const key = isMac ? '⌘' : 'Ctrl'; alert(`Press ${key}+D to bookmark this page.`); } }); // ── COFFEE MODAL ── const coffeeModal = document.getElementById('coffeeModal'); const coffeeClose = document.getElementById('coffeeClose'); const coffeeDonateBtn = document.getElementById('coffeeDonateBtn'); let selectedCoffeeAmount = 3.00; let selectedCoffeeDescription = 'One Coffee'; document.getElementById('coffeeBtn').addEventListener('click', () => { coffeeModal.classList.add('active'); document.body.style.overflow = 'hidden'; }); coffeeClose.addEventListener('click', () => { coffeeModal.classList.remove('active'); document.body.style.overflow = 'auto'; }); coffeeModal.addEventListener('click', (e) => { if (e.target === coffeeModal) { coffeeModal.classList.remove('active'); document.body.style.overflow = 'auto'; } }); document.querySelectorAll('.coffee-amount').forEach(btn => { btn.addEventListener('click', () => { document.querySelectorAll('.coffee-amount').forEach(b => b.classList.remove('active')); btn.classList.add('active'); selectedCoffeeAmount = parseFloat(btn.dataset.amount); const counts = {3: 'One Coffee', 9: 'Three Coffees', 15: 'Five Coffees'}; selectedCoffeeDescription = counts[selectedCoffeeAmount] || 'Coffee'; coffeeDonateBtn.textContent = `Donate $${selectedCoffeeAmount.toFixed(2)} via PayPal`; }); }); coffeeDonateBtn.addEventListener('click', (e) => { e.preventDefault(); const paypalEmail = 'paypal@scopewire.de'; const amount = selectedCoffeeAmount.toFixed(2); const itemName = encodeURIComponent(`Donation for Numexo Platinum Analysis: ${selectedCoffeeDescription}`); const currency = 'USD'; const paypalLink = `https://www.paypal.com/send?money=${amount}¤cy_code=${currency}&from=website&email=${encodeURIComponent(paypalEmail)}&item_name=${itemName}`; window.open(paypalLink, '_blank', 'noopener,noreferrer'); setTimeout(() => { alert(`Thank you for your support! ❤️\nYou will be redirected to PayPal to complete your $${amount} donation to ${paypalEmail}.`); }, 500); }); });