It seems like it might be simpler both for the dev and the user to just send an SMS with a neatly-formatted text version of the bill rather than a link to a screenshot of the bill. If it's just a couple amounts, tax, tip, and total, that seems like it would easily fit in 140 characters. The app design looks pretty nice though.
Edit: I guess maybe the advantage of this design is that you can easily send the bill for everyone at the table to everyone (probably wouldn't fit into 140 chars), which eliminates the need for the user to individually choose which contact corresponds to which column of the bill.
I wonder if he could regenerate the screenshot on the server side, or more realistically simply show the same information on a web page. Then he could put all the information that goes into the screenshot—“amounts, tax, subtotal, top and total for up to 16 individual people” doesn’t sound like that much data—into a billr.me URL, and shorten that with bit.ly. That would save some money because no screenshots would need to be stored on S3.
The suggestion elsewhere in this discussion to encode the entire bill in the url is probably the optimal solution though. With a bit of caching it's probably the cheapest you could run your system (sans S3).
Combining these four elements has allowed me to upload and serve images from the billr.me domain without maintaining a database. I’m hosting on https://www.nearlyfreespeech.net/ for pennies per month and never need to do any server maintenance.