Help center · Billing & RCM

Send a branded patient statement

The patient receives a tenant-branded email with line-item balance breakdown and an optional "Pay Online" CTA. Statement status flips draft → sent.

Updated · 2 min read · By the Credentik team

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

Steps

Single statement

  1. RCM → Statements → find the draft. Or use Patient Detail for a specific patient.
  2. 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)
  3. Confirm contact info. If patient_email is empty, click the patient → Edit Contact → add email. Without an email, you can only print + mail.
  4. Click Send. The platform sends a branded email via Resend. Patient receives within ~30 seconds.
  5. Confirm delivery. Status moves draft → sent. last_sent_date = today. times_sent increments.

Batch send

  1. Statements → filter status=draft.
  2. Select all (top-left checkbox).
  3. Bulk Send. The platform iterates, sends one per statement. Failures (no email, bad email) skipped with reasons.
  4. 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:

  1. Before sending, mint a payment link for the statement. RCM → Patient Detail → Send Pay Link modal → confirm amount → creates a Stripe Checkout session.
  2. Copy the resulting payUrl from the Pay Link confirmation.
  3. Send statement with pay_url body param (API; in the UI this is automatic when you go through the Send Pay Link flow).
  4. 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 superseded and 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 paid or denied_patient_responsibility status.
  • 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).

Something on this page doesn’t match what you see in the app? Email support@credentik.com and we’ll fix the guide.

Questions about this workflow?

Email support@credentik.com, or try it yourself in a 14-day free trial with your own providers and clients. No credit card.

See plans and pricing · Already have an account? Sign in