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).

