Payum is a mature PHP payment-processing library that abstracts dozens of payment service providers behind a unified gateway interface. In production it lets applications capture, authorize, refund, cancel, sync, and payout through a consistent API while routing requests to provider-specific implementations. The monorepo contains a framework-agnostic core plus split packages for PayPal (ExpressCheckout NVP, Masspay, ProCheckout, ProHosted, Rest, IPN), Stripe, Klarna Checkout/Invoice, Payex, Sofort, Be2Bill, AuthorizeNet AIM, and an Offline gateway. The core exposes gateway factories, registries, storages, security token generation, status mapping, and Twig rendering, with framework bridges for Symfony, Laravel/Silex documentation, Doctine ORM/ODM, and plain PHP. The most important entry points are PayumBuilder for assembly, Payum facade methods (capture, done, notify, prepare), Gateway for execution, and the command/handler/result model introduced in the 2.x line. The architecture is mid-transition: the legacy 1.x action/request/reply pattern is fully functional and heavily used by shipped gateway packages, while the newer 2.x command/handler/middleware/result model is being designed and partially implemented. A LegacyGatewayAdapter bridges old gateways into the new command flow. This dual-architecture state is the defining characteristic of the current codebase: it is powerful and backward compatible, but it also creates deprecation surface, duplicated abstractions, and maintenance friction. The codebase is well-tested with PHPUnit and uses modern PSR contracts (PSR-7/17/18, PSR-11, PSR-14, PSR-20), moneyphp/money, Twig, and PHP-DI. However, several provider integrations still rely on old SOAP, XML-RPC, or NVP APIs, and the active 2.x migration leaves many deprecation notices, legacy BC shims, and inconsistent code style across packages.