Sylius
Accept ICEPAY payments in your Sylius store using the ICEPAY payment plugin.
The ICEPAY for Sylius plugin connects your Sylius store to ICEPAY and adds ICEPAY as a payment option during checkout.
This guide explains how to install the plugin, connect your ICEPAY merchant, configure the payment method, and test your checkout before going live.
Requirements
Section titled “Requirements”Before installing the plugin, make sure your project meets the following requirements:
- Sylius 1.13
- PHP 8.1 or higher
- Composer
- An ICEPAY Account with access to a merchant
Install the plugin
Section titled “Install the plugin”The Sylius plugin is installed directly from the ICEPAY GitHub repository using Composer.
-
Add the ICEPAY repository
Add the ICEPAY Sylius repository to the
repositoriessection of your project’scomposer.json:{"repositories": [{"type": "vcs","url": "https://github.com/ICEPAY/ICEPAY-for-Sylius"}]} -
Install the plugin
From the root directory of your Sylius project, run:
Terminal window composer require icepay/icepay-for-sylius:dev-master -
Register the plugin
Add the ICEPAY plugin to
config/bundles.php:<?phpreturn [// ...SyliusIcepayPlugin\SyliusIcepayPlugin::class => ['all' => true],]; -
Clear the cache
Clear the Symfony cache after registering the plugin:
Terminal window php bin/console cache:clear
Configure ICEPAY
Section titled “Configure ICEPAY”After installing the plugin, create an ICEPAY payment method in the Sylius Admin.
-
Open the payment methods
Sign in to the Sylius Admin and go to Configuration → Payment methods.
-
Create a payment method
Create a new payment method and select the ICEPAY gateway.
-
Enter your merchant credentials
Enter the Merchant ID and Merchant Secret of the ICEPAY merchant you want to connect.
You can find these credentials in the ICEPAY Portal by opening Merchants and selecting your merchant.
-
Assign the payment method
Configure the payment method for the channels where you want ICEPAY to be available.
-
Save the payment method
Save the configuration and verify that ICEPAY is available during checkout.
Supported payment methods
Section titled “Supported payment methods”The ICEPAY for Sylius plugin currently supports:
- iDEAL | Wero
- Cards
- Bancontact
- PayPal
- Online Überweisen
- EPS
The payment methods available to your customers also depend on the payment methods enabled for your ICEPAY merchant.
Enable refunds
Section titled “Enable refunds”If you want to process refunds through ICEPAY from Sylius, an additional plugin configuration must be imported.
Add the following import to config/packages/_sylius.yaml:
imports: # ... - { resource: "@SyliusIcepayPlugin/config/config.yml" }Then clear the Symfony cache:
php bin/console cache:clearTest your integration
Section titled “Test your integration”Before accepting real payments, place at least one order while your ICEPAY merchant is in Test mode.
-
Add a product to your cart
Go through your Sylius storefront as a customer and add a product to the cart.
-
Proceed to checkout
Complete the required customer and shipping information and select ICEPAY as the payment method.
-
Place the order
Confirm the order and continue to the ICEPAY Payment Page.
-
Complete the test payment
In Test mode, select the payment result you want to simulate.
-
Check the Sylius order
Open the corresponding order in the Sylius Admin and verify that the payment and order statuses have been updated correctly.
-
Check the payment in the ICEPAY Portal
Open the corresponding test payment in the ICEPAY Portal and verify that its status matches the payment in Sylius.
How payments work
Section titled “How payments work”Once the plugin is installed and configured, the payment flow is handled automatically.
-
The customer places an order
The customer selects ICEPAY during the Sylius checkout and confirms the order.
-
The payment is created
The plugin creates the payment with ICEPAY using the Sylius order information.
-
The customer completes the payment
The customer is redirected to the ICEPAY Payment Page to complete the payment.
-
The plugin updates the order and the customer can return
The plugin processes the payment update and updates the Sylius payment and order state. The customer can also return to your Sylius store after the payment flow.
You do not need to build the ICEPAY payment creation and redirect flow yourself when using the Sylius plugin.
Payment updates and customer redirects happen independently and can arrive in either order. Use the server-side payment update to determine the payment result.
Refund a payment
Section titled “Refund a payment”If refund support has been enabled using the additional configuration described above, payments can be refunded through the ICEPAY integration.
-
Open the order
Open the corresponding order in the Sylius Admin.
-
Locate the payment
Find the ICEPAY payment associated with the order.
-
Initiate the refund
Use the available refund action to submit the refund through ICEPAY.
-
Verify the result
Check the payment in both Sylius and the ICEPAY Portal to confirm that the refund was processed successfully.
The ICEPAY Sylius plugin supports refunds when the refund configuration has been imported.
Go live
Section titled “Go live”Once you’ve successfully tested the integration, you can prepare your store for real payments.
-
Verify your checkout
Make sure ICEPAY appears correctly during checkout and your test orders receive the expected payment and order statuses.
-
Submit your merchant for approval
Your ICEPAY merchant must be approved before it can process real payments.
-
Switch your merchant to Live mode
Once approved, change the merchant from Test mode to Live mode in the ICEPAY Portal.
-
Place a final order
We recommend placing a small live order to verify the complete payment flow.
Prepare to process live payments.
Update the plugin
Section titled “Update the plugin”Because the plugin is currently installed from the master branch, test updates carefully before deploying them to production.
Update the ICEPAY plugin using Composer:
composer update icepay/icepay-for-syliusphp bin/console cache:clearAfter updating, verify that:
- the ICEPAY bundle is still registered;
- your payment method configuration is still available;
- the payment method appears during checkout;
- test payments update the corresponding Sylius payment correctly;
- refunds still work if refund support is enabled.
Troubleshooting
Section titled “Troubleshooting”ICEPAY is not visible during checkout
Check that:
- The ICEPAY package is installed.
SyliusIcepayPlugin\SyliusIcepayPluginis registered inconfig/bundles.php.- The ICEPAY payment method is enabled in Configuration → Payment methods.
- The payment method is assigned to the correct Sylius channel.
- The correct ICEPAY merchant credentials are configured.
- Your Sylius and PHP versions meet the plugin requirements.
Clear the Symfony cache after changing the configuration:
php bin/console cache:clearIf ICEPAY still does not appear, check your Symfony logs for related errors.
The plugin does not load after installation
Confirm that Composer installed the plugin successfully:
composer show icepay/icepay-for-syliusMake sure the bundle is registered in config/bundles.php:
SyliusIcepayPlugin\SyliusIcepayPlugin::class => ['all' => true],Then clear the Symfony cache:
php bin/console cache:clearIf the application still cannot load the plugin, check the Symfony logs and confirm that your PHP and Sylius versions satisfy the plugin’s Composer requirements.
The payment remains pending
Open the corresponding order in the Sylius Admin and check its payment state.
Then open the payment in the ICEPAY Portal and compare its status with the Sylius payment.
If the payment has been completed in ICEPAY but the Sylius payment has not been updated, check your Symfony logs for errors related to the payment callback or status processing.
If the issue continues, contact the ICEPAY team with the order number, payment reference, Merchant ID, and approximate time of the payment.
Do not include your Merchant Secret in a support request.
The customer cannot complete the payment
Confirm that:
- The correct Merchant ID and Merchant Secret are configured.
- The ICEPAY merchant is enabled.
- The required payment method is enabled for the merchant.
- Your Sylius application can communicate with ICEPAY.
- Your application is accessible using its configured public URL.
Check the Symfony logs for errors generated while creating or processing the payment.
If an error is shown during checkout, include the error message when contacting the ICEPAY team.
The payment status in Sylius differs from the ICEPAY Portal
Open the Sylius order and review the associated payment state.
Use the payment details and server-side payment status in the ICEPAY Portal when investigating the payment.
If the statuses remain different, check your application logs for errors while processing the ICEPAY payment result.
Contact the ICEPAY team with the Sylius order number, payment reference, Merchant ID, and approximate time of the payment if the issue continues.
Refunds are not available
Make sure the ICEPAY refund configuration has been imported in config/packages/_sylius.yaml:
imports: # ... - { resource: "@SyliusIcepayPlugin/config/config.yml" }Clear the Symfony cache after adding the configuration:
php bin/console cache:clearAlso confirm that the original payment is eligible for a refund.
If the refund still cannot be processed, check the Symfony logs and contact the ICEPAY team with the order number, payment reference, Merchant ID, and any relevant error message.
The plugin does not work after an update
Confirm that your PHP, Sylius, and ICEPAY plugin versions are compatible.
Check that the plugin is still installed:
composer show icepay/icepay-for-syliusConfirm that the bundle is still registered in config/bundles.php, then clear the Symfony cache:
php bin/console cache:clearVerify your ICEPAY payment method configuration and test the checkout again.
If the issue continues, contact the ICEPAY team with the plugin version, Sylius version, PHP version, and any relevant error message.

