Skip to main content

VirtueMart

Official dpay.pl plugin for VirtueMart 3 (Joomla). Enables accepting online payments in your Joomla-based online store with the VirtueMart extension. Supports BLIK Level 0 (inline), credit cards, PayPal, and other payment methods.


Requirements

  • Joomla 3.x or 4.x
  • VirtueMart 3.x
  • PHP 7.4 or newer
  • Active account in the dpay.pl Dashboard with a configured Payment Point

Supported payment methods

  • BLIK (including BLIK Level 0 - inline)
  • Bank transfers (pay-by-link)
  • Credit cards (inline)
  • Google Pay and Apple Pay
  • PayPal
  • Paysafecard
  • Installments (BLIK BNPL)

Installation

  1. Download the plugin package (.zip file) from dpay.pl or from GitHub.
  2. Log in to the Joomla admin panel.
  3. Navigate to Extensions > Manage > Install.
  4. Select the Upload Package File tab and upload the downloaded .zip file.
  5. After the installation completes, the plugin will be automatically registered as a VirtueMart payment plugin.

Configuration

Step 1 - Prepare credentials in the dpay.pl Dashboard

  1. Log in to the dpay.pl Dashboard.
  2. Go to the Payment Points section.
  3. Create a new Payment Point or select an existing one.
  4. Take note of:
    • Service name (service_name) - unique name of your Payment Point
    • Secret hash (secret_hash) - key used for signing requests
  5. In the Payment Point settings, set the IPN URL to:
    https://your-store.com/index.php?option=com_virtuemart&view=pluginresponse&task=pluginnotification&pm=ID
    where ID is the payment method identifier in VirtueMart.
Important

The secret hash should be treated like a password. Never share it publicly or include it in frontend code.

Step 2 - Payment method configuration

  1. Navigate to VirtueMart > Payment Methods in the Joomla admin panel.
  2. Click New and create a new payment method.
  3. On the Payment Method Information tab, set:
    • Payment Name - name visible to the customer (e.g., Online payment - dpay.pl)
    • Payment Method - select VMPAYMENT_DPAY
  4. Go to the Configuration tab and fill in:
FieldDescription
Service NameService name from the dpay.pl Dashboard
Hash KeySecret hash from the dpay.pl Dashboard
PayPalEnable/disable PayPal payments
Credit CardEnable/disable card payments
PaysafecardEnable/disable Paysafecard payments
InstallmentEnable/disable installment payments
No BanksHide the bank list
BLIK ZeroEnable BLIK Level 0 (inline) payments
Apple PayEnable Apple Pay payments
Google PayEnable Google Pay payments
Card InlineEnable inline card form
Status PendingOrder status for pending payments (default: P)
Status SuccessOrder status after successful payment (default: C)
Status CancelOrder status after cancellation (default: X)
Min AmountMinimum order amount
Max AmountMaximum order amount
  1. Save the configuration.

Step 3 - Verification

  1. Place a test order in your store.
  2. Select dpay.pl as the payment method.
  3. Verify that you are correctly redirected to the payment page.
  4. After completing the payment, check whether the order status in VirtueMart has changed to Confirmed.

Refunds

The plugin does not support automatic refunds from the VirtueMart admin panel. Refunds should be processed directly from the dpay.pl Dashboard or via the dpay.pl API.


Status mapping

dpay.pl statusVirtueMart status
New transactionPending (P)
completedConfirmed (C)
CancelledCancelled (X)

Troubleshooting

Orders do not change status automatically

  • Verify that the IPN URL is correctly set in the dpay.pl Dashboard.
  • Make sure the IPN URL is publicly accessible (not blocked by a firewall or SEF routing).
  • Check VirtueMart logs in the admin panel.

Currency error

  • The plugin only supports the PLN currency (VirtueMart code: 114). Make sure the store currency is set to PLN.

Plugin does not appear at checkout

  • Verify that the payment method is published (Published).
  • Make sure you have not set overly restrictive amount limits (Min/Max Amount).

"BAD SIGNATURE" error in the logs

  • Make sure the Hash Key in the plugin configuration matches the hash in the dpay.pl Dashboard.

More information