Back

VibeFox DPO for WooCommerce — Help

Requirements

WordPress: 6.2 or later.

WooCommerce: 8.0 or later, installed and active. The plugin refuses to activate without it.

PHP: 8.0 or later.

DPO Pay account: you need the Company Token and the Service Type ID of your DPO merchant account. DPO issues them when your account is opened; get them from your DPO account manager or from dpogroup.com. DPO can also provide a test account with its own token and service type. There is no separate test server: DPO uses the same API address for test and live accounts, and the account is chosen by the token.

Currency: the store currency must be supported by your DPO account, for example USD, EUR, ZAR, KES, UGX, TZS, RWF, GHS, NGN, ZMW, XOF or AED. DPO accepts at most 2 decimal places, so order totals with 3 decimals (for example KWD 12.345) cannot be paid.

VibeFox license key: bought on vibefox.net. One key works on one domain.

Installation

1. In WordPress go to Plugins > Add New > Upload Plugin, choose the plugin ZIP file and click Install Now. You can also upload the wcp_dpo_pay folder to /wp-content/plugins/ by FTP.

2. Click Activate.

3. Open the settings: WooCommerce > Settings > Payments > DPO Pay > Manage, or click Settings under the plugin name on the Plugins page.

4. Enter your VibeFox license key in the license block at the top of the page and click Activate.

5. Enter the test and/or live Company Token and Service Type (see Configuration).

6. Send the push notification URL shown on the settings page to DPO support and ask them to set it for your account.

7. Turn on Enable/Disable. Place a test order in test mode, then untick Test mode to accept real payments.

Configuration

All settings are on one page: WooCommerce > Settings > Payments > DPO Pay. When the gateway is enabled but the Company Token or Service Type of the selected mode is empty, the page warns you that the payment method is hidden at checkout, and saving shows the same error. While test mode is on, the page shows Test mode is on: payments are created with the test account credentials.

General

Enable/Disable: Enable DPO Pay turns the payment method on or off. Default: off.

Title: the payment method name customers see at checkout. Default: DPO Pay.

Description: the text shown under the payment method at checkout. Default: Pay securely by card or mobile money on the DPO Pay payment page.

API credentials

DPO issues a Company Token and a Service Type ID for your merchant account, and separate ones for a test account. Get them from your DPO account manager or dpogroup.com.

Test mode: Use the test account credentials below. When on, new payments are created with the test Company Token and Service Type. Default: on. Untick it to accept real payments with the live credentials. Status checks of existing orders always use the account the payment was created with.

Test Company Token: the Company Token of your DPO test account.

Test Service Type: the numeric Service Type ID of your DPO test account.

Live Company Token: the Company Token of your live DPO merchant account.

Live Service Type: the numeric Service Type ID of your live DPO merchant account.

A Service Type must be a number. Any other value is not saved: the page shows an error and keeps the previous value. If you update from version 1.0, the credentials of that version are also copied into the test fields.

Payment notifications

The push notification tells your store at once that a payment has been made, even if the customer closes the browser after paying. This section shows the push notification URL. It looks like https://your-site/wc-api/dpo_pay_notify/. It is not set in a dashboard: ask DPO support to set this URL for your account.

DPO push notifications carry no signature, so their content is never trusted. The plugin only uses them to find the order and then checks the payment with DPO itself. Without the push URL, orders are still confirmed when the customer returns to the store and by the automatic re-checks 15 minutes after the redirect and after the payment time limit.

Orders

Successful payment status: the order status after a verified successful payment. The status is set at once, without a second status change.

Processing: the WooCommerce default (default). WooCommerce completes virtual downloadable orders automatically.
Completed: every paid order becomes Completed.
On hold (manual approval): every paid order waits for your manual review.

Advanced

Logging: Enable logging writes API calls and notifications to WooCommerce > Status > Logs, source wcp_dpo_pay. Errors are always logged. Tokens are masked, no customer data is logged. Default: off.

Delete data: Delete all plugin data when the plugin is deleted. Removes the settings, DPO data stored on orders and logs on uninstall. Deactivation never deletes data. Default: off.

Checkout

The customer chooses the payment method (by default DPO Pay) and places the order. The plugin creates a DPO transaction for the order total in the order currency, with the order number and your site name as description, and sends the customer to the DPO payment page. The customer's name, e-mail, phone and address are passed to pre-fill the page. There the customer pays with any method enabled on your DPO account. The payment link is valid for 5 hours.

After paying, the customer returns to your store. The order is marked paid only after DPO confirms it: the plugin asks DPO for the result of the transaction when the customer returns, when a push notification arrives and at the automatic re-checks. When the payment is confirmed, the customer goes to the order received page.

If the payment is not confirmed, the customer goes back to the checkout or to the Pay for order page with one of these messages:

The payment was declined or cancelled. Please try again or choose another payment method.
We have not received a payment confirmation from DPO yet. If you completed the payment, your order will be updated automatically — please do not pay again. Otherwise you can try again.
We could not confirm the payment result with DPO. If your account was charged, please contact us before paying again.

If the customer clicks the button on the DPO page to go back to the store, the order is cancelled the standard WooCommerce way and its DPO payment link is cancelled at DPO.

When a customer pays again for the same order, the previous DPO payment link is checked first. If it was paid, the order is completed without a second charge. If it is still being processed, the customer sees Your previous payment for this order is still being processed by DPO. Please wait a few minutes before trying again. Otherwise the old link is cancelled at DPO and a new one is created.

If DPO cannot start the payment, the customer sees a short message chosen by the DPO error code, for example that DPO Pay does not support the currency of this order, or that the amount exceeds the limit allowed by DPO Pay, and can choose another payment method.

The payment method works on the classic checkout, on the Checkout block and on the Pay for order page. It is compatible with WooCommerce High-Performance Order Storage (HPOS).

The plugin takes one-time payments on the DPO page only. It has no refunds from WooCommerce, no saved cards, no subscriptions or recurring payments, no card fields on your site and no capture of authorized-only payments.

Orders

Order statuses

Pending payment: the customer was sent to DPO and has not paid yet, or DPO has not confirmed the payment yet.

Processing, Completed or On hold: the payment was verified. The status follows Successful payment status. The order note shows the amount, the currency, the approval code and the beginning of the DPO transaction token. The transaction ID is the DPO transaction token.

On hold after payment: DPO confirmed a payment, but the amount or currency differs from the order, the payment is only authorized and not captured, the transaction was overpaid or underpaid, or the order had already been cancelled. The order note explains the reason. Check the transaction in the DPO portal. Capture or void an authorized-only payment in the DPO portal, then update the order.

Failed: the payment was declined, cancelled or the payment time limit has passed. The customer can pay again.

Cancelled: the customer went back to the store from the DPO page, or the order was cancelled by you or by the WooCommerce timeout for unpaid orders. The unpaid DPO payment link is cancelled at DPO.

A later declined message never changes a paid order, and results of older payment links never fail the current attempt. If DPO confirms a second successful payment for an order that is already paid, the order gets a note about a possible double payment, so you can refund it in the DPO portal.

Refunds

Refunds from WooCommerce are not available in this version. Refund the payment in the DPO merchant portal, then mark the order as refunded in WooCommerce.

License key

The plugin works with a VibeFox license key from vibefox.net. The license block is at the top of WooCommerce > Settings > Payments > DPO Pay. Paste the key into License key and click Activate. The block shows the status, for example the date the license is active until and your domain. Use Check now to check the status again, Change key to enter another key and Remove key to remove it from this site. The link Manage licenses and domains in your account opens your vibefox.net account.

One key works on one domain. Removing the key from a site does not free its domain slot. Free the slot in your vibefox.net account.

Without an active key, DPO Pay is not shown to customers at checkout. If a payment is started anyway, the customer sees This payment method is not available. Please choose another one. Logged-in store managers still see the payment method, marked (unlicensed — visible to admins only), so you can set up and test the plugin before you buy a key. A reminder appears on the Plugins page and on WooCommerce pages. Existing orders are not affected: payments already started are still confirmed.

When a license expires, the plugin keeps working, but updates and support need a renewal. The status is checked again automatically in the background.

Troubleshooting

DPO Pay does not appear at checkout: check that the license is active, Enable/Disable is on and the Company Token and Service Type of the selected mode are set: the test fields in test mode, the live fields otherwise. The settings page shows a warning when they are missing.

The payment went through, but the order stays Pending payment: the push notification URL is probably not set for your DPO account, and the customer did not return to the store. Ask DPO support to set the URL shown in the settings. The order is also confirmed by the automatic re-check 15 minutes after the redirect. Turn on Logging and look at WooCommerce > Status > Logs, source wcp_dpo_pay.

Push notification answers Unknown transaction: the transaction token does not belong to a DPO Pay order of this store, for example the push came from another shop on the same DPO account.

Push notification answers Verification failed: DPO could not be reached to check the payment. DPO repeats the notification, and the automatic re-check also confirms the order.

The Service Type is not saved: it must be the numeric Service Type ID from DPO.

The customer sees DPO Pay is temporarily unavailable: DPO refused to create the transaction, for example because of a wrong Company Token or Service Type, or a token of the other mode. The DPO result code is in WooCommerce > Status > Logs, source wcp_dpo_pay.

The customer sees that DPO accepts at most 2 decimal places: the order total has 3 decimals. DPO cannot charge such amounts.

Order is On hold after payment: read the order note. The paid amount or currency differed from the order, the payment is only authorized, the transaction was over- or underpaid, or the order had been cancelled. Review the transaction in the DPO portal.

The license block shows an error: follow the message in the block. For example, if the key is already used on another domain, free a slot in your vibefox.net account and click Check now. If the site address changed, click Check now to activate the key for the new domain. If the license server cannot be reached, the plugin keeps working on the last known status.

Uninstall

Deactivating the plugin keeps all data and only stops the scheduled status checks. To remove it, deactivate and delete it on the Plugins page. The license key and license status of this plugin are always removed. The settings, the DPO data stored on orders, the scheduled checks and the logs are removed only if Delete data was on. Otherwise they stay for a later re-install. Existing orders keep their payment notes and transaction IDs.

DPO Pay is a trademark of its respective owner. This plugin is not affiliated with or endorsed by DPO Pay.