Weave 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 Bundle Laravel Package

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.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Money correctness as a product requirement. The underlying 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.
  • Multi-currency and localization roadmap. Adopting a money value object now is what makes later decisions cheap: per-market price lists, currency-specific rounding (e.g., JPY 0-decimal, CHF cash rounding), display formatting, and stored amounts in minor units without a schema migration.
  • Build vs buy. This is a clear "buy the library, skip the wrapper" call for most teams. Writing your own money class is a 2–4 week effort plus permanent rounding-bug risk; 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.
  • Vendor-surface decisions. Because the bundle is a Symfony-only artifact, the decision forks by stack: Symfony teams may consider it for container config, form types, and Twig helpers; Laravel teams should depend on moneyphp/money directly and use casts/validation rules of their own, not this bundle.
  • What it does not decide for you. It provides no exchange rates, no tax engine, no persistence layer (no decimal/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.
  • Use cases it unlocks cheaply: cart and checkout totals, subscription proration, refunds and partial captures, marketplace payouts and commission splits, invoice/credit-note generation, accounting exports, and any pricing surface with more than one currency.

When to Consider This Package

Consider it only when all of the following hold:

  • The application is Symfony, and you want currency configuration in the container rather than hand-wiring Money objects at each call site.
  • You need form types or Twig helpers for currency input/formatting and would otherwise write them yourself.
  • You have accepted the maintenance profile: last release 2022, no visible dependents, no active community. You must be willing to vendor the code or fork it if a future Symfony major version breaks it.
  • Your money handling is currently ad-hoc (floats, number_format, raw strings) and you want a small, contained migration target.

Look elsewhere — or skip the bundle entirely — when:

  • You are on Laravel. The package name, namespace (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.
  • You need a maintained dependency. A 2022 last release with zero stars/dependents is a supply-chain and upgrade-risk signal. Prefer the underlying library, which is actively used and has a real maintainer base.
  • You need more than arithmetic. No FX conversion, no rate providers, no tax rules, no DB types, no OpenAPI serialization — you will build those regardless, and a thin DI wrapper adds little once you are building them.
  • You need only a few call sites. Below roughly a dozen money-touching operations, a small internal value object or direct library usage is cheaper than onboarding an unmaintained bundle.
  • You have strict dependency governance (SBOM, license/security scanning, minimum-maintenance SLAs). MIT license is fine; the maintenance profile is not.

How to Pitch It (Stakeholders)

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):

  • Adopt moneyphp/money as the sanctioned money primitive. Ban float for monetary values and require minor-unit integers (or a documented decimal type) at rest.
  • Create one internal Money/Currency boundary (casts, accessors, serializers) so the third-party dependency is swappable and does not leak into domain code.
  • Decide and document rounding policy per currency up front — this is the requirement that actually causes rework later.
  • On Symfony only, evaluate this bundle behind a one-sprint timebox as a convenience layer. Success criteria: it wires cleanly, adds real formatter/form value, and can be replaced without touching domain code.
  • Do not rely on it for FX, tax, or persistence; those need explicit designs.

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.

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.
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
shitoudev/permissionmanager
johannesclimacus/laravel-tui
hocvt/seotools
vitalybaev/sypexgeo
amphibee/themosis-ignition
gito-me/fast-excel
frankyso/laravel-ipaymu
geolize-studio/laravel-chile
boomerangui/chat
cgv/localized-resource
noith/settings
kda/laravel-package
kda/filament-dynamic-navigation
bypersoft/signbox
pairus/product-data
fayne/laravel-filament-cms-core