Invoices

Re-attributes one line of a bill to another of the client's pets (ITE-1157) — which pet's receipt it appears on. Billing attribution only: the medical record is not touched. Allowed on any bill except Void and Superseded; on an issued or paid bill it changes nothing but the line's pet (totals, tax and payments stay frozen), on a Draft the bill reprices so the new pet's plan benefits apply. Refused for lines that were dispensed for a pet or paid for by a pet's plan benefit.

Changed on
patch/Invoices/{id}/items/{itemId}/patient

Request

Path parameters

idstring required
itemIdstring required

Request body

patientIdstring nullable

Response

OK

idstring
invoiceNumberstring
clientIdstring nullable
clientNamestring nullable
patientIdstring nullable
patientNamestring nullable
appointmentIdstring nullable
providerModestring
invoiceProviderIdstring nullable
statusstring
hasUnresolvedPaymentboolean

A payment here is still open: either an unconfirmed gateway outcome (RequiresReview — the card MAY have been charged) or a gateway-accepted debit that hasn't settled yet (a Pending ACH with a TransactionId — money in flight). An unpaid Text2Pay link is NOT open; it holds nothing. Deliberately excluded from decimal InvoiceDto.AmountPaid so it never inflates a balance, but it still blocks void / revert / delete until the settlement sweep or a human resolves it.

hasSourceEstimateboolean nullable

Whether an estimate row points at this invoice (Estimates.InvoiceId == Id), i.e. the bill was converted from an estimate and revert-to-estimate has somewhere to go. False for a bill built directly in the Payments panel — revert would 409 NO_SOURCE_ESTIMATE, so the UI hides the control and leaves void as the exit. Null when the endpoint didn't compute it (only fulfillment-mapped responses do, e.g. GET /invoices/{id}); treat null as unknown, never as "no".

taxModestring

"us-sales-tax" or "vat" — snapshot at estimate creation.

notesstring nullable
mergedIntoInvoiceIdstring nullable

Set when this invoice was merged into a new combined invoice (it is then Superseded): the id of the successor bill.

mergedIntoInvoiceNumberstring nullable

Human-readable number of the successor combined invoice this one was merged into (set only on a Superseded source). Lets the UI link forward without a second fetch.

signatureDatastring nullable
signedAtstring date-time nullable
issuedAtstring date-time nullable

When the bill was issued (Draft → Unpaid) and its totals frozen. Null for Drafts and legacy invoices issued before the issue boundary.

isOnAccountboolean

House accounts (ITE-670): deliberately charged to the client's account.

dueDatestring date-time nullable

Due date (issue date + terms); set by charge-to-account, null otherwise.

createdAtstring date-time
updatedAtstring date-time
discountWarningsstring[] nullable

Set only on the convert-to-invoice response: estimate discount codes that could not be carried onto the bill (expired, usage limit, below minimum…), one message each. Null otherwise.

Changes

    • info

      added the optional property // to the response with the status (media type: text/plain)

    • info

      added the optional property // to the response with the status (media type: application/json)

    • info

      added the optional property // to the response with the status (media type: text/json)

    • info

      added the optional property /////// to the response with the status (media type: text/plain)

    • info

      added the optional property /////// to the response with the status (media type: application/json)

    • info

      added the optional property /////// to the response with the status (media type: text/json)

    • info

      added the optional property /////// to the response with the status (media type: text/plain)

    • info

      added the optional property /////// to the response with the status (media type: application/json)

    • info

      added the optional property /////// to the response with the status (media type: text/json)

    • info

      added the optional property // to the response with the status (media type: text/plain)

    • info

      added the optional property // to the response with the status (media type: application/json)

    • info

      added the optional property // to the response with the status (media type: text/json)

    • info

      added the optional property // to the response with the status (media type: text/plain)

    • info

      added the optional property // to the response with the status (media type: application/json)

    • info

      added the optional property // to the response with the status (media type: text/json)