Hacerlo no es difícil, pero lo que importa es como quieres hacerlo tu. Por ejemplo, yo tengo una tabla Ventas y otra Detalle Venta donde se va a reflejar el cliente y los diferentes productos que le vendo. También tengo una tabla Entregas donde se va a reflejar los diferentes abonos que me vaya haciendo. Con esta hago un formulario continuo donde elijo el cliente y me muestra las diferentes facturas que me debe. El total de la deuda lo puedes ver a la derecha.

Vamos a suponer que un buen día, más que bueno maravilloso decide venir a pagarme algo( hay que tratarlo bien porque de esos no hay muchos) y me va a dar 400 euros

Cuando pulso el botón Compensar

Como con los 400 compensa la primera factura me la marca cono cancelada y de la siguiente me pone en color y con signo negativo porque aún le faltarían 3 euros con 75 céntimos para compensarla, por eso no la marca.
Pasan unos días y decide volver a darme algo( este cliente es un santo). En el ejemplo 100 euros

Ya no me aparece la factura de 147 porque ya estaba compensada. Cuando pulso Compensar

Me marca como compensada la de 256, ya que quedaban 3, 75 y como "sobran" 96,25 "pasan" a rebajar la deuda siguiente y como de esa quedan 208,75 no me la marca. Y así a medida que vayas añadiendo facturas sin pagar, etc.
Como tendría que ponerte la estructura de los formularios y subformularios y el código, si quieres, repito si quieres, mándame un mensaje a [email protected] y te mando el ejemplo.
Si lo haces, en el asunto del mensaje pon tu alias Juan Pable, ya que si no sé quien me escribe ni los abro.