yceruto/money-bundle
A Symfony bundle that integrates MoneyPHP into your app, offering form types, Twig extensions, Doctrine mapping, validators, and serializers for handling monetary amounts and currencies safely and consistently.
moneyphp/money library models amounts as integer minor units plus a currency, which removes the class of rounding defects that appear when prices, taxes, discounts, and refunds are held as floats. If your roadmap includes subscriptions, multi-currency catalogs, invoicing, or marketplace payouts, this is a foundational correctness decision rather than a feature.moneyphp/money (or brick/money) directly and write a thin service provider," not "adopt this bundle." Scoping work here should reflect that split.DECIMAL/FLOAT columns and arithmetic is scattered across models is expensive. This supports a "do it before scale" sequencing decision.Adopt when:
moneyphp/money.Look elsewhere (or skip the bundle) when:
moneyphp/money or brick/money directly.intl/NumberFormatter; the money library is deliberately format-agnostic.brick/money against your requirements first; it is more actively maintained and has richer allocation semantics.Maintenance signal: a release dated 2025-12-15 indicates the project is not abandoned. Confirm the release is substantive rather than a dependency bump, and check open-issue responsiveness before committing.
To executives (one paragraph): We are standardizing how the product represents and calculates money so that pricing, tax, discounts, refunds, and payouts cannot silently drift by cents — a defect class that is cheap to prevent now and expensive to unwind once it reaches customer invoices and financial reporting. The capability comes from a mature, MIT-licensed PHP library; the specific Symfony integration layer is small, free, and easily replaced. Cost is effectively engineering hours only, with no licensing or vendor commitment, and the work is reversible.
To engineering: This is a thin Symfony integration over moneyphp/money — DI configuration, form types, validators. Expect to write your own persistence mapping (Doctrine types) and formatting layer, and to source FX rates separately; the bundle does not do either. The upstream library is the real dependency and is a safe bet. The bundle itself is low-adoption (~29 stars, single maintainer), so pin the version, read the source before adopting (it is small), and keep the integration behind a thin internal interface so we can drop it for direct library usage or brick/money without touching domain code. If we are a Laravel shop, skip the bundle and integrate the library directly.
To product/finance stakeholders: Expect no user-visible change from this work. The deliverable is that multi-currency prices, splits, and refunds are computed in integer minor units and are auditable and unit-testable — which is what lets us commit to multi-currency pricing on the roadmap without a rewrite of the pricing model later.
How can I help you explore Laravel packages today?