Skip to content

Patient Payment Transactions V1 — Developer Guide

Reference: Patient Payment Transactions (V1) Endpoint Documentation


Patient payment transactions record payments received from patients or their guarantors. The payment method is reflected by organizationLedgerType on each returned record.

Key behaviors (read model):

  • ledgerType is PatientProcedurePayment for patient payment rows
  • Distributions to specific charges may be present; absent or empty distributions indicate unapplied (suspended) credit
  • patientPaymentBilling may be present for non-cash, non-credit-card payment types

Published OpenAPI: The bundled Swagger specification for /v1/transactions/patientpayments documents GET (bulk list and get-by-id) only. This guide matches that surface.


GET — Bulk List Patient Payment Transactions

Returns a paginated list of patient payment transaction entries filtered by the provided criteria.

⚠️ Rate Limited: This endpoint is rate limited. See the rate limiting guide for details.

Parameters

ParameterInRequiredTypeDescription
Organization-IDheaderYesstringThe organization ID
filterqueryYesstringFilter criteria (see filter keys below)
responseFieldsqueryNostringComma-delimited list of fields to include, or ALL
pagequeryNostringPage number for pagination
pageSizequeryNostringNumber of records per page
lastIdqueryNostringLargest transaction ID from the previous page, used for efficient date-filter pagination

Filter Keys

Filter KeyOperatorsExample
id->?filter=id->[123,124]
patient.id==, ->?filter=patient.id==789
transactionDate>, <, >=, <=?filter=transactionDate>=2025-01-01
location.id==, !=, ->?filter=location.id==123 or ?filter=location.id==ALL
lastModified>, <, >=, <=?filter=lastModified>=2025-01-01

Example Requests

Fetch all patient payments for a patient:

GET /api/v1/transactions/patientpayments?filter=patient.id==12000006542062

Fetch patient payments for a location within a date range:

GET /api/v1/transactions/patientpayments?filter=transactionDate>=2025-01-01,transactionDate<=2025-03-31,location.id==123

GET — Patient Payment Transaction by ID

Parameters

ParameterInRequiredTypeDescription
transactionIdpathYesintegerThe ID of the patient payment transaction
Organization-IDheaderYesstringThe organization ID
responseFieldsqueryNostringComma-delimited list of fields to include, or ALL

Example Request

GET /api/v1/transactions/patientpayments/100000042301

Streaming

Patient payment transactions are streamable via the Streaming API. Events are published under the TransactionV1 domain type.

Routing Key Format

organizationId.locationId.TransactionV1.operationType

Example Routing Keys

Listen for all patient payment events across all locations:

66d22762060811049b50d085.*.TransactionV1.*

Listen for stream CREATE events only at a specific location:

66d22762060811049b50d085.1000000000123.TransactionV1.CREATE

Operations Emitted (stream)

Stream operationWhen
CREATEWhen a new patient payment is recorded in the system
CREATEWhen a correction (rebill) is applied — the replacement record typically emits CREATE

No UPDATE or DELETE stream events (typical): Patient payment corrections usually emit CREATE for the new or revised record; the cancelled original does not emit DELETE in the common pattern described for payments.

Filtering by ledgerType: All transaction sub-types share the TransactionV1 domain. Filter on ledgerType == PatientProcedurePayment in the event payload to identify patient payment events.


Response Structure

A successful GET returns 200 with:

FieldTypeDescription
dataobject or arrayThe patient payment transaction, or a page of transactions
warningsarrayNon-fatal warnings
errorsarrayField-level or request errors when applicable

For bulk GET, data is an array and includes meta.pagination.

data Object — Patient Payment Fields

FieldTypeRead-OnlyDescription
idintegerYesUnique transaction ID
typestringYesAlways "Transaction"
ledgerTypestringYesAlways PatientProcedurePayment
amountnumberNoPayment amount
ownershipstringNoPATIENT or GUARANTOR
transactionDatestring (date)NoYYYY-MM-DD
entryDatestring (date-time)YesCreation timestamp
lastModifiedstring (date-time)YesLast modification timestamp
isAutomaticallyPostedbooleanYesSystem-posted flag
isActivebooleanYesActive/cancelled status
notestringNoFree-text note
previousTransactionobjectYesRef to replaced record
replacedByTransactionobjectYesRef to replacement record
patientobject{ id }
locationobject{ id }
organizationLedgerTypeobject{ id }
providerobject{ id }
patientPaymentBillingobject{ checkNumber, bankNumber, referenceNumber }
transactionTagsobject{ orderIndex: { id } }
distributionsarray[{ chargeId, chargeLocationId, appliedAmount, isActive }]

Errors & Warnings Reference

HTTP Status Code Errors — click to expand

400 — Bad Request

The request parameters or filter are invalid or cannot be processed.


401 — Unauthorized

MessageAuthentication is required and has failed or has not been provided.
FixProvide a valid Bearer token in the Authorization header.

403 — Forbidden

MessageThe request is understood, but it has been refused or access is not allowed.
WhyThe caller is not permitted to read patient payment transactions for this organization.
FixConfirm credentials and organization access with your integration administrator.

404 — Not Found

MessageThe requested resource is either missing or does not exist.
FixConfirm the transactionId is correct and belongs to your organization.

408 — Request Timeout

MessageThe server timed out while processing the request.
FixNarrow filter criteria and retry.

429 — Too Many Requests

MessageRate limit exceeded.
FixImplement exponential backoff. See the rate limiting guide.

500 — Internal Server Error

MessageAn unexpected error occurred.
FixRetry. If the issue persists, contact support.