tomatophp/filament-payments
Filament Payment Manager lets you manage payments inside FilamentPHP apps with multi-gateway integration. Includes payments list, views, filters, gates, gate options, actions, a payment page, and drivers like Stripe, PayPal, Paymob, Tap, and more.
composer require plus one install command. The decision this informs is whether we staff a sprint to build that internals, or adopt and spend the sprint on checkout UX instead.FilamentSubscriptions::afterSubscription hook means plan upgrades can be wired to a payment redirect with a few lines. That makes packaging and price-point tests cheap enough to run, rather than a roadmap item.PaymentRequest contract covers customer, billing, and shipping but not line items or tax. That is sufficient for simple single-amount charges and digital goods; it is a signal that anything invoice-shaped is out of scope and needs its own design.Adopt when:
tomatophp/filament-subscriptions is already in the stack; the integration is first-class and documented.Look elsewhere or plan to build when:
Non-negotiable prerequisites if adopted: pin an exact version, audit the callback and webhook paths yourself, and assume maintenance ownership. The 1.0.21 release hardened payment links with signing, expiry, CSRF-protected cancellation, and owner enforcement — a security-driven breaking change. That is reassuring evidence of an attentive maintainer, but it is also a reminder that the security model is still evolving.
For executives: We can replace roughly a sprint of payments back-office work with a library install. It gives us an admin console to inspect, filter, and reconcile payments, a single gateway-agnostic entry point for checkout, and — most importantly — regional coverage in Egypt, Saudi Arabia, and the UAE through Paymob, Tap, and MyFatoorah, which would otherwise be bespoke integration work per market. It is MIT licensed with no per-transaction fee and no lock-in at the orchestration layer. The risk is maturity, not licensing: low adoption and a single maintainer mean we should treat it as a fast start, and treat the gateway layer as ours rather than theirs. Recommended posture: adopt behind a pinned version with a fork budget set aside.
For engineering: It is a Filament plugin registered on the panel provider, shipping its own migrations plus a hard dependency on spatie/laravel-medialibrary. The developer surface is deliberately small — a facade plus typed request objects (PaymentRequest, PaymentCustomer, PaymentBillingInfo, PaymentShippingInfo) and a reusable table PaymentAction so any resource row can trigger a payment from a table action. Gateways are implemented as discrete drivers, which makes adding one a contained, testable unit rather than a cross-cutting concern. Recent releases have hardened payment links and tightened ownership checks, so the security posture is being actively maintained. Our obligations before shipping: pin the version, verify webhook signature handling and idempotency in each driver we enable, confirm refund behavior, and confirm whether the custom-driver extension path works for our use case.
How can I help you explore Laravel packages today?