Tiene una combinación cruzada entre tblUserLoginDetail y tblInvoicePaymentDetails en la cláusula FROM, por lo que no puede usar l.loginid en la cláusula FROM
Creo que lo que quieres es esto con una UNIÓN INTERNA explícita. También separé las condiciones de filtro y unión:
select
l.username,
p.payid,
p.paymentdate,
sum(p.paymentamount) as payment,
b.balance as balance
from
tblUserLoginDetail l
inner join
tblInvoicePaymentDetails p On p.customerid=l.loginid
left outer join
tblPaymentCustomerBalance b ON p.payid=b.payid
where
p.accountnumber=10009
group by
p.payid,p.paymentdate,b.balance,l.username