Skip to main content

Collect payments on account with Stripe Terminal

Partners can start, monitor, and cancel a card-present payment on account with Stripe Terminal. This is an asynchronous flow: starting the attempt does not create a PaymentOnAccount. Stripe's successful-payment webhook creates the credit, after which the status query returns its paymentOnAccountId.

Use startTerminalPaymentOnAccount with the patient, amount, and Stripe reader identifier. Poll paymentOnAccountTerminalStatus until it reports SUCCEEDED, FAILED, or CANCELED. Use cancelTerminalPaymentOnAccount to stop an in-progress reader action and cancel its PaymentIntent.

The payload includes the PaymentIntent identifier, reader identity and status, attempt status, failure message, and the persisted payment-on-account identifier when available. The optional date and comment are retained on the payment created by the webhook. Optional partner metadata is copied to the Stripe PaymentIntent and the resulting PaymentOnAccount.metadata, with the same reserved-key and size restrictions as card payments on account.

All three operations require the createPayment right. The practice must have Stripe connected and Stripe Terminal enabled, and Express readers must belong to the practice's Stripe Terminal location.