• I mostly work with multidimensional but since no one else has answered. From an OLAP standpoint your design is absolutely correct, do not think about changing it or mixing the grains on your fact tables, nothing good will come of it.

    Calculating measures across dimensions in this fashion is exactly what analysis services is supposed to do so those relationships are correct.

    In these situations you need to use the CALCULATE function which will allow you to bring in and aggregate a measure from another fact table. It would look like the below if you were adding it to your sales measure group.

    Balance := SUM(fact-Sales[SalesAmount]) - CALCULATE(SUM(fact-Payments[PaymentAmount]))