Skip to main content

Overview

Arlo is pay-per-use: the patient pays per provider visit, and there are no recurring subscriptions. Each visit is approved by the patient on a Stripe Checkout page, where they authorize a temporary hold for the visit price. Nothing is charged until a doctor joins, and the hold is released otherwise. There is no card on file to set up ahead of time. Onboarding completes without payment, and the Stripe link is the whole payment flow, every visit.
Arlo never auto-charges. The payment gate always waits for the patient to act on Stripe’s page.

How a visit is paid

1

Conversation reaches PAYMENT_REQUIRED

Triage is complete. The paymentGate object carries a consultationSummary of what a provider can help with
2

Relay the summary

The patient decides whether they want a visit
3

Call start_visit_payment

Returns a paymentUrl, a Stripe-hosted page valid for about 30 minutes
4

The patient approves the hold

On Stripe’s page. Stripe may offer to remember the card there; Arlo never collects card details
5

MATCHING

Once the hold is placed the conversation moves to MATCHING on its own. Await a provider with wait_for_reply
6

A doctor joins

The hold is captured. If no doctor joins, it is released

The payment gate

When a conversation reaches PAYMENT_REQUIRED, paymentGate is present on get_conversation, and inlined on the wait_for_reply or send_message result that completed triage:
Every gate is approved the same way: start_visit_payment.

Checking payment status

get_payment_status returns the per-visit price and the account’s payment state:
Both billingMode and paymentStatus are informational for US accounts. paymentStatus: "PENDING" is the normal state for an account that pays per visit, and it does not block start_visit_payment.

Holds

A hold is a temporary authorization on the patient’s card for the visit price, not a charge.
  • Captured when a doctor joins the conversation.
  • Released when the patient cancels: cancel_request while MATCHING pulls the request back and voids the hold. The patient is not charged.
  • Voided after 5 days without a provider. Arlo drops the conversation back to PAYMENT_REQUIRED with a triage message explaining why, so the patient can decide whether to approve a fresh hold.

Example

Payment errors

A declined card is handled on Stripe’s page; the patient retries there. Nothing reaches your agent until the hold is placed.

Stripe integration

Arlo uses Stripe for payment processing. All card entry happens through Stripe’s hosted pages.
  • Card details never pass through Arlo or your agent
  • All payment data handled by Stripe
  • PCI compliance maintained by Stripe