Mortaza,
Thanks for your advice. I tried a few things, with no success yet. I'll try to summarize:
1) I hoped to add this option to the "Fill List with Contacts" button (on the default List Builder screen), but it links to a custom HTML page which I cannot edit. So I created a new button on that screen to fill the list with purchasers, copying and editing the actions of the "Fill List with Invoices" button. Instead of looping through the Invoices table, I first loop through the ReceivePayment table to get the customer names from that table (assigning them to an action result as I go). Then before ending the loop, I loop through the customer table to get other customer-specific information. Before ending these loops, I insert a record into the ListBuilder table using the action results I obtained. I then have it refresh the grid and go to the next section. This is all done in the same way that the Invoices button does it. However, the ListBuilder grid does not display any records, even after a manual refresh...
2) Trying to simplify things, I added a linked field to the ReceivedPayments table that points to the customer's e-mail. I created a new button that just loops through the ReceivedPayment table and extracts the customer name and e-mail address, inserts the record into ListBuilder, and shows the next section/step. The grid still does not display any records.
3) After this didn't work, I tried adding a new Section (step) where I created a separate grid based on ReceivedPayment, as you suggested. I set up the new button to loop through this new grid as per your instructions above to remove duplicates, then show the newly created section. However, it displays the grid with all ReceivedPayment records, including duplicates.
Any thoughts?
Thanks.