A fresh install of 0.8.2 seems to have done it (was previously using 0.8.1). With the payment module of course and PaypalExpressCheckoutPayment.
My config file looks like this:
// copy the lines below to your mysite/_config.php file and set as required.
// __________________________________START ECOMMERCE MODULE CONFIG __________________________________
//The configuration below is not required, but allows you to customise your ecommerce application - check for the defalt value first.
// * * * DEFINITELY MUST SET
Order::set_email("your name <sales@myshop.com>");
Order::set_receipt_subject("thank you for your order at www.myshop.com");
Order::set_modifiers(array("SimpleShippingModifier"));
// * * * HIGHLY RECOMMENDED SETTINGS NON-ECOMMERCE
Payment::set_site_currency('GBP');
Geoip::$default_country_code = "GB";
i18n::set_locale('en_GB');
//setlocale (LC_TIME, 'en_GB@dollar', 'en_GB.UTF-8', 'en_GB', 'gb', 'gb');
// * * * ECOMMERCE I18N SETTINGS
//EcommerceCurrency::setDecimalDelimiter(','); //for Money formating
//EcommerceCurrency::setThousandDelimiter('.'); //for Money formating
//Object::useCustomClass('SS_Datetime','I18nDatetime', true);
// * * * SHOPPING CART AND ORDER
//ShoppingCart::set_fixed_country_code("NZ"); //always use the same country code
//Order::set_table_overview_fields(array('Total' => 'Total','Status' => 'Status'));//
//Order::set_maximum_ignorable_sales_payments_difference(0.001);//sometimes there are small discrepancies in total (for various reasons)- here you can set the max allowed differences
Order::set_order_id_start_number(001001);//sets a start number for order ID, so that they do not start at one.
//Order::set_cancel_before_payment(false); //soon to be depreciated
//Order::set_cancel_before_processing(false); //soon to be depreciated
//Order::set_cancel_before_sending(false); //soon to be depreciated
//Order::set_cancel_after_sending(false); //soon to be depreciated
//OrderForm::set_user_membership_optional(); //optional for user to become a member
OrderForm::set_force_membership(false); //all users must become members if true, or won't become members if false
//OrderManipulation::set_allow_cancelling(); //shows a cancel button on the order page
//OrderManipulation::set_allow_paying(); //shows a payment form
// * * * PRODUCTS
//ProductsAndGroupsModelAdmin::set_managed_models(array(("Product", "ProductGroup","ProductVariation"));
//SS_Report::register("SideReport", "EcommerceSideReport_AllProducts");
//SS_Report::register("SideReport", "EcommerceSideReport_FeaturedProducts");
//SS_Report::register("SideReport", "EcommerceSideReport_NoImageProducts");
//Product_Image::set_thumbnail_size(140, 100);
//Product_Image::set_content_image_width(200);
//Product_Image::set_large_image_width(200);
//ProductGroup::set_include_child_groups(true);
//ProductGroup::set_must_have_price(true);
//ProductGroup::set_sort_options( array('Title' => 'Alphabetical','Price' => 'Lowest Price')); // will be depreciated soon in this form, WATCH THIS SPACE.
// * * * CHECKOUT
//ExpiryDateField::set_short_months(true); //uses short months (e.g. Jan instead of january) for credit card expiry date.
//OrderFormWithoutShippingAddress::set_fixed_country_code("NZ"); //country is fixed
//OrderFormWithoutShippingAddress::set_postal_code_url("http://maps.google.com"); //link that can be used to check postal code
//OrderFormWithoutShippingAddress::set_postal_code_label("click here to check your postal code"); //label for link that can be used to check postal code
//OrderFormWithoutShippingAddress::set_login_invite_alternative_text('<a href="http://www.mysite.com/Security/login/?BackURL=">If you are a member then please log in.</a>); //label for link that can be used to check postal code
// * * * MEMBER
//EcommerceRole::set_group_name("Customers");
// * * * MODIFIERS
//FlatTaxModifier::set_tax("0.15", "GST", $exclusive = false);
SimpleShippingModifier::set_default_charge(2);
SimpleShippingModifier::set_charges_for_countries(array(
'GB' => 0,
));
//TaxModifier::::set_for_country($country = "NZ", $rate = 0.15, $name = "GST", $inclexcl = "inclusive"))
// * * * HELP
//Product::set_global_allow_purcahse(false); //stops the sale of all products
// ------------------------------------------------------END ECOMMERCE MODULE CONFIG ------------------------------------------------------
{/code]