Stripe - Common Issues and FAQ

Error: Missing secure Stripe token, please try again.

This error occurs for a number of reasons:

  • A conflict with one or more plugins activated on your site
  • A conflict with the currently active theme on your site
  • A Javascript syntax error on the checkout screen that comes from your theme or another plugin
  • An overly aggressive anti-virus or malware program that is blocking the communication to
  • Customized checkout fields that results in the Stripe Payment Gateway malfunctioning
  • A conflict with server-level security configuration

If you receive this error, the first thing to do is to first test for plugin conflicts by deactivating all other plugins and then re-testing a purchase through the Stripe Payment Gateway. If the problem goes away after deactivating all other plugins, reactivate your plugins one at a time and test a purchase after each activation. Once the problem returns, you will have identified the problematic plugin.

If the problem does not get resolved by deactivating other plugins, temporarily activate a different theme, such as Twenty Seventeen,  Vendd, or Themedd. Once one of these themes is activated, try completing a new purchase. If the purchase goes through without issue, the problem is caused by your theme and you should contact your theme's development or support team for assistance in resolving the error.

If the problem persists after deactivating all plugins and activating a standard theme, it is likely that the issue is due to a browser plugin or a server-level security configuration. To test for a browser plugin conflict, re-try a purchase using a different browser. For example, if you typically use Chrome, try making a purchase from Firefox. If the purchase succeeds, the problem is limited to your Chrome configuration and may be resolved by deactivating browser plugins/extensions.

If none of these solutions work for you, please contact our support team for assistance.

What is used for the statement descriptor?

The statement descriptor is what your customers will see on their credit card statements when they purchase from you. You can set a statement descriptor in your Stripe settings under Dashboard → Downloads → Settings→ Payment Gateways → Stripe → Statement Descriptor. However, if you leave that blank, the items purchased will be used instead. Note that the purchase summary can only be 22 characters because that is the limit put on the length by credit card statements. If you have entered a statement descriptor into your Stripe account, note that it will not be used. Note that certain characters (< > ” and \) can not be used and will be automatically removed if used.

For more information about statement descriptors, or if you are using Recurring Payments extension, see this doc.

Can't combine currencies on a single customer

Stripe has a default currency setting for each account. It can be any currency they support, but there can only be one. When doing single transactions Stripe is able to accept any other currency and convert it to the account holder's default currency.

With the Stripe Standard or Stripe Pro if you offer a subscription in a currency other than the default currency set in Stripe you may see this error message during the purchase process:

Can't combine currencies on a single customer

This issue arises with recurring payments when there is a renewal discount. In that case EDD must ask Stripe for the account_balance, which is always in the default currency for that Stripe account.

An example is if you have a Stripe account with a currency of GBP, and a subscription in USD with a renewal discount.  When it comes time to renew EDD will get the account_balance from Stripe (which will be in GBP) and try to use it with your current transaction amount, and the two currencies will conflict.

One solution is to make your store and Stripe both use the same currency across all products.
Another solution is to make all recurring and initial amounts on subscriptions identical. This way there won't be a currency comparison, and the values will always match.
Lastly, if you have products being sold with different currencies you should consider have a separate store and Stripe account for each currency. For example, if you're accepting Euros and US Dollars, create a store for each, and each store would also have its own Stripe account.  This way you have a consistent currency within each store.

Why does Stripe load on all pages?

This is intentional and something that Stripe recommends in order to help with fraud protection.

To best leverage Stripe’s advanced fraud functionality, include this script on every page of your site, not just the checkout page. This allows Stripe to detect anomalous behavior that may be indicative of fraud as customers browse your website.

Without custom code and limiting Stripes fraud protection, you cannot disable Stripe's scripts/cookies from loading on every page.

If you would like to prevent stripe.js from loading on all pages, you can choose to load it only on the checkout page in the Stripe settings for Easy Digital Downloads.

Why isn't the credit card field showing up?

If you are seeing all other fields on your checkout page, but not the credit card fields, it might be a conflict with a 3rd party plugin that also uses Stripe. If a 3rd party plugin is loading an old version of stripe.js, the credit card field won't show up. You will also see this error in your javascript console: "window.eddStripe.elements is not a function". You will need to deactivate or update any 3rd party plugins that might be using Stripe to rule that out.