There is already a SyliusCheckoutEvents in CoreBundle, I think you should use it instead of creating a new one. Purchase step is not specific to payum, only its implementation is. So the event (which is dispatched with payum or with anything else) should live in Core.