S Spwig Marketplace
ExchangeRate-API
Exchange Rate Provider

ExchangeRate-API

by Spwig ✓ Verified · v1.1.0
0 installs
Free

Install directly from your Spwig admin → Don't have Spwig yet?

Screenshots

About this component

Real-time exchange rates for 160+ currencies with 99.99% uptime and generous free tier

Versions

v1.1.0
2026-08-01

- SECURITY/correctness: exchange-rate values are parsed with parse_float=Decimal so the provider's exact decimal value is preserved for pricing instead of going through a lossy float.
- SECURITY/fixed: currency codes are validated and normalised (ISO-4217, upper-case) before use — codes are interpolated into the request URL path, so this also prevents a malformed value becoming a path segment, and fixes a lower-case code failing a rate lookup.
- SECURITY: raw provider response bodies are no longer echoed into returned error details.

v1.0.0
2025-10-25

# Changelog

All notable changes to the ExchangeRate-API provider will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [1.0.0] - 2025-10-25

### Added

- Initial release of ExchangeRate-API provider integration
- Support for 160+ world currencies
- Real-time exchange rate fetching via ExchangeRate-API v6
- Free tier support with 30,000 requests per month
- Automatic plan detection via `/quota` endpoint
- Detects free tier (≤30k requests)
- Detects pro basic tier (50k-100k requests)
- Detects pro advanced tier (>100k requests)
- Dynamic currency list fetching from `/codes` endpoint
- Any base currency support (not limited to USD)
- Encrypted credential storage using Fernet encryption
- Comprehensive error handling:
- `invalid-key` - Invalid API key errors
- `quota-reached` - Rate limit exceeded
- `unsupported-code` - Unsupported currency
- `inactive-account` - Account suspended
- Network timeouts and connection errors
- Rate sanity checking and validation
- Filters out non-positive rates
- Filters out suspiciously high rates (>1,000,000)
- Test connection functionality via `/codes` endpoint
- Credential redaction for secure logging
- Full unit test coverage
- Full integration test coverage
- Complete setup wizard instructions
- Comprehensive README documentation

### Technical Details

- Provider key: `exchangerate_api`
- Provider class: `ExchangeRateAPIProvider`
- Base URL: `https://v6.exchangerate-api.com/v6`
- Timeout: 10 seconds
- Cache strategy: Respects platform's 24-hour cache
- Response format: JSON with `conversion_rates` object

### Capabilities

- Live rates: ✅ Yes
- Historical rates: ❌ No (Pro plans only)
- Cryptocurrency: ❌ No
- Commodities: ❌ No
- Base currency selection: ✅ Yes (any currency)
- Batch requests: ✅ Yes (all rates in one call)

### Rate Limits

- Free tier: 30,000 requests/month
- No per-minute limits
- Updates: Daily on free tier, hourly/real-time on Pro
- Quota reset: Monthly on signup anniversary day

### Dependencies

- Python >= 3.10
- Django >= 4.2
- requests >= 2.28.0

### Files

- `manifest.json` - Provider metadata and configuration
- `provider.py` - Main provider implementation (536 lines)
- `setup_instructions.html` - Wizard setup guide
- `README.md` - Complete documentation
- `CHANGELOG.md` - This file
- `logo.png` - Provider logo (200x200px)
- `tests/test_provider.py` - Unit tests
- `tests/test_rates.py` - Integration tests
- `tests/test_validation.py` - Validation tests

### Notes

- This is the initial public release
- Tested with ExchangeRate-API v6 endpoints
- Compatible with shop platform v1.0.0+
- Logo provided in PNG format (200x200px)

### Comparison with Other Providers

**Advantages:**
- 30x higher free tier than most competitors (30k vs 1k)
- 99.99% uptime in 2024
- Any base currency supported
- Simpler API response format
- No credit card required for free tier

**Limitations:**
- No historical data on free tier
- Daily updates only (hourly on Pro)
- No cryptocurrency support
- No commodities support

### Migration Notes

If migrating from another provider:
1. Rates are fetched in the same format (Decimal)
2. Currency codes use ISO 4217 standard
3. Base currency can be any supported currency
4. No special migration steps required

### Security

- API keys are encrypted using Fernet (symmetric encryption)
- Keys are redacted in logs (shows first 3 and last 3 chars only)
- All API requests use HTTPS
- Credentials validated before storage

### Performance

- Average response time: < 200ms
- Timeout: 10 seconds
- Supports batch fetching (all 160+ rates in one request)
- Platform caches rates for 24 hours
- Quota check is cached to avoid excessive API calls

---

## Future Versions

### Planned for 1.1.0

- Historical rate support (for Pro plan users)
- Pair conversion endpoint optimization
- Enhanced error messages with recovery suggestions
- Webhook support for rate change notifications (if API adds support)

### Under Consideration

- Cryptocurrency support (if API adds support)
- Time-series data visualization
- Custom refresh intervals per merchant
- Rate alert notifications

---

[1.0.0]: https://github.com/yourorg/shop/releases/tag/exchangerate-api-v1.0.0

Ready to install ExchangeRate-API?

Install from your Spwig admin → Marketplace tab. Don't have a Spwig install yet? The commerce platform is free and open source.

Get Spwig → Browse more