syno/money-bundle
Syno Money Bundle provides Symfony integration for working with monetary values and currencies, packaging money-related services and configuration to help keep amount handling consistent across your application.
moneyphp/money library implements the Fowler Money pattern (integer minor units + explicit currency), which removes floating-point rounding drift from pricing, tax, discount, and invoice calculations. This package is only the Symfony DI/configuration wrapper around it — the real product asset is the library.moneyphp/money is mature and widely depended on. This bundle, by contrast, has 0 stars, 0 dependents, and its last release was March 2022 — it adds integration sugar, not capability.moneyphp/money directly and use casts/validation rules of their own, not this bundle.DECIMAL(19,4) or minor-unit column conventions), and no serialization contract for APIs. Those remain product/architecture decisions, and they are the costly ones.Consider it only when all of the following hold:
Money objects at each call site.number_format, raw strings) and you want a small, contained migration target.Look elsewhere — or skip the bundle entirely — when:
synoint), and design are Symfony-specific; there is no Laravel service provider. Use moneyphp/money directly with a cast, a validation rule, and a formatter of your own. This is the expected case for most readers of this assessment.To executives (one paragraph): Our pricing and billing code currently does arithmetic on floats and formatted strings, which is where silent penny-level errors, refund mismatches, and reconciliation tickets come from. The fix is a well-established open-source money library that stores amounts as whole minor units plus an explicit currency. That is a small, low-risk engineering change with a direct reduction in financial-correctness defects and a direct enabler of multi-currency expansion. The specific package in front of us is a thin, Symfony-only, unmaintained wrapper around that library — so the recommendation is to adopt the library and treat the wrapper as optional and disposable, or skip it entirely on Laravel.
To engineering (the real ask):
moneyphp/money as the sanctioned money primitive. Ban float for monetary values and require minor-unit integers (or a documented decimal type) at rest.Money/Currency boundary (casts, accessors, serializers) so the third-party dependency is swappable and does not leak into domain code.Risk and effort: Effort is small (days, not weeks) if scoped to the library plus an internal boundary. Risk is concentrated in the unmaintained wrapper — mitigated by pinning, vendoring, or forking — and in rounding-policy ambiguity, which is a product decision we should make explicitly rather than inherit from a library default.
How can I help you explore Laravel packages today?