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

Laravel Billing Laravel Package

mmanos/laravel-billing

mmanos/laravel-billing is a Laravel subscription billing package that adds plans, coupons, invoices, and recurring payments to Eloquent models. It integrates with Stripe and provides traits and models for managing billable users and subscriptions.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit

  • mmanos/laravel-billing is explicitly a Laravel 4 package. It targets the Illuminate 4.x component line and the service-provider/facade conventions of that era, with Eloquent-backed models for the billing domain (plans, subscriptions, invoices/charges are the expected shape).
  • That makes it a plausible fit only for a Laravel 4 monolith. It is not architecturally portable to Laravel 5–11: the framework's package discovery, container bindings, event system, queue API, and Eloquent behavior all changed materially after 4.x.
  • For any greenfield or currently supported stack, the correct framing is "reference implementation for a billing domain model," not "dependency to install." It encodes a 2014-era subscription billing vocabulary that is useful for requirements discovery and largely unusable as code.

Integration feasibility

  • Composer resolution will fail on any modern application: the package pins illuminate/* to 4.x and an old PHP constraint. composer require will either refuse or require --ignore-platform-reqs, which converts a resolution error into a runtime error.
  • Even on a preserved Laravel 4 application, the runtime is PHP 5.4–5.6. Laravel 4 has been end-of-life since 2015 and receives no security patches. The package's last release (2017-11-11) suggests only light maintenance, not active support.
  • The payment-gateway surface is the sharper problem. Any SDK bundled or suggested by a 2014–2017 package predates Stripe's modern API versioning discipline, SCA/3DS2, PSD2 strong-customer-authentication flows, idempotency-key conventions, and current webhook signing. Integration would be building on deprecated primitives.
  • Verdict: technically infeasible as-is against a supported stack; feasible only inside a frozen legacy environment that is itself a liability.

Technical risk

  • High and compounding. Three independent risk layers stack: EOL framework, EOL PHP runtime, and an unmaintained payment integration. Each is a finding on its own; together they are disqualifying for anything touching money.
  • Compliance exposure. Billing code sits inside PCI DSS scope. An unaudited, unpatched, 46-star package with unknown test coverage is difficult to justify to a security reviewer or auditor. Card data handling, logging, and tokenization practices from that era are unlikely to meet PCI DSS v4 expectations.
  • Correctness risk. Money handling demands integer minor units, explicit currency, idempotent charge creation, and reconciliation between gateway state and local state. A package of this vintage is unlikely to have robust idempotency or webhook replay protection; partial-failure windows between "gateway charged" and "database committed" are the classic source of double-charges and lost invoices.
  • Dependency rot. Old Carbon, old gateway SDK, old Guzzle — these pin transitive versions and block unrelated security upgrades across the application.
  • Bus factor. Single maintainer, 46 stars, no visible community. No security-response process exists.

Key questions

  1. What Laravel and PHP versions must this run on, and is there an approved path off Laravel 4 if so?
  2. Which gateway and API version does the package actually target, and does it support SCA/3DS2, idempotency keys, and signed webhooks?
  3. What is the real billing domain requirement — subscriptions, proration, dunning, tax, multi-currency, refunds, invoicing? Which of these does the package cover versus which do we assume it covers?
  4. Is there test coverage, and can we characterize behavior against a gateway sandbox before trusting it?
  5. Who owns this code after integration — do we have the appetite to fork and maintain it indefinitely?
  6. What is the cost of the alternative (Cashier, Stripe Billing, Chargebee, Paddle) versus the cost of owning a fork?

Integration Approach

Stack fit

  • Compatible only with Laravel 4.x on PHP 5.4–5.6. Incompatible with Laravel 5–11 and PHP 8.x at the language and framework level, not merely at the Composer constraint level.
  • If the current application is already on Laravel 4, the package fits mechanically but does not solve the underlying problem: the runtime is unsupported. Integrating it deepens lock-in to a stack that must be exited.
  • Recommended posture: do not add as a production dependency. Use it as a domain reference and treat the actual billing implementation as a build-or-buy decision.

Migration path

  • If modernizing an existing Laravel 4 app: place the package behind an internal BillingService interface (anti-corruption layer) and never call it directly from controllers or domain code. That boundary is what makes the later swap tractable.
  • Replacement options, in rough order of preference: Laravel Cashier (Stripe/Paddle) if staying in Laravel; a managed billing platform (Stripe Billing, Chargebee, Paddle) if billing complexity is high; a thin in-house adapter over the gateway's REST API if the domain is simple.
  • Port the model, not the code. Re-derive plans, subscriptions, invoices, and transactions as first-class domain entities with explicit money types, currency, and idempotency keys. Assume none of the package's persistence choices survive review.

Compatibility

  • Audit composer.json constraints and the full transitive tree before any spike. Expect abandoned transitive dependencies (old Guzzle, old Carbon, old gateway SDK) that will not coexist with current packages.
  • Verify database driver support and confirm whether the schema uses floats for money, nullable gateway identifiers, or missing unique constraints on external charge IDs — each is a migration blocker.
  • Confirm queue and event behavior; if billing side effects run synchronously in the request path, that is a reliability issue to design around regardless of vendor.

Sequencing

  1. Requirements and domain inventory: enumerate billing behaviors the business actually needs; mark each as package-provided, assumed, or absent.
  2. Time-boxed feasibility spike (≤1 week) in a disposable Laravel 4 container, against a gateway sandbox, purely to characterize behavior. Do not merge this spike.
  3. Define the BillingService interface and money/currency types; this is the seam that decouples migration from delivery.
  4. Implement the replacement behind the interface (Cashier or managed platform), with characterization tests derived from step 2.
  5. Dual-run: shadow-write to the new path, reconcile against the old system daily, resolve discrepancies before any customer-visible cutover.
  6. Migrate subscription and payment-method data with a documented, rehearsed rollback; cut over per cohort, not globally.
  7. Decommission the package and, if applicable, the Laravel 4 runtime.

Operational Impact

Maintenance

  • Effectively abandoned. Last release 2017, 46 stars, no active issue triage. Any use becomes fork-and-own: you inherit security patching, gateway SDK upgrades, and bug fixes, with no upstream to lean on.
  • Ongoing cost is not the initial integration — it is the permanent obligation to maintain a PHP 5-era codebase plus its transitive dependency tree, which will drift further from current tooling every quarter.

Support

  • No vendor, no SLA, no community, no escalation path. The maintainer is a single individual with no published support commitment.
  • Internal support requires someone who can read Laravel 4 idioms and old gateway SDKs. That skill set is shrinking and expensive to source; knowledge will concentrate in one or two engineers.

Scaling

  • Unclear and likely limited. Billing packages of this era typically call the gateway synchronously inside the request, with modest queue support. That caps throughput and couples payment latency to user-facing response times.
  • Schema and indexing for high-volume invoice/transaction tables are unlikely to be tuned; plan for archival and read-model separation if volume grows.
  • Scaling the application does not scale the risk: more transactions against a deprecated gateway API increases exposure to rate limits, deprecation notices, and silent behavioral drift.

Failure modes

  • Gateway API deprecation or removal of the API version the SDK targets — silent or hard failure at the worst possible moment.
  • Lost or duplicated webhooks with no idempotency or replay protection, producing double charges or missed subscription state transitions.
  • Non-atomic charge-and-record: gateway succeeds, local commit fails, customer is billed without an invoice.
  • Currency and rounding errors from float-based money handling, compounding across proration and refunds.
  • PHP runtime CVEs with no patch path, forcing emergency framework migration under incident pressure.
  • Composer dependency rot blocking unrelated security updates across the whole application.

Ramp-up

  • Expect roughly 2–4 weeks for a competent Laravel engineer just to become safe in this codebase, plus additional time for gateway and billing-domain onboarding. Hiring for Laravel 4 and PHP 5 fluency is itself a constraint.
  • The real ramp-up cost is organizational: auditors, security reviewers, and finance stakeholders all need to be briefed on why an unsupported package sits in the payment path. That conversation is more expensive than the technical work and is the strongest argument for choosing a maintained alternative.
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.
ignibyte/aic-framework
glavweb/data-schema-bundle
glavweb/datagrid-bundle
tacticmedia/scim-server
uni-method/frame
neika-ai/sdk
adachsoft/php-code-style
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
adachsoft/api-version-bundle
cgv/localized-resource
noith/settings
kda/laravel-package
kda/filament-dynamic-navigation
bypersoft/signbox