Data Sources & Algorithms
Last updated: February 18, 2026
MUSD fetches exchange rate data from multiple publicly available APIs. We do not operate any intermediary data servers. All requests go directly from your device to the data provider. This page documents every data source, its provider, and how we process the data.
1. Fiat Currency Exchange Rates
The App supports 5 different data sources for fiat currency exchange rates. Users can switch between them to compare rates.
Source 1: ECB (European Central Bank)
| Provider | Frankfurter API (open-source proxy for ECB data) |
|---|---|
| Endpoint | https://api.frankfurter.dev/v1/latest?base=USD |
| Original Data | European Central Bank reference rates |
| Update Frequency | Daily (ECB publishes around 16:00 CET on business days) |
| Currencies | ~30 major currencies |
| License | Open source, free for commercial use |
| Data Sent | None (GET request only) |
ECB rates are reference rates, not transaction rates. They represent the average of buy/sell rates from major European banks.
Source 2: Open Exchange Rates (BOC-compatible)
| Provider | Open ER API |
|---|---|
| Endpoint | https://open.er-api.com/v6/latest/USD |
| Update Frequency | Approximately every 24 hours |
| Currencies | 150+ currencies |
| License | Free tier, public API |
| Data Sent | None (GET request only) |
Source 3: ExchangeRate-API (XE-compatible)
| Provider | ExchangeRate-API |
|---|---|
| Endpoint | https://api.exchangerate-api.com/v4/latest/USD |
| Update Frequency | Approximately every 24 hours |
| Currencies | 160+ currencies |
| License | Free tier, public API |
| Data Sent | None (GET request only) |
Source 4: Wise-compatible Rates
| Provider | Community-maintained currency data via jsDelivr CDN |
|---|---|
| Endpoint | https://cdn.jsdelivr.net/npm/@fawazahmed0/currency-api@latest/v1/currencies/usd.json |
| Update Frequency | Daily |
| Currencies | 150+ currencies |
| License | Open source (MIT) |
| Data Sent | None (GET request only) |
Source 5: Fawaz Ahmed Currency API
| Provider | Fawaz Ahmed (open-source) |
|---|---|
| Endpoint | https://latest.currency-api.pages.dev/v1/currencies/usd.json |
| Update Frequency | Daily |
| License | Open source (MIT) |
| Data Sent | None (GET request only) |
2. Cryptocurrency Prices
REST API: CoinGecko
| Provider | CoinGecko (coingecko.com) |
|---|---|
| Endpoint | https://api.coingecko.com/api/v3/simple/price |
| Supported Coins | Bitcoin (BTC), Ethereum (ETH), Tether (USDT), BNB, Solana (SOL), XRP, Dogecoin (DOGE), Cardano (ADA) |
| Data Returned | USD price, 24h price change percentage |
| Update Frequency | On-demand (user-initiated refresh) |
| License | Free tier, public API with rate limits |
| Data Sent | Coin IDs and currency parameters only (no user data) |
WebSocket: Real-time Market Data
| Provider | Binance public market data stream |
|---|---|
| Endpoint | wss://stream.binance.com:9443/ws |
| Protocol | WebSocket (persistent connection for real-time updates) |
| Data Subscribed | Mini ticker streams for supported trading pairs |
| Update Frequency | Real-time (approximately every 1-3 seconds) |
| License | Public API, free for market data consumption |
| Data Sent | Subscription message with trading pair names only (no user data) |
The WebSocket connection is established only while the cryptocurrency tab is active and is disconnected when the user navigates away.
3. Conversion Algorithm
Currency conversion uses a straightforward mathematical formula:
Target Amount = Source Amount × (Target Rate / Source Rate)
All rates are normalized to a USD base. For example, to convert EUR to JPY:
- Get EUR/USD rate (e.g., 1 EUR = 1.08 USD)
- Get JPY/USD rate (e.g., 1 USD = 155.50 JPY)
- Calculate: EUR amount × 1.08 × 155.50 = JPY amount
4. Service Fee Calculation Algorithm
The service fee calculator supports three modes:
Percentage mode:Service Fee = Source Amount × (Fee Rate / 100)
Fixed amount mode:Service Fee = Fixed Amount (constant regardless of transaction size)
Pip/Spread mode:Agent Rate = Market Rate ± Spread
Service Fee = |Market Amount - Agent Amount|
This is a pure mathematical calculation tool. It does not connect to any external services and performs all calculations locally on your device.
5. Data Caching
| Data Type | Cache Duration | Storage |
|---|---|---|
| Fiat exchange rates | 10 minutes | In-memory only (cleared on app restart) |
| Crypto prices (REST) | 60 seconds | In-memory only |
| Crypto prices (WebSocket) | No cache (real-time) | In-memory only |
6. Important Limitations
- Exchange rates from different sources may vary significantly
- Rates may be delayed by minutes to hours depending on the data source
- Cryptocurrency prices are extremely volatile and can change within seconds
- All data is provided for reference purposes only
- Actual exchange rates at banks or exchanges will differ from displayed rates
- We do not control, verify, or guarantee the accuracy of third-party data