I use a join table called split_payments that links a payment (donation) to the invoice. This makes a many-to-many link so:
one payment can be "split" into different invoices (same client)
one invoice can receive many payments (splits)
Sometimes one Payment goes to one Invoice and is payment-in-full. I still use the "split_payments" to record this.
Invoices::invoiceID_pk = split_payments::invoiceID_fk
split_payments::paymentID_fk = Payments::paymentID_pk
Invoices can use this join file. It's somewhat similar how a Quickbooks or other accounting software handles payments for products, services, etc.
You may do something similar.