Jump to content


Corporate Sponsors


Latest News: (loading..)

- - - - -

VAT charged on shipping for mail orders


  • You cannot reply to this topic
5 replies to this topic

#1 abra123cadabra

  • Community Member
  • 853 posts
  • Real Name:Ulrike
  • Location:Dublin

Posted 01 October 2007, 14:24

Hi @ll,

I hope someone here can shed some light on the VAT rate I have to charge on shipping costs.

I am located in Ireland and ship foods ordered online on my website within Ireland and to the UK by the Irish Mail (An Post). Most of the foods are zero rated but some (like chocolate) are rated at 21% VAT.

It's very difficult to calculate the exact postage for orders so the amount charged for shipping is not the exact amount paid when posting the packet. The question is, whether I have to charge 21% VAT on my shipping costs or if I have to charge VAT on the shipping cost on the highest VAT rate of products in the packets. Here some examples which should be correct, if I understood the rules correctly:

10 casserole mixes (zero rated) -> shipping zero rated
10 chocolate bars (21%) -> shipping + 21% VAT
10 casserole mixes (zero rated) + 10 chocolate bars (21%) -> shipping + 21% VAT
10 rusks (13.5%) + 10 chocolate bars (21%) -> shipping + 21% VAT

It seems that it all depends on whether the shipping is a seperate service or part of the contract. This is what I found regarding distance sales on revenue.ie:

Quote

Value-Added Tax

Distance Sales in EU

What are distance sales?
Distance selling in the EU occurs when a supplier in one EU Member State sells goods to a person in another Member State who is not registered for VAT and the supplier is responsible for the delivery of the goods. It includes mail order sales, phone or tele-sales or physical goods ordered over the internet.
According to this, I am offering distance sales and I'm responsible for the delivery to the customer.

This is what I found on revenue.ie in the VAT guide:

Quote

[img]http://www.revenue.ie/images/bl.gif[/img] [img]http://www.revenue.ie/images/bl.gif[/img]

Postage and insurance - reimbursement
5.7 Where amounts are charged separately for postage and insurance and paid over in their entirety to An Post or to the insurer on behalf of customers, suppliers may treat such charges as not being subject to VAT. If, for example, a trader charges an extra €1 for posting an order and such amount of postage is actually paid over, the €1 may be treated as exempt. Similarly, if a car hire company charges €50 for motor insurance, and that amount is actually paid over in full to insurers in the name of the lessee, the €50 may be treated as exempt. However, if a charge is made for posting and/or insurance, and a lesser amount is paid over by the supplier to An Post or to the relevant insurance company, the charge made to the customer is regarded as part of the total price of the goods/service supplied, and is subject to the VAT rate applicable to the goods/service in question.

» Back to Top


Treatment of mixed transactions - (package rule)
5.8 If an article comprising goods taxable at different rates is sold as a unit for a single consideration, (for example, a story book and accompanying cassette) VAT is payable on the entire amount charged at the rate applicable to the higher VAT rated item. The same principle applies to services liable at different rates or to a mixture of goods and services.

This is what I found on HM Revenue & Customs ( HMRC Reference:Notice 700/24 (April 2003)) which is very similar to the Irish regulations above:

Quote

2.3 What if I have to deliver the goods and I make a charge for this?
The important test is whether delivery is included in the contract. You are making a single supply of delivered goods if, under the contract, you have to deliver the goods to a place specified by the customer. This might include the customer’s:

  • own address;
  • friends or relatives; or
  • their own customers.
The position is not affected by whether the charge you make for delivery is separately itemised or invoiced to the customer. In either case there is a single supply for which the VAT liability is based on the liability of the goods being delivered. For example, any element of the price attributed to the doorstep delivery of milk and newspapers will also be zero rated. On the other hand any element attributed to the delivery of standard rated mail order goods will be standard rated.

So if my examples above are correct and I have to add VAT on shipping to some but not all of my packets sent to my customers, do you know if there is a contribution that does this or do you have any idea where I need to make changes so that this is calculated correctly?

Thanks in advance for your help.

abra
The First Law of E-Commerce: If the user can't find the product, the user can't buy the product.

Feedback and suggestions on my shop welcome.


Note: My advice is based on my own experience or on something I read in these forums. No guarantee it'll work for you! Make sure that you always BACKUP the database and the files you are going to change so that you can rollback to a working version if things go wrong.

#2 cbx040

  • Community Member
  • 27 posts
  • Real Name:Simon
  • Location:Northamptonshire, UK

Posted 07 October 2007, 23:37

Hi,
I think you are right.
There is this contribution
http://www.oscommerce.com/community/contributions,3605
which looks like it will work, but I keep getting
Warning: Invalid argument supplied for foreach() in /usr/home/blank/public_html/includes/modules/order_total/ot_shipping.php on line 66
which is
foreach ( $order->products as $item ) {
So if we can work that out, we will be sorted.

Simon

#3 abra123cadabra

  • Community Member
  • 853 posts
  • Real Name:Ulrike
  • Location:Dublin

Posted 08 October 2007, 08:39

Hi Simon,

thanx for finding this contribution. This is exactly what we need and after modifying my ot_shipping.php, it does calculate the shipping incl. or excl. VAT depending on the items in the cart. This works fine on the checkout_confirmation.php but not on the checkout_shipping.php. I'll see if I can spot what needs to be modified so this displays the proper shipping quote.

I didn't get the foreach error so maybe just double check the ot_shipping.php.

abra
The First Law of E-Commerce: If the user can't find the product, the user can't buy the product.

Feedback and suggestions on my shop welcome.


Note: My advice is based on my own experience or on something I read in these forums. No guarantee it'll work for you! Make sure that you always BACKUP the database and the files you are going to change so that you can rollback to a working version if things go wrong.

#4 abra123cadabra

  • Community Member
  • 853 posts
  • Real Name:Ulrike
  • Location:Dublin

Posted 08 October 2007, 08:44

Just another thought on the foreach error. There have been a few changes to /includes/classes/order.php when I upgraded to RC1.

Try adding $HTTP_POST_VARS to the globals listed in function cart() in order.php:
function cart() {
	  global $HTTP_POST_VARS,

Maybe this just does the trick.

abra
The First Law of E-Commerce: If the user can't find the product, the user can't buy the product.

Feedback and suggestions on my shop welcome.


Note: My advice is based on my own experience or on something I read in these forums. No guarantee it'll work for you! Make sure that you always BACKUP the database and the files you are going to change so that you can rollback to a working version if things go wrong.

#5 abra123cadabra

  • Community Member
  • 853 posts
  • Real Name:Ulrike
  • Location:Dublin

Posted 08 October 2007, 09:22

Added some code to function quote() in my shipping module (multi geozone multi table mzmt.php) and now the shipping quotes on checkout_shipping.php are also correct.

Thank again! You made my day as this was bugging me for quite a while now.

abra
The First Law of E-Commerce: If the user can't find the product, the user can't buy the product.

Feedback and suggestions on my shop welcome.


Note: My advice is based on my own experience or on something I read in these forums. No guarantee it'll work for you! Make sure that you always BACKUP the database and the files you are going to change so that you can rollback to a working version if things go wrong.

#6 cbx040

  • Community Member
  • 27 posts
  • Real Name:Simon
  • Location:Northamptonshire, UK

Posted 08 October 2007, 17:50

Hi Abra,
You may still have the error; it only shows up in shopping_cart.php when you are a guest.
The shipping is shown correctly with/without tax, but you also get the message.
Once you log in the error goes, I changed the foreach to be
while (list($item) = each($order->products)) {
The error message is
Variable passed to each() is not an array or object
Doing
print_r ($order->products);
with 2 different test products gives
Array ( [0] => Array ( [qty] => 1 [name] => Test Product [model] => Test [tax] => 0 [tax_description] => Unknown tax rate [price] => 1.0000 [final_price] => 1 [weight] => 0.100 [id] => 1 ) [1] => Array ( [qty] => 1 [name] => Test Product 2 [model] => Test 2 [tax] => 0 [tax_description] => Unknown tax rate [price] => 1.0000 [final_price] => 1 [weight] => 0.100 [id] => 2 ) ) 0
1

Any ideas?
Thanks,
Simon