you can use SpsiteDataQuery. Also you can try to use OOTB content query web part.
From Link above
query.Lists = "<Lists><List ID='7A9FDBE6-0841-430a-8D9A-53355801B5D5' /><List
I'd probably use a workflow on your first list to populate a field in your second list. So as invoices are added, the workflow would update a recieved field in the second list. Then in that second list, you can do a calculated colum Total - Received to get your remainder.
You could use the the BCS (Business Connectivity Services in SP2010) is an out of box feature enabling external business data to be shared between site collections without writing any code.
Here a link from microsoft
and here an answer from Stackexchange:
Sharing data between multiple site collections
The issue with deletions can be solved by creating a custom permission level that prevents contributors from deleting items and including an explicit choice (checkbox) to indicate a request for deletion (or a workflow that runs on a zero amount). An additional problem exists if an item is updated, rather than added or deleted. In this case, a method to ...