Plugin provides basic refunds functionality for Sylius application.
This plugin provides basic refunds functionality for Sylius application.
In contrast to basic Refund functionality delivered by core Sylius bundles, Refund Plugin offers much wider range of possibilities and business scenarios.
Once an Order is paid, an Administrator is able to access Refunds section of a given Order and perform a Refund of chosen items or shipments. What's more, if a more detailed scenario occurs, an Administrator is able to refund an item partially.
From Administrator's point of view, every Refund request results in creating two entities:
- Credit Memo - a document representing a list of refunded items (downloadable and sent to Customer via .pdf file)
- Refund Payment - entity representing payment in favour of the Customer
Require plugin with composer:
composer require sylius/refund-plugin
Remember to allow community recipes with
composer config extra.symfony.allow-contrib trueor during plugin installation process
Copy plugin migrations to your migrations directory (e.g.
src/Migrations) and apply them to your database:
cp -R vendor/sylius/refund-plugin/migrations/* src/Migrations bin/console doctrine:migrations:migrate
Copy Sylius templates overridden in plugin to your templates directory (e.g
mkdir -p templates/bundles/SyliusAdminBundle/ cp -R vendor/sylius/refund-plugin/src/Resources/views/SyliusAdminBundle/* templates/bundles/SyliusAdminBundle/
(optional) If you don't use
symfony/messengercomponent yet, it is required to configure one of the message buses as a default bus:
framework: messenger: default_bus: sylius_refund_plugin.command_bus
This installation instruction assumes that you're using Symfony Flex. If you don't, take a look at the legacy installation instruction. However, we strongly encourage you to use Symfony Flex, it's much quicker! :)
Refund Plugin is strongly based on both commands and events. Let's take RefundUnitsAction as an example. The whole process consists of following steps:
- Getting data from request
- Create a Command and fill it with data
- Dispatch Command
- Handle Command
- Fire Event
- Catch Event in Listener class
Using command pattern and events make each step independent which means that providing custom implementation of given part of refunding process doesn't affect any other step.
Apart from Events and Commands Refund Plugin is also based on mechanisms derived from core Sylius bundles such as:
Configuration of all elements mentioned above can be found and customized in
If you think that you have found a security issue, please do not use the issue tracker and do not post it publicly.
Instead, all security issues must be sent to