Skip to main content
GET
List bills

Authorizations

Authorization
string
header
required

Marketplace API key

Headers

X-Organization-Id
string
required

Target clinic organization ID

Query Parameters

dateFrom
string

Filter from date (ISO 8601)

Example:

"2025-01-01"

dateTo
string

Filter to date (ISO 8601)

Example:

"2025-12-31"

facilityId
string

Filter by facility ID

patientId
string

Filter by patient ID

providerId
string

Filter by provider ID

integrationStatus
string

Filter by integration status

billingType
string

Filter by billing type

code
string

Filter to bills containing a line item with any of these procedure codes (CPT/HCPCS, comma-separated). Exact match, case-insensitive on both the value you send and the code as stored — nothing normalizes a procedure code on write, so a case-sensitive match would answer ?code=j3245 with an empty page and a 200, which reads as 'this practice bills no J3245'. Same folding as /v4/claims and /v4/era-service-lines. Composable with dateFrom/dateTo for windowed cohort pulls. Supplying the parameter with NO values — ?code= or ?code=, — is a 400, not an empty filter: build the query string so an empty cohort OMITS the parameter, because silently dropping it would return every bill in the organization for a request that asked for a few.

Example:

"J3245,J0717,J2357"

status
string

Filter by workflow status (comma-separated). Values: synced, reviewed, posted. Bills in status 'new' (not yet synced) and archived bills are never returned by this API. Supplying the parameter with NO values — ?status= or ?status=, — is a 400, not an empty filter: omit the parameter when you have no statuses to filter on.

Example:

"posted"

updatedSince
string

Only return bills whose record was created or modified at/after this timestamp (ISO 8601). When set, results are ordered by updatedAt ascending. Page through to the end, then use the LAST row's updatedAt as the next cursor; do not advance the cursor mid-pagination. Rows sharing the boundary updatedAt re-deliver on the next pull, since the bound is inclusive — dedupe on id. Caveat: this endpoint is offset-paged, and ascending order alone does not make the walk safe. If a bill on an early page is re-synced while you are paging, it moves within (or out of) the result set, the rows after it shift one position toward the front, and the offset for your next page steps over one of them — with every page still coming back full, so there is no short page to warn you. Keep includeTotals on and treat a totalCount that shrinks between pages as a walk you must not trust, then re-read the window. (/patients, /insurance-policies and /appointments take a cursorId instead and have no offset to invalidate; the same is planned here.)

Example:

"2025-06-01T00:00:00.000Z"

updatedUntil
string

Only return bills whose record was last modified at/before this timestamp (ISO 8601).

Example:

"2025-06-30T23:59:59.999Z"

includeTotals
boolean
default:true

Populate pagination.totalCount and pagination.totalPages. Defaults to true — this endpoint has shipped totals since v1 and some consumers use them as an exhaustiveness interlock before pruning local rows, so the default cannot change under them. Pass includeTotals=false to skip them: the totals need a second aggregate over the whole filtered set (not just the page) which re-runs identically on every page of a walk, and it is the dominant cost of this endpoint. With includeTotals=false both fields are null and you page until a short page instead.

Example:

true

Response

Success

code
string
required

Response code

Example:

"success"

data
object
required