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
Tomato Wallet

Tomato Wallet Laravel Package

tomatophp/tomato-wallet

A Laravel wallet package from TomatoPHP for managing user balances and transactions. Add credit and debit operations, track wallet history, and integrate multi-wallet support into your app with a simple, fluent API.

View on GitHub
Deep Wiki
Context7

Account Wallet Manager & Payment Integrations For TomatoPHP and TomatoCRM

Frequently asked questions about Tomato Wallet
What is tomatophp/tomato-wallet used for?
tomato-wallet is a Laravel package from TomatoPHP and TomatoCRM for managing account-held balances and transaction history. It supports credit and debit operations, multiple wallets, and a fluent API, and can attach wallets polymorphically to Eloquent models through a HasWallet trait. It also includes hooks for payment-provider integrations and optional Filament admin scaffolding. It is best treated as a wallet primitive for prepaid balances, refunds-as-credit, store credit, retainers, and drawdowns rather than as a fully validated payment platform.
How do I install tomato-wallet in a Laravel app?
Install it with Composer, publish the package assets and migrations, and run the migrations; Laravel package auto-discovery should register the service provider. If you want the admin UI, register the optional Filament plugin. The main integration work is discovering the sanctioned API: which trait attaches a wallet, whether balances use decimal or integer minor units, how transfers compose, and whether mutations should go through service or action classes. Plan a one-to-two-day spike and check the README for exact commands.
Does tomato-wallet support multiple wallets per user or model?
Yes, the package is described as supporting multi-wallet use and polymorphic wallet attachment to any Eloquent model via a HasWallet trait. That lets you model separate balances such as store credit, retainer funds, or refund credit for the same account. Verify the exact API for creating, naming, and scoping wallets in your spike. Also confirm how transfers between wallets and currency-specific wallets are handled.
How does tomato-wallet handle concurrent debits and credits?
The package description claims correctness through atomic database transactions, but the provided technical evaluation does not confirm whether it uses lockForUpdate, optimistic versioning, or another strategy. For a balance system, this is the most important thing to validate before relying on it. Write tests that fire concurrent debits against the same wallet and inspect for lost updates or overdrafts. Treat the result as a gating review item for anyone who will be paged for balance drift.
Is tomato-wallet safe for production financial use?
The evaluation classifies it as a reference implementation rather than a proven dependency: one star, zero dependents, a single maintainer, and a last release in May 2024. There is no visible third-party production usage, security review, or evidence of ongoing maintenance. Silent financial failures such as lost updates, non-idempotent webhook replays, and partially committed transfers do not show up in happy-path demos. Use it for pilots, internal tooling, or low-value floats first, and vendor and own it if you adopt it.
Which Laravel, PHP, and Filament versions does tomato-wallet support?
The provided context does not list exact Laravel, PHP, or Filament version constraints. It does warn that the package predates current Filament majors, so verify the admin UI path before assuming it works with your Filament version. Check the package composer.json and README for declared constraints, then run it against your target Laravel and PHP versions in a spike. Do not assume compatibility from the package name or TomatoPHP family alone.
How do payment integrations and webhooks work in tomato-wallet?
The package includes payment-provider integration hooks, but the evaluation says you must determine which providers are genuinely implemented versus stubbed or documented only. Confirm whether incoming webhooks are signature-verified and idempotent before relying on them for credits. Also check whether the package stores card data or only external gateway tokens and references, because that defines your PCI scope. Those are legal and operational questions, not just code questions.
Can I use tomato-wallet without the full TomatoPHP stack?
Mechanically it is a Laravel package installed via Composer, so it may run outside TomatoPHP, but the evaluation warns that it imports dependencies and conventions your team might not otherwise adopt. The key question is which tomato-* packages are hard transitive dependencies and how mature those are independently. Off the TomatoPHP stack, the build-versus-buy equation tilts toward building or selecting an ecosystem-independent ledger. If you proceed, isolate it behind your own wallet service interface.
How should I test tomato-wallet transactions and failure cases?
Do not stop at credit and debit success paths. Add integration tests for concurrent debits, overdraft and negative-balance behavior, transfers that partially fail, and webhook replays to confirm idempotency. Verify rounding and precision policy if you use decimal amounts, and check whether balances are mutable columns or derived from an append-only ledger. Also test the Filament admin path if you enable it, because the package predates current Filament majors.
What alternatives should I consider to tomato-wallet?
On a Laravel plus TomatoPHP stack, tomato-wallet removes the need to invent a wallet schema and supplies a working primitive quickly. Off that stack, evaluate an ecosystem-independent ledger package or a small in-house ledger with append-only transactions and derived balances. Compare concurrency semantics, webhook idempotency, multi-currency and rounding support, PCI scope, and maintenance signals before choosing. For customer money movement, a platform commitment needs stronger evidence than a reference implementation.
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