Instant Payments for Physicians: What Actually Moves Money Faster, and What Doesn't
If you've looked at "instant payments" for your practice, you've probably hit the same wall: the pitch says money in seconds, your AR aging report says 41 days, and nobody explains where the other 41 days went.
They went into four separate clocks, only two of which a payment rail can touch. Before you evaluate FedNow, RTP, or any vendor sitting on top of them, you need to know which clock each one actually stops. Otherwise you'll buy a rail that shortens a two-day leg of a six-week cycle and wonder why the aging report didn't move.
This article decomposes the cycle into its four clocks, traces one synthetic claim through all of them with the actual X12 segments, and identifies which delays are structural, which are yours, and which real-time settlement genuinely removes.
The delay is four clocks, not one
From encounter to spendable cash, money passes through four distinct waits with four different owners:
Clock 1 — Submission lag (yours). Encounter closed to 837P out the door. Governed by your documentation turnaround, coding queue, and scrubber rejection loop. Fully under your control and usually the cheapest to fix.
Clock 2 — Adjudication (the payer's). 837P accepted to adjudication complete. Bounded below by regulation, not by technology: Medicare holds clean electronic claims for a minimum payment floor before releasing payment, and state prompt-pay statutes set outer limits that vary by state and by claim type [verify current CMS manual provisions and your state's statute]. No payment rail shortens this clock. A vendor claiming real-time settlement is not adjudicating your claim faster — they are doing something else, and you should make them say what.
Clock 3 — Payment transit and reassociation (the rails'). Adjudication complete to funds available and posted at the line level. This is two things people conflate: the money arriving, and you knowing which claims it covers. Under ACH they arrive on different days through different pipes.
Clock 4 — Patient collection (yours, partly). The PR-group balance identified at posting to cash in the account. Statement cycle, mail float, patient behavior.
Instant rails operate on clocks 3 and 4. That's a real target — but size it before you buy.
Worked example: one claim, encounter to available balance
Established patient, two lines, commercial payer, deductible satisfied, 20% coinsurance. All values below are synthetic and contain no patient data.
The 835 that eventually arrives:
BPR*I*168.80*C*ACH*CCP*01*011000015*DA*9876543*1234567890**01*021000021*DA*5555555*20260728~
TRN*1*0714093255*1234567890~
CLP*PCN-88421*1*475.00*168.80*42.20*12*ICN-2026-0714-0932*11~
SVC*HC:99214*265.00*110.40**1~
CAS*CO*45*127.00~
CAS*PR*2*27.60~
SVC*HC:20610*210.00*58.40**1~
CAS*CO*45*137.00~
CAS*PR*2*14.60~Every service line balances — `SVC02` = `SVC03` + the sum of that line's `CAS` amounts:
- 99214 —
265.00 = 110.40 + 127.00 (CO-45) + 27.60 (PR-2)✓ - 20610 —
210.00 = 58.40 + 137.00 (CO-45) + 14.60 (PR-2)✓
And at the claim level: CLP03 − CLP04 = 475.00 − 168.80 = 306.20, which equals all CAS amounts summed (264.00 contractual + 42.20 patient). CLP05 = 42.20 — the PR-group total, and the only amount billable to this patient. The 264.00 in CO-45 is your contractual write-off; putting it on a statement is balance billing under a participating-provider agreement, not a collection strategy.
Now the timeline for that single claim:
| Day | Event | Clock |
|---|---|---|
| 0 | Encounter closed | — |
| 2 | Note signed, coded, scrubber clean, 837P submitted | 1 |
| 3 | 999 accepted, 277CA accepted | 1 |
| 17 | Adjudication completes | 2 |
| 21 | Payer originates ACH CCD+ credit | 3 |
| 23 | $168.80 lands in the operating account, inside a batch deposit | 3 |
| 24 | 835 retrieved from the clearinghouse | 3 |
| 26 | Reassociated via TRN02 = 0714093255, posted at line level | 3 |
| 33 | Patient statement mailed for $42.20 | 4 |
| 51 | Patient check deposited | 4 |
Read the decomposition: 15 days of adjudication, 6 days of payment transit, 3 days of reassociation and posting, 25 days of patient collection. The bank balance moved on day 23 but you couldn't post it until day 26, because the money and the explanation travel separately — the ACH credit carries the trace number in its addenda record, the 835 carries the same value in TRN02, and matching them is a distinct operational step (the CAQH CORE EFT/ERA reassociation rule exists precisely because this leg breaks constantly) [verify current CORE rule version].
Days 23 to 26 are an information problem, not a money problem. Days 33 to 51 are a rail problem. Days 2 through 17 are neither.
Why the legacy rails are slow
The slowness isn't incompetence — it's the design of the rails themselves. ACH is a batch, store-and-forward, reversible system. Reversibility is why it settles on a banking calendar and why funds can be clawed back after they appear.
| Paper check | ACH CCD+ (standard) | Same Day ACH | FedNow / RTP credit push | |
|---|---|---|---|---|
| Time to available funds | Mail float + deposit hold | 1–2 banking days after origination | Same banking day, windowed | Seconds |
| Availability window | Business days | Business days, cutoff-bound | Business days, fixed windows | 24/7/365, including weekends and holidays |
| Finality | Reversible; stop-pay possible | Reversible — return windows run days for administrative returns and materially longer for unauthorized consumer entries [verify Nacha rules] | Same return exposure as standard ACH | Irrevocable once accepted |
| Remittance carried | Paper EOB, separately | 80-char addenda; 835 arrives via a separate pipe | Same | ISO 20022 structured remittance or remittance reference |
| Per-transaction limit | Practical only | High | Capped per transaction [verify current Nacha limit] | Network-set and revised periodically [verify current FedNow and RTP limits] |
| Dominant failure mode | Lost, stale-dated, misapplied | Return codes; EFT/ERA reassociation break | Missed cutoff window | Rejected at origination — fails loudly, not silently |
| Chargeback exposure | Low | Return exposure, not chargeback | Same | None — credit push, no stored credential |
The last two rows matter more than the speed row for patient balances. A card-on-file collection can be charged back months later; an ACH debit can return NSF after you've posted it as paid. A credit push either succeeds and is final, or fails immediately. That converts a reconciliation liability into a clean binary at the moment of collection.
The honest caveat: payer adoption of instant rails for provider payments is not universal, and most commercial remittance today still arrives as ACH CCD+ with a separately delivered 835 [verify against your own payer mix]. Which is exactly why the sequencing below matters.
What to change, in the order that pays
Run these in order. Each step is measurable against data you already have.
1. Size your four clocks before buying anything. Pull 30 recent paid claims. For each, record: encounter close date, 837P submission date, BPR16 effective entry date, date the 835 was retrieved, date it posted, and — where applicable — date the patient balance cleared. Take the median of each interval. You now know which clock owns your AR, and you can score any vendor against a specific number instead of a promise.
2. Fix clock 1 first — it's free. Submission lag is the only interval with no counterparty. If your median encounter-to-submission is above two days, that delay is compounding against every other clock and no rail will recover it.
3. Automate reassociation, not just retrieval. Days 23 to 26 in the example are pure operational lag. Match TRN02 in the 835 against the trace number in the ACH addenda automatically, and post at the service-line level — every SVC line's CAS groups, not a claim-level lump. Line-level posting is what makes underpayment detectable: a CO-45 that doesn't reconcile to your contracted allowed amount is a contract variance you can only see if you stored the line.
4. Move patient balances to request-for-payment. The moment the 835 posts, you know the exact PR-group total — $42.20 in the example, derived and itemizable. A request for payment sent that day over an instant rail (ISO 20022 pain.013 request, pain.014 response [verify message set and network support]) reaches the patient's banking app with the itemization attached, requires no stored card credential, carries no NSF or chargeback exposure, and settles in seconds when accepted. This collapses clock 4 from weeks to the patient's response time, and it's available to you regardless of whether your payers have adopted instant rails. Bill only the `PR` amount. Never the CO.
5. Only then evaluate real-time settlement on the payer leg. Real-time settlement over FedNow or RTP addresses clocks 3 and 4. It does not compress adjudication. If a vendor's pitch implies otherwise, ask them to name which clock they stop and show you the transaction flow — the answer is either "we push funds once the amount is known" or "we advance against an adjudicated receivable," and those are very different products with very different risk to you.
FAQ
Does FedNow or RTP mean my payers pay me the same day? No — not by itself. Those rails govern how money moves once a payer has decided to pay, which is clock 3. Adjudication is clock 2, and it's bounded by payer processing and by regulation, including Medicare's payment floor and state prompt-pay windows [verify current provisions]. Instant rails on the payer leg also require the payer to originate on them, which is a payer-by-payer question you should ask directly rather than assume. The reliable near-term gains for an independent practice are on the patient leg and on the reassociation lag, both of which you control unilaterally.
Is the reduced float worth the operational change? Compute it rather than accept it. Take your median days from BPR16 to line-level posting, multiply by your average daily collected revenue, and you have the working capital sitting in transit at any moment. Then separately price the error cost: unposted cash, duplicate patient statements sent while payment was in flight, and write-offs on balances that aged past the point of collectability. In most practices the second number is larger than the float, and it's the one line-level posting actually addresses. Any vendor-published ROI figure won't reflect your payer mix or your patient responsibility distribution [verify against your own data].
How does this stay HIPAA-safe if payment data leaves my system? Ask for the mechanism, not the assurance — a platform can't grant you compliance, and any vendor that answers "we're HIPAA safe" without describing the payload has told you nothing. The mechanism to look for: payment instructions reference an opaque encounter identifier rather than carrying clinical content, PHI stays in your system of record, remittance parsing operates on the financial segments of the 835, and the payment rail sees an amount and a reference token. Then confirm the compliance layer separately — an executed BAA, documented payload policy, and your own configuration. All three are required; the mechanism alone isn't sufficient, and neither is the paperwork.
Try it against your own data
The shteg.ai sandbox takes a de-identified 835 and returns the full decomposition: service-line balancing validated on every SVC (SVC02 = SVC03 + CAS), claim-level tie-out against CLP03 − CLP04, the PR-group total isolated as the billable patient amount, CO-45 amounts checked against your fee-schedule row to surface contract variances, and a settlement timeline built from BPR16 versus your actual posting date — the four clocks, measured on your own claims instead of a vendor's slide.
Bring one 835 where the deposit and the remittance arrived on different days. The gap between those two dates, multiplied across a year of claims, is usually the entire business case.
[Open the shteg.ai sandbox →](/sandbox) [verify link target before publish]
Educational content for physicians, practice administrators, and revenue-cycle staff. Not legal, billing, coding, or compliance advice. All segment values, claim identifiers, trace numbers, dates, and dollar figures in this article are synthetic illustrations and contain no patient data. X12 835 specifications, CAQH CORE operating rules, Nacha rules, and FedNow and RTP network capabilities, limits, and message support change over time — verify current specifications with your clearinghouse and financial institution before making operational decisions. Payment timing obligations, patient billing, and balance-billing restrictions are governed by your payer contracts and by applicable state and federal law; consult counsel for your jurisdiction.
Draft notes: ~1,620 words. H1 + 6 H2s (4 body + FAQ + CTA). Worked example carries both required forms — SVC02 = SVC03 + CAS balancing on both lines with claim-level tie-out (CLP03 − CLP04 = 306.20 = sum of all CAS; CLP05 = 42.20 = PR total) and a settlement timeline, joined by the four-clock decomposition so the arithmetic and the timeline explain each other. Comparison table is rails-level (check / CCD+ / Same Day ACH / instant credit push) rather than vendor-level. Eight [verify] flags: CMS payment floor, state prompt-pay statutes, CORE reassociation rule version, Nacha return windows, Same Day ACH limit, FedNow/RTP limits, pain.013/pain.014 support, payer adoption, plus ROI and sandbox link. No statistics asserted — the day counts are one labeled synthetic claim, not a benchmark. PR-versus-CO billability guardrail included (§5 cluster requirement) since the piece routes patient balances to RfP. HIPAA FAQ answers with mechanism plus BAA/configuration caveat, not an assurance. Primary-source pointers: X12 835 TR3, CAQH CORE EFT/ERA reassociation, CMS Medicare claims processing, Nacha operating rules, FedNow/RTP operating rules, ISO 20022. Blocking before publish: §5 requires a named physician or revenue-cycle reviewer — currently unassigned.
Want me to save this to examples/seo-presence/workspace/drafts/fast-payment-1-<id>.md to match the pipeline convention? The other drafts use a short base-36 timestamp slug (msr75r0c) — give me an ID in that format, or say the word and I'll generate one.
<!-- generated_by: claude-draft-1 -->