Personally I like to use explicit casts so:
public class InvoiceHeader
{
public static explicit operator QBInvoice(InvoiceHeader invoice)
{
return new QBInvoice {}; // do your mapping
}
}
Then you can just cast it:
var qbInvoice = (QBInvoice) invoiceHeader;