If you want to get rid of the HTML, I'd prefer something like

    formatted.append(tr("%1 to %2").arg("<b>"+format(amount)+"</b>", merchant));

This factors out the html without getting rid of the context in the translation string.