Build status Total Downloads Scrutinizer Version

Swap allows you to retrieve currency exchange rates from various services such as Fixer or Google and optionally cache the results. It is integrated to other libraries like moneyphp/money and provides a Symfony Bundle and a Laravel Package.


$ composer require florianv/swap php-http/message php-http/guzzle6-adapter
use Swap\Builder;

// Build Swap with
$swap = (new Builder())
    ->add('fixer', ['access_key' => 'your-access-key'])
// Get the latest EUR/USD rate
$rate = $swap->latest('EUR/USD');

// 1.129

// 2016-08-26

// Get the EUR/USD rate 15 days ago
$rate = $swap->historical('EUR/USD', (new \DateTime())->modify('-15 days'));


The complete documentation can be found here.


Here is the list of the currently implemented services.

Service Registry Alias Base Currency Quote Currency Historical
Fixer fixer * * Yes
European Central Bank european_central_bank EUR * Yes
Google google * * No
Open Exchange Rates USD (free), * (paid) * Yes  
Xignite xignite * * Yes
WebserviceX webservicex * * No
National Bank of Romania national_bank_of_romania RON * No
Central Bank of the Republic of Turkey central_bank_of_republic_turkey * TRY No
Central Bank of the Czech Republic central_bank_of_czech_republic * CZK No
Russian Central Bank russian_central_bank * RUB Yes
currencylayer currency_layer USD (free), * (paid) * Yes
Cryptonator cryptonator * Crypto (Limited standard currencies) * Crypto (Limited standard currencies) No
1Forge forge * (free but limited or paid) * (free but limited or paid) No
CurrencyDataFeed currency_data_feed * (free but limited or paid) * (free but limited or paid) No
Array array * * Yes




The MIT License (MIT). Please see LICENSE for more information.