---
title: "ICEPAY"
description: "ICEPAY is a Dutch payment gateway supporting a wide range of payment methods popular in the Netherlands, Belgium, and surrounding markets — including iDEAL..."
url: "https://docs.j2commerce.com/v6/payment-methods/icepay"
markdown_url: "https://docs.j2commerce.com/v6/payment-methods/icepay.md"
last_updated: "2026-10-23T02:33:38+00:00"
version: "J2Commerce 6"
breadcrumbs:
  - title: "Home"
    url: "https://docs.j2commerce.com/"
  - title: "J2Commerce 6"
    url: "https://docs.j2commerce.com/v6"
  - title: "Payment Methods"
    url: "https://docs.j2commerce.com/v6/payment-methods"
  - title: "ICEPAY"
    url: "https://docs.j2commerce.com/v6/payment-methods/icepay"
---

# ICEPAY

ICEPAY is a Dutch payment gateway supporting a wide range of payment methods popular in the Netherlands, Belgium, and surrounding markets — including iDEAL, Bancontact/MisterCash, Credit Card, PayPal, SOFORT/DirecteBank, Giropay, PaySafeCard, and more. This plugin integrates ICEPAY's redirect checkout flow with server-to-server postback order updates.

## Prerequisites

- J2Commerce installed and active
- An active ICEPAY merchant account — [sign up at icepay.com](https://www.icepay.com)
- PHP **SOAP** extension enabled on your server (required by the ICEPAY SDK)
- PHP 8.1 or later

> **Joomla SOAP Check:** To verify SOAP is enabled, go to **System** -> **System Information** -> **PHP Information** and search for `soap`. If you see `SOAP` with status `enabled`, you are ready to proceed.

## Purchase and download

This plugin is a separate add-on available from the [Icepay](https://www.j2commerce.com/extensions/payment-plugins/icepay). It is not included with the core J2Commerce 6 component.

1. Go to the [J2Commerce website](https://www.j2commerce.com/extensions) and locate **IcePay**.
2. Add it to your cart and complete checkout.
3. Go to **My Downloads** under your account profile and find the plugin.
4. Click **Available Versions** -> **View Files** -> **Download Now** to download the ZIP file.

## Install the plugin

In the Joomla Administrator, go to **System** -> **Install** -> **Extensions**.

Upload the `plg_j2commerce_payment_icepay.zip` file.

![Joomla System Dashboard with System in the sidebar and the Install Extensions link highlighted to open the extension installer](https://docs.j2commerce.com/images/docs/shared/install.webp)

## Enable the Plugin

Once you have installed the App, you will need to enable it. There are **two** ways you can access the App.

**Option A:** Go to the **J2Commerce** icon at the top right corner **-> Setup -> Payment Methods**

**Option B:** Go to **Components** on the left sidebar **-> J2Commerce -> Dashboard** **-> Setup** **-> Payment Methods**

![J2Commerce Payment Methods list reached via Components > J2Commerce and the J2Commerce menu's Setup > Payment Methods, both highlighted, with 2Checkout listed](https://docs.j2commerce.com/images/docs/shared/culqi.webp)

To help you narrow down the list, you can do a search for **IcePay**, click the **X,** and it will turn into a green checkmark. It is now enabled and ready for setup.

![Joomla Payment Methods list searched for "ice pay", with the search box and the ICEPAY row's green enabled checkmark highlighted](https://docs.j2commerce.com/images/docs/shared/icepay-enable.webp)

## Configuration

> **Tip:** Click the **Toggle Inline Help** button in the toolbar and the app will show a description below each field as you configure it.

![ICEPAY plugin settings with Toggle Inline Help highlighted and help text under Display Name (language key): Name to display to customers during checkout](https://docs.j2commerce.com/images/docs/shared/icepay-toggle.webp)

### Display Settings

![ICEPAY plugin settings top: Display Name Credit Card (Ice Pay) and an empty Display Image selector with Select button, under the payment_icepay heading](https://docs.j2commerce.com/images/docs/shared/icepay-display.webp)

**Display Name:** The name shown to shoppers at checkout — e.g., "Pay with Klarna"

**Display Image:** Optional logo or badge shown next to the payment option

### Credentials

![ICEPAY plugin credentials: Use Sandbox set to No, with empty Live Merchant ID, Live Secret Code, Sandbox Merchant ID and Sandbox Secret Code fields](https://docs.j2commerce.com/images/docs/shared/icepay-api.webp)

### Sandbox Mode

**Use Sandbox:** Enable to use test/sandbox credentials instead of live credentials.

**Merchant ID (Sandbox):** Sandbox Merchant ID — only used when Sandbox is enabled.

**Secret Code (Sandbox):** Sandbox secret code — only used when Sandbox is enabled.

When sandbox mode is on, the sandbox credentials are used automatically. Keep your live credentials in the main fields and sandbox credentials in the sandbox fields so switching between modes is instant.

**Postback URL:** Read-only. Copy this URL into your ICEPAY merchant portal as the postback/notification URL.

![ICEPAY plugin settings: read-only grey Postback URL field (value empty in the capture)](https://docs.j2commerce.com/images/docs/shared/icepay-payback.webp)

### Accepted Payment Methods

![ICEPAY plugin settings: Accepted Payment Methods multi-select with Klarna and Authorize.Net chosen](https://docs.j2commerce.com/images/docs/shared/icepay-cc.webp)

After entering your Merchant ID and Secret Code and saving the plugin, reload the edit page. The **Accepted Payment Methods** field will populate with the methods available on your ICEPAY account.

Select the methods you want to offer at checkout. If nothing is selected, all methods returned by ICEPAY are shown to customers.

> **iDEAL Bank Selection:** When a customer selects iDEAL at checkout, they are shown a list of Dutch banks (issuers) to choose from before being redirected to ICEPAY. This selection step is built into the checkout flow.

### Order Statuses

![ICEPAY plugin settings: Confirmed Payment Status Confirmed, Pending Payment Status Pending, Failed Payment Status Failed](https://docs.j2commerce.com/images/docs/shared/icepay-status.webp)

**Confirmed Payment Status:** Status applied when ICEPAY reports a successful payment.

**Pending Payment Status:** Status applied when ICEPAY reports an open/pending payment.

**Failed Payment Status:** Status applied when ICEPAY reports an error or the customer cancels.

> **Info:** NOTE: If the status you want isn't listed in the dropdown menu, you can create a new one by going to **J2Commerce -> Setup -> Order Statuses**

![J2Commerce Order Statuses list with the J2Commerce menu open at the right, highlighting Setup and its Order Statuses item](https://docs.j2commerce.com/images/docs/shared/shipstation-order-status2-1.webp)

### Surcharge

![ICEPAY plugin settings: empty Surcharge Name, Percent and Fixed fields, Surcharge Tax Class set to Not Taxable](https://docs.j2commerce.com/images/docs/shared/icepay-surcharge.webp)

Add an optional payment surcharge — useful if your payment processor charges a transaction fee you wish to pass on.

**Surcharge Name:** Label shown on the order summary (e.g. "Payment fee").

**Surcharge Percent:** Percentage of the order total added as a fee (e.g. `2.5` for 2.5%).

**Surcharge Fixed Amount:** Fixed amount added as a fee regardless of order total.

**Surcharge Tax Class:** Optional tax class applied to the surcharge.

Both percent and fixed surcharges can be combined — they are added together.

### Geo Zone Restriction

![ICEPAY plugin settings: Geo Zone Restriction drop-down set to All](https://docs.j2commerce.com/images/docs/shared/icepay-geozone.webp)

Set a **Geo Zone** to limit this payment method to customers in specific countries or regions. Leave blank to make it available worldwide.

### Custom Messages

![ICEPAY plugin settings: Thank You Article selector plus empty On Selection, On Before Payment, On After Payment, On Cancel and On Error text fields](https://docs.j2commerce.com/images/docs/shared/icepay-messages.webp)

**Article (Thank-You Message):** Select a Joomla article to display as extra content on the post-payment confirmation page. This is shown in addition to the **On After Payment** text.

**On Selection Text:** Shown when the customer selects ICEPAY at checkout (above the issuer selector).

**On Before Payment Text:** Shown on the redirect page before the customer clicks the pay button.

**On After Payment Text:** Shown after a successful payment return.

**On Cancel Text:** Shown if the customer cancels the payment at ICEPAY.

**On Error Text:** Shown if a payment error occurs.

### Other Settings

![ICEPAY plugin settings: Button Text COM_J2COMMERCE_PLACE_ORDER, Admin Email Group Super Users, Debug Mode No, Template Style Default](https://docs.j2commerce.com/images/docs/shared/icepay-debug.webp)

**Button Text:** Label on the pay button. Use a J2Commerce language key or plain text.

**Admin Email Group:** User group notified by email when a payment postback validation fails.

**Debug Mode:** Logs ICEPAY events to `administrator/logs/payment_icepay.php`. Disable in production.

## Checkout Flow

The ICEPAY checkout follows a two-step flow within the J2Commerce checkout:

### Step 1: Method and Issuer Selection

On the payment step, the customer sees a list of the payment methods you have enabled. For iDEAL, they also select their bank (issuer) from radio buttons. Other methods (Bancontact, Credit Card, PayPal, etc.) have no issuer sub-selection.

The customer selects a method (and issuer for iDEAL), then clicks **Place Order** (or your configured button text) to proceed.

### Step 2: ICEPAY Redirect

After the customer's selection is submitted, J2Commerce creates an ICEPAY payment request and redirects the customer to the ICEPAY payment screen. The customer completes payment on ICEPAY's hosted page.

### Step 3: Return and Postback

After payment, ICEPAY performs two operations:

1. **Server-to-server postback** — ICEPAY calls your store's postback URL in the background, sending a signed notification. J2Commerce validates the SHA1 signature, then updates the order status automatically.
2. **Browser redirect** — The customer is returned to your store and sees the on-after-payment message and optional article.

Because the postback is server-to-server, order status updates reliably even if the customer closes their browser before being redirected back.

## Configuring the Postback URL

Your ICEPAY merchant portal must have the correct postback URL configured. Copy the read-only **Postback URL** shown in the plugin settings and paste it into your ICEPAY merchant portal under **Notification URL** or **Postback URL** settings.

The URL format is:

```
https://yoursite.com/index.php?option=com_j2commerce&task=checkout.confirmPayment&orderpayment_type=payment_icepay&paction=process
```

> **Do Not Modify the Postback URL:** The postback URL must be used exactly as shown. Routing the URL through a URL rewriter or adding extra parameters will break the SHA1 signature validation.

## ICEPAY Status Codes

J2Commerce maps ICEPAY status codes to your configured order statuses:

| ICEPAY Status | Meaning | J2Commerce Status Applied |
| --- | --- | --- |
| `SUCCESS` | Payment confirmed | Confirmed Payment Status |
| `OPEN` | Payment pending | Pending Payment Status |
| `ERROR` | Payment failed | Failed Payment Status |
| `REFUND` | Refund processed | Failed Payment Status (with note) |
| `CHARGEBACK` | Chargeback received | Failed Payment Status (with note) |

## Troubleshooting

### "No payment methods are available for your country or currency"

**Cause:** Either your Merchant ID and Secret Code have not been saved yet, or ICEPAY returned no methods matching the customer's billing country or the store currency.

**Solution:**

1. Verify your Merchant ID and Secret Code are correct.
2. Save the plugin and reload the settings page.
3. Confirm the **Accepted Payment Methods** list is populated.
4. Ensure your store currency is supported by ICEPAY.

### Orders Not Updating After Payment

**Cause:** The postback URL may not be configured in the ICEPAY merchant portal, or the server-to-server request is being blocked by a firewall or security plugin.

**Solution:**

1. Check that the Postback URL in your ICEPAY portal matches the URL shown in the plugin settings exactly.
2. Enable **Debug Mode** and check `administrator/logs/payment_icepay.php` for error messages.
3. Verify your server is reachable from external systems (no firewall blocking incoming POST requests).

### Plugin Settings Page Shows "Fill Merchant ID and Secret Code First"

**Cause:** The payment methods list is fetched live from ICEPAY. The credentials must be saved before the list can load.

**Solution:** Enter your Merchant ID and Secret Code, click **Save & Close**, then reopen the plugin settings. The methods list will populate on the next page load.

### PHP SOAP Extension Not Available

**Cause:** The ICEPAY SDK requires PHP's SOAP extension, which is disabled on some hosting environments.

**Solution:** Contact your hosting provider and ask them to enable the `php_soap` extension. On cPanel-based hosts, this can often be enabled under **PHP Extensions** in the PHP configuration panel.

### Debug Logging

Enable **Debug Mode** in the plugin settings to write detailed logs to `administrator/logs/payment_icepay.php`. The log includes:

- Postback receipt confirmations
- Signature validation results
- Order status transitions
- API errors

Disable debug mode in production to avoid filling disk space with log entries.
