I have two options to order a product.

  1. Pick up yourself (works)
  2. Delivery, order below 30,- you have to pay 7,- and above there are no delivery costs:

I use Tablerates for this. I have uploaded a CSV and it is correctly done:

Land,Provincie,Postcode,"Subtotaal bestelling (en hierboven)",Verzendkosten

Condition; price vs location

When I order below 30,- it adds 7,- thats oké

But when I order above 30,- (subtotal) it still adds the 7,-

I cleared cache etc etc. Is there something I could have missed?


  • Did you first choose Price vs. Destination and then upload the CSV or the opposite?
    – michael
    Nov 25 '14 at 9:52
  • Not sure. What order do you think is best, I can try again.
    – user123
    Nov 25 '14 at 9:53
  • First you have to choose and save the Condition (Price vs. Destination) and then to upload the CSV.
    – michael
    Nov 25 '14 at 9:57
  • By the looks of the csv header Subtotaal bestelling (en hierboven) I conclude that the condition is set to Price vs destination.
    – Marius
    Nov 25 '14 at 10:03
  • I have (re)set the tablerates and after that uploaded the CSV. To test I changed the price to 7,10. When I order (with different browser) above 30,- it still adds the 7,10. When export the CSV it all looks good, I don't get it
    – user123
    Nov 25 '14 at 10:12

The problem can be the tax. If you order something for $ 35, and your taxes are 21%, it calculates the order total by 27.25. So it doesnt fit in your free shipping rate.

in app/code/core/mage/shipping/model/carrier/Flatrate.php add the following code (around line 104)

// exclude Virtual products price from Package value if pre-configured
    if (!$this->getConfigFlag('include_virtual_price') && $request->getAllItems()) {
        foreach ($request->getAllItems() as $item) {
            if ($item->getParentItem()) {
            if ($item->getHasChildren() && $item->isShipSeparately()) {
                foreach ($item->getChildren() as $child) {
                    if ($child->getProduct()->isVirtual()) {
                        $request->setPackageValue($request->getPackageValue() - $child->getBaseRowTotal());
            } elseif ($item->getProduct()->isVirtual()) {
                $request->setPackageValue($request->getPackageValue() - $item->getBaseRowTotal());
    //////////// add this piece of code ////////////
    if (Mage::helper('tax')->priceIncludesTax()) {
    $taxableAmount = 0;
    foreach ($request->getAllItems() as $item) {
        $taxableAmount += $item->getTaxableAmount();
    //////////// till here ////////////

    // Free shipping by qty
    $freeQty = 0;
    if ($request->getAllItems()) {
        $freePackageValue = 0;

These are the rates Im using for a costumer, They had the same problems. When a costumer ordered something for 52,95, the shipping was not free, after adding the above code it was

Land,Provincie,Postcode,"Subtotaal bestelling (en hierboven)",Verzendkosten
  • I just did 28,3000 instead of the 30.0000 but thank you for a solution to that Marleen. I had the problem when ordering even for 1000,- the deliverycosts where added. I thought I fixed it but the problem came back. I reuploaded the CSV again and now it seems to be OKE. I'm still checking it every day if it keeps working :(
    – user123
    Nov 28 '14 at 14:58

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.