Money for PHP#

This package provides integration with the Money for PHP library.

Installation#

composer require peso/moneyphp-exchange

Usage#

Exchange Objects#

Exchange objects can be used with the Money\Exchange directly. There are two Exchange objects:

  • PesoExchange (\Peso\Money\PesoExchange) provides a wrapper for current convertion rates.

  • PesoHistoricalExchange (\Peso\Money\PesoHistoricalExchange) provides a wrapper for historical convertion rates.

<?php

use Arokettu\Date\Calendar;
use Money\Converter;
use Money\Currencies\ISOCurrencies;
use Money\Currency;
use Money\Money;
use Peso\Money\PesoExchange;
use Peso\Money\PesoHistoricalExchange;
use Peso\Services\EuropeanCentralBankService;

$exchange = new PesoExchange(new EuropeanCentralBankService());
$converter = new Converter(new ISOCurrencies(), $exchange);

$eur100 = Money::EUR(10000);

var_dump($converter->convert($eur100, new Currency('USD'))); // Money::USD(...)

// or

$exchange = new PesoHistoricalExchange(
    new EuropeanCentralBankService(),
    Calendar::parse('2025-06-13')
);
$converter = new Converter(new ISOCurrencies(), $exchange);

$eur100 = Money::EUR(10000);

var_dump($converter->convert($eur100, new Currency('USD'))); // Money::USD(11512)

Converter Wrapper#

Added in version 1.1.

Peso\Money\PesoConverter

A convenience wrapper over the Money\Converter that can act as a drop-in replacement. It simplifies querying of historical rates and exposes currency pair creation from the exchanges:

<?php

use Money\Currencies\ISOCurrencies;
use Money\Currency;
use Money\CurrencyPair;
use Money\Money;
use Peso\Money\PesoConverter;
use Peso\Services\EuropeanCentralBankService;

$converter = new PesoConverter(new ISOCurrencies(), new EuropeanCentralBankService());

$eur100 = Money::EUR(10000);

// like a base \Money\Converter

// Money::USD(...)
var_dump($converter->convert($eur100, new Currency('USD')));
// [Money::USD(...), CurrencyPair(EUR/USD ...)]
var_dump($converter->convertAndReturnWithCurrencyPair($eur100, new Currency('USD')));

// historical helpers

// Money::USD(11706)
var_dump($converter->convertOnDate($eur100, new Currency('USD'), '2026-04-29'));
// [Money::USD(11706), CurrencyPair(EUR/USD 1.1706)]
var_dump($converter->convertAndReturnWithCurrencyPairOnDate(
    $eur100, new Currency('USD'), '2026-04-29',
));

// currency pair creation

// CurrencyPair(EUR/USD ...)
var_dump($converter->quote(new Currency('EUR'), new Currency('USD')));
// CurrencyPair(EUR/USD 1.1706)]
var_dump($converter->quoteOnDate(new Currency('EUR'), new Currency('USD'), '2026-04-29'));

// exchange agnostic method for completeness

// Money::USD(12345)
var_dump($converter->convertAgainstCurrencyPair(
    $eur100,
    CurrencyPair::createFromIso('EUR/USD 1.2345'),
));