> ## Documentation Index
> Fetch the complete documentation index at: https://docs.arlohealth.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Payments

> Patient approval and temporary holds for provider visits

Arlo is pay-per-use. The patient approves each visit on a Stripe page linked from the conversation's payment gate. No card setup is required, and Arlo does not auto-charge.

## Approve a visit

1. When the conversation reaches `PAYMENT_REQUIRED`, read the `paymentGate` from `get_conversation`, `send_message`, or `wait_for_reply`.
2. Relay `paymentGate.consultationSummary` so the patient can review what a provider may help with.
3. Give the patient `paymentGate.paymentUrl` to open on their device.
4. The patient reviews their details and approves a temporary hold on the Stripe page.
5. After approval, the conversation moves to `MATCHING`; use `wait_for_reply` for provider activity.

`paymentGate.collects` identifies any missing identity fields the patient must enter on the page. `get_user_profile.capabilities.visit.atPayment` lists those fields before the patient opens the link. Saving them with `update_patient_info` can shorten the form.

## How the hold works

The patient sees the visit price on Stripe before approving the hold. The hold is captured only if a doctor joins. If no doctor joins, it is released. If the patient cancels while the request is in `MATCHING`, `cancel_request` releases the hold and returns the conversation to `IDLE`.

The patient enters card details on Stripe; card details do not pass through the agent. If the patient declines the gate, `cancel_request` dismisses it and the conversation remains available for chat.

## Related references

* [Conversation lifecycle](/concepts/consultation-lifecycle)
* [Messaging tools](/mcp-tools/messaging)
* [Conversation tools](/mcp-tools/conversations)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.