Withdraw Funds

Available Balance

$0.00

GH₵ 0.00

Withdrawal Details

Format: 0XXXXXXXXX

$
Withdrawal Amount: $0.00
Fee (5%): $0.00
You'll Receive: $0.00

Upgrade to Pro

Only 2% withdrawal fee + faster processing

Learn More →

⚠️ Important:
• Minimum withdrawal: $1
• Processing time: 1-3 business days
• Double-check your wallet address before submitting
• Admin will review and process your request

+ wallet.balanceUsd.toFixed(2); document.getElementById('balanceGHS').textContent = 'GH₵ ' + ghsBalance.toFixed(2); } // Check Pro status const userRes = await fetch(API_URL + '/api/auth/me', { headers: { 'Authorization': 'Bearer ' + token } }); if (userRes.ok) { const user = await userRes.json(); isPro = user.is_pro; if (isPro) { document.getElementById('feePercent').textContent = '2%'; document.getElementById('proReminder').classList.add('hidden'); } calculateFee(); } } catch (error) { console.error('Failed to load balance:', error); } } function selectMethod(method) { currentMethod = method; const btnMTN = document.getElementById('btnMTN'); const btnUSDT = document.getElementById('btnUSDT'); if (method === 'mtn') { btnMTN.classList.add('border-purple-600', 'bg-purple-50', 'text-purple-700'); btnMTN.classList.remove('border-gray-300', 'bg-white', 'text-gray-700'); btnUSDT.classList.add('border-gray-300', 'bg-white', 'text-gray-700'); btnUSDT.classList.remove('border-purple-600', 'bg-purple-50', 'text-purple-700'); document.getElementById('walletLabel').textContent = 'MTN Mobile Money Number'; document.getElementById('walletHint').textContent = 'Format: 0XXXXXXXXX'; document.getElementById('walletAddress').placeholder = '0XXXXXXXXX'; } else { btnUSDT.classList.add('border-purple-600', 'bg-purple-50', 'text-purple-700'); btnUSDT.classList.remove('border-gray-300', 'bg-white', 'text-gray-700'); btnMTN.classList.add('border-gray-300', 'bg-white', 'text-gray-700'); btnMTN.classList.remove('border-purple-600', 'bg-purple-50', 'text-purple-700'); document.getElementById('walletLabel').textContent = 'USDT Wallet Address (Celo Network)'; document.getElementById('walletHint').textContent = 'Make sure it\'s a Celo network address'; document.getElementById('walletAddress').placeholder = '0x...'; } } function calculateFee() { const amount = parseFloat(document.getElementById('withdrawAmount').value) || 0; const feePercent = isPro ? 0.02 : 0.05; const fee = amount * feePercent; const receive = amount - fee; document.getElementById('feeAmount').textContent = '$' + amount.toFixed(2); document.getElementById('feeValue').textContent = '$' + fee.toFixed(2); document.getElementById('receiveAmount').textContent = '$' + receive.toFixed(2); } async function submitWithdrawal() { const amount = parseFloat(document.getElementById('withdrawAmount').value); const walletAddress = document.getElementById('walletAddress').value.trim(); if (!amount || amount < 1) { alert('Please enter a minimum amount of $1'); return; } if (amount > userBalance) { alert('Insufficient balance. Your available balance is $' + userBalance.toFixed(2)); return; } if (!walletAddress) { alert('Please enter your wallet address'); return; } if (currentMethod === 'mtn' && !walletAddress.match(/^0\d{9}$/)) { alert('Please enter a valid MTN number (format: 0XXXXXXXXX)'); return; } if (currentMethod === 'usdt' && !walletAddress.startsWith('0x')) { alert('Please enter a valid USDT wallet address (should start with 0x)'); return; } const submitBtn = document.getElementById('submitBtn'); submitBtn.disabled = true; submitBtn.textContent = 'Processing...'; try { const token = localStorage.getItem('token'); const res = await fetch(API_URL + '/api/transactions/withdraw', { method: 'POST', headers: { 'Authorization': 'Bearer ' + token, 'Content-Type': 'application/json' }, body: JSON.stringify({ amount_usd: amount, wallet_address: walletAddress, withdrawal_method: currentMethod }) }); if (res.ok) { alert('✅ Withdrawal request submitted successfully!\n\nYour request is being reviewed by our admin team. You will receive the funds within 1-3 business days once approved.'); navigateTo('home'); } else { const error = await res.json(); alert(error.error || 'Failed to submit withdrawal request'); submitBtn.disabled = false; submitBtn.textContent = 'Request Withdrawal'; } } catch (error) { console.error('Failed to submit withdrawal:', error); alert('Failed to submit withdrawal. Please try again.'); submitBtn.disabled = false; submitBtn.textContent = 'Request Withdrawal'; } } document.addEventListener('DOMContentLoaded', loadBalance);