Falaah Falaah AI

Payments Reconciliation

Check that Stripe and Muin agree on what was charged and paid out, and link every captured payment to the invoice, gift or registration it paid.

Reconciliation answers two different questions. One: does your processor agree with Muin about what was charged? Two: does every payment you captured point at the thing it paid for? This screen holds both.

When you’d use this

  • A payout landed and you want to check nothing is missing before it hits your books.
  • An invoice still shows unpaid although the payer says they paid it.
  • You suspect a payment was recorded twice.
  • You are closing the month and need a clean run on file.

Where it lives

Sidebar → Smart Payments → Payment Reconciliation. You need permission to view payment reconciliation. Manual matching, bulk matching and undo need full Finance permission.

Run this after each payout, so a mismatch is caught while it is still one payout wide.

Run Reconciliation

This tab compares your processor’s charges against your Muin transaction records over a date range.

  1. Set Start Date and End Date. The default window is the last 30 days.
  2. Press Run Reconciliation.
  3. Read the summary tiles: Total Transactions, Matched, Discrepancies, Last Run.
  4. Read the Discrepancy Breakdown: Missing in Stripe, Missing Locally, Amount Mismatch, Status Mismatch.
  5. Work the Discrepancy Details table: Type, Transaction ID, Stripe ID, Local Value, Stripe Value, Amount. Click a row for the detail.

What each discrepancy type means:

Type What happened
Missing in Stripe Muin has a transaction your processor does not. Usually a payment recorded by hand, or a test record.
Missing Locally Your processor charged something Muin never recorded. This is the one to chase: the money moved and your books do not know.
Amount Mismatch Both have the payment, at different amounts.
Status Mismatch Both have the payment, at different statuses. Often a timing gap that clears on the next run.

With no discrepancies the screen says All transactions reconciled successfully!

Use Refresh in the header to re-run, and Export to download the discrepancies as a CSV named for the date range. The export contains discrepancies only, so Export is disabled, with the reason on hover, until a run has finished and found at least one discrepancy.

This tab reports. There is no match or unmatch control at the charge level; a discrepancy is something you investigate and fix at its source.

History

Reconciliation Run History lists every run: Date, Type, Status, Matched, Discrepancies, Auto-Resolved, Period. Run status is completed or failed. This is the record that shows you reconciled, which is what an auditor asks for.

Payouts

Shown when you have payout access. Payout Records lists the payouts Muin holds: Arrival Date, Amount, Status, Method, Stripe ID, Last Updated. Payout statuses are paid, pending, in transit, failed and canceled. This is Muin’s stored payout history; for the live view and the fund-level breakdown, see Payouts.

Entity matching

This is a different kind of matching: linking a captured payment to what it paid for: an invoice, a donation, a membership, an event registration, or a tuition enrollment. A payment that is captured but unlinked is money you have that your records cannot explain.

The tab shows Unmatched payments, Matched payments and Match rate.

To match one payment:

  1. Press Match on the row.
  2. Choose the Entity type: Invoice, Donation, Membership, Event registration, or Tuition.
  3. Search for and select the record.
  4. Press Match payment.

To try them all at once:

  1. Press Try matching all.
  2. Confirm Try matching all payments? “This re-runs the automatic matcher over every unmatched payment. Anything it still cannot place stays in this list.”

The result tells you how many matched and how many still need attention.

To undo a match, press Undo and confirm Remove this match? “The payment stays captured, but the invoice or registration it was linked to returns to unpaid.”

When the list is clear it reads: Every captured payment is linked to what it paid for.

What it affects

  • A reconciliation run records itself in History. It changes no transaction.
  • Matching a payment marks the invoice, registration or membership it paid as settled, so the record stops chasing the payer.
  • Undoing a match returns that record to unpaid. The payment itself is untouched and the money stays where it is.

When it goes wrong

“Stripe account” not found. No processor account is connected. Connect it under Smart Payments → Settings → Stripe Connect.

“Invalid date format. Use YYYY-MM-DD.” Set the dates with the pickers rather than typing them into the URL.

“Failed to run reconciliation. Please try again.” No run was recorded. Retry; do not read the previous run’s result as this window’s.

“No reconciliation results. Select a date range and run reconciliation to verify your transactions.” You have not run it yet for this window.

Lots of “Status Mismatch” rows on a run covering today. A payment that is settling at the processor and already recorded locally will differ for a short time. Re-run the window tomorrow before investigating.

“Could not match this payment.” The matcher refused the pairing, usually because the record is already settled or the amounts cannot be squared. Open the record and check what it is already linked to.

“Bulk matching failed.” Nothing was matched. Retry, or match the obvious ones by hand first to shrink the list.

“Could not remove the match.” The link is still in place. Reload and try again.

Next step

For the fund-level breakdown of a single bank deposit, see Payouts. For nonprofits reconciling gifts across cash, check and bank rails rather than card charges, see Donation Reconciliation.