Candid Health subpackage_patient-refunds.subpackage_patient-refunds/v1 API

The subpackage_patient-refunds.subpackage_patient-refunds/v1 API from Candid Health — 2 operation(s) for subpackage_patient-refunds.subpackage_patient-refunds/v1.

OpenAPI Specification

candid-health-subpackage-patient-refunds-subpackage-patient-refunds-v1-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: API Reference subpackage_auth.subpackage_auth/default subpackage_patient-refunds.subpackage_patient-refunds/v1 API
  version: 1.0.0
servers:
- url: https://pre-api.joincandidhealth.com
  description: Production
- url: https://pre-api-staging.joincandidhealth.com
  description: Staging
- url: https://sandbox-pre-api.joincandidhealth.com
  description: CandidSandbox
- url: https://staging-pre-api.joincandidhealth.com
  description: CandidStaging
- url: http://localhost:4000
  description: Local
- url: https://api.joincandidhealth.com
  description: Production
- url: https://api-staging.joincandidhealth.com
  description: Staging
- url: https://sandbox-api.joincandidhealth.com
  description: CandidSandbox
- url: https://staging-api.joincandidhealth.com
  description: CandidStaging
- url: http://localhost:5050
  description: Local
tags:
- name: subpackage_patient-refunds.subpackage_patient-refunds/v1
paths:
  /api/patient-refunds/v1:
    get:
      operationId: get-multi
      summary: Get patient refunds
      description: 'Returns all patient refunds satisfying the search criteria AND whose organization_id matches

        the current organization_id of the authenticated user.'
      tags:
      - subpackage_patient-refunds.subpackage_patient-refunds/v1
      parameters:
      - name: limit
        in: query
        description: Defaults to 100. The value must be greater than 0 and less than 1000.
        required: false
        schema:
          type: integer
      - name: patient_external_id
        in: query
        required: false
        schema:
          $ref: '#/components/schemas/type_commons:PatientExternalId'
      - name: claim_id
        in: query
        required: false
        schema:
          $ref: '#/components/schemas/type_commons:ClaimId'
      - name: service_line_id
        in: query
        required: false
        schema:
          $ref: '#/components/schemas/type_commons:ServiceLineId'
      - name: billing_provider_id
        in: query
        required: false
        schema:
          $ref: '#/components/schemas/type_commons:ProviderId'
      - name: unattributed
        in: query
        description: returns payments with unattributed allocations if set to true
        required: false
        schema:
          type: boolean
      - name: invoice_id
        in: query
        required: false
        schema:
          $ref: '#/components/schemas/type_commons:InvoiceId'
      - name: sources
        in: query
        required: false
        schema:
          $ref: '#/components/schemas/type_financials:PatientTransactionSource'
      - name: sort
        in: query
        description: Defaults to refund_timestamp
        required: false
        schema:
          $ref: '#/components/schemas/type_patient-refunds/v1:PatientRefundSortField'
      - name: sort_direction
        in: query
        description: Sort direction. Defaults to descending order if not provided.
        required: false
        schema:
          $ref: '#/components/schemas/type_commons:SortDirection'
      - name: page_token
        in: query
        required: false
        schema:
          $ref: '#/components/schemas/type_commons:PageToken'
      - name: Authorization
        in: header
        description: OAuth authentication
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Response with status 200
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/type_patient-refunds/v1:PatientRefundsPage'
        '403':
          description: Error response with status 403
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorName:
                    type: string
                    enum:
                    - UnauthorizedError
                  content:
                    $ref: '#/components/schemas/type_commons:UnauthorizedErrorMessage'
                required:
                - errorName
                - content
        '422':
          description: Error response with status 422
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorName:
                    type: string
                    enum:
                    - UnprocessableEntityError
                  content:
                    $ref: '#/components/schemas/type_commons:UnprocessableEntityErrorMessage'
                required:
                - errorName
                - content
    post:
      operationId: create
      summary: Create patient refund
      description: 'Creates a new patient refund record and returns the newly created PatientRefund object.

        The allocations can describe whether the refund is being applied toward a specific service line,

        claim, or billing provider.'
      tags:
      - subpackage_patient-refunds.subpackage_patient-refunds/v1
      parameters:
      - name: Authorization
        in: header
        description: OAuth authentication
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Response with status 200
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/type_patient-refunds/v1:PatientRefund'
        '403':
          description: Error response with status 403
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorName:
                    type: string
                    enum:
                    - UnauthorizedError
                  content:
                    $ref: '#/components/schemas/type_commons:UnauthorizedErrorMessage'
                required:
                - errorName
                - content
        '404':
          description: Error response with status 404
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorName:
                    type: string
                    enum:
                    - EntityNotFoundError
                  content:
                    $ref: '#/components/schemas/type_commons:EntityNotFoundErrorMessage'
                required:
                - errorName
                - content
        '422':
          description: Error response with status 422
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorName:
                    type: string
                    enum:
                    - ReallocationWouldOverdraftError
                  content:
                    $ref: '#/components/schemas/type_financials:ReallocationWouldOverdraftErrorContent'
                required:
                - errorName
                - content
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                amount_cents:
                  type: integer
                refund_timestamp:
                  type: string
                  format: date-time
                refund_note:
                  type: string
                patient_external_id:
                  $ref: '#/components/schemas/type_commons:PatientExternalId'
                allocations:
                  type: array
                  items:
                    $ref: '#/components/schemas/type_financials:AllocationCreate'
                invoice:
                  $ref: '#/components/schemas/type_commons:InvoiceId'
                refund_reason:
                  $ref: '#/components/schemas/type_financials:RefundReason'
                raise_on_overdraft:
                  type: boolean
                  description: If true, the refund will be rejected if it would cause any account to be overdrafted. Defaults to false.
              required:
              - amount_cents
              - patient_external_id
              - allocations
  /api/patient-refunds/v1/{patient_refund_id}:
    get:
      operationId: get
      summary: Get patient refund
      description: Retrieves a previously created patient refund by its `patient_refund_id`.
      tags:
      - subpackage_patient-refunds.subpackage_patient-refunds/v1
      parameters:
      - name: patient_refund_id
        in: path
        required: true
        schema:
          $ref: '#/components/schemas/type_patient-refunds/v1:PatientRefundId'
      - name: Authorization
        in: header
        description: OAuth authentication
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Response with status 200
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/type_patient-refunds/v1:PatientRefund'
        '403':
          description: Error response with status 403
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorName:
                    type: string
                    enum:
                    - UnauthorizedError
                  content:
                    $ref: '#/components/schemas/type_commons:UnauthorizedErrorMessage'
                required:
                - errorName
                - content
        '404':
          description: Error response with status 404
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorName:
                    type: string
                    enum:
                    - EntityNotFoundError
                  content:
                    $ref: '#/components/schemas/type_commons:EntityNotFoundErrorMessage'
                required:
                - errorName
                - content
    patch:
      operationId: update
      summary: Update
      description: Updates the patient refund record matching the provided patient_refund_id.
      tags:
      - subpackage_patient-refunds.subpackage_patient-refunds/v1
      parameters:
      - name: patient_refund_id
        in: path
        required: true
        schema:
          $ref: '#/components/schemas/type_patient-refunds/v1:PatientRefundId'
      - name: Authorization
        in: header
        description: OAuth authentication
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Response with status 200
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/type_patient-refunds/v1:PatientRefund'
        '403':
          description: Error response with status 403
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorName:
                    type: string
                    enum:
                    - UnauthorizedError
                  content:
                    $ref: '#/components/schemas/type_commons:UnauthorizedErrorMessage'
                required:
                - errorName
                - content
        '404':
          description: Error response with status 404
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorName:
                    type: string
                    enum:
                    - EntityNotFoundError
                  content:
                    $ref: '#/components/schemas/type_commons:EntityNotFoundErrorMessage'
                required:
                - errorName
                - content
        '422':
          description: Error response with status 422
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorName:
                    type: string
                    enum:
                    - UnprocessableEntityError
                  content:
                    $ref: '#/components/schemas/type_commons:UnprocessableEntityErrorMessage'
                required:
                - errorName
                - content
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                refund_timestamp:
                  type: string
                  format: date-time
                refund_note:
                  $ref: '#/components/schemas/type_financials:NoteUpdate'
                invoice:
                  $ref: '#/components/schemas/type_financials:InvoiceUpdate'
                refund_reason:
                  $ref: '#/components/schemas/type_financials:RefundReasonUpdate'
    delete:
      operationId: delete
      summary: Delete patient refund
      description: Deletes the patient refund record matching the provided patient_refund_id.
      tags:
      - subpackage_patient-refunds.subpackage_patient-refunds/v1
      parameters:
      - name: patient_refund_id
        in: path
        required: true
        schema:
          $ref: '#/components/schemas/type_patient-refunds/v1:PatientRefundId'
      - name: Authorization
        in: header
        description: OAuth authentication
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Successful response
        '403':
          description: Error response with status 403
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorName:
                    type: string
                    enum:
                    - UnauthorizedError
                  content:
                    $ref: '#/components/schemas/type_commons:UnauthorizedErrorMessage'
                required:
                - errorName
                - content
        '404':
          description: Error response with status 404
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorName:
                    type: string
                    enum:
                    - EntityNotFoundError
                  content:
                    $ref: '#/components/schemas/type_commons:EntityNotFoundErrorMessage'
                required:
                - errorName
                - content
        '422':
          description: Error response with status 422
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorName:
                    type: string
                    enum:
                    - UnprocessableEntityError
                  content:
                    $ref: '#/components/schemas/type_commons:UnprocessableEntityErrorMessage'
                required:
                - errorName
                - content
components:
  schemas:
    type_financials:InvoiceUpdate:
      oneOf:
      - type: object
        properties:
          type:
            type: string
            enum:
            - set
            description: 'Discriminator value: set'
          value:
            $ref: '#/components/schemas/type_commons:InvoiceId'
        required:
        - type
        - value
      - type: object
        properties:
          type:
            type: string
            enum:
            - remove
            description: 'Discriminator value: remove'
        required:
        - type
      discriminator:
        propertyName: type
      title: InvoiceUpdate
    type_commons:EntityNotFoundErrorMessage:
      type: object
      properties:
        id:
          type: string
      required:
      - id
      title: EntityNotFoundErrorMessage
    type_financials:AllocationTarget:
      oneOf:
      - type: object
        properties:
          type:
            type: string
            enum:
            - service_line
            description: 'Discriminator value: service_line'
          service_line_id:
            $ref: '#/components/schemas/type_commons:ServiceLineId'
          claim_id:
            $ref: '#/components/schemas/type_commons:ClaimId'
          encounter_id:
            $ref: '#/components/schemas/type_commons:EncounterId'
        required:
        - type
        - service_line_id
        - claim_id
        - encounter_id
      - type: object
        properties:
          type:
            type: string
            enum:
            - claim
            description: 'Discriminator value: claim'
          claim_id:
            $ref: '#/components/schemas/type_commons:ClaimId'
          encounter_id:
            $ref: '#/components/schemas/type_commons:EncounterId'
        required:
        - type
        - claim_id
        - encounter_id
      - type: object
        properties:
          type:
            type: string
            enum:
            - billing_provider_id
            description: 'Discriminator value: billing_provider_id'
          billing_provider_id:
            $ref: '#/components/schemas/type_commons:ProviderId'
        required:
        - type
        - billing_provider_id
      - type: object
        properties:
          type:
            type: string
            enum:
            - appointment
            description: 'Discriminator value: appointment'
          appointment_id:
            $ref: '#/components/schemas/type_commons:AppointmentId'
          patient_external_id:
            $ref: '#/components/schemas/type_commons:PatientExternalId'
        required:
        - type
        - appointment_id
        - patient_external_id
      - type: object
        properties:
          type:
            type: string
            enum:
            - unattributed
            description: 'Discriminator value: unattributed'
        required:
        - type
      discriminator:
        propertyName: type
      description: 'Allocation targets describe whether the portion of a payment is being applied toward a specific service line,

        claim, billing provider, or is unallocated.'
      title: AllocationTarget
    type_commons:ClaimId:
      type: string
      format: uuid
      title: ClaimId
    type_commons:ProviderId:
      type: string
      format: uuid
      title: ProviderId
    type_commons:EncounterExternalId:
      type: string
      title: EncounterExternalId
    type_commons:UnauthorizedErrorMessage:
      type: object
      properties:
        message:
          type: string
      title: UnauthorizedErrorMessage
    type_financials:NoteUpdate:
      oneOf:
      - type: object
        properties:
          type:
            type: string
            enum:
            - set
            description: 'Discriminator value: set'
          value:
            type: string
        required:
        - type
        - value
      - type: object
        properties:
          type:
            type: string
            enum:
            - remove
            description: 'Discriminator value: remove'
        required:
        - type
      discriminator:
        propertyName: type
      title: NoteUpdate
    type_commons:AppointmentId:
      type: string
      title: AppointmentId
    type_financials:ReallocationWouldOverdraftErrorContent:
      type: object
      properties:
        messages:
          type: array
          items:
            type: string
          description: 'Legacy field containing error messages as strings.

            Deprecated - use allocation_details for structured data.

            Will be removed in a future version after frontend migration.'
        allocation_details:
          type: array
          items:
            $ref: '#/components/schemas/type_financials:AllocationOverdraftDetail'
          description: 'Structured details about which allocations would be overdrafted.

            Each detail includes entity type, ID, and error message for table display.'
      required:
      - messages
      description: 'Error content when a reallocation would cause an account to be overdrafted.

        Contains both legacy string messages and new structured allocation details.'
      title: ReallocationWouldOverdraftErrorContent
    type_commons:PatientExternalId:
      type: string
      title: PatientExternalId
    type_financials:AllocationTargetCreate:
      oneOf:
      - type: object
        properties:
          type:
            type: string
            enum:
            - service_line_by_id
            description: 'Discriminator value: service_line_by_id'
          value:
            $ref: '#/components/schemas/type_commons:ServiceLineId'
        required:
        - type
        - value
      - type: object
        properties:
          type:
            type: string
            enum:
            - claim_by_id
            description: 'Discriminator value: claim_by_id'
          value:
            $ref: '#/components/schemas/type_commons:ClaimId'
        required:
        - type
        - value
      - type: object
        properties:
          type:
            type: string
            enum:
            - claim_by_encounter_external_id
            description: 'Discriminator value: claim_by_encounter_external_id'
          value:
            $ref: '#/components/schemas/type_commons:EncounterExternalId'
        required:
        - type
        - value
      - type: object
        properties:
          type:
            type: string
            enum:
            - billing_provider_by_id
            description: 'Discriminator value: billing_provider_by_id'
          value:
            $ref: '#/components/schemas/type_commons:ProviderId'
        required:
        - type
        - value
      - type: object
        properties:
          type:
            type: string
            enum:
            - appointment_by_id_and_patient_external_id
            description: 'Discriminator value: appointment_by_id_and_patient_external_id'
          appointment_id:
            $ref: '#/components/schemas/type_commons:AppointmentId'
          patient_external_id:
            $ref: '#/components/schemas/type_commons:PatientExternalId'
        required:
        - type
        - appointment_id
        - patient_external_id
      - type: object
        properties:
          type:
            type: string
            enum:
            - unattributed
            description: 'Discriminator value: unattributed'
        required:
        - type
      discriminator:
        propertyName: type
      description: 'Allocation targets describe whether the portion of a payment is being applied toward a specific service line,

        claim, billing provider, or is unallocated.'
      title: AllocationTargetCreate
    type_commons:UnprocessableEntityErrorMessage:
      type: object
      properties:
        message:
          type: string
      title: UnprocessableEntityErrorMessage
    type_commons:SortDirection:
      type: string
      enum:
      - asc
      - desc
      title: SortDirection
    type_commons:EncounterId:
      type: string
      format: uuid
      title: EncounterId
    type_commons:Date:
      type: string
      description: ISO 8601 date; formatted YYYY-MM-DD (i.e. 2012-02-01)
      title: Date
    type_commons:InvoiceId:
      type: string
      format: uuid
      title: InvoiceId
    type_financials:RefundReasonUpdate:
      oneOf:
      - type: object
        properties:
          type:
            type: string
            enum:
            - set
            description: 'Discriminator value: set'
          value:
            $ref: '#/components/schemas/type_financials:RefundReason'
        required:
        - type
        - value
      - type: object
        properties:
          type:
            type: string
            enum:
            - remove
            description: 'Discriminator value: remove'
        required:
        - type
      discriminator:
        propertyName: type
      title: RefundReasonUpdate
    type_financials:AllocationEarmarkType:
      oneOf:
      - type: object
        properties:
          type:
            type: string
            enum:
            - date_of_service
            description: 'Discriminator value: date_of_service'
          value:
            $ref: '#/components/schemas/type_commons:Date'
        required:
        - type
        - value
        description: Earmark for auto-allocation to an encounter with this specific date of service
      - type: object
        properties:
          type:
            type: string
            enum:
            - external_encounter_id
            description: 'Discriminator value: external_encounter_id'
          value:
            $ref: '#/components/schemas/type_commons:EncounterExternalId'
        required:
        - type
        - value
        description: Earmark for auto-allocation to an encounter with this specific external ID (more specific than date of service)
      discriminator:
        propertyName: type
      description: 'If enabled for your organization, defines how a patient prepayment allocation should be earmarked for future auto-allocation.

        Earmarks hold the allocation until a matching encounter is created, then attempt to allocate to that encounter.

        Only applicable for unattributed allocations.'
      title: AllocationEarmarkType
    type_commons:PageToken:
      type: string
      title: PageToken
    type_financials:PatientTransactionSource:
      type: string
      enum:
      - MANUAL_ENTRY
      - CHARGEBEE
      - SQUARE
      - STRIPE
      - ELATION
      - CEDAR
      - HEALTHIE
      - REALLOCATION
      - PHREESIA
      - INSTAMED
      - SHERPA_HEALTH
      title: PatientTransactionSource
    type_financials:AllocationCreate:
      type: object
      properties:
        amount_cents:
          type: integer
        target:
          $ref: '#/components/schemas/type_financials:AllocationTargetCreate'
        earmark:
          $ref: '#/components/schemas/type_financials:AllocationEarmarkType'
          description: 'If enabled for your organization, optional earmarking configuration for patient prepayments.

            When provided on unattributed allocations, holds the payment for future auto-allocation to matching encounters.'
      required:
      - amount_cents
      - target
      description: 'Allocations are portions of payments that are applied to specific resources, known as targets. Each allocation has

        and amount, defined in cents, and a target.'
      title: AllocationCreate
    type_financials:RefundReason:
      type: string
      enum:
      - OVERCHARGED
      - ENTERED_IN_ERROR
      - TRANSFER
      title: RefundReason
    type_financials:AllocationOverdraftDetail:
      type: object
      properties:
        allocation_target:
          $ref: '#/components/schemas/type_financials:AllocationTarget'
          description: The allocation target that would be overdrafted (service_line, claim, unattributed, etc.)
        patient_paid_amount_cents:
          type: integer
          description: The amount in cents that the patient has currently paid toward this target (available to reallocate from)
        current_balance_cents:
          type: integer
          description: The current balance in cents on this entity before the reallocation
        overage_amount_cents:
          type: integer
          description: The amount in cents by which the reallocation would overdraft (always positive)
        error_message:
          type: string
          description: A descriptive error message explaining the overdraft condition
      required:
      - allocation_target
      - patient_paid_amount_cents
      - current_balance_cents
      - overage_amount_cents
      - error_message
      description: 'Structured information about an allocation that would be overdrafted.

        Provides entity-specific details to display in a table format.'
      title: AllocationOverdraftDetail
    type_commons:ServiceLineId:
      type: string
      format: uuid
      title: ServiceLineId
  securitySchemes:
    OAuthScheme:
      type: http
      scheme: bearer
      description: OAuth 2.0 authentication