Fees101
Docs/Payment collection/Resolving Payments That Couldn't Auto-Match (Reconciliation Queue)
Requires: Resolve Payment ReconciliationUpdated 2026-10-272 min read

Resolving Payments That Couldn't Auto-Match (Reconciliation Queue)

Most provider payments match themselves to an invoice automatically the moment the webhook fires. The reconciliation queue exists for the exceptions — a genuine, verified payment that the automatic matching couldn't confidently assign anywhere.

How a payment ends up here

Every entry in the queue is a signed, real payment from your provider — not a guess or a parent's claim. It lands here when the automatic matcher can't confidently tie it to a specific student's invoice (for example, a transfer reference that doesn't map cleanly to any account).

What staff actually see

Money → Reconciliation opens on a Pending tab. Each row shows the provider (Paystack or Monnify), when it was paid, the provider's own transfer reference, the account reference the money came in against (if any), and the amount — with a running total of everything still waiting to be matched shown at the top of the page. Choosing Resolve on a row opens an inline panel with two choices: Assign to a student, or Not a Fees101 payment.

Searching for and assigning the right student

01

Choose Assign to a student on the entry.

02

Type into the search box — it matches by student name or admission number (not by parent name or phone), and only starts searching once you've typed at least 2 characters.

03

Pick the right student from the matching results shown (each listed with their class and admission number to help tell two similarly-named students apart).

04Optionally add a note — e.g.

how you confirmed this was the right student — which is saved alongside the resolution for later reference.

05

Choose Assign payment.

Once assigned, the money is applied to the student's oldest open invoice first — exactly the same rule an automatic, auto-matched payment follows. Anything left over after that invoice is covered goes to the student's credit balance rather than disappearing or needing a second manual step.

What "dismiss as unrelated" actually does

Choosing "Not a Fees101 payment" requires a typed reason of at least 10 characters explaining why (for example, the reference belongs to some other, unrelated use of the same provider account). Dismissing is a bookkeeping decision inside Fees101 only — it does not move, refund, or touch the money in any way. The payment stays exactly where it already was, in your school's own Paystack or Monnify balance; dismissing just stops that entry showing up as "waiting to be matched" in this queue.

Gotchas

Assigning is built as an atomic claim: the write only succeeds if the entry is still pending at that exact moment. If two staff members try to resolve the same entry within moments of each other, the loser gets "This payment has already been resolved by someone else, or no longer exists" instead of the money being applied twice — there's no separate manual "claim" button to click first, the protection is built into the Assign/Dismiss action itself.

Running reconciliation on demand

Fees101 also runs an automatic background reconciliation sweep on its own schedule. If a parent reports a payment that hasn't shown up yet and you don't want to wait for the next automatic pass, go to School → Payments and choose Run Now to trigger the same engine immediately.

Was this page clear?

See also

Need more help?

Still stuck?

Email our team directly and we'll help you sort it out.

Email our team