Hai bisogno del tuo billToPartyID (o customerID, presumo che siano la stessa cosa, o c'è una relazione 1-> 1 tra di loro) nel tuo progetto, fattura e tabelle di pagamento come parte del PK. Le tue relazioni sono quindi:
"un cliente/billToParty può avere molti progetti, che possono avere molte fatture. Un pagamento effettuato da un cliente/billToParty può essere applicato a molte fatture del cliente, che devono essere specificate."
Quindi dovrebbe essere più facile tenere traccia dei totali in base all'ID cliente, sia i pagamenti effettuati che gli importi delle fatture in sospeso.