21 Common errors
Niklas Gutberlet edited this page 2026-04-03 08:58:45 +02:00
This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

These errors have been reported over time and may have occurred for different users for various reasons. The error message may be the same for two different users, but the cause of it can be quite different. The cause often cannot be determined by the error alone.

Please get in touch with the support team when it is not clear how the error you experience could be resolved.

Something went wrong. Please try again or choose another payment source.

This generic error can be caused by various factors, including but not limited to:

  • negative PayPal API responses (e.g. currency not supported or invalid characters)
  • potential plugin/theme conflicts
  • REST endpoint blocked
  • other web server configuration

These kinds of errors may be caused by a compatibility issue with a third-party plugin, an invalid plugin configuration, or temporary service disruptions at PayPal.

Usually, following advanced troubleshooting steps helps to isolate the cause of the problem.

The payee does not have a PayPal account.

This error can occur either when the API credentials are invalid, or the merchants PayPal account is not verified.

In some cases, disconnecting and reconnecting the account using the onboarding wizard may be sufficient to resolve the error. Other times, the merchant may need to reach out to the PayPal Merchant Support to clarify the account verification status before payments can be received.

DUPLICATE_INVOICE_ID

The error DUPLICATE_INVOICE_ID error is a security feature from PayPal to prevent accidental double payments.

PayPal Payments automatically sets an "invoice prefix" and then sends the WooCommerce order numbers in the pattern "invoice prefix + ordernumber" to PayPal. When the prefix is set to cfbdg- and the order number is 123, PayPal Payments sends the invoice ID cfbdg-123 to PayPal.

Under certain circumstances, PayPal Payments may send an invoice ID that already exists at PayPal and the transaction would fail. This can happen, for example, when an older backup from the website is restored, as the most recent WooCommerce orders may not exist anymore after the restore. As soon as WooCommerce attempts to create a new order with the number 123 and the same invoice prefix, PayPal would throw this error to prevent accidental double payments because there is already a payment at PayPal with the same invoice ID.

This feature can be disabled at PayPal, though the recommendation is to keep it enabled. Please ensure that every site using PayPal Payments with your account has a unique invoice prefix.

But to disable this feature at PayPal, follow these steps:

  1. Log in to your Business PayPal account (https://www.paypal.com/businessmanage/preferences/payments)
  2. Go to the Payments Preferences section
  3. Under the "Block accidental payments:" section, select the option "No, allow multiple payments per invoice ID"

With this feature disabled, PayPal no longer throws an error when an invoice number that already exists in the system is submitted.

Custom field not validated when clicking the PayPal button

Imagine you added custom code to your checkout page, which verifies if certain conditions are met when clicking “Place order”. The hook woocommerce_checkout_process is frequently used for validating that the condition is met. If the conditions are not met, it does not allow the order to be placed and displays an error message. Here is an example code snippet to add a checkbox to the checkout page and validate it:

/**
 * Add a checkbox field to the checkout
 **/
add_action( 'woocommerce_review_order_before_submit', function() {
    woocommerce_form_field( 'custom_checkbox', array(
        'type'          => 'checkbox',
        'required'      => true,
        'label'         => 'This checkbox must be checked to proceed with the payment.',
    )); 
}, 9 );

/**
 * Validate the checkbox on the checkout when clicking "Place order" button
 **/
add_action( 'woocommerce_checkout_process', function() {
    if ( ! isset( $_POST['custom_checkbox'] ) ) {
        wc_add_notice( __( 'Please acknowledge the required checkbox.' ), 'error' );
    }
});

Q: What happens? This code works with most payment methods, but the PayPal popup window opens despite the box not being checked. The validation step does not happen before the payment process starts.

A: The hook woocommerce_checkout_process is called only after creating the PayPal order (when closing the popup), so it would not be considered when clicking the PayPal button.

To solve this problem, you can use the hook woocommerce_after_checkout_validation because validate_checkout is called after clicking the smart button but before loading the popup window.

/**
 * Validate the checkbox field on the checkout when clicking "Place order" button & the PayPal smart buttons
 **/
add_action( 'woocommerce_after_checkout_validation', function() {
    if ( ! isset( $_POST['custom_checkbox'] ) ) {
        wc_add_notice( __( 'Please acknowledge the required checkbox.' ), 'error' );
    }
});

Alternatively, enabling the basic validation can help validate custom fields.

Known issue: Fatal error when updating via .zip file upload

When updating from version 2.x or 3.x to 4.x by manually uploading the .zip file through Plugins → Add New → Upload Plugin or via Dashboard → Updates, WordPress may display a fatal error at the bottom of the "Update completed" page and send an automated email to the site administrator with the subject "Your site is experiencing a technical issue". The mail may contain error details like these, but the actual error message may vary:

PHP Fatal error: Uncaught TypeError: WooCommerce\PayPalCommerce\Settings\Endpoint\RefreshFeatureStatusEndpoint::__construct(): Argument #1 ($cache) must be of type WooCommerce\PayPalCommerce\ApiClient\Helper\Cache, WooCommerce\PayPalCommerce\WcGateway\Settings\Settings given, called in .../modules/ppcp-settings/services.php on line 175 and defined in .../modules/ppcp-settings/src/Endpoint/RefreshFeatureStatusEndpoint.php:51

This error is harmless and can be ignored. It is a one-time occurrence caused by the old plugin code clashing with new files during the upload process on update.php & update-core.php admin pages. It will not appear again after the update completes, and it has no effect on plugin functionality or site stability.

This error does not occur during:

  • Auto-updates
  • Updates via the Plugins page ("Update now" link)

It occurs only when the plugin is updated via Dashboard → Updates, or the .zip file is manually uploaded while an older version of the plugin is already active.

This error does occur during:

  • Updates via Dashboard → Updates
  • Manual .zip file upload on Plugins → Add Plugin → Upload Plugin

The error can be avoided by first deactivating the PayPal Payments plugin before updating to version 4.x via Dashboard or manual .zip file upload.

Gateway activation email from WooCommerce after updating to 4.x

When updating from 2.x or 3.x to 4.x, merchants who previously had APMs (Alternative Payment Methods) enabled (opt-out by default) will have separate APM gateways automatically enabled. This may trigger multiple WooCommerce emails with a title like "Payment gateway 'Przelewy24 (via PayPal)' enabled".

This is expected. Legacy APM smart buttons are no longer supported in the new UI and have been converted to individual WooCommerce gateways with dedicated controls. No new payment methods are being activated; only the visibility of previously enabled ones changes. Some users may not have been aware that PayPal Payments enables multiple payment methods beyond PayPal by default. APMs like iDEAL, Bancontact, or Przelewy24 were always part of the default configuration for merchants in supported countries, but their visibility was quite limited both in the admin UI and on the Checkout page.

Legacy behavior

  • APMs appeared as additional buttons inside the PayPal button stack
  • Visibility was controlled by the buyer's IP address (e.g. Dutch IP for iDEAL)
  • Not always listed as separate gateways in WooCommerce settings

New UI behavior

  • APMs are individual WooCommerce payment gateways
  • Visibility is determined by the buyer's billing country
  • Shown as separate entries in WooCommerce settings (more visible to merchants and eligible buyers)