Sales payment reconciliation breaks down because two people are recording the same event and only one of them can see the bank. The rep marks a deal paid when the client says the transfer went out. The accountant marks it paid when the money lands. Those are different moments, sometimes days apart, and most CRMs give you one checkbox to hold both of them. The fix is not better communication. It is two separate records with two named owners, where the rep's entry is a claim and the accountant's entry is the confirmation.
If you run a sales team of five to fifty people and you have ever sat in a Friday meeting where the pipeline says $180,000 closed and the bank says $140,000, this post is about that gap.
The argument is not really about the money
Watch the actual conversation and it is never about whether the client paid. It is about whose version of the record counts.
The rep is not lying. A client told them on Tuesday that finance had released the payment. From where the rep sits, the deal is done, the commission clock is running, and the CRM has a field called "Payment Status" that they are supposed to keep current. So they set it to Paid.
The accountant is not being difficult either. They are looking at a bank statement, and nothing has landed. Their obligation runs to the books, and the books recognize cash, not assurances. When they open the CRM and see a deal marked Paid with no receipt attached, they either change it back or they stop trusting the CRM entirely. Most of them stop trusting the CRM, which is how you end up with a shadow spreadsheet.
Now the company has two records of the same event, they disagree, and there is no way to tell which one is stale. That is the whole problem. Everything else is symptoms.
The mechanism: your CRM has one field where it needs a state machine
A payment is not a value. It is a sequence of states with different people responsible for each one.
Invoice sent. Client says payment issued. Money received. Money matched to the right invoice. Any of those can be true while the next is false, and each one has a different person who is competent to assert it. A rep can honestly report what the client told them. Only the person with bank access can report what actually arrived.
A single Payment Status dropdown flattens all of that into one value that anybody can overwrite. So the last person to touch the record wins, regardless of whether they knew anything. That is not a discipline problem. It is a data model that quietly makes lying and being mistaken look identical.
The second half of the problem is that most CRMs treat the correction as an edit. The accountant changes Paid back to Pending, and the previous value is gone. Nobody can reconstruct who said what and when. Two weeks later the rep swears they never marked it paid, and there is no way to settle it. Corrections need to be recorded as events, not applied as overwrites.
What teams try first, and why each one stops working
Ask everyone to be more careful. This works for about three weeks. It fails because it depends on the least busy person on the team, and sales teams do not have one of those.
A shared payments spreadsheet. Better, because it usually has a date and a name attached to each row. It fails because it lives outside the CRM, so the pipeline still shows the wrong number, and now reconciliation means comparing two systems by hand every month. You have moved the disagreement, not resolved it.
Only let finance update payment fields. This one is closer to right, and it is what a lot of teams land on. It fails in a specific way: reps still have information nobody else has. The client emailed them the transfer confirmation. If the CRM gives the rep nowhere to put that, it goes into Slack, or a forwarded email, or nowhere.
Bolt on accounting software. Connecting QuickBooks or Xero to the CRM fixes the accountant's side properly and does nothing for the handoff. The rep is still not in the accounting system, and now there are two sources of truth with an integration between them, which is a third thing that can be out of date.
What actually fixes it
Split the single field into two records with two owners.
The rep records the payment. Amount, date, method, and whatever proof the client gave them. This is a claim, and the interface should say so. It gets logged with the rep's name and a timestamp, and it is theirs.
The accountant confirms the payment. This is a separate action, taken by someone with bank access, and it is the one that changes the deal's financial status. It is also logged with a name and a timestamp.
Nobody edits the other person's record. If the accountant finds that the money never arrived, the correct action is a reversal, which is its own entry with its own author and reason, sitting in the log next to the original claim. The original stays visible. That is the entire difference between an audit trail and a database field, and it is why accountants care about the distinction so much more than salespeople do.
Two things follow from this that are worth stating plainly. Reps should not be able to mark a payment as received, because they cannot see the bank. And accountants should not be able to silently erase what a rep recorded, because that is how you lose the only evidence of what the client actually said. Most CRMs get both of these wrong in the same dropdown.
You also get a number you could not get before: the gap between claimed and confirmed, per rep, over time. One rep consistently running eight days ahead of the bank is not a fraud problem, it is usually a rep whose clients say "it's been sent" when they mean "it's been approved." That is a coaching conversation, and you cannot have it without the two timestamps.
Where Kordic fits
This is the workflow Kordic was built around, so treat the rest of this section as a pitch and read it accordingly.
Kordic calls it the accountant confirmation workflow. Agents record payments against a deal, accountants confirm them, and managers can reverse a confirmation, with every one of those actions kept as a dated, attributed entry rather than a field change. Invoicing sits in the same place, so a quote becomes an invoice and payments get tracked against the deal they belong to, which removes the export-and-compare step at month end for the sales side of the ledger.
What it does not do: Kordic is not accounting software and does not replace your books. Its published integrations are Gmail, Outlook, WhatsApp Business, and Claude via MCP, so if your bookkeeper needs the data inside QuickBooks or Xero, check with Kordic on the current export path before you plan around it. And the product is aimed at sales teams of five to fifty. If you have a dedicated revenue operations function and a real ERP, the accountant confirmation step is something you probably already solved a more expensive way.
If the version of this you recognize is the Friday meeting where two numbers disagree and nobody can prove which is right, the two-record split is the part worth stealing, whether or not you use Kordic to do it.
See how payment tracking works in Kordic.
