Difference between revisions of "Stripe"

From WHMCS Documentation

m
m (Payment Workflow)
 
(30 intermediate revisions by 6 users not shown)
Line 1: Line 1:
 +
== About this Module ==
 +
 +
The WHMCS Stripe payment gateway uses Stripe's tokenised storage system to submit credit card information to Stripe, which stores it remotely.
 +
 +
<div class="docs-alert-info">For other Stripe options, see [[Stripe ACH]] and [[Stripe SEPA]]. </div>
 
{{gateways
 
{{gateways
 
| type = token
 
| type = token
Line 7: Line 12:
 
| deletecc = yes
 
| deletecc = yes
 
| 3dsecure = yes
 
| 3dsecure = yes
| AddPayMethod API = no
 
 
}}
 
}}
 +
<div class="docs-alert-warning">
 +
The Stripe payment gateway module is not compatible with the Modern or Boxes order form templates.
 +
</div>
  
The WHMCS Stripe payment gateway uses Stripe's tokenised storage system. As a result, credit card information is submitted to and stored remotely by Stripe. Using a tokenised gateway is recommended for security and reduced liability.
+
== Adding the Stripe Payment Gateway ==
  
==Setup==
 
 
[[File:stripe.png|thumb|Stripe Module Settings]]
 
[[File:stripe.png|thumb|Stripe Module Settings]]
 +
 +
To set up the Stripe payment gateway in WHMCS:
 
   
 
   
To configure Stripe:
+
# Go to the appropriate location for your version of WHMCS:
+
#* For WHMCS 8.0 and later, go to '''Configuration (<i class="fa fa-wrench" aria-hidden="true"></i>) > Apps & Integrations''' or '''Addons > [[Apps and Integrations|Apps & Integrations]]'''.
# Go to '''Configuration (<i class="fa fa-wrench" aria-hidden="true"></i>) > System Settings > Payment Gateways''' or, prior to WHMCS 8.0, '''Setup > Payments > Payment Gateways'''.
+
#* For WHMCS 7.10 and earlier, go to '''Setup > Products/Services > [[Payment Gateways]]''' and choose '''All Payment Gateways'''.
# In '''All Payment Gateways''', choose ''Stripe''.
+
# Click '''Stripe'''.
# Customize the '''Display Name'''. We recommend setting this to '''Credit Card'''.
+
# Check '''Show on Order Form''' to display this payment method in the Client Area during checkout.
# Go to the [https://dashboard.stripe.com/account/apikeys Stripe portal] and retrieve the publishable and secret API keys. Stripe uses API keys for authentication.
+
# Configure a display name. We recommend <tt>Credit Card</tt>.
# In WHMCS, enter the '''Stripe Publishable API Key''' and '''Stripe Secret API Key'''.
+
# Go to the [https://dashboard.stripe.com/account/apikeys Stripe portal] and retrieve the publishable and secret API keys.
 +
# Enter your Stripe API Keys. <div class="docs-alert-info"><i class="fa fa-info-circle"></i> To test Stripe, enter your [https://stripe.com/docs/keys#obtain-api-keys Stripe Test Mode API Keys].</div>
 
# Optionally, customize the '''Statement Descriptor Suffix''' with a maximum of 22 characters.
 
# Optionally, customize the '''Statement Descriptor Suffix''' with a maximum of 22 characters.
# In WHMCS 8.0 and later, leave the '''Stripe WebHook Endpoint Secret''' and '''Stripe WebHook Endpoint Secret (Test/Sandbox)''' empty. WHMCS auto-generates these.
+
# In WHMCS 8.0 and later, leave the '''Stripe WebHook Endpoint Secret''' and '''Stripe WebHook Endpoint Secret (Test/Sandbox)''' empty. WHMCS auto-generates these. See below for more information.
# Optionally, check '''Allow Payment Request Buttons'''.
+
# Optionally, check '''Allow Payment Request Buttons'''. See below for more information.
 
# Click '''Save Changes'''.
 
# Click '''Save Changes'''.
 +
# If you use different default currencies in Stripe and WHMCS, make certain that you have also configured your Stripe account's currency with a valid exchange rate at '''Configuration (<i class="fa fa-wrench" aria-hidden="true"></i>) > System Settings > [[Currencies]]''' or, prior to WHMCS 8.0, '''Setup > Payments > Currencies'''. Stripe only returns transaction fees in the default currency for the Stripe account.
 
   
 
   
Stripe is now active and ready for use.
+
=== WebHook Endpoints ===
+
 
 
<div class="docs-alert-info">
 
<div class="docs-alert-info">
<span class="title">Transaction Fees</span><br />
+
You can use Stripe Webhooks in WHMCS v8.0 and above.
Stripe returns transaction fees in the default currency of the Stripe account. If you have a different default currency in WHMCS, you must ensure you have configured the currency of your Stripe account in '''Configuration (<i class="fa fa-wrench" aria-hidden="true"></i>) > System Settings > Currencies''' or, prior to WHMCS 8.0, '''Setup > Payments > Currencies'''. This must include a valid exchange rate to allow WHMCS to be able to convert the fee into your other currencies.
 
 
</div>
 
</div>
 
<div class="docs-alert-warning">
 
<span class="title">Warning</span><br />
 
The Stripe payment gateway module is not compatible with the Modern or Boxes order form templates.
 
</div>
 
 
===WebHook Endpoints===
 
<div class="docs-alert-info"><i class="fa fa-info-circle"></i> Stripe Webhooks can be utilised in WHMCS v8.0 and above.</div>
 
 
   
 
   
 
Stripe's WebHook Endpoints update WHMCS automatically with changes to your customers' cards. In WHMCS 8.0 and later, when you click '''Save Changes''', WHMCS will use the '''Stripe Publishable API Key''' and '''Stripe Secret API Key''' to generate the '''Stripe WebHook Endpoint Secret''' and '''Stripe WebHook Endpoint Secret (Test/Sandbox)'''.  
 
Stripe's WebHook Endpoints update WHMCS automatically with changes to your customers' cards. In WHMCS 8.0 and later, when you click '''Save Changes''', WHMCS will use the '''Stripe Publishable API Key''' and '''Stripe Secret API Key''' to generate the '''Stripe WebHook Endpoint Secret''' and '''Stripe WebHook Endpoint Secret (Test/Sandbox)'''.  
Line 49: Line 50:
 
WHMCS registers the WebHook Endpoints to deliver these events from Stripe:
 
WHMCS registers the WebHook Endpoints to deliver these events from Stripe:
  
* <tt>customer.source.updated</tt>
+
* <tt>customer.source.updated</tt>
* <tt>customer.card.updated</tt>
 
 
* <tt>payment_method.updated</tt>
 
* <tt>payment_method.updated</tt>
 
   
 
   
 
To change the WebHook ID, empty '''Stripe WebHook Endpoint Secret''' and '''Stripe WebHook Endpoint Secret (Test/Sandbox)''' and click '''Save Changes'''. WHMCS will auto-generate them again with new values.
 
To change the WebHook ID, empty '''Stripe WebHook Endpoint Secret''' and '''Stripe WebHook Endpoint Secret (Test/Sandbox)''' and click '''Save Changes'''. WHMCS will auto-generate them again with new values.
  
==Payment Request Button==
+
=== Payment Request Button ===
Enabling this option within the module configuration provides customers with a platform specific payment request button such as Apple Pay. For customers who don’t use Apple Pay, the Payment Request button supports browser-saved cards, Google Pay, and Microsoft Pay.
+
 
 +
Enabling this option within the module configuration provides customers with a platform-specific payment request button (for example, Apple® Pay). For customers who don’t use Apple Pay, '''Payment Request''' supports credit cards stored in the browser, Google® Pay, and Microsoft® Pay.
 +
 
 +
==== Apple Pay ====
  
===Apple Pay===
 
 
[[File:apple_pay_checkout.png|thumb|The Apple Pay Button on Checkout]]
 
[[File:apple_pay_checkout.png|thumb|The Apple Pay Button on Checkout]]
When enabled, Apple Pay allows access to payment details that users have stored in their Wallet. If they're using Safari on their iPhone or iPad, when they tap "Buy with Apple Pay" on your site, they'll be shown a modal payment sheet. If they're using Safari on their Mac, and have an iOS device in range, they'll be prompted on their device to authorize the payment, which will then be sent to the browser.
 
  
====Enabling Apple Pay====
+
When you enable this, Apple Pay allows access to payment details that users have stored in their Apple Wallet. If they're using Safari® on their iPhone® or iPad®, when they tap "Buy with Apple Pay" on your site, they'll be shown a modal payment sheet. If they're using Safari on their Mac®, and have an iOS® device in range, they'll be prompted on their device to authorize the payment, which will then be sent to the browser.
To use Apple Pay with a live Stripe API key, it is required to register with Apple all of your web domains that will be showing an Apple Pay button. This includes both top-level domains (e.g. whmcs.com) and subdomains (e.g. shop.whmcs.com).
+
 
<div class="docs-alert-info"><i class="fa fa-info-circle"></i> An SSL Certificate is '''required''' to use Apple Pay</div>
+
To use Apple Pay with a live Stripe API key, you must register all of the domains that will display an Apple Pay button with Apple. This includes both top-level domains (for example, <tt><nowiki>whmcs.com</nowiki></tt>) and subdomains (for example, <tt><nowiki>shop.whmcs.com</nowiki></tt>).
 +
<div class="docs-alert-info"><i class="fa fa-info-circle"></i> An SSL certificate is '''required''' to use Apple Pay.</div>
  
# Download this [https://stripe.com/files/apple-pay/apple-developer-merchantid-domain-association domain association file] and host it at /.well-known/apple-developer-merchantid-domain-association on your site. For example, if you're registering ''<nowiki>https://example.com</nowiki>'', make that file available at ''<nowiki>https://example.com/.well-known/apple-developer-merchantid-domain-association</nowiki>''.
+
To do this:
# Next, tell Stripe to register the domain with Apple. This is done by going to [https://dashboard.stripe.com/account/apple_pay the Apple Pay tab] in the Account Settings of Stripe Dashboard
 
===Google Pay===
 
Google Pay allows customers to make payments using any credit or debit card saved to their Google Account, including ones from Google Play, YouTube, Chrome, or an Android device.
 
===Microsoft Pay===
 
Microsoft Pay allows customers to make payments using any credit or debit card saved to their Microsoft Account.
 
  
==ACH/SEPA==
+
# Download this [https://stripe.com/files/apple-pay/apple-developer-merchantid-domain-association domain association file] and host it at <tt>/.well-known/apple-developer-merchantid-domain-association</tt> on your site. For example, if you're registering <tt><nowiki>https://example.com</nowiki></tt>, make that file available at <tt><nowiki>https://example.com/.well-known/apple-developer-merchantid-domain-association</nowiki></tt>.
 +
# To instruct Stripe to register the domain with Apple, go to the '''[https://dashboard.stripe.com/account/apple_pay Apple Pay]''' tab in '''Account Settings''' in the Stripe Dashboard.
  
<div class="docs-alert-info"><i class="fa fa-info-circle"></i> Support for ACH and SEPA was introduced in WHMCS 7.9.</div>
+
==== Google Pay ====
  
[[Stripe ACH]] and [[Stripe SEPA]] are payment gateways that allow bank payments in the US and the Euro Zone respectively.  
+
Google Pay allows customers to make payments using any credit or debit card on their Google account, including Google Play, YouTube™, Chrome™, or an Android™ device.
  
Per Stripe requirements, ACH is currently supported only for Stripe businesses based in the U.S. and only in USD.
+
==== Microsoft Pay ====
  
Stripe users in Europe and the United States can accept SEPA Direct Debit payments from customers in countries within the Single Euro Payments Area (EUR only).
+
Microsoft Pay allows customers to make payments using any credit or debit card on their Microsoft account.
  
==Payment Workflow==
+
==== Link ====
[[File:stripe_checkout.png|thumb|The Stripe module on Checkout]]
+
In WHMCS 8.8 and later, customers can pay using [https://stripe.com/en-ca/payments/link Link] for any Stripe transaction. Link makes payments easier by letting customers complete secure, one-click transactions using saved payment information. Stripe enables Link automatically.
# Automated recurring and on-demand billing is supported.
+
 
# When making a payment, customers are able to select to use a previously stored card or enter a new one.
+
For more information about disabling Link for your Stripe account, see [https://support.stripe.com/questions/how-to-turn-off-link How to Turn Off Link].
# Customers can update their credit card at any time from the client area.
+
 
# Admin level users with the necessary permissions can also perform card updates from the admin area.
+
=== Test Mode === 
# Customers never leave your WHMCS installation during checkout or updating their card.
 
# Personal card information is submitted directly to Stripe and is never stored in your local WHMCS installation.
 
# The Stripe API is used for refunds and obtaining transaction information.
 
  
In WHMCS 7.8 and later, WHMCS uses the Stripe Elements implementation method. When performing checkout, if customer authorisation is required, the user will be automatically prompted via modal to approve the payment. This process is also commonly referred to as 3D Secure. Use of 3D Secure depends on the card type and issuer.
+
This module does not support test mode.
  
 +
== Payment Workflow ==
 +
 
 +
[[File:stripe_checkout.png|thumb|The Stripe module on Checkout]]
 +
 
 +
The Stripe module supports automated recurring and on-demand billing.
 +
 
 +
Customers can choose between previously-stored cards or entering new ones during payment, and they can update their credit cards at any time in the Client Area. Admins can also update credit card information in the WHMCS Admin Area.
 +
 
 +
During checkout, clients never leave WHMCS. Personal card information goes directly to Stripe and is never stored within WHMCS. The Stripe API handles all refunds and obtains transaction information.
 +
 
 +
* In WHMCS 7.8 and later, WHMCS uses the Stripe Elements implementation method. When performing checkout, if customer authorization is required, the system will prompt the user automatically to approve the payment. This process is also commonly referred to as 3D Secure. Use of 3D Secure depends on the card type and issuer.
 +
* In WHMCS 8.8 and later, Stripe module transactions [https://support.stripe.com/questions/guide-for-indian-government-regulations-on-network-tokenization meet all Reserve Bank of India requirements].
 +
 
 
<div class="docs-alert-info">
 
<div class="docs-alert-info">
<i class="fa fa-question-circle"></i>
+
WHMCS 8.3 and higher includes support for disputes for [[Stripe]] (credit card only) and some [[PayPal]]® transactions at '''Billing > [[Disputes]]'''.  
WHMCS 8.3 and higher includes support for disputes for Stripe and PayPal® transactions at '''Billing > [[Disputes]]'''.
 
 
</div>
 
</div>
 
+
 
===Recurring Payments===
 
===Recurring Payments===
Automated recurring payments are performed using stored tokens. If a client card requires SCA, the payment attempt will be denied and the client will be required to login to WHMCS to manually process the payment.
+
 +
Automated recurring payments use stored tokens. If a client card requires SCA, the system will deny the payment attempt and the client must log in to WHMCS manually to process the payment.
  
===Payment Gateway Balances===
+
== Payment Gateway Balances ==
 
   
 
   
In WHMCS 8.2 and later, you can view payment gateway balances directly within the WHMCS Admin Area, with native support for Stripe balances. At '''Billing > Transactions''', you can view balances in the transaction list and in the transaction details for individual transactions. For more information, see [[Payment Gateway Balances and Transactions]].
+
In WHMCS 8.2 and later, you can view payment gateway balances directly within the WHMCS Admin Area, with native support for Stripe balances.  
 +
 
 +
At '''Billing > [[Transactions]]''', you can view balances in the transaction list and in the transaction details for individual transactions. For more information, see [[Payment Gateway Balances and Transactions]].
 
   
 
   
This requires that you enable the '''View Gateway Balances''' permission for the desired administrator role at '''Configuration > System Settings > Administrator Roles'''.
+
This requires you to enable '''View Gateway Balances''' for the desired administrator role at '''Configuration (<i class="fa fa-wrench" aria-hidden="true"></i>) > System Settings > [[Administrator Roles]]'''.
 
   
 
   
 
<div class="docs-alert-warning">
 
<div class="docs-alert-warning">
<span class="title">Admin Area Dashboard Widget</span><br />
 
 
In the Admin Area [[Admin_Dashboard|Dashboard]], you can view your Stripe balances through the '''Stripe Balance''' widget. However, this widget does not use the <tt>WHMCS\Module\Gateway\Balance</tt> and <tt>WHMCS\Module\Gateway\BalanceCollection</tt> classes to display balances. For more information, see [[Stripe Balance Widget]].
 
In the Admin Area [[Admin_Dashboard|Dashboard]], you can view your Stripe balances through the '''Stripe Balance''' widget. However, this widget does not use the <tt>WHMCS\Module\Gateway\Balance</tt> and <tt>WHMCS\Module\Gateway\BalanceCollection</tt> classes to display balances. For more information, see [[Stripe Balance Widget]].
 
</div>
 
</div>
  
==Migrating to Stripe==
+
== Migrating to Stripe ==
 +
 
 +
The Stripe payment gateway module supports migrating locally-stored credit card details to Stripe's tokenized storage. This is useful when you transition from another non-tokenized merchant gateway provider to Stripe.
 +
 
 +
For an existing client with a locally-stored credit card, the first time that the system attempts to capture payment for an invoice using Stripe, the system will submit the credit card details to Stripe and create and store a token. Then, the system will remove the local copy of the card details.
  
The Stripe payment gateway module supports migrating credit card details stored locally within WHMCS to Stripe's tokenized storage.  This allows for a seamless transition from another non-tokenized merchant gateway provider to Stripe.
+
To migrate to Stripe and ensure all future credit card processing uses it:
  
For an existing client with a credit card stored locally, the first time a payment capture is automatically attempted for an invoice using Stripe using a locally stored credit card, the credit card details will be submitted to Stripe and a token created and stored. The previously locally stored card details will be removed.
+
# Go to the appropriate location for your version of WHMCS:
 +
#* For WHMCS 8.6 and later, go to '''Configuration (<i class="fa fa-wrench" aria-hidden="true"></i>) > [[Apps and Integrations|Apps & Integrations]]'''.
 +
#* For WHMCS 8.0 to 8.6, go to '''Configuration (<i class="fa fa-wrench" aria-hidden="true"></i>) > System Settings > [[Payment Gateways]]''' and choose '''All Payment Gateways'''.
 +
#* For WHMCS 7.10 and earlier, go to '''Setup > Products/Services > Payment Gateways''' and choose '''All Payment Gateways'''.
 +
# Activate the Stripe module.
 +
# Click '''Deactivate''' for your previous merchant gateway provider.
 +
# Select Stripe as the replacement gateway to switch users of the previous gateway module to.
 +
# Click '''OK'''.
  
To migrate to Stripe and ensure all future credit card processing is done using it, follow the steps below:
+
<div class="docs-alert-warning">
 +
<span class="title">PCI DSS Compliance</span><br />
 +
After migrating to Stripe, you may receive an email from Stripe requesting that you complete the [https://listings.pcisecuritystandards.org/documents/SAQ_D_v3_Merchant.pdf Self Assessment Questionnaire D] (SAQ D) form.
  
# Navigate to '''Configuration (<i class="fa fa-wrench" aria-hidden="true"></i>) > System Settings > Payment Gateways''' or, prior to WHMCS 8.0, '''Setup > Payments > Payment Gateways'''.
+
This is because the system is attempting to send raw card data that your previous merchant gateway stored to Stripe's API. You can only do this when your Stripe account has been flagged as [https://stripe.com/guides/pci-compliance PCI compliant].
# Ensure the Stripe module has been activated
+
 
# Select the '''Deactivate''' link for your previous merchant gateway provider
+
To gain full access to Stripe's API, complete the SAQ D form to certify that you are PCI compliant and send it to Stripe. Stripe can then enable use of raw card data with their API.
# When prompted to choose a replacement gateway to switch users of the previous gateway module to, select Stripe
+
 
# Click '''OK''' to complete the process
+
For more information, [https://support.stripe.com/ contact Stripe support].
 +
</div>
  
<div class="docs-alert-info">'''Note:''' Existing credit card details stored locally will be sent to Stripe and converted to a token the first time a payment is automatically attempted for a client using the Stripe module. Until that time, credit card details will remain stored locally within WHMCS.</div>
+
=== Migrating from a 3rd Party Stripe Module ===
  
===Migrating from a 3rd Party Stripe Module===
+
The WHMCS Stripe module uses the Stripe <tt>cus_</tt> reference to capture payments (for example, <tt>cus_9MvIb7UlgJfJTn</tt>). The WHMCS Stripe module can replace any third-party module that uses this.
  
The Official WHMCS Stripe module uses the Stripe "cus_" reference to capture payments - e.g. cus_9MvIb7UlgJfJTn. For any 3rd party module which also uses this reference, the official module can replace it.
+
To check whether your current Stripe module uses the <tt>cus_</tt> reference, navigate to a client that you know has an active Stripe token and click on one of the pay methods in the '''Summary''' tab of the client's profile. Verify that the listed token includes the <tt>cus_</tt> prefix.
  
To verify if your current Stripe module uses the "cus_" reference, navigate to a client you know to have an active Stripe token and click the Credit Card Information link on the Client Summary page.  Verify the token listed there has the "cus_" prefix.
+
To start using the WHMCS Stripe module:
  
To convert to the Official Stripe module:
+
# Note the internal name of the previous Stripe module, which you can find by looking in the gateway column in the <tt>tblpaymentgateways</tt> database table.
* Activate the module as described above,
+
# Activate our official Stripe module.
* Deactivate your previous Stripe module,
+
# Deactivate the previous Stripe module.
* When prompted select the official Stripe module to update and switch existing customers to,
+
# Check one of the Stripe pay methods on a client. If the token contains <tt>cus{_}</tt>, you can use it with our module but it will require a manual database edit first. To allow that, run the following SQL query using phpMyAdmin or another tool, replacing "example" with the name of the previous module: <source lang="sql">UPDATE tblpaymethods SET gateway_name = 'stripe' WHERE gateway_name = 'example'; </source>
* Remove all files and template customisations (if applicable) required by the 3rd party module.
+
# Remove any third-party files and template customisations for the previous Stripe module.
  
 
==Troubleshooting==
 
==Troubleshooting==
  
The following are some common issues and their suggested solutions.
+
===Remote Transaction Failure. Please Contact Support===
 +
 
 +
This issue has multiple causes. This may also display as '''Error'''.
  
===Remote Transaction Failure. Please Contact Support===
+
To resolve this issue:
 +
 
 +
# Go to '''Billing > Gateway Log'''.
 +
# Check the '''Result''' and '''Debug Data''' columns for error messages or codes from the time of the payment attempt.
 +
# Perform the appropriate steps in Stripe's [https://stripe.com/docs/error-codes Error Codes] and [https://stripe.com/docs/declines/codes Declines Codes] documentation.
  
There are a number of causes for this. This issue may also present itself as simply '''"Error"''' being displayed.
+
See below for other common causes of this error:
  
 
====Payment Blocked By Stripe====
 
====Payment Blocked By Stripe====
  
The payment may be blocked by a rule within your Stripe account. Please log in to your [https://dashboard.stripe.com/ Stripe Dashboard] and proceed to '''Developers > Logs'''. Locate the log entries captured at the time the payment was attempted. The details of the log will show if the payment was blocked (for instance, with an error such as ''The zip code you supplied failed validation''). Your Stripe rules can then be adjusted directly within your Stripe account as required. Please contact [https://support.stripe.com/ Stripe support] for any assistance needed with adjusting your rules.
+
This indicates that a rule in your Stripe account may be blocking payment.
 +
 
 +
To resolve this:
 +
 
 +
# Log in to your [https://dashboard.stripe.com/ Stripe Dashboard].
 +
# Go to '''Developers > Logs'''.  
 +
# Find the log entries from the time at which the payment was attempted. The details of the log will show whether the payment was blocked (for example, with a '''The zip code you supplied failed validation''' error).  
 +
# Adjust the rules in your Stripe account for the error. For help, contact [https://support.stripe.com/ Stripe support].
  
 
====Customisations====
 
====Customisations====
  
It may also present itself as '''"No Stripe Details Found for Update"''' in the Gateway Log.
+
This issue may also present itself as '''"No Stripe Details Found for Update"''' in the '''Gateway Log'''.
  
This issue can occur due to interference from a third party Stripe module. Using the official Stripe module requires the full uninstallation and removal of any custom or third party Stripe integrations. This includes removal of all files and any template modifications. Known modifications that can trigger this error include:
+
This issue can occur due to interference from a third-party Stripe module. Using the official Stripe module requires the full uninstallation and removal of any custom or third-party Stripe integrations. This includes removal of all files and template modifications.
  
* A hook file present in <tt>/includes/hooks/stripe.php</tt>. This file should be removed when switching to the Official Stripe module.
+
For example, these issues may trigger this error:
* Template customisations present in your active order form template files.
+
 
* The payment method is set to a module other than Stripe. There are two solutions:
+
* A hook file in <tt>/includes/hooks/stripe.php</tt>. Remove this file when switching to the WHMCS Stripe module.
** Change the client's ''Payment Method'' setting to the Stripe module. This is done under the client's '''Profile''' tab.
+
* Template customisations in your active order form template files.
** Make Stripe the system default payment gateway. This done by using the green arrows at '''Configuration (<i class="fa fa-wrench" aria-hidden="true"></i>) > System Settings > Payment Gateways > Manage Existing Gateways''' or, prior to WHMCS 8.0, '''Setup > Payments > Payment Gateways > Manage Existing Gateways''' to move Stripe to the top of the page.
+
* The payment method is set to a module other than Stripe. In this case, perform one of the following actions:
 +
** Change the client's '''Payment Method''' setting in the client's '''Profile''' tab to the Stripe module.
 +
** Make Stripe the system default payment gateway at '''Configuration (<i class="fa fa-wrench" aria-hidden="true"></i>) > System Settings > [[Payment Gateways]]''' or, prior to WHMCS 8.0, '''Setup > Payments > Payment Gateways'''.
  
 
====Out Of Date Template Files====
 
====Out Of Date Template Files====
  
The error may also be caused by out of date template files. Please ensure your client theme and order form templates are fully compatible with the version of WHMCS you are running. With each version of WHMCS the [https://docs.whmcs.com/Release_Notes release notes] provide links to template changes.
+
The error indicates that you have out-of-date template files. Make certain that your client theme and order form templates are fully compatible with your version of WHMCS. The [[Release Notes]] for each version of WHMCS provide links to template changes.
  
 
====Network Analyser Tool====
 
====Network Analyser Tool====
Line 175: Line 213:
  
 
===No Stripe Customer Details Found===
 
===No Stripe Customer Details Found===
This error will be logged in the debug data section of the Billing > Gateway Log. It means that the client in quesiton does not have a Pay Method in WHMCS to make a payment charge via Stripe. You can confirm this by looking at the Pay Methods section of the client's Summary tab.
+
The system logs this error in the debug data section of '''Billing > [[Gateway Log]]'''. It indicates that the client does not have a payment method in WHMCS. You can confirm this in the '''[[Pay Methods]]''' section of the client's '''[[Clients:Summary Tab|Summary]]''' tab.
  
To resolve, invite the client to login to the client area, navigate to the unpaid invoice and click "Pay Now" to make a payment via Stripe. This will then create a Pay Method to be used for future automatic payments.
+
To resolve this, ask the client to log in to the Client Area, go to the unpaid invoice, and click '''Pay Now''' to make a payment via Stripe. This will create a payment method to use for future automatic payments.
  
 
==="You must provide a value for 'cvc'===
 
==="You must provide a value for 'cvc'===
  
If you see this logged under '''Billing > Gateway Log''' for a failed payment attempted by the admin or the cron job, this generally means the customer is in an European country or has an European billing address, and Stripe's API requires they make at least one manual payment to get added to their system. Having them pay an Unpaid invoice via the client area should resolve this. This functionality of their API is documented at  https://stripe.com/docs/api?lang=python#create_card_token (click the "show child parameters" link to see it).
+
If you see at '''Billing > [[Gateway Log]]''' for a failed payment attempt by an admin or the cron job, this indicates that the customer is in an European country or has a European billing address. Stripe's API requires that they make at least one manual payment to get added to their system.  
  
It shows the following when you do so:
+
To resolve this, ask the client to log in to the Client Area, go to the unpaid invoice, and click '''Pay Now''' to make a payment via Stripe.
  
cvc<br>
+
For more information, see [https://stripe.com/docs/api?lang=python#create_card_token Stripe's documentation] (click '''show child parameters''').
usually required<br>
 
Card security code. Highly recommended to always include this value, but it's only required for accounts based in European countries.
 
  
Once the customer has made a manual payment as described above, they will be added to Stripe and any future attempts (either automatic or manual) should work as expected.
+
When you do this, the system displays the following data:
 +
 
 +
cvc
 +
usually required
 +
Card security code. Highly recommended to always include this value, but it's only required for accounts based in European countries.
 +
 
 +
After the customer makes a manual payment, the system adds them to Stripe and any future attempts (automatic or manual) will work normally.
  
 
===Network error [errno 35]: Unsupported SSL protocol version===
 
===Network error [errno 35]: Unsupported SSL protocol version===
Seeing this "Unexpected error communicating with Stripe" error in the Gateway Log indicates a server configuration issue. The server is attempting a secure connection to Stripe using an outdated SSL protocol. As this is no longer secure, most providers now require connections be made using the newer TLS protocol instead: [https://stripe.com/docs/security#tls Stripe TLS Documentation].
+
This error indicates a server configuration issue. The server is attempting a secure connection to Stripe using an outdated SSL protocol. Most providers now require connections via TLS for security purposes. For more information, see [https://stripe.com/docs/security#tls Stripe TLS Documentation].
  
To resolve this issue, work with a server admin or hosting provider to ensure that remote cURL connections are made using the TLS protocol by default, rather than the outdated SSL protocol.
+
To resolve this issue, work with your system administrator or hosting provider to ensure that remote cURL connections use TLS by default. You may also need to update your OpenSSL version.
Updating the OpenSSL version may also be required.
 
  
 
===You passed an empty string for 'statement_descriptor'===
 
===You passed an empty string for 'statement_descriptor'===
This error is caused by an empty '''Statement Descriptor''' field in the payment gateway configuration. Please ensure a value is entered into the field in the [[#Setup|gateway configuration]] - it cannot be left empty.
+
This indicates an empty '''Statement Descriptor''' field in the payment gateway configuration. Make certain that you set your entire [[#Adding_the_Stripe_Payment_Gateway|gateway configuration]].
  
 
===Bad Request===
 
===Bad Request===
This error may appear in the Client Area when attempting to pay for an invoice or order using an existing stored payment method. It indicates that the customer or the token in WHMCS do not exist in Stripe. To ensure that the pay method is correctly stored in Stripe, delete the stored payment method from the Admin Area via the client's profile's '''Summary''' tab (which may display a more-informative error to administrators). Then, add the payment method again.
+
This error may appear in the Client Area when a client attempts to pay for an invoice or order using an existing stored payment method. It indicates that the customer or the token in WHMCS do not exist in Stripe. To ensure that the pay method is correctly stored in Stripe, delete the stored payment method from the Admin Area via the client's profile's '''[[Clients:Summary Tab|Summary]]''' tab (which may display a more-informative error to administrators). Then, add the payment method again.
 
   
 
   
 
Customised or outdated system themes or order form templates can also cause this error. To troubleshoot this:
 
Customised or outdated system themes or order form templates can also cause this error. To troubleshoot this:
 
   
 
   
* Go to '''Configuration (<i class="fa fa-wrench" aria-hidden="true"></i>) > System Settings > General Settings''' and select the '''General''' tab.
+
# Go to the '''[[General Tab|General]]''' tab at '''Configuration (<i class="fa fa-wrench" aria-hidden="true"></i>) > System Settings > General Settings''' or, prior to WHMCS 8.0, '''Setup > General Settings'''.
* Select ''Six'' or ''Twenty-One'' for '''System Theme'''.
+
# Select ''Six'' or ''Twenty-One'' for '''System Theme'''.
* Go to the '''Ordering''' tab.
+
# Go to the '''[[Ordering Tab|Ordering]]''' tab.
* Select a [[Standard_Order_Form_Templates|Default Order Form Template]].
+
# Select a '''[[Standard_Order_Form_Templates|Default Order Form Template]]'''.
* Click '''Save Changes'''.
+
# Click '''Save Changes'''.
* Return to the client area and refresh the page.
+
# Return to the Client Area and refresh the page.
 
   
 
   
 
<div class="docs-alert-warning">
 
<div class="docs-alert-warning">
Line 218: Line 259:
  
 
===An unexpected error - No Stripe Payment Method found from token===
 
===An unexpected error - No Stripe Payment Method found from token===
This error indicates that some of the required data is not being transmitted to Stripe. This is usually due to outdated order form templates. Please test using the Twenty-One or Six system themes and the Standard Cart order form template.
+
This error indicates that the system could not transmit some of the required data to Stripe. This is usually due to outdated order form templates. Check this issue using the Twenty-One or Six system theme and the Standard Cart order form template.
  
 
<div class="docs-alert-warning">
 
<div class="docs-alert-warning">
Line 225: Line 266:
 
</div>
 
</div>
  
This can also be caused by a JavaScript error from custom code (template changes, hooks, addons, etc.) preventing the standard Stripe JavaScript from running correctly. Your browser console will show if a JavaScript error is occurring and, if so, the custom JavaScript will need to be corrected. If the JavaScript error is coming from a third party customisation, please contact the developer for assistance.
+
This can also be caused by a JavaScript error from custom code (for example, template changes, hooks, or addons) preventing the standard Stripe JavaScript from running correctly. Your browser console will show whether a JavaScript error is occurring.
 +
* If one is, the custom JavaScript will need to be corrected.  
 +
* If the JavaScript error is coming from a third-party customisation, contact the developer for assistance.
  
Please contact our [https://www.whmcs.com/submit-a-ticket/ support team] if the issue persists.
+
If the issue persists, contact our [https://www.whmcs.com/submit-a-ticket/ support team].
  
 
===Error Updating Remote Pay Method: Remote Storage Failed===
 
===Error Updating Remote Pay Method: Remote Storage Failed===
A more informative reasoning for this error should be found in the Gateway Log at Billing > Gateway Log and will likely be self explanatory or covered by other errors featured in this troubleshooting section.
+
You can find information about this error at '''Billing > [[Gateway Log]]'''.
  
 
===Stripe India Accounts===
 
===Stripe India Accounts===
For Indian based Stripe accounts, the following additional conditions are required for a successful payment capture:
+
India-based Stripe accounts require the following additional conditions for a successful payment capture:
  
*Clients Address/Billing Contact must be a valid Indian postal address
+
* The client's address and billing contact must use a valid Indian postal address.
*Payment card must be issued by an Indian bank
+
* The payment card must be from an Indian bank.
*Invoice must use INR currency
+
* The invoice must use INR as the currency.
  
WHMCS can automatically and transparently convert invoice totals into other currencies upon payment:
+
To automatically convert invoice totals into other currencies upon payment in WHMCS:
*Navigate to Setup > Payments > Currencies
 
  
Add INR as an [[Currencies#Adding.2FEditing_a_Currency|additional currency]] (if you haven't already)
+
# Go to '''Configuration (<i class="fa fa-wrench" aria-hidden="true"></i>) > System Settings > [[Currencies]]''' or, prior to WHMCS 8.0, '''Setup > Payments > Currencies'''.
*Navigate to '''Configuration (<i class="fa fa-wrench" aria-hidden="true"></i>) > System Settings > Payment Gateways > Manage Existing Gateways''' or, prior to WHMCS 8.0, '''Setup > Payments > Payment Gateways > Manage Existing Gateways'''.
+
# Add <tt>INR</tt> as an [[Currencies#Adding.2FEditing_a_Currency|additional currency]].
*Set the "Convert To For Processing" option on the Stripe gateway to INR.
+
# Go to '''Configuration (<i class="fa fa-wrench" aria-hidden="true"></i>) > System Settings > [[Payment Gateways]]''' or, prior to WHMCS 8.0, '''Setup > Payments > Payment Gateways'''.
 +
# Set '''Convert To For Processing''' on the Stripe gateway to ''INR''.
  
More information on using the Convert to For Processing feature can be found [[Payment_Gateways#Setting_Up_Gateway_Modules|here.]]
+
For more information about the additional Stripe requirements for Indian Stripe accounts, see [https://support.stripe.com/questions/requirements-for-india-export-charges Stripe's documentation].
  
Further information on the additional Stripe requirements for Indian Stripe accounts can be found here:
+
{{modules}}
https://support.stripe.com/questions/requirements-for-india-export-charges
 

Latest revision as of 16:55, 17 May 2024

About this Module

The WHMCS Stripe payment gateway uses Stripe's tokenised storage system to submit credit card information to Stripe, which stores it remotely.

For other Stripe options, see Stripe ACH and Stripe SEPA.

Supported Features

Type One Time Recurring Refunds 3D Secure
Token Yes Yes Yes Yes
Remote Update Card Remote Delete Card AddPayMethod API
Yes Yes No

The Stripe payment gateway module is not compatible with the Modern or Boxes order form templates.

Adding the Stripe Payment Gateway

Stripe Module Settings

To set up the Stripe payment gateway in WHMCS:

  1. Go to the appropriate location for your version of WHMCS:
    • For WHMCS 8.0 and later, go to Configuration () > Apps & Integrations or Addons > Apps & Integrations.
    • For WHMCS 7.10 and earlier, go to Setup > Products/Services > Payment Gateways and choose All Payment Gateways.
  2. Click Stripe.
  3. Check Show on Order Form to display this payment method in the Client Area during checkout.
  4. Configure a display name. We recommend Credit Card.
  5. Go to the Stripe portal and retrieve the publishable and secret API keys.
  6. Enter your Stripe API Keys.
    To test Stripe, enter your Stripe Test Mode API Keys.
  7. Optionally, customize the Statement Descriptor Suffix with a maximum of 22 characters.
  8. In WHMCS 8.0 and later, leave the Stripe WebHook Endpoint Secret and Stripe WebHook Endpoint Secret (Test/Sandbox) empty. WHMCS auto-generates these. See below for more information.
  9. Optionally, check Allow Payment Request Buttons. See below for more information.
  10. Click Save Changes.
  11. If you use different default currencies in Stripe and WHMCS, make certain that you have also configured your Stripe account's currency with a valid exchange rate at Configuration () > System Settings > Currencies or, prior to WHMCS 8.0, Setup > Payments > Currencies. Stripe only returns transaction fees in the default currency for the Stripe account.

WebHook Endpoints

You can use Stripe Webhooks in WHMCS v8.0 and above.

Stripe's WebHook Endpoints update WHMCS automatically with changes to your customers' cards. In WHMCS 8.0 and later, when you click Save Changes, WHMCS will use the Stripe Publishable API Key and Stripe Secret API Key to generate the Stripe WebHook Endpoint Secret and Stripe WebHook Endpoint Secret (Test/Sandbox).

  • If you enter live API keys (sk_live), WHMCS will generate the Stripe WebHook Endpoint Secret.
  • If you enter test API keys (sk_test), WHMCS will generate the Stripe WebHook Endpoint Secret (Test/Sandbox).

WHMCS registers the WebHook Endpoints to deliver these events from Stripe:

* customer.source.updated
  • payment_method.updated

To change the WebHook ID, empty Stripe WebHook Endpoint Secret and Stripe WebHook Endpoint Secret (Test/Sandbox) and click Save Changes. WHMCS will auto-generate them again with new values.

Payment Request Button

Enabling this option within the module configuration provides customers with a platform-specific payment request button (for example, Apple® Pay). For customers who don’t use Apple Pay, Payment Request supports credit cards stored in the browser, Google® Pay, and Microsoft® Pay.

Apple Pay

The Apple Pay Button on Checkout

When you enable this, Apple Pay allows access to payment details that users have stored in their Apple Wallet. If they're using Safari® on their iPhone® or iPad®, when they tap "Buy with Apple Pay" on your site, they'll be shown a modal payment sheet. If they're using Safari on their Mac®, and have an iOS® device in range, they'll be prompted on their device to authorize the payment, which will then be sent to the browser.

To use Apple Pay with a live Stripe API key, you must register all of the domains that will display an Apple Pay button with Apple. This includes both top-level domains (for example, whmcs.com) and subdomains (for example, shop.whmcs.com).

An SSL certificate is required to use Apple Pay.

To do this:

  1. Download this domain association file and host it at /.well-known/apple-developer-merchantid-domain-association on your site. For example, if you're registering https://example.com, make that file available at https://example.com/.well-known/apple-developer-merchantid-domain-association.
  2. To instruct Stripe to register the domain with Apple, go to the Apple Pay tab in Account Settings in the Stripe Dashboard.

Google Pay

Google Pay allows customers to make payments using any credit or debit card on their Google account, including Google Play, YouTube™, Chrome™, or an Android™ device.

Microsoft Pay

Microsoft Pay allows customers to make payments using any credit or debit card on their Microsoft account.

Link

In WHMCS 8.8 and later, customers can pay using Link for any Stripe transaction. Link makes payments easier by letting customers complete secure, one-click transactions using saved payment information. Stripe enables Link automatically.

For more information about disabling Link for your Stripe account, see How to Turn Off Link.

Test Mode

This module does not support test mode.

Payment Workflow

The Stripe module on Checkout

The Stripe module supports automated recurring and on-demand billing.

Customers can choose between previously-stored cards or entering new ones during payment, and they can update their credit cards at any time in the Client Area. Admins can also update credit card information in the WHMCS Admin Area.

During checkout, clients never leave WHMCS. Personal card information goes directly to Stripe and is never stored within WHMCS. The Stripe API handles all refunds and obtains transaction information.

  • In WHMCS 7.8 and later, WHMCS uses the Stripe Elements implementation method. When performing checkout, if customer authorization is required, the system will prompt the user automatically to approve the payment. This process is also commonly referred to as 3D Secure. Use of 3D Secure depends on the card type and issuer.
  • In WHMCS 8.8 and later, Stripe module transactions meet all Reserve Bank of India requirements.

WHMCS 8.3 and higher includes support for disputes for Stripe (credit card only) and some PayPal® transactions at Billing > Disputes.

Recurring Payments

Automated recurring payments use stored tokens. If a client card requires SCA, the system will deny the payment attempt and the client must log in to WHMCS manually to process the payment.

Payment Gateway Balances

In WHMCS 8.2 and later, you can view payment gateway balances directly within the WHMCS Admin Area, with native support for Stripe balances.

At Billing > Transactions, you can view balances in the transaction list and in the transaction details for individual transactions. For more information, see Payment Gateway Balances and Transactions.

This requires you to enable View Gateway Balances for the desired administrator role at Configuration () > System Settings > Administrator Roles.

In the Admin Area Dashboard, you can view your Stripe balances through the Stripe Balance widget. However, this widget does not use the WHMCS\Module\Gateway\Balance and WHMCS\Module\Gateway\BalanceCollection classes to display balances. For more information, see Stripe Balance Widget.

Migrating to Stripe

The Stripe payment gateway module supports migrating locally-stored credit card details to Stripe's tokenized storage. This is useful when you transition from another non-tokenized merchant gateway provider to Stripe.

For an existing client with a locally-stored credit card, the first time that the system attempts to capture payment for an invoice using Stripe, the system will submit the credit card details to Stripe and create and store a token. Then, the system will remove the local copy of the card details.

To migrate to Stripe and ensure all future credit card processing uses it:

  1. Go to the appropriate location for your version of WHMCS:
    • For WHMCS 8.6 and later, go to Configuration () > Apps & Integrations.
    • For WHMCS 8.0 to 8.6, go to Configuration () > System Settings > Payment Gateways and choose All Payment Gateways.
    • For WHMCS 7.10 and earlier, go to Setup > Products/Services > Payment Gateways and choose All Payment Gateways.
  2. Activate the Stripe module.
  3. Click Deactivate for your previous merchant gateway provider.
  4. Select Stripe as the replacement gateway to switch users of the previous gateway module to.
  5. Click OK.

PCI DSS Compliance
After migrating to Stripe, you may receive an email from Stripe requesting that you complete the Self Assessment Questionnaire D (SAQ D) form.

This is because the system is attempting to send raw card data that your previous merchant gateway stored to Stripe's API. You can only do this when your Stripe account has been flagged as PCI compliant.

To gain full access to Stripe's API, complete the SAQ D form to certify that you are PCI compliant and send it to Stripe. Stripe can then enable use of raw card data with their API.

For more information, contact Stripe support.

Migrating from a 3rd Party Stripe Module

The WHMCS Stripe module uses the Stripe cus_ reference to capture payments (for example, cus_9MvIb7UlgJfJTn). The WHMCS Stripe module can replace any third-party module that uses this.

To check whether your current Stripe module uses the cus_ reference, navigate to a client that you know has an active Stripe token and click on one of the pay methods in the Summary tab of the client's profile. Verify that the listed token includes the cus_ prefix.

To start using the WHMCS Stripe module:

  1. Note the internal name of the previous Stripe module, which you can find by looking in the gateway column in the tblpaymentgateways database table.
  2. Activate our official Stripe module.
  3. Deactivate the previous Stripe module.
  4. Check one of the Stripe pay methods on a client. If the token contains cus{_}, you can use it with our module but it will require a manual database edit first. To allow that, run the following SQL query using phpMyAdmin or another tool, replacing "example" with the name of the previous module:
    UPDATE tblpaymethods SET gateway_name = 'stripe' WHERE gateway_name = 'example';
  5. Remove any third-party files and template customisations for the previous Stripe module.

Troubleshooting

Remote Transaction Failure. Please Contact Support

This issue has multiple causes. This may also display as Error.

To resolve this issue:

  1. Go to Billing > Gateway Log.
  2. Check the Result and Debug Data columns for error messages or codes from the time of the payment attempt.
  3. Perform the appropriate steps in Stripe's Error Codes and Declines Codes documentation.

See below for other common causes of this error:

Payment Blocked By Stripe

This indicates that a rule in your Stripe account may be blocking payment.

To resolve this:

  1. Log in to your Stripe Dashboard.
  2. Go to Developers > Logs.
  3. Find the log entries from the time at which the payment was attempted. The details of the log will show whether the payment was blocked (for example, with a The zip code you supplied failed validation error).
  4. Adjust the rules in your Stripe account for the error. For help, contact Stripe support.

Customisations

This issue may also present itself as "No Stripe Details Found for Update" in the Gateway Log.

This issue can occur due to interference from a third-party Stripe module. Using the official Stripe module requires the full uninstallation and removal of any custom or third-party Stripe integrations. This includes removal of all files and template modifications.

For example, these issues may trigger this error:

  • A hook file in /includes/hooks/stripe.php. Remove this file when switching to the WHMCS Stripe module.
  • Template customisations in your active order form template files.
  • The payment method is set to a module other than Stripe. In this case, perform one of the following actions:
    • Change the client's Payment Method setting in the client's Profile tab to the Stripe module.
    • Make Stripe the system default payment gateway at Configuration () > System Settings > Payment Gateways or, prior to WHMCS 8.0, Setup > Payments > Payment Gateways.

Out Of Date Template Files

The error indicates that you have out-of-date template files. Make certain that your client theme and order form templates are fully compatible with your version of WHMCS. The Release Notes for each version of WHMCS provide links to template changes.

Network Analyser Tool

Another method to diagnose this error is to use your browser's network analyser tool. Please see the section Another Error Type in this help article. Whilst the article is for another issue, it describes how to use your browser's network analyser tool to help identify underlying errors.

No Stripe Customer Details Found

The system logs this error in the debug data section of Billing > Gateway Log. It indicates that the client does not have a payment method in WHMCS. You can confirm this in the Pay Methods section of the client's Summary tab.

To resolve this, ask the client to log in to the Client Area, go to the unpaid invoice, and click Pay Now to make a payment via Stripe. This will create a payment method to use for future automatic payments.

"You must provide a value for 'cvc'

If you see at Billing > Gateway Log for a failed payment attempt by an admin or the cron job, this indicates that the customer is in an European country or has a European billing address. Stripe's API requires that they make at least one manual payment to get added to their system.

To resolve this, ask the client to log in to the Client Area, go to the unpaid invoice, and click Pay Now to make a payment via Stripe.

For more information, see Stripe's documentation (click show child parameters).

When you do this, the system displays the following data:

cvc
usually required
Card security code. Highly recommended to always include this value, but it's only required for accounts based in European countries.

After the customer makes a manual payment, the system adds them to Stripe and any future attempts (automatic or manual) will work normally.

Network error [errno 35]: Unsupported SSL protocol version

This error indicates a server configuration issue. The server is attempting a secure connection to Stripe using an outdated SSL protocol. Most providers now require connections via TLS for security purposes. For more information, see Stripe TLS Documentation.

To resolve this issue, work with your system administrator or hosting provider to ensure that remote cURL connections use TLS by default. You may also need to update your OpenSSL version.

You passed an empty string for 'statement_descriptor'

This indicates an empty Statement Descriptor field in the payment gateway configuration. Make certain that you set your entire gateway configuration.

Bad Request

This error may appear in the Client Area when a client attempts to pay for an invoice or order using an existing stored payment method. It indicates that the customer or the token in WHMCS do not exist in Stripe. To ensure that the pay method is correctly stored in Stripe, delete the stored payment method from the Admin Area via the client's profile's Summary tab (which may display a more-informative error to administrators). Then, add the payment method again.

Customised or outdated system themes or order form templates can also cause this error. To troubleshoot this:

  1. Go to the General tab at Configuration () > System Settings > General Settings or, prior to WHMCS 8.0, Setup > General Settings.
  2. Select Six or Twenty-One for System Theme.
  3. Go to the Ordering tab.
  4. Select a Default Order Form Template.
  5. Click Save Changes.
  6. Return to the Client Area and refresh the page.

Client Area System Themes
We introduced Twenty-One in WHMCS 8.1. We plan to remove Six in a future version.

An unexpected error - No Stripe Payment Method found from token

This error indicates that the system could not transmit some of the required data to Stripe. This is usually due to outdated order form templates. Check this issue using the Twenty-One or Six system theme and the Standard Cart order form template.

Client Area System Themes
We introduced Twenty-One in WHMCS 8.1. We plan to remove Six in a future version.

This can also be caused by a JavaScript error from custom code (for example, template changes, hooks, or addons) preventing the standard Stripe JavaScript from running correctly. Your browser console will show whether a JavaScript error is occurring.

  • If one is, the custom JavaScript will need to be corrected.
  • If the JavaScript error is coming from a third-party customisation, contact the developer for assistance.

If the issue persists, contact our support team.

Error Updating Remote Pay Method: Remote Storage Failed

You can find information about this error at Billing > Gateway Log.

Stripe India Accounts

India-based Stripe accounts require the following additional conditions for a successful payment capture:

  • The client's address and billing contact must use a valid Indian postal address.
  • The payment card must be from an Indian bank.
  • The invoice must use INR as the currency.

To automatically convert invoice totals into other currencies upon payment in WHMCS:

  1. Go to Configuration () > System Settings > Currencies or, prior to WHMCS 8.0, Setup > Payments > Currencies.
  2. Add INR as an additional currency.
  3. Go to Configuration () > System Settings > Payment Gateways or, prior to WHMCS 8.0, Setup > Payments > Payment Gateways.
  4. Set Convert To For Processing on the Stripe gateway to INR.

For more information about the additional Stripe requirements for Indian Stripe accounts, see Stripe's documentation.

Server Modules
cPanel/WHM - DirectAdmin - Plesk - Helm 3 - Helm 4 - Ensim - InterWorx - WebsitePanel - Cloudmin
Lxadmin - Virtualmin Pro - XPanel - HyperVM - SolusVM - Cloudmin - WHMSonic - VPS.Net
CentovaCast - SCPanel - MediaCP - GameCP - TCAdmin - Reseller Central - Auto Release - Heart Internet

Registrar Modules
Enom - ResellerClub - Nominet - OpenSRS - ResellOne - OnlineNIC - PlanetDomain - Affordable Domains
TPP Wholesale - TPPInternet - Stargate - Namecheap - NetEarthOne - Bizcn - InternetBS - GMO Internet
12Register - Registercom - DotDNS - WebNIC - Dot.TK - HexoNet - Realtime Register - Registereu
RRPProxy - ResellerCamp - TransIP - Heart Internet - IPMirror - NetRegistry - OVH - VentraIP Wholesale
Email - 101Domain

Fraud Modules
MaxMind - VariLogiX FraudCall - Telesign

Gateway Modules
2CheckOut - AsiaPay - Auth.net Echeck - Authorize.net - Authorize.net CIM - Bank Transfer - BidPay
BluePay - BluePay Echeck - BluePay Remote - Boleto - CashU - CC Avenue - ChronoPay - Direct Debit
EMatters - E-Path - eProcessingNetwork - eWAY Tokens - F2B - Finansbank - GarantiBank - Gate2Shop
Inpay - InternetSecure - IP.Pay - Kuveytturk - Modulo Moip - Mail In Payment - Merchant Partners
Merchant Warrior - IDEALMollie - Moneris - Moneris Vault - Skrill 1-Tap - NaviGate - NETbilling
Netregistry Pay - NoChex - Offline Credit Card - Optimal Payments - PagSeguro - Payflow Pro - Pay Junction
Paymate AU and NZ - Payment Express - PayPal - PayPal Card Payments - PayPal Express Checkout
PayPal Payments - PayPal Payments Pro - PayPoint.net (SecPay) - Payson - Planet Authorize - ProtX VSP Form
PSIGate - Quantum Gateway - Quantum Vault - SagePay - SagePay Tokens v2 - SecurePay
SecurePay AU - Secure Trading - TrustCommerce - USA ePay - WorldPay - WorldPay Invisible