「I'll do [someone] a receipt」は文法的に正しいフレーズなのでしょうか。不自然に思えるのですが。
おっしゃる通り、これは文法的には正しくない表現です。ですが、日常会話で使う分には問題ありません！この「receipt」は動作を表す役割をしています。「receipt」を作るという行為を表していると考えてください。また、「I'll do you a favour」という表現もありますが、これは誰かのために何か親切な行いをするという意味で使います。
例: I'll draw up a receipt.（領収書を作成します。）=> 文法的に正しい
例: I'll print a receipt.（領収書を印刷します。）=> 文法的に正しい
例: I'll do you a painting.
= I'll make you a painting.（絵を描いてあげましょう。）