Payment Refund, Cancellation, and Reversal
The plugin handles reversals, cancellations, and refunds differently depending on the capture mode configured for your payment method. Understanding these differences is crucial for proper order management and customer service operations.
The behavior varies significantly between automatic and manual capture modes, with each offering distinct advantages and workflows for handling payment reversals.
Automatic Capture Mode
In the admin's panel, cancelling or refunding an order triggers a payment reversal.
This ensures that funds are either released (if not yet captured) or refunded (if already captured), keeping Sylius and Adyen in sync. In all cases, the payment in Sylius is already completed, whereas the state of its Adyen counterpart remains undetermined.
How it works for a new order
This path applies if the payment was authorized but not yet captured at Adyen.
Cancel the order via the show page.

Sylius sends a reversal request to Adyen.
Payment enters the state
processing_reversal. No changes have been made to the main order payment state yet.
Adyen voids the authorization (no funds taken).
Sylius updates the payment state to
cancelled.
The order gets cancelled.

This path applies if the payment was already captured at Adyen.
Cancel the order via the show page.

Sylius sends a reversal request to Adyen.
Payment enters the state
processing_reversal. No changes have been made to the main order payment state yet.
Adyen refunds the captured funds to the shopper.
Sylius updates the payment state to
refundedand creates a refund payment.
The order gets cancelled.

How it works for a fulfilled order
This path applies if the payment was authorized but not yet captured at Adyen.
Refund the order via the show page.

Sylius sends a reversal request to Adyen.
Payment enters the state
processing_reversal. No changes have been made to the main order payment state yet.
Adyen voids the authorization (no funds taken).
Sylius updates the payment state to
cancelled.
The order's payment state gets cancelled.

This path applies if the payment was already captured at Adyen.
Refund the order via the show page.

Sylius sends a reversal request to Adyen.
Payment enters the state
processing_reversal. No changes have been made to the main order payment state yet.
Adyen refunds the captured funds to the shopper.
Sylius updates the payment state to
refundedand creates a refund payment.
The order's payment state gets refunded, order stays as fulfilled.

Manual Capture Mode
Provides precise control over payment operations, with distinct actions for different payment states. Unlike automatic capture, manual mode does not use reversal logic.
Cancellation
Cancel the order via the order page

Sylius sends a cancellation request to Adyen
The payment state changes to processing

Adyen cancels the payment
Sylius updates the payment and order payment states to cancelled

Refunding
In the manual mode, partial refunds are possible as opposed to only full refunds in automatic mode. The SyliusRefundPlugin handles internal refunding logic.
In manual mode refunding is only available for payment in the paid state.
Access the refunds page through the order show page, by clicking the "Refunds" button

Click "Refund all" in the actions dropdown and then "Refund" right next to the dropdown

A new refund payment has been created for the whole amount of the order

Once the REFUND webhook event arrives, the refund payment transitions to Completed and the whole order gets marked as Refunded

Access the refunds page through the order show page, by clicking the "Refunds" button

Provide partial amount of the item to be refunded and click "Refund" at the bottom of the page

A new refund payment has been created and can be viewed on the order's show page, in the meanwhile an appropriate request has been sent to Adyen

Once the request has been processed and Adyen dispatches the REFUND webhook event, the refund payment transitions to completed

Refund the rest of the order

Again, a new refund payment gets created and awaits further processing

Once the REFUND event arrives the refund payment gets completed and since the whole order has been refunded, it gets marked as so

Last updated
Was this helpful?
