Swap allows you to retrieve currency exchange rates from various services such asFixer,Currency Data orExchange Rates Data and optionally cache the results.It is integrated to other libraries likemoneyphp/money and providesaSymfony Bundle and aLaravel Package.
Sponsors
![]() | Fixer is a simple and lightweight API for foreign exchange rates that supports up to 170 world currencies. |
![]() | currencylayer provides reliable exchange rates and currency conversions for your business up to 168 world currencies. |
![]() | exchangerates provides reliable exchange rates and currency conversions for your business with over 15 data sources. |
QuickStart
$composer require php-http/curl-client nyholm/psr7 php-http/message florianv/swap
useSwap\Builder;// Build Swap$swap=(newBuilder())// Use the Fixer service as first level provider->add('apilayer_fixer',['api_key'=>'Get your key here: https://fixer.io/'])// Use the currencylayer service as first fallback->add('apilayer_currency_data',['api_key'=>'Get your key here: https://currencylayer.com'])// Use the exchangerates service as second fallback->add('apilayer_exchange_rates_data',['api_key'=>'Get your key here: https://exchangeratesapi.io'])->build();// Get the latest EUR/USD rate$rate=$swap->latest('EUR/USD');// 1.129$rate->getValue();// 2016-08-26$rate->getDate()->format('Y-m-d');// Get the EUR/USD rate 15 days ago$rate=$swap->historical('EUR/USD',(new\DateTime())->modify('-15 days'));
We recommend to use theservices that support our project, providing a free plan up to 100 requests per month.
Documentation
The documentation for the current branch can be foundhere.
Services
Here is the list of the currently implemented services:
Service | Base Currency | Quote Currency | Historical |
---|---|---|---|
Fixer | EUR (free, no SSL), * (paid) | * | Yes |
Currency Data | USD (free), * (paid) | * | Yes |
Exchange Rates Data | USD (free), * (paid) | * | Yes |
Abstract | * | * | Yes |
coinlayer | * Crypto (Limited standard currencies) | * Crypto (Limited standard currencies) | Yes |
Fixer | EUR (free, no SSL), * (paid) | * | Yes |
Currency Data | USD (free), * (paid) | * | Yes |
exchangeratesapi | USD (free), * (paid) | * | Yes |
European Central Bank | EUR | * | Yes |
National Bank of Georgia | * | GEL | Yes |
National Bank of the Republic of Belarus | * | BYN (from 01-07-2016), BYR (01-01-2000 - 30-06-2016), BYB (25-05-1992 - 31-12-1999) | Yes |
National Bank of Romania | RON, AED, AUD, BGN, BRL, CAD, CHF, CNY, CZK, DKK, EGP, EUR, GBP, HRK, HUF, INR, JPY, KRW, MDL, MXN, NOK, NZD, PLN, RSD, RUB, SEK, TRY, UAH, USD, XAU, XDR, ZAR | RON, AED, AUD, BGN, BRL, CAD, CHF, CNY, CZK, DKK, EGP, EUR, GBP, HRK, HUF, INR, JPY, KRW, MDL, MXN, NOK, NZD, PLN, RSD, RUB, SEK, TRY, UAH, USD, XAU, XDR, ZAR | Yes |
National Bank of Ukranie | * | UAH | Yes |
Central Bank of the Republic of Turkey | * | TRY | Yes |
Central Bank of the Republic of Uzbekistan | * | UZS | Yes |
Central Bank of the Czech Republic | * | CZK | Yes |
Central Bank of Russia | * | RUB | Yes |
Bulgarian National Bank | * | BGN | Yes |
WebserviceX | * | * | No |
1Forge | * (free but limited or paid) | * (free but limited or paid) | No |
Cryptonator | * Crypto (Limited standard currencies) | * Crypto (Limited standard currencies) | No |
CurrencyDataFeed | * (free but limited or paid) | * (free but limited or paid) | No |
Open Exchange Rates | USD (free), * (paid) | * | Yes |
Xignite | * | * | Yes |
Currency Converter API | * | * | Yes (free but limited or paid) |
xChangeApi.com | * | * | Yes |
fastFOREX.io | USD (free), * (paid) | * | No |
exchangerate.host | * | * | Yes |
Array | * | * | Yes |
Additionally, you can add your own services as long as they implement theExchangeRateService
interface.
Integrations
- A Symfony BundleFlorianvSwapBundle
- A Laravel Packageflorianv/laravel-swap
Credits
License
The MIT License (MIT). Please seeLICENSE for more information.