That isn’t a complaint about your billing company — it’s the shape of the arrangement. Krino follows every claim after it leaves your office: whether it was accepted, what the payer decided, what actually paid, what came back short, and which ones nobody returned to.
Every practice that outsources billing approves one of these each month. For most owners it’s the one document in the whole relationship they read line by line.
| # | Description | Total |
|---|---|---|
| 47 | Patient Statements Paid | $4,210.55 |
| June 2026 Billing Services | $118,463.90 | |
| June 2026 Billing Credit | ($612.40) |
It tells you exactly what you paid. Nothing in it tells you what you didn’t collect — and nothing in the arrangement produces a document that would. The fee is calculated on money that arrived, so money that arrived is the only figure either side has a reason to chase, reconcile, or check twice.
Alongside the invoice, most practices receive a summary of the month.
| Charges submitted | $214,880 |
| Insurance payments | $118,464 |
| Adjustments | $38,190 |
| Patient balance | $11,720 |
| Net collection rate | 93.8% |
93.8% is a good number, and it’s meant to be read that way. The $38,190 above it is contractual write-offs, denials nobody worked, claims that ran out of time, and payments that came in short — added together and reported as one line.
| CO-16 Missing or incomplete information | 22 claims | $4,180 |
| CO-97 Bundled into another service | 14 claims | $2,740 |
| CO-50 Not deemed medically necessary | 8 claims | $3,920 |
| CO-22 Coordination of benefits | 7 claims | $2,020 |
| PR-31 Patient not eligible on date of service | 6 claims | $1,610 |
| CO-197 Prior authorization absent | 4 claims | $3,690 |
| 61 claims | $18,160 |
Better. You now know what went wrong. You still don’t know which claims, whether anyone has touched them since, how much time is left, or which ones need you rather than your staff.
Every claim with money still on it, sorted by how much time is left. Filter by the kind of work it needs, or by who has to do it. Open any row to see the whole life of the claim — when it went out, when the payer answered, when the money posted, and how long it has been sitting since.
| › Okafor, D. | 02/27/2026 | 99215 | Medicare | $186.00 | — | Denied | Documentation didn’t support the level billed | Appeal · clinical | Physician | Open · untouched 164d | EXPIRED |
| › Ibrahim, R. | 03/20/2026 | J1100 | Medicare | $41.30 | — | Denied | Billed without the qualifying service it attaches to | Resubmit | Biller | Open · untouched 114d | 8 days left |
| › Patel, A. | 11/14/2025 | 20611 | Aetna | $205.60 | — | Reversed | Paid in January, then reversed in June after a retro review | Appeal · admin | Biller | Open · untouched 41d | 9 days left |
| › Chen, R. | 04/18/2026 | 20610 | UnitedHealthcare | $178.40 | — | Denied | Joint injection bundled into the office visit; modifier 25 absent | Recode | Coder | Open · untouched 95d | 12 days left |
| › Whitfield, J. | 04/02/2026 | 99396 | Cigna | $224.00 | — | Denied | Another plan is primary; this one needs to go there first | Eligibility | Front desk | Open · untouched 111d | 19 days left |
| › Sorensen, K. | 04/24/2026 | 99214 | UnitedHealthcare | $156.00 | $30.00 | Rejected | Procedure code inconsistent with the modifier used | Recode | Coder | Open · untouched 79d | 26 days left |
| › Brooks, S. | 03/09/2026 | 96372 | BCBS | $13.70 | $8.40 | Paid short | Payer allowed $42.10 and posted $28.40 | Underpaid | Biller | Open · untouched 125d | 31 days left |
| › Alvarez, M. | 05/02/2026 | 99214 | Aetna | $142.00 | $35.00 | Rejected | Referring provider NPI missing from the claim | Resubmit | Biller | Open · untouched 71d | 42 days left |
| › Rivera, L. | 05/22/2026 | 99213 | Medicaid | $96.00 | — | Denied | Patient showed inactive on the date of service | Eligibility | Front desk | Open · untouched 51d | 55 days left |
| › Duarte, C. | 05/15/2026 | 97110 | BCBS | $65.00 | $20.00 | Denied | Payer says the records don’t support this many sessions | Appeal · clinical | Physician | Open · untouched 58d | 62 days left |
| › Nguyen, T. | 05/11/2026 | 73721 | Cigna | $412.00 | — | Denied | No prior authorization on file for the MRI | Appeal · admin | Biller | Open · untouched 62d | 68 days left |
| › Haddad, N. | 05/29/2026 | 20605 | Aetna | $88.20 | $25.00 | Denied | Injection called not medically necessary at this frequency | Appeal · clinical | Physician | Open · untouched 44d | 76 days left |
| › Lindqvist, P. | 04/09/2026 | 99213 | Aetna | $118.00 | $25.00 | Paid | NPI corrected and resubmitted; paid in full | Resubmit | Biller | Closed 06/18/2026 | Closed |
| › Osei, F. | 03/30/2026 | 20610 | Cigna | $165.50 | — | Paid | Modifier 25 added on resubmission | Recode | Coder | Closed 05/29/2026 | Closed |
| › Marsh, T. | 02/18/2026 | 99214 | Medicare | $149.00 | — | Paid | Appeal filed with the office note; denial overturned | Appeal · clinical | Physician | Closed 06/02/2026 | Closed |
Click any row to open the claim. On a narrow screen the table shows fewer columns — the rest are inside the row.
Appeal windows vary by payer and plan.
Three things do most of the work. Who acts separates the claims your front desk can close today from the three that need you to write something. Resolved is the column nobody currently has — untouched 164d means a hundred and sixty-four days have passed since anyone recorded a single action on that claim, and in every report you get today it looks identical to one denied last week. And opening a row shows you exactly where the work should have happened and didn’t.
Most independent practices outsource billing for 4–9% of collections. The arrangement works — until a claim comes back denied.
Reworking a denial costs staff time. Whether that time is worth spending depends entirely on who is counting.
| Recovered value | Cost to rework | Rational move | |
|---|---|---|---|
| Billing company at 6% | $3.60 | ~$25 in staff time | Let it go |
| Your practice | ~$56 | Not your staff’s hour | Collect it |
Illustrative arithmetic, not a claim about any specific practice.
Nobody here is acting in bad faith. The incentive simply doesn’t point the same direction for both parties, and the gap between the two rows never shows up in a report — it’s folded into adjustments and stops being visible.
A visit happens, a claim goes out, and eventually a number lands in your account. There are several places along that path where money quietly stops moving, and each one needs a different kind of visibility. We’re working backward from the end.
Each claim you submit ends somewhere: paid in full, paid short, denied and fixed, denied and dropped, or paid and later taken back. Krino follows every one of them there — through acceptance, adjudication, remittance, and whatever did or didn’t happen next. One export from your practice management system, and nothing about how you bill has to change.
This is the one we most want to build. A payer saying it paid you and money landing in your account are two different events, and the second is almost never checked. Standard payment posting keys the remittance into your ledger and stops there — so a payment that was announced, reduced, netted against a recoupment, or never sent at all still shows as collected. Connecting the bank closes the loop: every remittance matched to a deposit, and every deposit that doesn’t match flagged.
With EMR access the same logic runs earlier in the cycle: visits that never became a claim at all, charges that never made it onto one, and coding support offered at the point of care rather than as an audit months later. It’s a heavier integration and a larger data footprint, so it follows once the first two are solid.
You already have someone doing it — that’s what the 4–9% pays for. The problem isn’t that nobody is working your claims; it’s that nobody can see which twelve of the sixty-one are worth an hour today, or which three of those twelve need you rather than your staff. Krino doesn’t add a person. It makes the existing one’s next hour obvious.
No. Krino doesn’t replace anything in your billing workflow and doesn’t require your biller to do anything differently. It reads a report you can already export yourself.
No. The data comes out of your own practice management system, under your own login. There’s nothing to ask permission for.
Then the report will show that, and that’s worth knowing too. Most of what Krino surfaces isn’t negligence — reworking a $60 denial genuinely costs a billing company more than it earns them. The incentive is structural, not personal.
Not today. What Krino reads now is what the payer sent back about claims that were already submitted — nothing about the visit itself. EMR access opens up work further upstream, and it’s on the roadmap, but it isn’t needed to start and won’t happen without you asking for it.
No. Payers will only discuss claims with the provider or a formally designated agent, and Krino is deliberately neither. You keep the relationship. We just tell you where to point it.
Not quite. A/R aging tells you what’s outstanding. It doesn’t tell you which claims were denied for a fixable reason, which ones nobody has touched since, which ones are about to run out of appeal time, or which ones can’t be closed without a clinician.
Claim files carry patient identifiers, insurance IDs, and diagnosis codes, so this is PHI and gets handled accordingly, under a BAA. It’s a far smaller surface than clinical records.
Krino is being built for independent practices that outsource billing and have no way to independently check the result.
Right now we’re asking owners how denials actually get handled day to day — who looks at them, when, and what happens to the ones nobody gets to. If you run a practice, we’d like twenty minutes. There’s nothing to buy at the end of it.
I’m Joon Kim, a practicing cardiac electrophysiologist. I know the billing side from inside a practice rather than from a market report, which is exactly why I’d rather ask you what you’re seeing than assume I already know.