Skip to main content

Integration checklist

A short path from first call to production. Each item links to the detail.
1

Get a key and the right scopes

A VitaRelay admin issues your key. Ask for every scope your integration uses — see the scopes table. Use a vr_test_ key first: it never charges and never touches real records (Sandbox).
2

Create the patient once

POST /patients with your own external_patient_id. From then on use your id everywhere — you never have to store ours (Packages, pricing and checkout).
3

Decide who pays

billing_mode: patient_checkout → the patient pays, at your storefront prices. card_on_file → your clinic pays, at catalog price. See pricing.
4

Place the order

POST /orders with products or a package (item_kind: "bundle"). Send an external_order_id. Show the patient total_cents / checkout.amount_cents — don’t recompute it.
5

Take payment (patient pays)

Tokenize with Accept.js, then POST /orders/{id}/pay. Add save_card: true, or save a card first with POST /patients/{id}/payment-methods, if you’ll create subscriptions.
6

Complete the intake if the order needs one

The order response includes an intake link. Complete it through your app with POST /intakes (category is async or hormone) or send the patient their link — Intakes and prescriber review.
7

Subscribe to webhooks

Ask VitaRelay to subscribe your endpoint to the events you need and verify the signature (Webhooks). At minimum: order.paid, order.shipped, order.delivered, order.exception, intake.submitted, intake.reviewed.
8

Know what's automatic

Patients are emailed in your brand — order confirmed, intake received, and an account link if they have no login (Emails your patients receive).

Quick reference