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):
ledgerTypeisPatientProcedurePaymentfor patient payment rows- Distributions to specific charges may be present; absent or empty distributions indicate unapplied (suspended) credit
patientPaymentBillingmay be present for non-cash, non-credit-card payment types
Published OpenAPI: The bundled Swagger specification for
/v1/transactions/patientpaymentsdocuments GET (bulk list and get-by-id) only. This guide matches that surface.
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.
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
Organization-ID | header | Yes | string | The organization ID |
filter | query | Yes | string | Filter criteria (see filter keys below) |
responseFields | query | No | string | Comma-delimited list of fields to include, or ALL |
page | query | No | string | Page number for pagination |
pageSize | query | No | string | Number of records per page |
lastId | query | No | string | Largest transaction ID from the previous page, used for efficient date-filter pagination |
| Filter Key | Operators | Example |
|---|---|---|
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 |
Fetch all patient payments for a patient:
GET /api/v1/transactions/patientpayments?filter=patient.id==12000006542062Fetch 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| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
transactionId | path | Yes | integer | The ID of the patient payment transaction |
Organization-ID | header | Yes | string | The organization ID |
responseFields | query | No | string | Comma-delimited list of fields to include, or ALL |
GET /api/v1/transactions/patientpayments/100000042301Patient payment transactions are streamable via the Streaming API. Events are published under the TransactionV1 domain type.
organizationId.locationId.TransactionV1.operationTypeListen for all patient payment events across all locations:
66d22762060811049b50d085.*.TransactionV1.*Listen for stream CREATE events only at a specific location:
66d22762060811049b50d085.1000000000123.TransactionV1.CREATE| Stream operation | When |
|---|---|
CREATE | When a new patient payment is recorded in the system |
CREATE | When a correction (rebill) is applied — the replacement record typically emits CREATE |
No
UPDATEorDELETEstream events (typical): Patient payment corrections usually emitCREATEfor the new or revised record; the cancelled original does not emitDELETEin the common pattern described for payments.
Filtering by
ledgerType: All transaction sub-types share theTransactionV1domain. Filter onledgerType == PatientProcedurePaymentin the event payload to identify patient payment events.
A successful GET returns 200 with:
| Field | Type | Description |
|---|---|---|
data | object or array | The patient payment transaction, or a page of transactions |
warnings | array | Non-fatal warnings |
errors | array | Field-level or request errors when applicable |
For bulk GET, data is an array and includes meta.pagination.
| Field | Type | Read-Only | Description |
|---|---|---|---|
id | integer | Yes | Unique transaction ID |
type | string | Yes | Always "Transaction" |
ledgerType | string | Yes | Always PatientProcedurePayment |
amount | number | No | Payment amount |
ownership | string | No | PATIENT or GUARANTOR |
transactionDate | string (date) | No | YYYY-MM-DD |
entryDate | string (date-time) | Yes | Creation timestamp |
lastModified | string (date-time) | Yes | Last modification timestamp |
isAutomaticallyPosted | boolean | Yes | System-posted flag |
isActive | boolean | Yes | Active/cancelled status |
note | string | No | Free-text note |
previousTransaction | object | Yes | Ref to replaced record |
replacedByTransaction | object | Yes | Ref to replacement record |
patient | object | — | { id } |
location | object | — | { id } |
organizationLedgerType | object | — | { id } |
provider | object | — | { id } |
patientPaymentBilling | object | — | { checkNumber, bankNumber, referenceNumber } |
transactionTags | object | — | { orderIndex: { id } } |
distributions | array | — | [{ chargeId, chargeLocationId, appliedAmount, isActive }] |
HTTP Status Code Errors — click to expand
The request parameters or filter are invalid or cannot be processed.
| Message | Authentication is required and has failed or has not been provided. |
| Fix | Provide a valid Bearer token in the Authorization header. |
| Message | The request is understood, but it has been refused or access is not allowed. |
| Why | The caller is not permitted to read patient payment transactions for this organization. |
| Fix | Confirm credentials and organization access with your integration administrator. |
| Message | The requested resource is either missing or does not exist. |
| Fix | Confirm the transactionId is correct and belongs to your organization. |
| Message | The server timed out while processing the request. |
| Fix | Narrow filter criteria and retry. |
| Message | Rate limit exceeded. |
| Fix | Implement exponential backoff. See the rate limiting guide. |
| Message | An unexpected error occurred. |
| Fix | Retry. If the issue persists, contact support. |