A reconciliation discrepancy without a spreadsheet trail is not ready to send to a client, even when you already know the likely cause. The client does not need a tour of your workbook. They need to know what was compared, what changed, what explains the difference, and what still needs action.
That means the explanation cannot start with "the spreadsheet did not match." It has to start with the evidence.
The safest client explanation has this order:
- What was compared.
- What differs.
- Why it differs.
- What was corrected.
- What remains open.
- What the client should expect next.
That structure protects you from sending a vague note like "there is a $482.19 discrepancy." It also protects the client from having to interpret a marked-up file they did not build.
If you are trying to decide how to explain reconciliation discrepancy to client without spreadsheet trail, the answer is to replace the workbook narrative with a short evidence trail. The evidence trail does not have to show every formula. It has to prove the comparison boundary, the difference, the cause, and the action.
Rebuild the comparison boundary before writing the message
Do not write the client explanation until the comparison boundary is clear.
Most weak discrepancy explanations fail here. They say there is a difference, but they do not say which files, dates, accounts, or balances were tested. That leaves the client with a number and no way to judge it.
Start with a small scope table.
| Scope item | Example |
|---|---|
| Client | North Co |
| Account or source | Operating checking |
| File 1 | Bank statement CSV exported June 3 |
| File 2 | Accounting ledger export exported June 3 |
| Period tested | 2026-05-01 to 2026-05-31 |
| Currency | USD |
| Comparison question | Does the ledger explain the bank movement for May? |
This table is not decoration. It prevents three common failures:
- The client sends a different file later and thinks your result changed.
- The bank statement covers a different date range than the ledger export.
- A discrepancy from outside the period is treated as a current-month error.
If the issue is a month-end mismatch, confirm the opening balance before you explain the current activity. A broken opening balance can make the whole month look wrong. The related workflow for what to do when books do not match the bank at month end covers that first check in more detail.
For the client-facing note, keep the scope plain:
I compared the May 2026 operating bank statement against the May 2026 ledger export. The opening balance agrees. The closing difference comes from two bank transactions that are not yet recorded in the ledger.
That is already stronger than a screenshot. It tells the client the boundary, the control point, and the direction of the difference.
Classify the discrepancy before you explain it
A client does not need every internal test you ran. They need the class of the discrepancy.
Use an investigation table before you draft the explanation. It helps you avoid treating a timing item like an error, or a missing transaction like a harmless cutoff issue.
| Symptom | Likely class | First check | Carry or correct |
|---|---|---|---|
| Bank shows a deposit after month end | Timing or cutoff | Compare bank date to ledger date and period close | Carry if it belongs to next period |
| Bank has a transaction missing from the ledger | Missing record | Search by amount, date, and reference | Correct if it belongs in the current period |
| Ledger has the same payment twice | Duplicate record | Search duplicate amount, date, vendor, and reference | Correct |
| Same reference appears with different amount | Wrong amount | Compare source invoice, payment, or processor record | Correct or escalate |
| Same transaction appears on different dates | Wrong date or timing | Compare transaction date, posting date, and cleared date | Carry if timing, correct if posted wrong |
| Transaction is posted to the wrong account | Wrong mapping | Compare ledger account, description, and source file | Correct |
| Row count changed after export | Edited source file | Compare row count, date range, total, and blank keys | Rebuild from source export |
| Filtered report excludes a transaction | Scope or filter error | Check report filters and included accounts | Re-run the export |
This is the table you keep for yourself while writing. You can send a shorter version to the client if the discrepancy is sensitive or if they asked for supporting detail.
The important distinction is carry versus correct.
Timing items are carried. Deposits in transit, outstanding checks, payout delays, and posted-versus-pending differences belong in the explanation, but they do not always require a current-period correction.
Errors are corrected or escalated. Missing entries, duplicate rows, wrong amounts, wrong dates, wrong accounts, and edited source files require action. Do not blend those together in the client message.
Turn the findings into client-safe language
The client-safe explanation is not a softer version of the truth. It is the same finding written without internal noise.
Use this format:
| Finding | Evidence | Client-safe explanation | Action |
|---|---|---|---|
| Bank fee missing from ledger | Bank statement shows $35.00 fee on May 14; no matching ledger row | The bank charged a May service fee that was not recorded in the books. This explains $35.00 of the difference. | Record the bank fee in May |
| Vendor payment duplicated | Ledger has two $250.00 rows with the same vendor and reference; bank has one payment | The same vendor payment was entered twice in the ledger. This explains $250.00 of the difference. | Remove or reverse the duplicate entry |
| Deposit posted after cutoff | Ledger shows $1,420.00 receipt on May 31; bank shows it on June 1 | The receipt was recorded before month end but cleared the bank after month end. This is a timing difference, not a missing payment. | Carry as deposit in transit |
| Amount mismatch on card settlement | Processor report shows $3,812.44; bank deposit shows $3,782.44 | The settlement and bank deposit appear related, but the bank amount is $30.00 lower. This needs support for the difference before closing. | Request or review fee/adjustment detail |
The "client-safe explanation" column is the part that matters. It turns a reconciliation result into a sentence the client can act on.
Avoid these phrases:
- "The spreadsheet did not tie."
- "There seems to be a discrepancy."
- "The data is messy."
- "The client file was wrong."
- "I found some issues."
Those phrases do not explain anything. They also make the problem sound bigger than it is.
Use exact language instead:
- "The bank statement includes two May transactions that are not in the ledger export."
- "The ledger includes one duplicate payment."
- "The remaining difference is timing: the receipt was recorded in May and cleared the bank in June."
- "The unresolved item is one card settlement where the bank deposit is $30.00 lower than the processor report."
That wording is calm because it is specific.
Build the explanation from totals, not from row noise
Do not send the client a list of unmatched rows first. Start with the total difference and then explain what makes it up.
Suppose the ledger closing balance is $482.19 higher than the bank statement.
Your internal exception list might look like this:
| Date | Source | Description | Amount | Status |
|---|---|---|---|---|
| 2026-05-14 | Bank only | Service fee | -35.00 | Missing from ledger |
| 2026-05-22 | Bank only | Vendor ACH | -197.19 | Missing from ledger |
| 2026-05-25 | Ledger duplicate | Office rent | -250.00 | Duplicate in ledger |
| Total explained difference | -482.19 |
The client does not need that as the opening message. They need the summary first:
The May bank reconciliation difference is $482.19. It is fully explained by three items: a $35.00 bank fee missing from the ledger, a $197.19 vendor ACH missing from the ledger, and a duplicate $250.00 rent entry in the ledger. Once those entries are corrected, the May bank balance agrees to the ledger.
That is the answer. The detail supports it.
If anything remains unresolved, say that separately:
After those corrections, $30.00 remains unresolved. The remaining item is tied to the May 28 card settlement. The processor export and bank deposit appear related, but the bank deposit is $30.00 lower. I need the settlement fee or adjustment detail before closing that item.
That sentence does not hide the open issue. It narrows it.
Separate what was corrected from what remains open
Clients often hear "discrepancy" as "the books are unreliable." Your explanation should show whether the problem is already resolved, partly resolved, or still open.
Use a status table.
| Status | Count | Amount | Client meaning |
|---|---|---|---|
| Matched | 184 | 0.00 net difference | These transactions agree between the bank and ledger |
| Timing | 2 | 1,420.00 | These are expected cutoff differences and will clear in the next period |
| Corrected | 3 | 482.19 | These entries explained the current difference and were fixed |
| Open | 1 | 30.00 | This item needs support before it can be closed |
This keeps the message from becoming a blame trail.
Do not say:
Your spreadsheet was missing entries.
Say:
The ledger export did not include two bank transactions from May. I recorded those items and listed them below.
Do not say:
The bank file is wrong.
Say:
The bank file and ledger use different dates for the same receipt. The amount agrees, so this is a timing item rather than a cash difference.
Do not say:
I could not reconcile it.
Say:
One item remains open because the processor report does not show the fee or adjustment that explains the $30.00 difference.
The second version of each sentence gives the client something to do or understand. The first version creates anxiety and follow-up emails.
What to send when there is no spreadsheet trail
When there is no clean workbook trail, send a compact reconciliation note with enough structure to stand on its own.
Use this layout.
Scope
| Field | Value |
|---|---|
| Files compared | Bank statement CSV and ledger export |
| Period | May 2026 |
| Account | Operating checking |
| Opening balance | Agreed |
| Closing difference before review | $482.19 |
Explanation
| Item | Amount | Explanation | Action |
|---|---|---|---|
| Bank service fee | 35.00 | Bank transaction was not recorded in the ledger | Recorded fee expense |
| Vendor ACH | 197.19 | Bank payment was not recorded in the ledger | Recorded vendor payment |
| Duplicate rent entry | 250.00 | Ledger contained the same rent payment twice | Reversed duplicate |
| Remaining open item | 0.00 | No unexplained balance remains | None |
Client wording
The May reconciliation difference was $482.19. The difference was fully explained by two bank transactions missing from the ledger and one duplicate ledger entry. I corrected those items, and the May bank balance now agrees to the ledger. No unexplained balance remains.
That is enough for most small-client situations. It tells the client what changed, why it changed, and whether any decision is still needed.
If the source files are too inconsistent to produce a clean report from the first pass, the next step is not to send the messy file. It is to produce a structured output from the messy inputs. The related article on how to create a clean reconciliation report when files are already a mess covers that report shape.
Use a message template that does not overexplain
Here is a client-ready version you can adapt:
I compared the May 2026 bank statement against the May 2026 ledger export for the operating account. The opening balance agreed. The closing balance difference was $482.19 before review. The difference is fully explained by three items: a $35.00 bank service fee missing from the ledger, a $197.19 vendor ACH missing from the ledger, and a duplicate $250.00 rent entry in the ledger. I corrected those entries. After the corrections, the bank balance and ledger balance agree for May. No unexplained balance remains. The timing items listed in the report are expected cutoff items and should clear in the next bank statement.
If one item remains open, change the final paragraph:
One item remains open: the May 28 card settlement is $30.00 lower in the bank than in the processor report. I need the settlement fee or adjustment detail before closing that item. Everything else in the May reconciliation is matched or explained.
That message does not bury the client in rows. It also does not hide risk. It gives the answer first, then the evidence.
The client explanation structure to keep
A good reconciliation discrepancy explanation is short because the investigation behind it is organized.
Keep this sequence:
- State the files, account, and period compared.
- State the total difference before review.
- Classify the difference as timing, missing, duplicate, amount mismatch, mapping, edited source, or scope.
- List the evidence that proves the class.
- Say what was corrected.
- Say what remains open.
- Tell the client what happens next.
That is the audit trail when there is no spreadsheet trail worth sending. The client does not need to see your working file to trust the result. They need a clear scope, a complete explanation, and a report that separates corrected items from open ones.
