WorldPay
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 Config > Payment Gateways and enter your details as requested.
You should set the callback url for payments in your WorldPay control panel to use the WP callback url that is sent with the payment request using <WPDISPLAY ITEM=MC_callback>
FuturePay Specific Items
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 Configuration > Payment Gateways and setup the FuturePay gateway as show below:
Next, you need to go to Configuration > 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
Behavior of the Module
This module has some interesting characteristics that should be noted. Payments are taken immediately when a new customer first creates their FuturePay Agreement and subsequent payments taken when an invoice reaches its due date when the cron runs - as expected.
However, if an existing customer places a new order payment will not be taken until the cron runs and subsequently it could be up to 11 hours before their service is set up. There is a debate surrounding the issue in this thread.