There are two modules for worldpay - one time invoices and FuturePay. For FuturePay, we use the more versatile Limited Agreements payment system. This offers the ultimate in flexibility and allows charges to be taken from the clients card whenever they are needed. So with this, once the user has setup a FuturePay Agreement, any invoice can be charged to their card at any time. This makes all invoice payments automated. There are however some steps involved in configuring it and we'll go through these below.
Setting up the gateway
You first need to activate the WorldPay and/or WorldPay FuturePay module(s) in WHMCS by navigating to Setup > Payment Gateways and enter your details as requested.
Next login to the WorldPay Merchant Administration Interface > System Settings > Integration Setup : PRODUCTION and set the Payment Response URL to:
You should also tick the following items: Payment Response enabled?, Enable Recurring Payment Response and Enable the Shopper Response.
FuturePay Specific Items
|Type||One Time||Recurring||Refunds||3D Secure|
|Remote Update Card||Remote Delete Card|
If using FuturePay, in the Auth Password field, you'll need to enter the password that is setup to allow remote charges to be made. This is also referred to as the Invisible Auth Password and requires that a Remote Admin installation is added to your WorldPay account. This can be achieved by emailing support [at] worldpay [dot] com with your company ID and requesting this (at no extra cost).
You should then go to Setup > Payment Gateways and setup the FuturePay gateway as show below:
Next, you need to go to Setup > Client Custom Fields and setup a custom field with the name FuturePay ID. This should be an admin only field and will store the futurepay id needed to submit charges in the future after the agreement has been setup.
Finally, you need to setup a cron job to run the futurepay charges file which automatically submits the charge requests for all due invoices each day. This needs to be done the your Cron section of your control panel where the WHMCS cron should also be setup. The command you need to use is as follows:
php -q /home/username/public_html/whmcs/modules/gateways/callback/worldpayfuturepaycharges.php
No special cron or custom field is required for the futurepay module, the FuturePay ID is stored in the database (tblclients.gatewayid). You should keep the above in place if you have previously used the custom field and cron method.
The Futurepay ID is displayed to staff on the invoice page and also by clicking the Credit Card Information link on the client's Summary tab.
Auth Mode A - Capture Delay
The auth mode is used to turn on capture delay. A = on. You then configure the delay period in the WorldPay admin. This used to be called pre-auth mode. Capture Delay enables you to specify a delay between the authorisation of a payment and its capture. This can be helpful when determining whether you should fulfil an order since it allows you time to assess a transaction. You can cancel (void) a transaction through the WorldPay Merchant Interface before capture, thereby saving you time and money by avoiding making a refund.
When enabled, the client will not be able to tell whether you are using capture delay as it behaves exactly the same; invoices in WHMCS will still instantly be marked as paid and all automation will take place as normal.
For example; a customer makes a payment and you want to Worldpay to automatically debit this payment from the customers' card then you would turn off capture delay. If you want to delay the capture then turn it on.
To automatically capture all payments without any delay
Set Capture Delay in your WorldPay account to 0 (zero) - set AuthMode on your Payment Gateway page to A.
To automatically capture all payments with a delay of 1-14 days
Set Capture Delay in your WorldPay account to a number 1-14 - set AuthMode on your Payment Gateway page to A.
To turn off automatic payment capture and manually capture all payments
Set Capture Delay in your WorldPay account to OFF - set AuthMode on your Payment Gateway page to E.