Contacts Address as Shipping Address

Hi all,
If this question has been answered then please point the way but I could not find it.

I want to set the shipping address for quotes and invoices as the contacts address.
The contacts are linked to accounts who are the billing details but each contact is at a different location.

Have you tried a Workflow?

Something that transfers over the Address data from one record to another when it is being saved, or when the relationship is being set up.