When a subcontractor says an invoice disappeared, the invoice usually did not vanish from QuickBooks. The gap is between the system that records what you billed and the portal that records what the general contractor received, matched, approved, held, or paid. If those systems are never compared, a missing row can sit through another billing cycle without an owner seeing it. The first check is simple: match the invoice number, project code, schedule-of-values line, submitted amount, and portal receipt. Then look for a duplicate, a missing purchase-order reference, an upload that landed in the wrong project, or a portal row that was accepted but never advanced to approval. The status label matters less than the evidence behind it and the dollar amount still missing from the bank record. Keep the original QuickBooks export, the portal CSV or confirmation, the pay application, and the correspondence that followed. If the portal rejected the invoice, preserve the exact reason before changing the file. If it paid partially, reconcile the short wire against retainage, back-charges, and change orders. That record gives the next conversation a specific row and a specific amount instead of another request to "check the portal." Drumtap's planned workflow compares the two sides, labels the discrepancy, and prepares the evidence list for owner review. It does not connect to your bank, submit to a portal, or send a dispute email automatically. See how it works and the sample dispute packet for the full loop.