Onramp with M-Pesa π°πͺ
Buy USDC stablecoins directly using your M-Pesa account in Kenya. Top up your Solana wallet instantly using STK Push - no bank account or credit card needed.
Overviewβ
Why use M-Pesa onramp?
- β Instant top-up - USDC arrives in your wallet within minutes
- β No bank account needed - Use your existing M-Pesa account
- β Secure - Uses M-Pesa's STK Push for secure authentication
- β Direct to wallet - USDC goes straight to your Solana wallet
- β Send to any wallet - You can specify any Solana wallet address
How to Buy USDC with M-Pesaβ
Step-by-Step Instructionsβ
-
Open reply.cash
- Visit app.reply.cash
- Connect your Solana wallet if not already connected
-
Navigate to Onramp
- Click "Top Up" in the navigation menu
- Select "Buy with M-Pesa"
-
Enter Your Details
- Amount: Enter the amount in Kenyan Shillings (KES) you want to convert to USDC
- Your Phone Number: Enter your Kenyan M-Pesa registered phone number
- Format:
+254712345678(include country code, remove leading 0) - Example: If your number is
0712345678, enter+254712345678
- Format:
-
Select Destination Wallet (Optional)
- Default: USDC will be sent to your connected Solana wallet
- External Wallet: You can specify any Solana wallet address (doesn't have to be yours)
- Enter the Solana wallet address manually
- Or scan a QR code if available
- Important: Double-check the wallet address - transactions cannot be reversed
-
Review Exchange Rate
- Review the current KES to USDC exchange rate
- See the exact amount of USDC you'll receive
- Check any fees (if applicable)
-
Confirm with STK Push
- Click "Confirm" or "Buy with M-Pesa"
- You'll receive an STK Push notification on your phone
- Enter your M-Pesa PIN on your phone to authorize the payment
- The payment will be processed automatically
-
Wait for Confirmation
- Transaction typically completes in 1-5 minutes
- You'll receive a confirmation notification
- USDC will appear in your selected Solana wallet
- Check your wallet balance to verify
What is STK Push?β
STK Push (SIM Toolkit Push) is M-Pesa's secure payment authorization method that sends a push notification directly to your phone to confirm transactions.
How STK Push Worksβ
- Initiation: When you confirm a payment on reply.cash, the system sends a request to M-Pesa
- Push Notification: M-Pesa sends an STK Push notification to your registered phone number
- Authorization: You receive a prompt on your phone asking you to:
- Review the payment details (merchant, amount)
- Enter your M-Pesa PIN
- Confirm the transaction
- Processing: Once you enter your PIN, M-Pesa processes the payment
- Confirmation: You receive an SMS confirmation, and the funds are transferred
Why STK Push is Secureβ
- β Two-factor authentication - Requires your phone and PIN
- β No card details needed - Uses your existing M-Pesa account
- β Direct authorization - You must approve each transaction on your phone
- β Encrypted communication - Secure connection between your phone and M-Pesa
- β Real-time verification - Instant confirmation of payment status
STK Push vs Other Payment Methodsβ
| Method | Speed | Security | Requirements |
|---|---|---|---|
| STK Push | Instant (1-5 min) | High (PIN + phone) | M-Pesa account |
| Bank Transfer | 1-3 days | High | Bank account |
| Credit Card | Instant | High | Card + verification |
| Agent Deposit | Instant | Medium | Visit agent |
STK Push is ideal for:
- Online payments and apps
- Quick top-ups
- Secure mobile transactions
- No bank account needed
Sending to External Walletsβ
You can buy USDC and send it directly to any Solana wallet address, even if it's not yours.
Use Casesβ
- Send to someone else: Buy USDC and send it directly to a friend's or family member's wallet
- Multiple wallets: Top up different wallets from one M-Pesa account
- Business payments: Send USDC directly to business wallets
- Gift USDC: Purchase and send USDC as a gift
How to Send to External Walletβ
-
Enter External Wallet Address
- In the onramp form, select "Send to External Wallet"
- Enter the Solana wallet address (starts with letters/numbers, typically 32-44 characters)
- Example:
BYPsjxa3YuZESQz1dKuBw1QSFCSpecsm8nCQhY5xbU1Z
-
Verify Address
- Double-check the wallet address is correct
- Solana addresses are case-sensitive
- Wrong addresses will result in lost funds
-
Complete Purchase
- Enter amount and phone number as usual
- Confirm with STK Push
- USDC will be sent directly to the specified wallet
Important Notes:
- β οΈ Verify the address - Transactions cannot be reversed
- β οΈ Test with small amount first - If unsure, test with a small amount
- β οΈ Solana network only - Ensure the wallet address is for Solana network
- β οΈ No refunds - Once sent, USDC cannot be retrieved
Transaction Limits & Feesβ
M-Pesa Transaction Limitsβ
Daily Limits:
- Tier 1 (Basic): KES 70,000 per day
- Tier 2 (Enhanced): KES 150,000 per day
- Tier 3 (Full KYC): KES 500,000 per day
Single Transaction Limits:
- Maximum: KES 150,000 per transaction (Tier 2)
- Minimum: KES 1
Limits vary based on your M-Pesa account verification level (KYC tier)
Feesβ
M-Pesa Fees:
- M-Pesa charges standard transaction fees based on amount
- Fees are deducted from your M-Pesa balance
- See M-Pesa fee schedule for current rates
reply.cash Fees:
- Exchange rate spread (KES to USDC conversion)
- No additional platform fees during initial growth phase
- Transparent pricing shown before confirmation
Example:
- Buying KES 1,000 worth of USDC
- M-Pesa fee: ~KES 27 (varies by amount)
- Exchange rate: Current market rate
- USDC received: Amount after fees and exchange rate
Troubleshootingβ
STK Push Not Receivedβ
Problem: You didn't receive the STK Push notification.
Solutions:
- β Check your phone has network connection
- β Ensure your phone number matches your M-Pesa registered number
- β Wait 1-2 minutes - notifications can be delayed
- β Check if M-Pesa service is active on your SIM card
- β Try again - sometimes network delays occur
- β Contact M-Pesa support if issue persists
Payment Failedβ
Problem: STK Push was received but payment failed.
Solutions:
- β Check you have sufficient M-Pesa balance (amount + fees)
- β Verify your M-Pesa PIN is correct
- β Ensure you're within daily transaction limits
- β Check if your M-Pesa account is active and not suspended
- β Try again after a few minutes
- β Contact support with transaction details if issue persists
USDC Not Receivedβ
Problem: Payment was successful but USDC hasn't arrived in wallet.
Solutions:
- β Wait 5-10 minutes - processing can take time
- β Check the correct wallet address was used
- β Verify wallet is connected and synced
- β Check transaction status on Solana Explorer
- β Refresh your wallet balance
- β Contact support with M-Pesa transaction code and wallet address
Wrong Wallet Addressβ
Problem: You sent USDC to the wrong wallet address.
Solutions:
- β οΈ Transactions cannot be reversed - Solana transactions are irreversible
- β If you know the recipient, contact them directly
- β If it's your wallet, verify the address is correct
- β For future transactions, always double-check addresses
- β Consider using QR codes to avoid manual entry errors
Exchange Rate Questionsβ
Problem: Received less USDC than expected.
Solutions:
- β Exchange rates fluctuate - check current rate at time of transaction
- β Review transaction details for exact conversion rate used
- β M-Pesa fees are deducted from your balance
- β Exchange rate spread applies (KES to USDC conversion)
- β Contact support if conversion seems incorrect
Security Best Practicesβ
Protect Your M-Pesa Accountβ
- β Never share your M-Pesa PIN - reply.cash will never ask for your PIN
- β Only enter PIN on official M-Pesa prompts - STK Push notifications
- β Verify merchant name - Should show "reply.cash" or similar
- β Check amount before confirming - Verify the amount matches your purchase
- β Keep your phone secure - Use screen lock and biometric authentication
Protect Your Walletβ
- β Verify wallet addresses - Always double-check before sending
- β Test with small amounts first - If using external wallet addresses
- β Keep wallet private keys secure - Never share your seed phrase
- β Use official reply.cash app only - Avoid phishing sites
- β Check transaction confirmations - Verify USDC arrived correctly
Frequently Asked Questionsβ
How long does it take to receive USDC?β
USDC typically arrives in your wallet within 1-5 minutes after you confirm the STK Push payment. Processing times may vary based on network congestion.
Can I buy USDC for someone else?β
Yes! You can specify any Solana wallet address when buying USDC. Enter the recipient's wallet address in the "External Wallet" field, and USDC will be sent directly to them.
What if I enter the wrong phone number?β
If you enter the wrong phone number, the STK Push will be sent to that number. Only the person with that phone number and M-Pesa PIN can authorize the payment. Double-check your phone number before confirming.
Can I cancel a purchase after confirming?β
Once you confirm the STK Push payment, the transaction cannot be cancelled. However, if you haven't entered your M-Pesa PIN yet, you can simply ignore the STK Push notification and it will expire after a few minutes.
What exchange rate is used?β
The exchange rate is based on current market rates (KES to USDC) at the time of your transaction. The exact rate is shown before you confirm the purchase.
Are there minimum or maximum amounts?β
- Minimum: Typically KES 100 (varies by provider)
- Maximum: Depends on your M-Pesa account tier (KES 70,000 - 500,000 per day)
What if my M-Pesa account is suspended?β
If your M-Pesa account is suspended or inactive, you won't be able to complete the purchase. Contact Safaricom customer care to resolve account issues.
See Alsoβ
- π Onramping Overview - All onramp methods
- π Getting Started - Set up your wallet
- π° How to Send Money - Send to mobile money and banks
- π± M-Pesa Deep Dive - Complete M-Pesa guide
- π Supported Platforms - All countries and payment methods
- β FAQ - Common questions
- π§ Troubleshooting - Fix common issues
Buy USDC instantly with M-Pesa. Secure, fast, and direct to your Solana wallet.