Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Money Laravel Package

moneyphp/money

PHP library for handling money and currencies safely. Provides immutable Money and Currency value objects, arithmetic with proper rounding, comparisons, formatting, and allocation. Avoid floating-point errors in financial calculations; works well with PHP and frameworks like Laravel.

View on GitHub
Deep Wiki
Context7
4.8.0

Added

  • PHP 8.5 support
4.7.1

Updated

  • Updated the ISO and Crypto currencies
4.7.0

Added

  • Subtypes of InvalidArgumentException
4.6.0

Added

  • PHP 8.4 support
4.5.0

Fixed

  • PHPUnit 10 support
  • Update currencies
  • Updated doctrine/coding-standard
  • Updated other dev dependencies

Removed

  • PHP 8.0 support
4.4.0

Added

  • Extended support for psr/cache, now version 1.0.1 up until 3.0 is supported.
4.3.0

Added

  • Support for PHP 8.3
  • Allow divisor in mod to be a number as well

Removed

  • PHPSpec tests, we are using PHPUnit only now
4.2.0

Added

  • Teller object to help legacy applications
4.1.1

Fixed

  • Optimized result representation for BcMathCalculator
  • Use sprintf for float to string conversion in swap exchange
  • Fix rounding to unit with value between 10 and 49
  • Return type for DecimalMoneyFormatter::format is numeric-string
  • Money::ratioOf throws exception if currencies don't match.
  • Updated currencies: added SLE and VED, removed HRK.
  • Do not let php-http/discovery change composer.json.
4.1.0

Added

  • Full PHP8.2 compatibility

Fixed

  • Fix parsing amounts with leading zero's
  • Fix invalid exception message in DecimalMoneyParser
  • Upgrade enchant to newer version
  • Support Psalm 5.3
  • Fix ROUND_UP and ROUND_DOWN in roundToUnit

Changes

  • composer.lock is not committed anymore
  • MoneyFactory now also contains crypto-currencies

Added

4.0.5

Fixed

  • Enabled zend.assertions during CI
  • Fixed invalid assertions
4.0.4

Added

  • Full PHP8.1 compatibility (#670)

Changes

  • Dropped mutation testing as the library owners are unfamiliar with it
  • CHANGELOG BC change improvement
4.0.3

Fixed

  • jsonSerialize return types, resulting in no PHP 8.1 warnings.
  • Documentation CI pipeline failure.
4.0.2

Changes

  • Added all extensions to composer.json, including those bundled with PHP.

Fixed

  • Remove all empty uses. Money values of '0' gave an assertion error in decimal formats (#655)
4.0.1

Changed

  • Allow int as multiplier for Money::multiply
  • Allow int as divisor for Money::divide
4.0.0

Added

  • PHP8.0 compatibility (#633 and #619)
  • Recommendation to use a type-checker like psalm or phpstan
  • Rounding to units
  • Converter#convertAndReturnWithCurrencyPair to get the combination of the converted money and currency pair
  • Converter#convertAgainstCurrencyPair to convert against a currency pair

Changed

  • [BC break] BC Math required as it is the default calculator
  • [BC break] The methods multiply 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.
  • [BC break] The constructor of the 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.
  • Allow multiple arguments to Money#isSameCurrency
  • Renamed second parameter of Parser#parse to $fallbackCurrency

Fixed

  • Fix GMP multiply and divide by negative (#640 #626)
  • Currency code must be uppercase (#639 #638 #637)
  • The CPU no longer overheats when using this library (#634)
  • No longer allowing null amount (#615)
  • Update cached currencies (#583)
  • Only numeric strings allowed (#575)
  • Calculator and Number are internal (#465)
  • Negative ratio in Money#allocate() is now allowed (#258)

Removed

  • [BC break] Removed PhpCalculator
  • [BC break] Removed Currency#isAvailableWithin()
  • [BC break] Removed string as allowed type for second parameter to MoneyParser#parse, only Currency objects are accepted now
  • [BC break] Completely remove float usage, methods now return numeric-strings
3.3.0

Changed

  • Added types for Money to be understood as pure/immutable downstream (#576)

Fixed

  • JSON serialization (#551)
  • Several documentation fixes
  • Minor fixes
3.3.1

Fixed

  • GMP: division of negative values
  • GMP: compare 0.x value
3.2.1

Changed

  • Money::allocate now maintains keys of ratios array
  • All parsers now emit a deprecation warning when passing currency as string

Fixed

  • Docs fix : plus sign in numeric strings is allowed
  • Added ext-json as required extension
  • Throw exception in case of empty currency
  • BCMath calculator now uses scale parameters for addition and subtracting
  • Fixed allocation remainder bug
  • Added PHP 7.3 in test suite
  • Fixed dockerignore to ignore Dockerfile
  • Fixed Bitcoin parsing bug when using trailing zeros
3.2.0

Added

  • Exchanger exchange
  • Generated static factory to help IDEs understand code like Money::EUR(500)
  • Aggregation functions (min, max, avg, sum)

Changed

  • Money::add and Money::subtract now accept variadic arguments

Fixed

  • Division causing unnecessary fractional parts
  • Numeric comparison for negative numbers
3.1.3

Fixed

  • Allocation when the amount is smaller than the number of ratios
3.1.2

Added

  • Number::fromNumber to be used when the actual type is not known

Changed

  • Refactored Number usage to make the code cleaner and use less casting

Fixed

  • Float cast to string issue on certain locales
3.1.1

Fixed

  • Float cast to string issue on certain locales
  • Deal with numbers represented with E-XX
3.1.0

Added

  • CurrencyList to instantiate in-memory currencies
  • modulus method to Money
  • ratioOf method to Money
  • Comparator for easier testing Money object with PHPUnit
  • IntlLocalizedDecimalParser and IntlLocalizedDecimalFormatter

Changed

  • MoneyParser::parse method now expects a Currency object
  • Dropped PHP 5.5

Deprecated

  • Passing currency code as string to MoneyParser::parse

Fixed

  • Do not allocate remainder to a ratio of zero
  • Conversion result is always 0 when subunit difference is large enough
  • Unexpected result when converting small Bitcoin amounts
  • Fixed StyleCI being too aggressive
3.0.9

Fixed

  • Bitcoin currency symbol
3.0.8

Fixed

  • Rounding issue in Number class.
  • Reduce composer package file size by leaving out docs and logo.
  • Missing Travis tests for PHP 7.2.
3.0.7

Changed

  • Currencies
3.0.6

Added

  • IndirectExchange: a way to get an exchange rate through a minimal set of intermediate conversions.

Fixed

  • Tests for HHVM
  • Incorrect documentation on Bitcoin parser
3.0.5

Added

  • numericCodeFor method to ISOCurrencies
3.0.4

Added

  • Negative method

Changed

  • Updated ISO Currencies
  • Removed old Belarusian ruble from ISOCurrencies (BYR)

Fixed

  • ISOCurrencies will no longer have a blank currency
  • Double symbol when formatting negative Bitcoin amounts
3.0.3

Fixed

  • Parsing empty strings and number starting or ending with a decimal point for DecimalMoneyParser
  • Parsing zero for DecimalMoneyParser
  • Multiplying and dividing with a locale that use commas as separator
3.0.2

Fixed

  • BCMath / GMP: comparing values smaller than one
  • GMP: multiplying with zero
  • ISOCurrencies: minor refactoring, remove duplication of code
3.0.1

Added

  • Reversed Currencies Exchange to try resolving reverse of a currency pair
  • Documentation on allowed integer(ish) values when constructing Money

Fixed

  • Passing integer validation when chunk started with a dash
  • Passing integer validation when the fractional part started with a dash
  • Formatting problem for Bitcoin currency with small amounts in PHP < 7.0
  • Money constructed from a string with fractional zeroes equals to a Money constructed without the fractional part (eg. '5.00' and '5')
3.0.0

Added

  • DecimalMoneyFormatter: returns locale-independent raw decimal string

Changed

  • [BC break] Replaced StringToUnitsParser with DecimalMoneyParser
  • [BC break] Moved Money\Exception\Exception to Money\Exception
  • [BC break] UnkownCurrencyException is now DomainException instead of RuntimeException
  • [Doctrine break] In Currency 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.
3.0.0-beta.3

Added

  • FixedExchange: returns fixed exchange rates based on a list (array)

Changed

  • [BC break] Convert method now moved to its own class: Converter
  • [BC break] Exchange had one method getCurrencyPair which is now renamed to quote
  • Minor documentation issues

Fixed

  • Integer detection when the number overflows the integer type and contains zeros
  • Rounding numbers containg trailing zeros
  • Converting Money to currency with different number of subunits
3.0.0-beta.2

Added

  • PHP Spec tests
  • absolute method to Money and Calculator
  • subunitFor method to Currencies
  • Currencies now extends IteratorAggregate
  • Library exceptions now implement a common interface
  • Formatter and Parser implementation are now rounding half up

Changed

  • [BC break] Dropped PHP 5.4 support
  • [BC break] Intl and Bitcoin formatters and parsers now require Currencies
  • ISOCurrencies now uses moneyphp/iso-currencies as currency data source

Fixed

  • Documentation to be inline with upcoming version 3
  • Rounding issues in calculators with negative numbers
  • Formatting and parser issues for amounts and numbers with a trailing zero
  • Improved many exception messages
  • Registration of own Calculator implementations
3.0.0-beta

Added

  • Bitcoin parser and formatter
  • Also checking tests folder for StyleCI

Fixed

  • Currencies are now included in the repo
  • Currency list generation moved to dev dependency: reduces repo size
  • BC Math calculator adding and subtracting failed when bcscale was set
  • Parsing zero for StringToUnitsParser
3.0.0-alpha

Added

  • Currency repositories (ISO currencies included)
  • Money exchange (including Swap implementation)
  • Money formatting (including intl formatter)
  • Money parsing (including intl parser)
  • Big integer support utilizing different, transparent calculation logic upon availability (bcmath, gmp, plain php)
  • Money and Currency implements JsonSerializable
  • Rounding up and down
  • Allocation to N targets

Changed

  • [BC break] Money::getAmount() returns a string instead of an int value
  • [BC break] Moved stringToUnits to StringToUnitsParser parser
  • Library requires at least PHP 5.4
  • Library uses PSR-4

Fixed

  • Integer overflow

Removed

  • [BC break] UnkownCurrency exception
  • [BC break] Currency list is now provided by umpirsky/currency-list
  • [BC break] RoundingMode class
  • [BC break] Announced deprecations are removed (Currency::getName, CurrencyPair::getRatio, Money::getUnits)
Pre
  • 2015-03-23 Minimum php version is now 5.4
  • 2015-03-23 JsonSerializable
  • (... missing changelog because who remembers to document stuff anyway?)
  • 2014-03-22 Removed \Money\InvalidArgumentException in favour of plain old InvalidArgumentException
  • 2014-03-22 Introduce RoundingMode object, used to specify desired rounding
  • 2014-03-22 Introduced RoundingMode backwards compatible API changes to Money::multiply and Money::divide
  • 2014-03-22 Allow RoundingMode to be specified when converting currencies
  • 2014-03-22 CurrencyPair has an equals() method
  • 2013-10-13 Base currency and counter currency in CurrencyPair named correctly.
  • 2013-01-08 Removed the Doctrine2\MoneyType helper, to be replaced by something better in the future. It's available at https://gist.github.com/4485025 in case you need it.
  • 2013-01-08 Use vendor/autoload.php instead of lib/bootstrap.php (or use PSR-0 autolaoding)
  • 2012-12-10 Renamed Money::getUnits() to Money::getAmount()
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
davejamesmiller/laravel-breadcrumbs
artisanry/parsedown
christhompsontldr/phpsdk
enqueue/dsn
bunny/bunny
enqueue/test
enqueue/null
enqueue/amqp-tools
milesj/emojibase
bower-asset/punycode
bower-asset/inputmask
bower-asset/jquery
bower-asset/yii2-pjax
laravel/nova
spatie/laravel-mailcoach
spatie/laravel-superseeder
laravel/liferaft
nst/json-test-suite
danielmiessler/sec-lists
jackalope/jackalope-transport