Tom, found a small bug. We allow users to collect, in which case no delivery address is passed. The code as it is automatically adds commas (,) between the delivery lines, ie.
$delivery_add .= ",\r\n" . $order->delivery['suburb'];
This was causing an INVALID error and "If you provide a DeliveryAddress you must provide and DeliveryPostCode and vice versa."
so I've changed the code to
if($order->delivery['suburb'])
$delivery_add .= ",\r\n" . $order->delivery['suburb'];
for all those lines and it now works fine.
Thanks
John