Method

Match on campaign name. Subtract spend and ROAS. Band each row. Pack dispute dollars for AP holdback.

Spend gap

Per row: agency_spend − mmp_spend. Absolute value feeds materiality and the dispute sum.

ROAS gap

Per row: agency_roas − mmp_roas. Shown next to spend so you see both fights in one place.

Bands

ok: absolute spend gap under the material floor (default $500).

noise: gap clears the floor, but stays at or under the noise % of max(agency, mmp) spend (default 12%).

dispute: material and above that percentage. Dispute $ is the sum of absolute spend gaps on dispute-band rows only.

And if you want the invoice-week version of this in plain English, read Noise vs dispute.