📖 What You’ll Learn
This guide teaches you how to integrate Soroswap API into your application using:- Freighter Wallet for secure wallet connection and transaction signing
- Soroswap API for finding the best swap routes and transaction submission
🎯 Prerequisites
Before starting, make sure you have:- Basic knowledge of HTML, CSS, and JavaScript
- Freighter Wallet extension installed
- An API key from Soroswap sign up at https://api.soroswap.finance/login
- A web browser with developer tools
- 5-10 minutes of focused time
🏗️ Project Structure Overview
Our swap application consists of 6 main parts:🔧 Core Functions Explained
Function 1: Connect to Wallet 🔗
- Checks if Freighter wallet is available
- Requests permission to access the wallet
- Stores the wallet address for later use
- Updates the UI to show connection status
- User doesn’t have Freighter installed → Show installation instructions
- User denies permission → Ask them to try again
Function 2: Get Quote and Build Transaction 💱
- Validates wallet connection first
- Requests the best price from multiple exchanges
- Builds a transaction based on that price
- Prepares the transaction for signing (stores in app state)
- Updates the UI to enable the next step
- Wallet not connected → Connect wallet first
- API key expired → Get a new one from dashboard
- Insufficient balance → Make sure wallet has enough XLM
Function 3: Sign the Transaction ✍️
- Validates wallet connection and transaction availability
- Calls Freighter to sign the transaction
- Stores the signed transaction in app state
- Updates UI to enable final step
- User rejects signing → Ask them to try again
- Freighter not connected → Check wallet connection
- Wrong network → Ensure Freighter is on testnet
Function 4: Send Transaction to Network 🚀
- Validates we have a signed transaction ready
- Submits the transaction to the Stellar network via Soroswap API
- Shows success message with transaction hash and explorer link
- Resets state for potential next transaction
🔄 Complete Workflow Summary
4-Step Process:🛠️ Key Concepts for Beginners
What is XDR?
XDR (External Data Representation) is how Stellar transactions are encoded:- Unsigned XDR: Transaction ready to be signed
- Signed XDR: Transaction with digital signature, ready to submit
What is a Quote?
A quote tells you:- How much you’ll receive for your trade
- Which exchanges offer the best price
- What path the trade will take
What is Signing?
Signing a transaction means:- Proving you own the wallet
- Authorizing the transaction
- Making it ready for the network
🚨 Security Best Practices
✅ DO:
- Use testnet for learning and testing
- Keep your API keys secure
- Verify transaction details before signing
- Start with small amounts
❌ DON’T:
- Put API keys in public code repositories
- Sign transactions you don’t understand
- Use mainnet while learning
- Hardcode private keys (never!)
🔧 Common Troubleshooting
Problem: “Freighter not found”
Solution: Install Freighter wallet extensionProblem: “403 Forbidden” error
Solution: Check your API key is correct and not expiredProblem: “Insufficient liquidity”
Solution: Try a smaller amount or different token pairProblem: Transaction fails
Solution: Check you have enough XLM for fees🎓 Next Steps
Once you understand this basic example:- Customize the UI with better styling
- Add error handling for better user experience
- Support multiple tokens instead of just XLM→USDC
- Add slippage protection for price changes
- Try new methods from Soroswap API
- Experiment using the SDK
📚 Additional Resources
- Soroswap API Docs: https://api.soroswap.finance/docs
- Freighter Docs: https://freighter.app/docs
- Stellar Docs: https://developers.stellar.org
- Stellar Expert: https://stellar.expert (blockchain explorer)
💡 Pro Tips
- Use browser dev tools to debug API calls
- Check the console for error messages
- Read API responses to understand what’s happening