as in most cases, many ways to skin this cat. I used to employ some mind bending nested IIF statements but got away from them, preferring code or simpler versions of IIF statements. Now I would have to say I've lost the ability to wrap my mind around them. You could try
Code:
SELECT tblCustomer.Customer_Name, tblCustomer.Contact_Name, tblInvoice.Invoice_Date, tblInvoice.Invoice_Number, tblInvoice.Invoice_Amount,
tblInvoice.Statement_Date, Now()-([Statement_Date]+30) AS Overdue,
IIF(overdue between 30 and 59,15,IIF(overdue between 60 and 89,20,IIF(overdue>89,25))) As Rate
FROM tblCustomer INNER JOIN tblInvoice ON tblCustomer.CustomerID_Pk = tblInvoice.CustomerID_Fk;
An alternate method would be a function that the query calls for the query Rate field. Let's see if that sql works.