---
title: "Opayo (Sage Pay) Card Payments"
description: "Opayo — formerly known as Sage Pay and now part of Elavon — is one of the most widely trusted card payment providers in the UK and Ireland."
url: "https://docs.j2commerce.com/v6/payment-methods/payment_opayo"
markdown_url: "https://docs.j2commerce.com/v6/payment-methods/payment_opayo.md"
last_updated: "2026-10-23T02:23:27+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: "Opayo (Sage Pay) Card Payments"
    url: "https://docs.j2commerce.com/v6/payment-methods/payment_opayo"
---

# Opayo (Sage Pay) Card Payments

Opayo — formerly known as Sage Pay and now part of Elavon — is one of the most widely trusted card payment providers in the UK and Ireland. The Opayo plugin connects your J2Commerce store to the Opayo Pi API, letting customers pay by credit or debit card without leaving your website. Card details are handled entirely within secure, Opayo-controlled fields, so your server never processes raw card numbers.

Key things the plugin does for you:

- Accepts Visa, Mastercard, Amex, and other cards accepted by your Opayo account
- Performs 3D Secure 2 (SCA) authentication — required for European card payments — automatically
- Lets logged-in customers save their card for faster repeat checkout
- Supports a **Deferred** transaction mode, where you authorize a payment at checkout but only collect the funds when you choose to release from the order screen
- Gives you **Void**, **Capture**, **Abort**, and **Refund** buttons directly on the J2Commerce order admin screen

> **Info:** Opayo Pi is available to **UK and Ireland merchants only**. Your Opayo account must be registered with a UK or Irish business. Your store must also be served over **HTTPS** — Opayo will not process payments on an unencrypted connection.

## Requirements

- Joomla 6.x
- J2Commerce 6.x
- PHP 8.3 or later
- An active Opayo (Elavon) merchant account — register at [opayo.eu.elavon.com](https://opayo.eu.elavon.com)
- Your store must be served over HTTPS

## Get Your Opayo Credentials

Before configuring the plugin you need three pieces of information from your Opayo account. These come from the **MyOpayo** portal at [admin.opayo.eu.elavon.com](https://admin.opayo.eu.elavon.com).

**Vendor Name:** Your Opayo merchant identifier. Found in MyOpayo under **Administrator** -> **My Account Details**.

**Integration Key and Integration Password:** Generated in MyOpayo under **Create API Credentials** (or **API credentials** depending on your account version). The integration key is a UUID; the integration password is a long alphanumeric string. Keep the integration password secret — treat it like a password and never share it.

For testing, Opayo provides a sandbox environment with its own set of credentials. You can register for sandbox access at no cost, independently of a live account.

## Purchase and Download

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

1. Go to the [J2Commerce website](https://www.j2commerce.com/extensions) and locate **Opayo Payment**.
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.

## Installing the Plugin

You can install this **Opayo Payment** plugin using the Joomla installer. The following steps help you with a successful installation.

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

Upload the `payment_opayo.zip` file or use the Install from URL option.

![Joomla System Dashboard with System in the sidebar and the Install section's Extensions link highlighted, used to upload a plugin package](https://docs.j2commerce.com/images/docs/shared/autho-install5.webp)

## Enable the Plugin

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

**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**

![Payment Methods list with a 1 item(s) published message, opened through Components and the J2Commerce menu: Setup and Payment Methods highlighted](https://docs.j2commerce.com/images/docs/shared/autho-methods.webp)

Look for **Opayo Payment**, 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 "opayo", with the Opayo Payment row's Status checkmark highlighted as enabled](https://docs.j2commerce.com/images/docs/shared/opayo-enable.webp)

## Configure the Plugin

Click the **Opayo Payment** title to open its settings.

> **Tip:** Click the **Toggle Inline Help** button at the top of any plugin settings screen to show a description below each field.

![Opayo Payment plugin toolbar with Toggle Inline Help highlighted and help text shown under the Display Name field, Status Enabled](https://docs.j2commerce.com/images/docs/shared/opayo-toggle.webp)

### Appearance

![Opayo Payment plugin settings: Display Name Credit/Debit Card and the Opayo by Elavon logo as Display Image](https://docs.j2commerce.com/images/docs/shared/opayo-display.webp)

**Display Name:** The label shown to customers at checkout. Default is `Credit/Debit Card`. Change this to something like "Pay by card (Opayo)" if you prefer to show the brand name.

**Display Image:** Optional logo or card-type icon displayed beside the payment method name at checkout.

### Integration Mode & Transaction Type

![Opayo plugin settings: Integration Mode Drop-in Checkout (recommended, SAQ-A) and Transaction Type Payment (Authorize + Capture)](https://docs.j2commerce.com/images/docs/shared/opayo-transaction.webp)

**Integration Mode:** Controls how the card entry form works.

- **Drop-in Checkout (recommended, SAQ-A):** Opayo injects its own hosted card fields directly into your checkout page. Card data never passes through your server.
- **Own Form (opayo.js, SAQ-A-EP):** Your checkout page contains the card entry fields, but opayo.js tokenizes the data in the browser before submission. Card data still does not reach your server.

The Drop-in mode is recommended for most stores because it gives you the lowest PCI compliance overhead.

**Transaction Type:** Controls whether funds are collected immediately or held for manual release.

**Payment (Authorize + Capture):** Funds are reserved and collected from the customer's card in one step at checkout.

***Use when:*** Suitable for most stores — goods or digital products dispatched immediately.

**Deferred (Authorize only):** Funds are reserved on the customer's card at checkout but not collected. You manually capture them from the order admin screen when you are ready to dispatch.

***Use when:*** Useful if you want to verify stock or review the order before charging the customer.

When **Deferred** is selected, an additional **Deferred Authorization Status** setting appears (see Order Statuses below).

### Credentials

![Opayo plugin sandbox credentials: Sandbox / Test Mode Yes, Sandbox Vendor Name sandbox, with empty Integration Key and Integration Password fields](https://docs.j2commerce.com/images/docs/shared/opayo-sandbox.webp)

**Sandbox / Test Mode:** When set to **Yes**, all transactions are sent to the Opayo sandbox environment and no real money is moved. Default is **No** (live mode on).

Switch this to **Yes** during initial setup and testing. A warning banner will appear on the J2Commerce dashboard while sandbox mode is active as a reminder to switch it off before going live.

**Sandbox Vendor Name:** Your Opayo sandbox vendor name. Defaults to `sandbox`.

**Sandbox Integration Key:** Your sandbox integration key from the Opayo test portal.

**Sandbox Integration Password:** Your sandbox integration password.

> **Note:** Remember to turn **Sandbox / Test Mode** to **No** before accepting real orders. Transactions processed in sandbox mode never charge the customer's real card.

### Live Credentials

These fields are shown when **Sandbox / Test Mode** is **No**.

**Vendor Name:** Your Opayo live vendor name. Found in MyOpayo under **Administrator** -> **My Account Details**.

**Integration Key:** Your live API integration key from MyOpayo.

**Integration Password:** Your live API integration password from MyOpayo. This field is masked for security.

### 3D Secure (SCA)

![Opayo plugin 3D Secure settings: Apply 3D Secure and Apply AVS/CVC Check both set to Use MyOpayo Setting, with an empty 3DS Notification Base URL (testing) field](https://docs.j2commerce.com/images/docs/shared/opayo-3d-avs.webp)

3D Secure 2 (3DS2) is the strong customer authentication mechanism required for most European card payments. The plugin handles the full 3DS flow automatically, including showing a bank verification challenge to the customer when required.

**Apply 3D Secure:** Controls whether 3DS is applied to transactions.

- **Use MyOpayo Setting:** Follows whatever 3DS rule you have configured in your Opayo account. This is the default and recommended setting.
- **Force 3DS:** Always requires 3DS authentication, even for low-risk transactions that might otherwise be exempt.
- **Disable (SCA exemption required):** Skips 3DS entirely. Only use this if your account has an active SCA exemption — enabling it without proper exemptions will cause transactions to fail in the EU.

**3DS Notification Base URL (testing):** Leave this blank in production. If you are testing 3DS on a local development server that is not publicly accessible (e.g., `localhost`), enter the public HTTPS address of a tunnel tool here so Opayo can send the 3DS callback to a reachable URL.

**Apply AVS/CVC Check:** Controls address verification (AVS) and card security code (CVC) fraud checks.

- **Use MyOpayo Setting:** Uses the fraud check rules configured in your Opayo account. Recommended.
- **Force Check:** Always performs AVS/CVC checks.
- **Disable:** Skips AVS/CVC checks.
- **Force (Ignore Rules):** Forces checks but ignores any rule-based results (advanced use only).

### Saved Cards & Style

![Opayo plugin settings: Allow Saved Cards set to Yes and Template Style set to Default](https://docs.j2commerce.com/images/docs/shared/opayo-cc.webp)

**Allow Saved Cards:** When set to **Yes** (default), logged-in customers can choose to save their card during checkout. On future orders they can select the saved card instead of re-entering their details. Saved card tokens are also used for subscription renewal payments.

Set this to **No** if you do not want to store card tokens or if you do not use the Subscriptions add-on.

**Template Style:** Choose between **Bootstrap 5** and **UIkit** to match the front-end template framework your Joomla site uses. Select the option that matches your active template.

### Order Statuses

![Opayo plugin order statuses: Confirmed, Change Status on Refund Yes with Refunded, Change Status on Void/Cancel Yes with Cancelled](https://docs.j2commerce.com/images/docs/shared/opayo-status.webp)

These settings control the order status J2Commerce assigns at each stage of the payment lifecycle.

**Confirmed Order Status (on payment):** Status applied when a Payment transaction is confirmed successfully.

**Change Status on Refund:** Toggle on to update the order status automatically when you issue a refund.

- **Refund Order Status:** Status to set when a refund is processed (only shown when Change Status on Refund is Yes).

**Change Status on Void/Cancel:** Toggle on to update the order status automatically when you void or abort a payment.

- **Cancel Order Status:** Status to set when a payment is voided or aborted (only shown when Change Status on Void/Cancel is Yes).

> **Tip:** If the status you want is not listed in a dropdown, create a new one first 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

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

Add an optional handling fee when customers choose Opayo as their payment method.

**Surcharge Name:** The label shown to the customer for the fee (for example, "Card processing fee").

**Surcharge Percent:** Percentage of the order total to add as a fee. Enter `1.5` for 1.5%.

**Surcharge Fixed:** A fixed amount to add regardless of order size.

**Surcharge Tax Class:** Tax profile to apply to the surcharge amount.

Leave both percent and fixed fields empty to charge no surcharge.

### GeoZone and Order Limits

![Opayo plugin restrictions: Geo Zone Restriction set to All, with empty Minimum Subtotal and Maximum Subtotal fields](https://docs.j2commerce.com/images/docs/shared/opayo-geozone.webp)

**GeoZone Restriction:** Limit Opayo to customers in a specific geozone — leave blank to allow all locations.

**Minimum Order Subtotal:** Hide Opayo as a payment option when the cart subtotal is below this amount.

**Maximum Order Subtotal:** Hide Opayo when the cart subtotal is above this amount.

### Custom Messages

![Opayo plugin message fields: Thank You Article picker (Select an Article), and empty On Selection, Before Payment, After Payment, On Error and Order Cancelled text boxes](https://docs.j2commerce.com/images/docs/shared/opayo-text.webp)

**Thank-You Article:** Optional Joomla article to display on the order confirmation page after a successful payment.

**On Selection Text:** Displayed when the customer selects Opayo at the checkout payment step.

**Before Payment Text:** Displayed just above the Pay button, before the customer submits their card details.

**After Payment Text:** Displayed on the confirmation page after the payment succeeds.

**On Error Text:** Displayed when an error occurs during the payment.

**On Canceled Payment:** Displayed when the payment is abandoned or canceled.

### Dashboard Icon

![Opayo plugin settings: Show Dashboard Icon Yes, an empty Icon Label field, and Debug Mode set to Never](https://docs.j2commerce.com/images/docs/shared/opayo-icon.webp)

**Show Dashboard Icon:** Add a quick-access icon for Opayo to the J2Commerce dashboard.

- **Icon Label:** Label for the icon. Defaults to "Opayo Payment" if left blank.

### Debug Mode

**Debug Mode:** When set to **Yes**, detailed API requests and responses are written to the Joomla log file at `administrator/logs/`. Default is **No**.

Only enable this when diagnosing a specific problem. Disable it on live sites — debug logs can contain sensitive payment data.

## How Checkout Works for Customers

The entire checkout flow happens on your website — customers are never redirected to Opayo.

The customer adds items to the cart and proceeds to checkout.

On the payment step, **Credit/Debit Card** (or your custom display name) appears in the list of payment options.

If they have previously saved a card, their saved cards are listed as radio button options. They can select a saved card or choose **Use a New Card**.

When using a new card, the Opayo card entry form appears inline on the page. The card number, expiry date, and CVC are entered directly into Opayo-hosted fields — these fields look like part of your checkout but are controlled by Opayo's servers.

If they choose, logged-in customers can tick **Save this card for future purchases**.

The customer clicks **Place Order**.

If 3D Secure authentication is required, a verification challenge from the customer's bank appears in an inline panel on the page. The customer completes the verification step (entering a one-time code or confirming in their banking app).

After the card is authorized, the customer is taken to the order confirmation page showing their order reference and a confirmation message.

## Managing Orders: Void, Capture, Abort, and Refund

After a payment is processed, the order admin screen in J2Commerce displays action buttons depending on the transaction type and its current status.

To access these controls:

1. Go to **J2Commerce** -> **Sales** -> **Orders**.
2. Open the relevant order.
3. Scroll to the payment section to see the available action buttons.

### Void a Payment

**When you can void:** On the same day as the payment, before it has settled to your bank. If a customer calls to cancel immediately after placing an order, voiding releases the authorization and no funds are moved.

Click **Void Payment** and confirm the prompt. A confirmation appears when the void succeeds.

> **Note:** Once a payment has settled (typically same or next business day), you can no longer void it. Use **Issue Refund** instead.

### Capture a Deferred Payment

**When this applies:** Only when you selected **Deferred (Authorize only)** as the Transaction Type. The customer's card is authorized at checkout but funds are not collected.

When you are ready to dispatch and collect the funds:

1. Open the order.
2. Click **Capture Payment** and confirm the prompt.

The funds are collected from the customer's card and the order status updates accordingly.

### Abort a Deferred Authorization

If you decide not to fulfill a deferred order (e.g., the item is out of stock), you can release the authorization without charging the customer.

1. Open the order.
2. Click **Abort (Release Deferred)** and confirm the prompt.

The authorization is released and the customer's card is not charged.

### Issue a Refund

Refunds can be issued after a payment has settled. You can refund the full amount or a partial amount.

1. Open the order in **J2Commerce** -> **Sales** -> **Orders**.
2. Click **Issue Refund**. A dialog box appears.
3. Choose **Full refund** (showing the full amount) or **Partial refund** and enter the amount you want to return.
4. Click **Process Refund** and confirm.

The refund is sent to Opayo and credited back to the customer's original payment card. Refunds typically appear on the customer's statement within 3–5 business days.

> **Info:** You cannot refund more than the original payment amount. The maximum refundable amount is displayed in the dialog. If the **Issue Refund** button does not appear, the payment may not yet have settled — try again after the next business day, or use **Void Payment** if the same-day window is still open.

## Subscriptions and Saved Cards

When **Allow Saved Cards** is enabled and the J2Commerce Subscriptions add-on is installed, Opayo can process subscription renewal payments automatically using the card token saved from the customer's initial checkout.

- The customer provides their card once at the first checkout.
- On each renewal date, J2Commerce instructs Opayo to charge the renewal amount against the stored card token.
- No further action is needed from the customer.

If you do not use subscriptions, saved cards still benefit regular returning customers — they can pay faster by selecting a saved card without re-entering their details.

## Going Live Checklist

Before accepting real payments, work through this checklist.

1. Create and verify a live Opayo merchant account at [opayo.eu.elavon.com](https://opayo.eu.elavon.com).
2. Generate live API credentials in MyOpayo under **Create API Credentials**.
3. In the plugin settings, set **Sandbox / Test Mode** to **No**.
4. Fill in **Vendor Name**, **Integration Key**, and **Integration Password** with your live credentials.
5. Choose your preferred **Integration Mode** (Drop-in is recommended).
6. Set **Apply 3D Secure** to **Use MyOpayo Setting** unless you have a specific reason to override it.
7. Set the **Transaction Type** appropriate to your business — **Payment** for most stores.
8. Click **Save**.
9. Place a small live test order using a real card to confirm the full flow works end to end, including the 3DS step if prompted.
10. Confirm the order reaches your expected confirmed status and that the test payment appears in your Opayo reporting.

> **Info:** A warning banner appears on the J2Commerce dashboard while **Sandbox / Test Mode** is active. If you see this banner after going live, return to the plugin settings and confirm the mode is set to **No**.

## Troubleshooting

### Card payment fails at checkout with "Could not communicate with Opayo"

**Cause:** The Integration Key or Integration Password is incorrect, or the Vendor Name does not match the credentials.

**Solution:**

1. Go to **J2Commerce** -> **Setup** -> **Payment Methods** -> **Opayo Payment**.
2. Verify that **Vendor Name**, **Integration Key**, and **Integration Password** exactly match the values shown in MyOpayo. They are case-sensitive.
3. Confirm that **Sandbox / Test Mode** matches the environment your credentials belong to — sandbox credentials will fail in live mode and vice versa.
4. Click **Save** and retry.

### The card entry form does not appear at checkout

**Cause:** JavaScript on the page is blocked or the Opayo library failed to load. This can also happen if the store is not served over HTTPS.

**Solution:**

1. Confirm your store URL uses `https://`. Open your browser's developer tools and check the Console tab for errors.
2. Disable any aggressive content security policy (CSP) or ad-blocking extensions in the browser and retry.
3. Enable **Debug Mode** in the plugin settings and check the Joomla logs for any API communication errors.

### The 3DS challenge does not appear, or the customer is stuck after completing it

**Cause:** The Opayo 3DS callback URL is not reachable from Opayo's servers. This usually happens on a local development server or a staging site behind a firewall.

**Solution:**

1. Confirm your site is publicly accessible over HTTPS.
2. If you are testing locally, enter your public tunnel URL (e.g., from a tool like ngrok) in the **3DS Notification Base URL (testing)** field in the plugin settings.
3. Leave that field blank on a live production site.

### "Payment could not be processed" error after the 3DS step

**Cause:** The 3D Secure authentication was declined by the customer's bank, or the session expired during the challenge.

**Solution:**

1. Ask the customer to retry checkout. They should use the same card (or a different one) and complete the bank verification step promptly without navigating away.
2. If the problem recurs with multiple cards, check whether **Apply 3D Secure** is set to **Disable** without an active SCA exemption on your Opayo account — re-enable it or contact Opayo support.

### The Capture button does not appear on the order

**Cause:** The transaction type was set to **Payment** (not **Deferred**), so there is nothing to capture — the funds were already collected at checkout.

**Solution:**

If you want to authorize and capture separately, update the **Transaction Type** to **Deferred** in the plugin settings. Note that this only affects new orders placed after the change — existing paid orders cannot be changed to deferred retrospectively.

### The Void button is missing or grayed out

**Cause:** The payment has already settled. Voids can only be performed on the same day as the transaction, before the funds are transferred to your account.

**Solution:**

Use **Issue Refund** instead. Settled payments must be refunded, not voided.

### Sandbox warning banner appears on the dashboard after going live

**Cause:** **Sandbox / Test Mode** is still set to **Yes** in the plugin settings.

**Solution:**

1. Go to **J2Commerce** -> **Setup** -> **Payment Methods** -> **Opayo Payment**.
2. Set **Sandbox / Test Mode** to **No**.
3. Confirm that your live **Vendor Name**, **Integration Key**, and **Integration Password** are filled in.
4. Click **Save**. The warning banner will disappear.
