> ## Documentation Index
> Fetch the complete documentation index at: https://docs.encoreos.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Charge Capture

> View, create, edit, and manage billable charges; run batch approval or claim generation; and view full charge detail with clinical and billing context.

The Charge Capture screen (`/pm/charges`) is the primary list for viewing and managing billable charges for the organization, including batch operations for approval and claim generation.

<Frame caption="Charge Capture — billable charges list with status filter, search, and batch actions.">
  <img src="https://mintcdn.com/encoreos/FHgwdEuPbyKq-W7P/images/pm-revenue/charges-overview.png?fit=max&auto=format&n=FHgwdEuPbyKq-W7P&q=85&s=1f6df907089149916e0cd29fdf3993ca" alt="Charge Capture screen showing the charge list, status filter, and New Charge action" width="1440" height="900" data-path="images/pm-revenue/charges-overview.png" />
</Frame>

## Overview

The Charge Capture screen displays a card list of charges filtered by status and/or a free-text search (matching CPT code, patient, or provider). Each charge card shows the CPT code, optional HCPCS code, status badge, modifiers, service date, unit count, charge amount, place-of-service label, and diagnosis codes. Inline actions let users view the charge detail, change status via a status menu, edit (with `pm.charges.edit`), or void (with `pm.charges.delete`).

Batch operations are available: users can select individual charges or all charges on the page using checkboxes. The batch toolbar appears when selections are made and offers "Approve charges" (requires `pm.batch.charge_approve`) and "Generate claims" (requires `pm.batch.claim_generate`). Batch progress is tracked in a dialog; completed jobs are linked to Batch History. Creating a new charge requires `pm.charges.create`.

## Who it's for

Requires the `pm.charges.view` permission to access the route. Additional permissions gate individual actions:

* `pm.charges.create` — New Charge button
* `pm.charges.edit` — Edit action per charge
* `pm.charges.delete` — Void action per charge
* `pm.batch.charge_approve` — Batch approve toolbar
* `pm.batch.claim_generate` — Batch generate claims toolbar

## Before you start

* You must hold `pm.charges.view` to access this screen.
* Charges are created from encounters or manually. Fee schedules and payer configuration should be in place before generating claims.
* Only charges in `approved` status are eligible for batch claim generation.

## Steps

<Steps>
  <Step title="Open Charge Capture">
    Navigate to `/pm/charges`. The list loads with all active (non-voided) charges for your organization, ordered by service date descending.
  </Step>

  <Step title="Filter charges">
    Use the search field to filter by CPT code, patient, or provider. Use the status dropdown to filter by a specific charge status. Both filters apply simultaneously.
  </Step>

  <Step title="View charge detail">
    Click the eye icon on any charge card to navigate to the charge detail page at `/pm/charges/:chargeId`.
  </Step>

  <Step title="Change charge status">
    Use the status menu (kebab/context menu) on each charge card to update its status.
  </Step>

  <Step title="Edit a charge (if permitted)">
    Click the pencil icon to open the Charge Form dialog in edit mode. Requires `pm.charges.edit`.
  </Step>

  <Step title="Void a charge (if permitted)">
    Click the trash icon to open a "Void Charge" confirmation dialog. Confirmed voids soft-delete the charge; it will no longer appear in the active list. Requires `pm.charges.delete`.
  </Step>

  <Step title="Select charges for batch operations">
    Use the per-row checkboxes or "Select all on page" to select charges. The batch toolbars become active when at least one charge is selected.
  </Step>

  <Step title="Batch approve charges (if permitted)">
    With charges selected, click "Approve charges" in the batch toolbar. Progress is shown in a dialog. Requires `pm.batch.charge_approve`.
  </Step>

  <Step title="Batch generate claims (if permitted)">
    With approved charges selected, click "Generate claims" in the batch toolbar. Only selected charges in `approved` status are included; others are skipped with a toast error if none qualify. Requires `pm.batch.claim_generate`.
  </Step>

  <Step title="Create a new charge (if permitted)">
    Click "New Charge" in the page header to open the Charge Form dialog in create mode. Requires `pm.charges.create`.
  </Step>
</Steps>

## Key concepts

<Tooltip tip="Current processing state of a charge in the revenue cycle">Charge status</Tooltip> — each charge has a status that controls eligibility for batch operations and claim generation.

<Tooltip tip="Procedure code from the American Medical Association code set">CPT code</Tooltip> — the primary procedure identifier shown on each charge card.

<Tooltip tip="Healthcare Common Procedure Coding System code">HCPCS code</Tooltip> — optional secondary code, shown when present.

<Tooltip tip="Two-digit codes appended to CPT/HCPCS to indicate special circumstances">Modifiers</Tooltip> — shown as a badge when present on a charge.

<Tooltip tip="837 professional or institutional claim">Claim generation</Tooltip> — creates a claim from one or more approved charges for submission to a payer.

<AccordionGroup>
  <Accordion title="Empty state">
    "No charges found" is shown when no charges match the current filters. When no filters are active, the message prompts the user to create their first charge.
  </Accordion>

  <Accordion title="Batch progress dialog">
    During a batch operation a progress dialog tracks total, processed, and error counts in real time. On completion, a "View Batch History" link navigates to `/pm/batch-history`.
  </Accordion>

  <Accordion title="Void vs. delete">
    Voiding soft-deletes a charge (sets `deleted_at`). The confirmation dialog labels the action "Void Charge" and warns that the charge will be hidden from the active list. This action is not reversible from this screen.
  </Accordion>
</AccordionGroup>

## Viewing a charge

The Charge Details screen displays the full details of a single charge record and allows authorized users to update its status or edit its fields at route `/pm/charges/:chargeId` (permission: `pm.charges.view`). Edit requires `pm.charges.edit`.

The page loads a charge via `useChargeDetail`. The header shows the CPT code and a `ChargeStatusBadge`, with action buttons for `ChargeStatusMenu` (status transitions) and Edit. Two detail cards display Service Details (CPT code, HCPCS code if present, amount + units, service date, place of service resolved via picklist, rendering NPI) and Clinical & Billing (modifiers as badges, diagnosis codes, provider name, encounter context from `useEncounterContext`, claim ID, fee schedule name). An Audit Trail card at the bottom shows created, updated, reviewed, and approved timestamps. If an `encounter_id` is present, an `AiCodingSuggestionSidecar` is rendered. The Edit action opens a `ChargeFormDialog`.

1. From the Charges list (`/pm/charges`), click a charge row to open the detail page.
2. The Service Details card shows CPT/HCPCS code, charge amount and units, service date, place of service, and rendering NPI.
3. The Clinical & Billing card shows modifiers, diagnosis codes, provider, encounter context, claim linkage, and fee schedule.
4. Use the status menu in the header to move the charge through workflow states.
5. Click **Edit** (requires `pm.charges.edit`) to open the ChargeFormDialog and modify charge fields.

| Term               | Meaning in code                                                |
| ------------------ | -------------------------------------------------------------- |
| `cpt_code`         | Procedure code for the service                                 |
| `hcpcs_code`       | HCPCS code when applicable                                     |
| `modifiers`        | Array of billing modifiers applied to the charge               |
| `diagnosis_codes`  | Array of diagnosis codes linked to this charge                 |
| `place_of_service` | Place of service code resolved to label via reference picklist |
| `rendering_npi`    | NPI of the rendering provider                                  |
| `encounter_id`     | Links charge to a `pm_encounters` record                       |

## Related

<Columns cols={2}>
  <Card title="Practice Management" icon="briefcase" href="/pm/overview">
    Overview of the Practice Management core.
  </Card>

  <Card title="Governance & parity" icon="scale-balanced" href="/governance/index">
    Documentation coverage and governance.
  </Card>
</Columns>

<Note>
  This page documents shipped product behavior. It is not medical, legal, or
  billing advice. Verify against your organization's policies and applicable
  regulations before using it for clinical, compliance, or billing decisions.
  Protected health information (PHI) shown in the product is governed by your
  tenant's access controls and is never exposed in this documentation.
</Note>

<Accordion title="Documentation sources">
  * src/routes/pm.tsx
  * src/cores/pm/pages/ChargeListPage.tsx
  * src/cores/pm/hooks/useChargeList.ts
  * src/cores/pm/types/batch.ts
  * src/platform/permissions/constants.ts
  * src/cores/pm/pages/ChargeDetailPage.tsx
  * src/cores/pm/hooks/useChargeDetail.ts
</Accordion>
