Vous avez une jointure croisée entre tblUserLoginDetail et tblInvoicePaymentDetails dans la clause FROM, vous ne pouvez donc pas utiliser l.loginid dans la clause FROM
Je pense que ce que vous voulez, c'est ceci avec un INNER JOIN explicite. Je sépare également les conditions de filtrage et de jointure :
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