For: RCM Specialist · Time: 1–2 min per statement (or batch) · Frequency: Monthly statement cycle + ad-hoc
Trigger
A patient has an outstanding balance after insurance adjudicated (copay, deductible, coinsurance, or non-covered service). The platform generated a draft statement (or you created one manually) and it needs to go out.
Outcome
The patient receives a tenant-branded email with line-item balance breakdown and an optional "Pay Online" CTA. Statement status flips draft → sent. times_sent increments. The next reminder is queued automatically.
Where
- RCM → Statements tab
- Patient Detail — statement history per patient
Steps
Single statement
- RCM → Statements → find the draft. Or use Patient Detail for a specific patient.
- Review the statement. Confirm:
- Patient name, address (for paper backup if needed)
- Total charges, insurance paid, adjustments, patient balance
- Due date (default Net-30 from statement_date)
- Confirm contact info. If
patient_emailis empty, click the patient → Edit Contact → add email. Without an email, you can only print + mail. - Click Send. The platform sends a branded email via Resend. Patient receives within ~30 seconds.
- Confirm delivery. Status moves draft → sent.
last_sent_date= today.times_sentincrements.
Batch send
- Statements → filter status=draft.
- Select all (top-left checkbox).
- Bulk Send. The platform iterates, sends one per statement. Failures (no email, bad email) skipped with reasons.
- Review results. A toast/log shows: X sent, Y skipped, Z failed.
With optional Pay Online link
If you want the email to include a Stripe Checkout button:
- Before sending, mint a payment link for the statement. RCM → Patient Detail → Send Pay Link modal → confirm amount → creates a Stripe Checkout session.
- Copy the resulting
payUrlfrom the Pay Link confirmation. - Send statement with
pay_urlbody param (API; in the UI this is automatic when you go through the Send Pay Link flow). - Patient clicks the "Pay Balance Online" button in the email → lands on Stripe Checkout pre-filled with amount.
Watch-outs
- Email IS NOT a delivery guarantee. Patients ignore email, spam-filter email, change email addresses. Track
times_sent— after 2 sends with no payment, switch to phone call or mailed paper statement. - The "Pay Online" link expires. Stripe Checkout sessions are valid for 24 hours by default. If a patient clicks 3 days later, they get an "expired" page. The link should be regenerated on every send if you want it live.
- Statement balance can drift from claim balance. If a denial is reworked and partially paid AFTER the statement was generated, the statement's balance is stale. Mark the statement as
supersededand regenerate. - Don't double-bill. If insurance is still adjudicating, don't bill the patient yet. Statement = patient owes; in-flight insurance = NOT patient's responsibility yet. Generate statements only when the claim is in
paidordenied_patient_responsibilitystatus. - Check which brand the patient will see. Statements use your agency brand unless the practice has a per-practice override (Agency Ops → Clients → Branding). Set that up first if the practice wants patients to see their own name and logo.
- Statements go to patient, payment goes to practice. The patient's payment lands in the practice's Stripe account (you're not collecting on their behalf into your account, unless that's specifically how you set up Stripe Connect).
Related jobs
- Brand the platform — set up the branding the statement uses
- Work A/R aging — generate statements as part of moving balance to patient
Something on this page doesn’t match what you see in the app? Email support@credentik.com and we’ll fix the guide.