You can use facades as well, no problem at all. Contracts and facades are the same imo. Both are interface you have to bind your final implementation to. Last but not least you can replace the input facade by form requests or plain Illuminate\Http\Request.
We have an episode about form requests here on Laracasts: https://laracasts.com/series/whats-new-in-laravel-5/episodes/3 as well as a good introduction by Matt Stauffer: http://mattstauffer.co/blog/laravel-5.0-form-requests