The following will answer your question as you have asked it...
Declare @LatePayCharge int
set @LatePayCharge= 60
insert into tblbill (SocietyID,MemberID,BillDate,AmountRemaining,LatePayPenalty)
select I.SocietyID,I.MemberID,CAST(GETDATE() AS DATE),I.TotalCharges,@LatePayCharge
from tblinvoice I
left outer join tblbill B on B.InvoiceID=I.InvoiceID
where B.InvoiceID is null
(with acknowledgement to Aijith K Gatty who said something similar in their comment)
Note that I have used the table alias to specifiy the columns that have the same name across both tables.
Having solved the problem you asked, you should know that you have some fundamental issues with your design.
You stated that tblbill would keep a records of people who have paid their bills
In other words this is your table to record receipt of money or "monies in"
But then you start adding records to it which represent money not received!
How will you know which table to query to find out who owes what? It's in both.
Just looking at your tblinvoice will also not tell you which invoices are paid, you have to also look at tblbill - not efficient.
Consider adding a column to tblinvoice that indicates whether or not it is paid - this could be a "status" or a "paid flag" or a "date paid". You may need to also consider "partially paid" invoices or "amount outstanding". You've obviously thought about this judging by the columns you have in your tblbill.
In fact, some of the columns in your tblbill probably should be on tblinvoice - they are mostly "attributes" of the original invoice. If you moved
AmountRemaining
for example, then you "automatically" get an indicator of whether or not the invoice is paid in full.
Also consider your terminology - in many contexts "invoice" is the same as "a bill"
You might be better off renaming the latter to "tblReceipts"