Peso Currency Converter#
A simple standalone currency converter.
Installation#
composer require peso/peso
Usage#
Added in version 1.1: Native conversion requests
Peso returns numeric strings that can be used with various decimal calculation libraries like BcMath or, for example, with Money’s Teller object.
Initialize it with a service provider:
<?php
use Peso\Peso\CurrencyConverter;
use Peso\Services\EuropeanCentralBankService;
$peso = new CurrencyConverter(new EuropeanCentralBankService());
Query rates:
<?php
use Peso\Peso\CurrencyConverter;
use Peso\Services\EuropeanCentralBankService;
$peso = new CurrencyConverter(new EuropeanCentralBankService());
// current
echo $peso->getConversionRate(
'EUR', // base
'PHP', // quote
), PHP_EOL;
// and historical
echo $peso->getHistoricalConversionRate(
'EUR', // base
'PHP', // quote
'2025-06-13', // date (Y-m-d string or DateTime or arokettu/date Date)
), PHP_EOL; // '64.706'
Convert currency amounts:
<?php
use Peso\Peso\CurrencyConverter;
use Peso\Services\EuropeanCentralBankService;
$peso = new CurrencyConverter(new EuropeanCentralBankService());
// current
echo $peso->convert(
'1500.00', // amount. Numeric string (recommended) or float (not recommended)
'EUR', // base
'PHP', // quote
2, // quote precision. Philippine peso is divided into 100 sentimo
), PHP_EOL;
// and historical
echo $peso->convertOnDate(
'1500.00', // amount. Numeric string (recommended) or float (not recommended)
'EUR', // base
'PHP', // quote
2, // quote precision. Philippine peso is divided into 100 sentimo
'2025-06-13', // date (Y-m-d string or DateTime or arokettu/date Date)
), PHP_EOL; // '97059.00'
Note
Peso does not store a list of currencies so you need to specify amount precision manually. If you want this to happen automatically, please use Money for PHP or Brick\Money integrations.
Added in version 1.1: Currency conversion modes
Currency conversion modes:
<?php
use Peso\Peso\CurrencyConverter;
use Peso\Peso\Options\ConversionType;
// Native only: execute only native conversion requests.
// This way you always get authoritative amounts from your service.
// The request will fail if the service does not support native conversion.
$peso = new CurrencyConverter($service, ConversionType::NativeOnly);
// CalculatedOnly: only query conversion rates and calculate amounts in-service
// This way you conserve requests to the service with more effective caching.
$peso = new CurrencyConverter($service, ConversionType::CalculatedOnly);
// Fallback (default):
// Sends a native request and if it fails, falls back to calculated rates.
$peso = new CurrencyConverter($service);