Although your answer is correct, in theory and depending on how you handle it you need the get () method, and the double quotes you use are not necessary in the date variable and according to your initial query you lack the orderBy.
Also, to respect PSR-2, you must insert a space after each argument you pass.
I'm assuming you're inserting this into another query (it would be a subquery) or something like that.
return $query->where('fecha_pago', '<', $var)
->whereIn('estado', ['abono', 'adeudo', 'espera'])
->orderBy('id');
For future reference of other people who enter this question, I will answer the question in a more neutral way:
Normally you could have a model named Payment, which extends to Illuminate \ Database \ Eloquent \ Model and uses the payments table, and the query would be done as follows:
$resultado = Payment::where('fecha_pago', '<', '2016-09-08')
->whereIn('estado', ['abono', 'adeudo', 'espera'])
->orderBy('id')
->get();
Now, if you do not want or there is no model attached to the table or a relationship, or if you simply want to do without a model, it would be like this:
$resultado = DB::table('payments')
->where('fecha_pago', '<', '2016-09-08')
->whereIn('estado', ['abono', 'adeudo', 'espera'])
->orderBy('id')
->get();
It can even be done with dependency injection, but that is already a more advanced implementation.