NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Packagist · #336 most downloaded on Packagist
PHP implementation of Fowler's Money pattern
Last release 5 months ago
04 May 2026
Ships fairly regularly
a new release about every 4 months
Most releases are documented
notes for 35 of 42 stable releases
Nothing withdrawn
no release was ever pulled
14 years old
48 releases · first in 2012
Added Currency::zero() method
Added Currency::zero() method
Release with support for PHP8.5.
Release with support for PHP8.5.
One column per quarter.
Updated the ISO and Crypto currencies
Updated the ISO and Crypto currencies
Subtypes of InvalidArgumentException
Subtypes of InvalidArgumentException
### Added - PHP 8.4 support
Nothing published for this version
PHPUnit 10 support, updated currencies, updated dev dependencies
PHPUnit 10 support, updated currencies, updated dev dependencies
Extended support for psr/cache, now version 1.0.1 up until 3.0 is supported.
Extended support for psr/cache, now version 1.0.1 up until 3.0 is supported.
Support for PHP 8.3 and allow divisor in mod to be a number as well.
Support for PHP 8.3 and allow divisor in mod to be a number as well.
Add Teller object to help legacy applications
Add Teller object to help legacy applications
Optimized result representation for BcMathCalculator
Fix parsing amounts with leading zero's
composer.lock is not committed anymoreCryptoCurrencies class that serves crypto-currencies from moneyphp/crypto-currenciesEnabled zend.assertions during CI
Dropped mutation testing as the library owners are unfamiliar with it
jsonSerialize return types, resulting in no PHP 8.1 warnings.
jsonSerialize return types, resulting in no PHP 8.1 warnings.Added all extensions to composer.json, including those bundled with PHP.
composer.json, including those bundled with PHP.empty uses. Money values of '0' gave an assertion error in decimal formats (#655)Allow int as multiplier for Money::multiply
int as multiplier for Money::multiplyint as divisor for Money::dividePHP8.0 compatibility (#633 and #619)
Converter#convertAndReturnWithCurrencyPair to get the combination of the converted money and currency pairConverter#convertAgainstCurrencyPair to convert against a currency pairmultiply and divide do not accept floating points any more. Callers are required to
convert a float to string (e.g. sprintf('%.14F', $float)) before calling these methods.FixedExchange does not accept floating points any more. Callers are required to
convert a float to string (e.g. sprintf('%.14F', $float)) before calling the constructor.Money#isSameCurrencyParser#parse to $fallbackCurrencyMoney#allocate() is now allowed (#258)PhpCalculatorCurrency#isAvailableWithin()MoneyParser#parse, only Currency objects are accepted nowNothing published for this version
Nothing published for this version
Nothing published for this version
GMP: division of negative values
Added types for Money to be understood as pure/immutable downstream
Money to be understood as pure/immutable downstream (#576)All parsers now emit a deprecation warning when passing currency as string
Money::allocate now maintains keys of ratios arrayGenerated static factory to help IDEs understand code like Money::EUR(500)
Money::EUR(500)Money::add and Money::subtract now accept variadic argumentsAllocation when the amount is smaller than the number of ratios
Number::fromNumber to be used when the actual type is not known
Number::fromNumber to be used when the actual type is not knownNumber usage to make the code cleaner and use less castingFloat cast to string issue on certain locales
CurrencyList to instantiate in-memory currencies
MoneyParser::parse method now expects a Currency objectMoneyParser::parse### Fixed - Bitcoin currency symbol
Rounding issue in Number class.
### Changed - Currencies
IndirectExchange: a way to get an exchange rate through a minimal set of intermediate conversions.
numericCodeFor method to ISOCurrencies
Removed old Belarusian ruble from ISOCurrencies (BYR)
Parsing empty strings and number starting or ending with a decimal point for DecimalMoneyParser
BCMath / GMP: comparing values smaller than one
Reversed Currencies Exchange to try resolving reverse of a currency pair
'5.00' and '5')DecimalMoneyFormatter: returns locale-independent raw decimal string
Money\Exception\Exception to Money\ExceptionCurrency the private variable name was renamed to code, which could break your Doctrine mapping if you are using embeddables or any other Reflection related implementation.Nothing published for this version
FixedExchange: returns fixed exchange rates based on a list (array)
absolute method to Money and Calculator
Also checking tests folder for StyleCI
[BC break] Announced deprecations are removed (Currency::getName, CurrencyPair::getRatio, Money::getUnits)
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →