Falaah Falaah AI

Donation Reconciliation

Multi-rail donation reconciliation, card, NFC, Zelle, check, ACH, and cash, with AI-assisted matching, confidence tiers, auto-receipts, and full audit trail.

All Transactions is where every payment in and out of your bank account meets your donor records. Card charges, Zelle and ACH rows from your statement import, photographed checks, and cash counts all land in one register, with one set of confidence bands and one audit trail.

The short version

  • Six payment methods, one register. Card, Zelle, check, cash, ACH, wire.
  • Four confidence bands. Auto (90% and above), Likely (70-89%), Uncertain (under 70%), No match.
  • Continuous close. Rows reconcile as they arrive, not at month-end.
  • Full audit trail. Every match, override and correction is logged with who, when and the confidence behind it.

Where it lives

Sidebar → Muin for Finance → Reconciliation → All Transactions. You need permission to view ledger reconciliation.

The page is titled All Transactions, with the subtitle “Every reconciliation transaction and its decision.”

The separate “Command Center” and “To Review” inbox screens are gone. Their work is now two filter chips on this one register, Needs identity and Categorize, so there is one list rather than three. The old addresses still work and send you here.

The in-page sub-navigation offers Overview, All Transactions, Insights, Settings and AI Chat. The sidebar group also has Month-End Close and, for owners and admins, Parser Patterns.

The top of the page offers:

  • Import statement and a Capture check action
  • A by rail tile strip, one tile per payment method, each showing the unmatched count, the unmatched amount, and the share matched over the last 30 days
  • Rail filter chips for where the data came from: CSV, Plaid, QuickBooks, PayPal
  • Confidence filter chips
  • A date range, a search box and a status filter
  • Saved Views

The four confidence bands

Every row gets a confidence score from its matching signals: Zelle sender name, exact name match, fuzzy name match, AI similarity match, and AI-validated similarity match.

Band Score What you do
Auto 90% and above Nothing, if it is above your auto-confirm threshold. Otherwise confirm it in one click.
Likely 70% to 89% Read the suggestion and confirm or pick a different donor.
Uncertain Under 70% Decide it yourself.
No match No candidate Link it, split it, create a record, or record it as an unidentified gift.

A row badge shows the band as High confidence, Medium confidence or Low confidence rather than the raw number.

The auto-confirm point is yours to set. Under Reconciliation → Settings → Auto-confirm thresholds you set, per surface, the confidence above which Muin confirms a match without your review, anywhere from 0.50 to 1.00. The same section has an Enable Smart Match toggle for AI-augmented matching. So the 90% line above is the display band; your own auto-confirm point may be higher or lower.

Reconciliation per payment method

The by rail tile strip has one tile per payment method on the row: card, zelle, check, cash, ach and wire. Anything Muin cannot place falls into an “other” bucket.

A tap-to-pay or kiosk gift reconciles as a card row, because that is how the money moved. There is no separate NFC tile.

Card (Stripe)

Card and wallet transactions (Apple Pay, Google Pay) land via Stripe webhook at the moment of charge. The cardholder’s typed name, email, and campaign selection provide high-confidence matching signals.

Fee-covering: if the donor chose to cover the processing fee, the Stripe payout is larger than the donor’s intent. Muin posts two ledger entries, the gift amount to the fund, the fee reimbursement as a separate row, so restricted-fund accounting stays correct.

Recurring failures: when a recurring charge fails (expired card, insufficient funds), Muin emails the donor so they can update their card, and opens an inbox task for your team.

Kiosk and tap-to-pay gifts

Muin kiosks (QuickPay tap-to-give, payment-kiosk multi-amount, and other modes) and iPhone Tap-to-Pay all feed the same Stripe pipeline and reconcile as card rows. Non-QuickPay kiosks optionally prompt for a donor phone or email; when one is given, matching is high-confidence against existing records. When it is not, the row arrives needing identity and you decide who it belongs to. QuickPay’s tap-to-give flow deliberately skips the prompt to stay at three-second speed, and identity is resolved afterwards.

Zelle

Zelle rows come in via bank-statement import. The donor’s bank nickname controls the memo string, so the same donor may appear as “JOHN SMITH,” “J SMITH,” or “JOHN A SMITH.” Muin’s fuzzy matcher scores name similarity, amount pattern, and frequency pattern together.

Common workflow: upload the monthly bank statement CSV → Muin parses Zelle rows → the queue shows each row with a proposed match → staff reviews flagged rows.

Check

Checks are captured via photo in Muin Go at intake. OCR extracts check number, amount, payor name, memo, and date. The extracted fields land in the reconciliation queue with the same confidence tiers.

When the deposit clears, Muin matches each captured check to its bank row by check number and amount.

ACH / Wire

ACH through Stripe: webhook fires with full identity. ACH from bank statement: temporal matching, the row is compared against open pledges, recent invoices, or donor history within the 5-business-day clearing window.

Cash

Cash flow is first-class. Staff enters a two-person verified count at the end of a service or event, photographs the deposit slip, and Muin reconciles the count against the deposit when it clears. Discrepancies surface on the same review screen.

Workflow · a typical review session

  1. Open All Transactions and set the date range.

  2. Work the Confirm these bucket. On the Needs identity filter, high-confidence matches waiting on you are grouped under Confirm these. Tick them and press Confirm selected.

  3. Open a row with Enter (or click it) to get the Reconciliation row detail drawer.

  4. Take the suggestion with the primary button, or use Pick a different donor → / Different action →. Ask Muin AI explains what the row looks like to Muin.

  5. Use More options for anything the suggestion cannot settle:

    Action What it does
    Confirm top Accepts the leading candidate
    Link to existing donor / vendor You pick the record
    Split into multiple One bank row covering several gifts
    New entity Creates the donor or vendor
    Record as unidentified gift Posts the money now, holds the identity for later
    Mark as N/A Not a gift, and needs no match
    Defer for later Parks the row for up to 14 days
    Flag for compliance review Raises it for review
  6. Finish at Month-End Close when the period is done. The close produces a downloadable summary PDF.

Record as unidentified gift is the one to reach for when you genuinely cannot trace a deposit. The confirmation is explicit about what happens: the gift goes on your books now, against a hidden placeholder, and is not added to your donor directory, mailing lists or exports, and no tax receipt is sent. The success toast links straight to the follow-up queue. See DAF, Custodian Statements and Unidentified Gifts.

Removing a match reverses the gift. Use Change match → Remove match from the Outcome cell. It reverses the donation and voids any receipt already issued, so it is not a cosmetic correction.

Audit trail and exports

Every match, override, dismissal, and manual correction writes an audit log entry with:

  • User who performed the action
  • Timestamp
  • Before/after state
  • Confidence score at time of action
  • Reason (if manually provided)

Month-End Close produces a downloadable summary PDF.

Keyboard shortcuts

Press ? anywhere on the register (except while typing in a box) to open Keyboard shortcuts, or use the shortcuts link in the header.

Shortcut Action
J or ↓ Move selection down
K or ↑ Move selection up
Enter Open the selected row
? Open the shortcuts dialog
Ctrl/Cmd + ← / → Move the focused column

There are deliberately no single-key confirm, reject or undo shortcuts. Every decision that moves money is made in the drawer, where you can see what you are agreeing to.

Troubleshooting

Issue Cause Resolution
A Stripe charge did not appear in the queue Webhook delivery failure Muin retries Stripe deliveries automatically. If the charge is still missing after an hour, contact Support.
Zelle rows not parsing from bank statement Unsupported bank format Upload a sample statement via Support so the parser can be extended
Check OCR misread the amount Poor photo quality, unusual handwriting Edit the extracted amount in the row drawer.
Cash count does not match bank deposit Counting error or deposit-slip discrepancy Open the two-person count record; compare to deposit-slip photo; flag for manager review
A row sits unmatched and staff recognizes the donor Matching signals were below the threshold Open the row and use Link to existing donor / vendor
“Couldn’t load transactions” A load error, not an empty register Retry. An empty list after this message is not proof there is nothing to review
“No matching transactions” Filters are too narrow Widen the date range, clear the search box, or set the status filter back to All
A whole statement is missing The import was parked needing column mapping, so nothing was imported Open the Import tab, re-drop the file and answer Tell us which columns to read