Create checkout, manage subscriptions and retrieve payments/invoices/credit notes.
The Billing endpoints cover paying the Hi Doctor consultation fee through Stripe Checkout, managing an ongoing plan, and retrieving payment records, invoices and credit notes. Card details are handled by Stripe, and Hi Doctor never sees them. Medicine is not billed here: the pharmacy dispenses it and charges its own price, as described on Pricing.Last reviewed: 2026-11-04
Checkout status is not a pure read. Polling a paid session can finalize
it and create the consultation.
Renewal choices are clinical: they go to a doctor for review, and clinical
eligibility is enforced.
Cancellation takes effect at period end; reactivate when nothing is
scheduled returns 409. Stripe failures on cancel or reactivate return
502: read the subscription before retrying.
Each portal call can create a new session.
Checkout, pending-choice confirmation, early order, cancel, reactivate and
portal accept an Idempotency-Key. A
successful key proves the operation was stored, not that Stripe settled it.
PDFs need Accept: */* (a strict Accept returns 406).
An early order is irreversible. It consumes the period’s early order and
starts a renewal consultation. Guards return 400no_active_subscription or
409 (for example early_order_no_entitled_subscription). Never retry it
blindly.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Hi Doctor","public":true,"description":"Hi Doctor operates across the whole European Union: residents of all 27 EU member states can use the service, and every consultation is reviewed by an EU-licensed doctor. Connect it to an AI assistant over MCP, or build on the REST API.","colors":{"primary":"#157A5C","light":"#39C69C","dark":"#0E6149"},"logo":{"light":"https://mintcdn.com/hi-doctor-ai/PIEJYA1zSavoVnhH/logo/wordmark-on-light.svg?fit=max\u0026auto=format\u0026n=PIEJYA1zSavoVnhH\u0026q=85\u0026s=c7243fb417e4d3908f3b5fc634a28923","dark":"https://mintcdn.com/hi-doctor-ai/PIEJYA1zSavoVnhH/logo/wordmark-on-dark.svg?fit=max\u0026auto=format\u0026n=PIEJYA1zSavoVnhH\u0026q=85\u0026s=06850588c83edfff94669e9260585343","href":"https://hi-doctor.ai"},"favicon":"https://mintcdn.com/hi-doctor-ai/V_4Yl0k2E857_Kxm/favicon.svg?fit=max\u0026auto=format\u0026n=V_4Yl0k2E857_Kxm\u0026q=85\u0026s=581ac27595afff79fbc35c5d54d60709","api":{"openapi":"api-reference/openapi.json","examples":{"prefill":true},"mdx":{"auth":{"method":"bearer"},"server":"https://api.hi-doctor.ai"}},"background":{"color":{"light":"#FFFFFF","dark":"#0A0A0A"}},"navbar":{"links":[{"icon":"star","href":"https://www.trustpilot.com/review/hi-doctor.ai","label":"Reviews"},{"icon":"envelope","href":"mailto:hello@hi-doctor.ai","label":"Support"}],"primary":{"type":"button","label":"Start a consultation","href":"https://hi-doctor.ai/consultation"}},"footer":{"socials":{"website":"https://hi-doctor.ai"}},"search":{"prompt":"Search Hi Doctor docs..."},"seo":{"metatags":{"description":"Hi Doctor operates across the whole European Union: residents of all 27 EU member states can use the service, and every consultation is reviewed by an EU-licensed doctor. Weight loss, hair growth and sexual health consultations. Connect your account to an AI assistant with the Hi Doctor MCP connector, or build on the REST API.","author":"Hi Doctor","robots":"index, follow, max-image-preview:large, max-snippet:-1","og:site_name":"Hi Doctor Documentation","og:type":"website","og:locale":"en_US","twitter:card":"summary_large_image","theme-color":"#157A5C"},"organization":{"name":"Hi Doctor","url":"https://hi-doctor.ai"},"indexing":"navigable"},"fonts":{"family":"Figtree"},"errors":{"404":{"redirect":false,"title":"Page not found","description":"This page moved or never existed. [Back to the docs](/)"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity",{"title":"Hi Doctor Docs search","description":"Search the documentation with the Hi Doctor Docs MCP server.","icon":"magnifying-glass","href":"https://docs.hi-doctor.ai/mcp"},{"title":"Connect Hi Doctor","description":"Install the Hi Doctor MCP connector for patient tools.","icon":"plug","href":"/mcp/connect"}],"display":"header"},"markdown":{"instructions":"Connect the Hi Doctor MCP connector at https://mcp.hi-doctor.ai/mcp. Add this URL as a remote HTTP MCP server in your client, then sign in and authorise access through OAuth. Setup: https://docs.hi-doctor.ai/mcp/connect.\n\nThe REST API base is https://api.hi-doctor.ai. Hi Doctor Docs at https://docs.hi-doctor.ai/mcp searches documentation; connect to the product endpoint above for patient tools.\n\nHi Doctor operates across the whole European Union: residents of all 27 EU member states can use the service, and every consultation is reviewed by an EU-licensed doctor. Every consultation is reviewed in full by an EU-licensed doctor, who decides on medical grounds only. No algorithm, assistant or API call approves a consultation, issues a prescription or changes a dose. The service is available in eight languages: English, Spanish, German, Dutch, Italian, French, Portuguese and Chinese.\n\n## Rules an assistant must follow\n\n- Never invent, assume or infer a medical answer. \"I don't know\" is a real answer: ask the patient to pick the closest option rather than guessing for them.\n- Never give medical advice and never suggest a medication or a dose. An EU-licensed doctor decides those.\n- If a questionnaire returns `ineligible`, say so plainly. Do not retry with altered answers.\n- Before anything that costs money or cancels a plan, state exactly what will happen and get an explicit yes.\n- Cancellation takes effect at the **end of the paid period**, not immediately. Say so.\n- An early order is irreversible: it creates the renewal consultation immediately and uses up the period's one early order. Explain that and get an explicit yes.\n- Prescription and invoice links are medical documents. A `signed_redirect` link opens without signing in: give it only to the patient, never repeat it anywhere shared.\n- Send option `value`s, not the labels shown to the patient. Labels are translated, values are stable.\n- Never ask for card details. Payment happens on Stripe's hosted checkout via a link.\n- On severe or sudden symptoms (chest pain, difficulty breathing, severe allergic reaction, suicidal thoughts), stop and direct the patient to their local emergency number."},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"OpenAPI spec","icon":"file-code","href":"/api-reference/openapi.json"},{"anchor":"Add the MCP connector","icon":"plug","href":"https://claude.ai/customize/connectors?modal=add-custom-connector\u0026connectorName=Hi%20Doctor\u0026connectorUrl=https://mcp.hi-doctor.ai/mcp"},{"anchor":"AI integration prompt","icon":"wand-magic-sparkles","href":"/mcp/ai-integration"},{"anchor":"hi-doctor.ai","icon":"house-medical","href":"https://hi-doctor.ai"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"hi-doctor-ai","hasAudioNarration":false,"actualSubdomain":"hi-doctor-ai","customDomains":["docs.hi-doctor.ai"],"gitSource":{"type":"github","owner":"online-medicine","repo":"mintlify-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6aeb4f77b21018c2553e6554","collectionId":"479e76df-8b71-4bcd-b29d-f545ddafad1a","liveDeploymentHistoryId":"6aeb4f77b21018c2553e6554","schemaVersion":"v3"},"entitlements":{},"buildId":"6aeb4f77b21018c2553e6554","clientVersion":"0.0.4067","searchFilterCounts":[{"language":"default","tag":"Health library","count":132},{"language":"default","tag":"API reference","count":114},{"language":"default","tag":"Endpoints","count":104},{"language":"default","tag":"Medicines","count":72},{"language":"default","tag":"Partners","count":47},{"language":"default","tag":"Sexual-health medicines","count":28},{"language":"default","tag":"Documentation","count":26},{"language":"default","tag":"Partner API reference","count":26},{"language":"default","tag":"Conditions","count":25},{"language":"default","tag":"Progress","count":23}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[{"filePath":"style.css","content":":root{--hd-brand: #157a5c;--hd-brand-strong: #0e6149;--hd-tint: #e3f4ec;--hd-canvas: #ffffff;--hd-alt: #f4f7f4;--hd-border: #e0e0e0;--hd-secondary: #666666;--hd-ink: #000000;--hd-brand-deep: #0b2b22;--hd-dark-bg: #0a0a0a;--hd-dark-surface: #161616;--hd-dark-raised: #1c1c1c;--hd-dark-border: #262626;--hd-dark-text: #ededed;--hd-dark-muted: #a1a1a1;--hd-dark-accent: #39c69c;--hd-status-warning: #8f5e1d;--hd-status-warning-wash: #f6e9dd;--hd-canvas-rgb: 255 255 255;--hd-tint-rgb: 227 244 236;--hd-ink-rgb: 0 0 0;--hd-dark-accent-rgb: 57 198 156;--hd-label-on-dark: rgb(var(--hd-tint-rgb) / 0.75);--hd-card-bg: var(--hd-brand-deep);--hd-card-fg: var(--hd-tint);--hd-card-accent: var(--hd-tint);--hd-card-accent-rgb: var(--hd-tint-rgb);--hd-card-border: rgb(var(--hd-ink-rgb) / 0.1)}html.dark{--hd-label-on-dark: var(--hd-dark-muted);--hd-card-bg: var(--hd-dark-surface);--hd-card-fg: var(--hd-dark-text);--hd-card-accent: var(--hd-dark-accent);--hd-card-accent-rgb: var(--hd-dark-accent-rgb);--hd-card-border: var(--hd-dark-border);--gray-50: 250 250 250;--gray-100: 245 245 245;--gray-200: 237 237 237;--gray-300: 212 212 212;--gray-400: 161 161 161;--gray-500: 115 115 115;--gray-600: 82 82 82;--gray-700: 58 58 58;--gray-800: 38 38 38;--gray-900: 22 22 22;--gray-950: 10 10 10}.nav-logo{height:26px;width:auto;max-width:none}a:has(>.nav-logo){display:inline-flex;align-items:center;min-height:44px}@media (max-width: 1023px){.nav-logo{height:24px}}#topbar-cta-button a{--hd-cta-bg: var(--hd-ink);--hd-cta-fg: var(--hd-canvas);--hd-cta-ring: var(--hd-brand);background-color:var(--hd-cta-bg);color:var(--hd-cta-fg);border-radius:999px;transition:background-color 160ms ease, color 160ms ease}#topbar-cta-button a>span.absolute{background-color:transparent;opacity:1}#topbar-cta-button a span,#topbar-cta-button a svg{color:var(--hd-cta-fg)}#topbar-cta-button a:hover{--hd-cta-bg: var(--hd-brand);--hd-cta-fg: var(--hd-canvas);transition-duration:240ms}#topbar-cta-button a:focus-visible{outline:2px solid var(--hd-cta-ring);outline-offset:2px}html.dark #topbar-cta-button a{--hd-cta-bg: var(--hd-canvas);--hd-cta-fg: var(--hd-ink);--hd-cta-ring: var(--hd-dark-accent)}html.dark #topbar-cta-button a:hover{--hd-cta-bg: var(--hd-tint);--hd-cta-fg: var(--hd-ink)}.hd-agent-card{width:100%;max-width:100%;min-width:0;margin:12px 0 20px;border-radius:12px;border:1px solid var(--hd-card-border);overflow:hidden;box-sizing:border-box;background:var(--hd-card-bg)}.hd-agent-titlebar{display:flex;align-items:center;gap:10px;width:100%;box-sizing:border-box;padding:10px 14px;background:rgb(var(--hd-canvas-rgb) / 0.05);border-bottom:1px solid rgb(var(--hd-canvas-rgb) / 0.1)}.hd-agent-mark{display:inline-flex;align-items:center;color:var(--hd-card-accent)}.hd-agent-filename{flex:1;font-family:ui-monospace, SFMono-Regular, \"SF Mono\", Menlo, Consolas, monospace;font-size:11px;letter-spacing:0.18em;text-transform:uppercase;color:var(--hd-card-accent)}.hd-agent-copy{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:8px;border:1px solid rgb(var(--hd-canvas-rgb) / 0.18);background:transparent;color:var(--hd-canvas);font-size:12px;cursor:pointer;transition:background-color 160ms ease, border-color 160ms ease}.hd-agent-copy:hover{background:rgb(var(--hd-canvas-rgb) / 0.1);border-color:rgb(var(--hd-canvas-rgb) / 0.32);transition-duration:240ms}.hd-agent-copy-copied{color:var(--hd-card-accent);border-color:var(--hd-card-accent)}.hd-agent-body{width:100%;max-height:340px;overflow-y:auto;overflow-x:auto;margin:0!important;padding:16px 18px!important;background:var(--hd-card-bg)!important;border:none!important;border-radius:0!important;box-shadow:none!important;font-family:ui-monospace, SFMono-Regular, \"SF Mono\", Menlo, Consolas, monospace!important;font-size:12.5px!important;line-height:1.65!important;color:var(--hd-card-fg)!important;white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word;scrollbar-width:thin;scrollbar-color:rgb(var(--hd-canvas-rgb) / 0.18) transparent}.hd-agent-footer{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:10px 14px;background:rgb(var(--hd-canvas-rgb) / 0.04);border-top:1px solid rgb(var(--hd-canvas-rgb) / 0.1)}.hd-agent-footer-label{font-family:ui-monospace, SFMono-Regular, \"SF Mono\", Menlo, Consolas, monospace;font-size:10px;letter-spacing:0.2em;text-transform:uppercase;color:var(--hd-label-on-dark)}.hd-agent-chips{display:flex;flex-wrap:wrap;gap:6px}.hd-agent-chip{padding:3px 9px;border-radius:999px;background:rgb(var(--hd-card-accent-rgb) / 0.14);color:var(--hd-card-accent);font-size:11px;white-space:nowrap}.hd-agent-card pre,.hd-agent-card code{max-width:100%}#content-area h1,#content-area h2,#content-area h3,#content-area h4{color:var(--hd-ink)}html.dark #content-area h1,html.dark #content-area h2,html.dark #content-area h3,html.dark #content-area h4{color:var(--hd-canvas)}html.dark #content-area table th,html.dark #content-area table td{border-color:var(--hd-dark-border)}html.dark #content-area table th{color:var(--hd-dark-text)}html.dark #content-area :not(pre):not(a)>code{background-color:var(--hd-dark-surface);border-color:var(--hd-dark-border);color:var(--hd-dark-text)}.sidebar-group-header{font-family:ui-monospace, SFMono-Regular, \"SF Mono\", Menlo, Consolas, monospace;font-size:11px;font-weight:600;line-height:1.2;letter-spacing:0.16em;text-transform:uppercase;color:var(--hd-brand);margin-top:0.35rem;margin-bottom:0.9rem}.sidebar-group-header .sidebar-title{font:inherit;letter-spacing:inherit}html.dark .sidebar-group-header{color:var(--hd-label-on-dark)}.callout[data-callout-type=\"note\"]{border-color:var(--hd-border);background-color:var(--hd-alt)}.callout[data-callout-type=\"note\"] [data-component-part=\"callout-icon\"] svg,.callout[data-callout-type=\"note\"] [data-component-part=\"callout-content\"]{color:var(--hd-secondary)}.callout[data-callout-type=\"info\"]{border-color:var(--hd-brand);background-color:var(--hd-tint)}.callout[data-callout-type=\"info\"] [data-component-part=\"callout-icon\"] svg,.callout[data-callout-type=\"info\"] [data-component-part=\"callout-content\"]{color:var(--hd-brand-deep)}.callout[data-callout-type=\"tip\"]{border-color:var(--hd-brand-strong);background-color:var(--hd-canvas)}.callout[data-callout-type=\"tip\"] [data-component-part=\"callout-icon\"] svg,.callout[data-callout-type=\"tip\"] [data-component-part=\"callout-content\"]{color:var(--hd-brand-deep)}.callout[data-callout-type=\"warning\"]{border-color:var(--hd-status-warning);background-color:var(--hd-status-warning-wash)}.callout[data-callout-type=\"warning\"] [data-component-part=\"callout-icon\"] svg{color:var(--hd-status-warning)}.callout[data-callout-type=\"warning\"] [data-component-part=\"callout-content\"]{color:var(--hd-ink)}html.dark .callout[data-callout-type=\"note\"]{border-color:var(--hd-dark-border);background-color:var(--hd-dark-surface)}html.dark .callout[data-callout-type=\"note\"] [data-component-part=\"callout-icon\"] svg,html.dark .callout[data-callout-type=\"note\"] [data-component-part=\"callout-content\"]{color:var(--hd-dark-muted)}html.dark .callout[data-callout-type=\"info\"]{border-color:rgb(var(--hd-dark-accent-rgb) / 0.6);background-color:rgb(var(--hd-dark-accent-rgb) / 0.1)}html.dark .callout[data-callout-type=\"tip\"]{border-color:rgb(var(--hd-dark-accent-rgb) / 0.5);background-color:transparent}html.dark .callout[data-callout-type=\"info\"] [data-component-part=\"callout-icon\"] svg,html.dark .callout[data-callout-type=\"tip\"] [data-component-part=\"callout-icon\"] svg{color:var(--hd-dark-accent)}html.dark .callout[data-callout-type=\"info\"] [data-component-part=\"callout-content\"],html.dark .callout[data-callout-type=\"tip\"] [data-component-part=\"callout-content\"]{color:var(--hd-dark-text)}html.dark .callout[data-callout-type=\"warning\"]{border-color:#a57e4a;background-color:rgb(143 94 29 / 0.22)}html.dark .callout[data-callout-type=\"warning\"] [data-component-part=\"callout-icon\"] svg,html.dark .callout[data-callout-type=\"warning\"] [data-component-part=\"callout-content\"]{color:#d8b28a}"}],"page":{"pagePath":"api-reference/tags/billing","slug":"/api-reference/tags/billing","pageMetadata":{"title":"Billing endpoints: checkout, plans and invoices","sidebarTitle":"Billing","description":"Create checkout, manage subscriptions and retrieve payments/invoices/credit notes.","href":"/api-reference/tags/billing"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Create checkout, manage subscriptions and retrieve payments/invoices/credit notes.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Heading,Table,Warning}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`The Billing endpoints cover paying the Hi Doctor consultation fee through Stripe Checkout, managing an ongoing plan, and retrieving payment records, invoices and credit notes. Card details are handled by Stripe, and Hi Doctor never sees them. Medicine is not billed here: the pharmacy dispenses it and charges its own price, as described on `,_jsx(_components.a,{href:`/essentials/pricing`,children:`Pricing`}),`.`]}),`\n`,_jsx(_components.p,{children:`Last reviewed: 2026-11-04`}),`\n`,_jsx(Heading,{level:`2`,id:`prerequisites`,children:`Prerequisites`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`A patient bearer token and `,_jsx(_components.code,{children:`X-Brand-Slug: hi-doctor`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Checkout needs a complete profile and a submitted questionnaire. An\nincomplete profile returns `,_jsx(_components.code,{children:`PROFILE_INCOMPLETE`}),` with `,_jsx(_components.code,{children:`missing_fields`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Subscription operations need an active plan; see `,_jsx(_components.a,{href:`/essentials/pricing`,children:`Pricing`}),`.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`operations`,children:`Operations`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Method`}),_jsx(_components.th,{children:`Path`}),_jsx(_components.th,{children:`What it does`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`POST`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`/v1/users/checkout/`})}),_jsxs(_components.td,{children:[`Creates a Stripe checkout session (`,_jsx(_components.code,{children:`201`}),`), or reports coverage by an existing plan`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GET`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`/v1/users/stripe/session/{session_id}/`})}),_jsxs(_components.td,{children:[`Reads checkout status: `,_jsx(_components.code,{children:`session_status`}),`, `,_jsx(_components.code,{children:`payment_status`}),`, `,_jsx(_components.code,{children:`paid`}),`, `,_jsx(_components.code,{children:`consultation_id`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GET`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`/v1/users/subscriptions/me/`})}),_jsx(_components.td,{children:`Reads the subscription`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GET`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`/v1/users/subscriptions/renewal-options/`})}),_jsxs(_components.td,{children:[`Renewal options for one `,_jsx(_components.code,{children:`category`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GET`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`/v1/users/subscriptions/pending-choice/`})}),_jsxs(_components.td,{children:[`Lists renewals awaiting a decision (`,_jsx(_components.code,{children:`{\"pending\": [...]}`}),`)`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`POST`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`/v1/users/subscriptions/pending-choice/confirm/`})}),_jsx(_components.td,{children:`Records the decision for one pending renewal`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`POST`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`/v1/users/subscriptions/early-order/`})}),_jsx(_components.td,{children:`Creates the renewal consultation now`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`POST`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`/v1/users/subscriptions/cancel/`})}),_jsx(_components.td,{children:`Schedules cancellation at the end of the paid period`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`POST`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`/v1/users/subscriptions/reactivate/`})}),_jsx(_components.td,{children:`Undoes a scheduled cancellation`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`POST`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`/v1/users/subscriptions/portal/`})}),_jsx(_components.td,{children:`Returns a Stripe billing portal URL`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GET`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`/v1/users/payments/`})}),_jsx(_components.td,{children:`Lists payments (paginated)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GET`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`/v1/users/payments/{id}/invoice/`})}),_jsx(_components.td,{children:`Downloads an invoice PDF`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GET`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`/v1/users/payments/{id}/credit-notes/{refund_pk}/`})}),_jsx(_components.td,{children:`Downloads a credit note PDF`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`boundaries-and-side-effects`,children:`Boundaries and side effects`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Checkout status is not a pure read.`}),` Polling a paid session can finalize\nit and create the consultation.`]}),`\n`,_jsx(_components.li,{children:`Renewal choices are clinical: they go to a doctor for review, and clinical\neligibility is enforced.`}),`\n`,_jsxs(_components.li,{children:[`Cancellation takes effect at period end; reactivate when nothing is\nscheduled returns `,_jsx(_components.code,{children:`409`}),`. Stripe failures on cancel or reactivate return\n`,_jsx(_components.code,{children:`502`}),`: read the subscription before retrying.`]}),`\n`,_jsx(_components.li,{children:`Each portal call can create a new session.`}),`\n`,_jsxs(_components.li,{children:[`Checkout, pending-choice confirmation, early order, cancel, reactivate and\nportal accept an `,_jsx(_components.a,{href:`/api-reference/idempotency`,children:_jsx(_components.code,{children:`Idempotency-Key`})}),`. A\nsuccessful key proves the operation was stored, not that Stripe settled it.`]}),`\n`,_jsxs(_components.li,{children:[`PDFs need `,_jsx(_components.code,{children:`Accept: */*`}),` (a strict `,_jsx(_components.code,{children:`Accept`}),` returns `,_jsx(_components.code,{children:`406`}),`).`]}),`\n`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`An early order is irreversible.`}),` It consumes the period’s early order and\nstarts a renewal consultation. Guards return `,_jsx(_components.code,{children:`400`}),` `,_jsx(_components.code,{children:`no_active_subscription`}),` or\n`,_jsx(_components.code,{children:`409`}),` (for example `,_jsx(_components.code,{children:`early_order_no_entitled_subscription`}),`). Never retry it\nblindly.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`related`,children:`Related`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/api-reference/errors`,children:`Errors`}),`, `,_jsx(_components.a,{href:`/api-reference/pagination`,children:`Pagination`}),`, `,_jsx(_components.a,{href:`/api-reference/uploads-downloads`,children:`Uploads and downloads`})]}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/mcp/tools/patient`,children:`MCP patient tools`})}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Billing endpoints: checkout, plans and invoices","sidebarTitle":"Billing","description":"Create checkout, manage subscriptions and retrieve payments/invoices/credit notes.","href":"/api-reference/tags/billing"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Prerequisites","slug":"prerequisites","depth":2,"children":[]},{"title":"Operations","slug":"operations","depth":2,"children":[]},{"title":"Boundaries and side effects","slug":"boundaries-and-side-effects","depth":2,"children":[]},{"title":"Related","slug":"related","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"hi-doctor-ai","siteName":"Hi Doctor","title":"Billing endpoints: checkout, plans and invoices - Hi Doctor","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-04T13:09:03.212Z","originalFileLocation":"api-reference/tags/billing.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Create checkout, manage subscriptions and retrieve payments/invoices/credit notes.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Hi Doctor\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003cmeta data-mint-head name=\"robots\" content=\"index, follow, max-image-preview:large, max-snippet:-1\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/hi-doctor-ai/nurYHPmYbdMdWury/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/hi-doctor-ai/nurYHPmYbdMdWury/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/hi-doctor-ai/nurYHPmYbdMdWury/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/hi-doctor-ai/nurYHPmYbdMdWury/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/hi-doctor-ai/nurYHPmYbdMdWury/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/hi-doctor-ai/nurYHPmYbdMdWury/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/hi-doctor-ai/nurYHPmYbdMdWury/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/hi-doctor-ai/nurYHPmYbdMdWury/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/hi-doctor-ai/nurYHPmYbdMdWury/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Billing endpoints: checkout, plans and invoices - Hi Doctor\">\u003cmeta data-mint-head property=\"og:description\" content=\"Create checkout, manage subscriptions and retrieve payments/invoices/credit notes.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Hi Doctor Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.hi-doctor.ai/api-reference/tags/billing\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://hi-doctor-ai.mintlify.app/_mintlify/api/og/v2?division=Billing\u0026amp;title=Billing+endpoints%3A+checkout%2C+plans+and+invoices\u0026amp;description=Create+checkout%2C+manage+subscriptions+and+retrieve+payments%2Finvoices%2Fcredit+notes.\u0026amp;theme=62172df8443c9a1536d0ebde\u0026amp;signature=86ee34a347bdc9064c4ab4cec2945ed2f8a9798319e1af56a08f62e1012b312b\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Billing endpoints: checkout, plans and invoices - Hi Doctor\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Create checkout, manage subscriptions and retrieve payments/invoices/credit notes.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://hi-doctor-ai.mintlify.app/_mintlify/api/og/v2?division=Billing\u0026amp;title=Billing+endpoints%3A+checkout%2C+plans+and+invoices\u0026amp;description=Create+checkout%2C+manage+subscriptions+and+retrieve+payments%2Finvoices%2Fcredit+notes.\u0026amp;theme=62172df8443c9a1536d0ebde\u0026amp;signature=86ee34a347bdc9064c4ab4cec2945ed2f8a9798319e1af56a08f62e1012b312b\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/hi-doctor-ai/nurYHPmYbdMdWury/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Hi Doctor\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#157A5C\">\u003cmeta data-mint-head name=\"og:locale\" content=\"en_US\">\u003cmeta data-mint-head name=\"author\" content=\"Hi Doctor\">\u003cmeta data-mint-head name=\"theme-color\" content=\"#157A5C\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.hi-doctor.ai/api-reference/tags/billing\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/tags/billing.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://hi-doctor.ai/#organization\",\"name\":\"Hi Doctor\",\"url\":\"https://hi-doctor.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/hi-doctor-ai/PIEJYA1zSavoVnhH/logo/wordmark-on-light.svg?fit=max\u0026auto=format\u0026n=PIEJYA1zSavoVnhH\u0026q=85\u0026s=c7243fb417e4d3908f3b5fc634a28923\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.hi-doctor.ai#website\",\"name\":\"Hi Doctor\",\"url\":\"https://docs.hi-doctor.ai\",\"publisher\":{\"@id\":\"https://hi-doctor.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.hi-doctor.ai/api-reference/tags/billing#webpage\",\"url\":\"https://docs.hi-doctor.ai/api-reference/tags/billing\",\"name\":\"Billing endpoints: checkout, plans and invoices\",\"description\":\"Create checkout, manage subscriptions and retrieve payments/invoices/credit notes.\",\"dateModified\":\"2026-11-04T13:09:03.212Z\",\"isPartOf\":{\"@id\":\"https://docs.hi-doctor.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.hi-doctor.ai/api-reference/tags/billing#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.hi-doctor.ai/api-reference/tags/billing#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Endpoints\",\"item\":\"https://docs.hi-doctor.ai/api-reference/tags/account\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Billing endpoints: checkout, plans and invoices\",\"item\":\"https://docs.hi-doctor.ai/api-reference/tags/billing\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.hi-doctor.ai/api-reference/tags/billing#article\",\"headline\":\"Billing endpoints: checkout, plans and invoices\",\"name\":\"Billing endpoints: checkout, plans and invoices\",\"description\":\"Create checkout, manage subscriptions and retrieve payments/invoices/credit notes.\",\"url\":\"https://docs.hi-doctor.ai/api-reference/tags/billing\",\"mainEntityOfPage\":{\"@id\":\"https://docs.hi-doctor.ai/api-reference/tags/billing#webpage\"},\"dateModified\":\"2026-11-04T13:09:03.212Z\",\"publisher\":{\"@id\":\"https://hi-doctor.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.hi-doctor.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Hi Doctor\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Hi Doctor","nav":{"global":{"anchors":[{"anchor":"OpenAPI spec","icon":"file-code","href":"/api-reference/openapi.json"},{"anchor":"Add the MCP connector","icon":"plug","href":"https://claude.ai/customize/connectors?modal=add-custom-connector\u0026connectorName=Hi%20Doctor\u0026connectorUrl=https://mcp.hi-doctor.ai/mcp"},{"anchor":"AI integration prompt","icon":"wand-magic-sparkles","href":"/mcp/ai-integration"},{"anchor":"hi-doctor.ai","icon":"house-medical","href":"https://hi-doctor.ai"}]},"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":""}]},{"tab":"MCP","pages":[{"title":"MCP","href":"/mcp/overview"}]},{"tab":"API reference","groups":[{"group":"Start","pages":[{"title":"Hi Doctor patient REST API: overview and base URL","sidebarTitle":"API reference","href":"/api-reference/introduction"},{"title":"REST API quickstart: sign in and make your first read","sidebarTitle":"Quickstart","href":"/api-reference/quickstart"},{"title":"Answer a Hi Doctor questionnaire one question at a time","sidebarTitle":"Answer a questionnaire","href":"/api-reference/questionnaire-guide"},{"title":"REST authentication: patient JWTs, refresh and Google","sidebarTitle":"Authentication","href":"/api-reference/authentication"},{"title":"Sign up a Hi Doctor patient over the REST API","sidebarTitle":"Sign up","href":"/api-reference/signup"}]},{"group":"Conventions","pages":[{"title":"Pagination in the Hi Doctor patient REST API","sidebarTitle":"Pagination","href":"/api-reference/pagination"},{"title":"Uploads and downloads in the Hi Doctor REST API","sidebarTitle":"Uploads and downloads","href":"/api-reference/uploads-downloads"},{"title":"Hi Doctor REST API errors, throttles and recovery","sidebarTitle":"Errors and recovery","href":"/api-reference/errors"},{"title":"Safe retries with Idempotency-Key in the Hi Doctor API","sidebarTitle":"Safe retries","href":"/api-reference/idempotency"},{"title":"Hi Doctor patient REST API changelog","sidebarTitle":"API changelog","href":"/api-reference/changelog"}]},{"group":"Endpoints","pages":[{"group":"Account","pages":[{"title":"Account endpoints: sign up, sign in and profile","sidebarTitle":"Account","href":"/api-reference/tags/account"},{"title":"Register a new patient","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/users/register/","href":"/api-reference/account/register-a-new-patient"},{"title":"Verify the emailed code","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/users/verify-email/","href":"/api-reference/account/verify-the-emailed-code"},{"title":"Create an access token pair","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/users/token/","href":"/api-reference/account/create-an-access-token-pair"},{"title":"Create tokens with Google","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/users/google-login/","href":"/api-reference/account/create-tokens-with-google"},{"title":"Refresh the access token","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/users/token/refresh/","href":"/api-reference/account/refresh-the-access-token"},{"title":"Request a password reset","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/users/forgot-password/","href":"/api-reference/account/request-a-password-reset"},{"title":"Replace the account password","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/users/reset-password/","href":"/api-reference/account/replace-the-account-password"},{"title":"Get the account profile","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/users/profile/me/","href":"/api-reference/account/get-the-account-profile"},{"title":"Update the account profile","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/users/profile/me/","href":"/api-reference/account/update-the-account-profile"},{"title":"Get the profile alias","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/users/profile/","href":"/api-reference/account/get-the-profile-alias"},{"title":"Update the profile alias","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/users/profile/","href":"/api-reference/account/update-the-profile-alias"},{"title":"Delete the patient account","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/users/account/delete/","href":"/api-reference/account/delete-the-patient-account"},{"title":"Check registration email status","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/users/register/email-status/","href":"/api-reference/account/check-registration-email-status"},{"title":"Subscribe to newsletter updates","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/users/marketing/newsletter/subscribe/","href":"/api-reference/account/subscribe-to-newsletter-updates"},{"title":"Join a treatment waitlist","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/users/marketing/waitlist/","href":"/api-reference/account/join-a-treatment-waitlist"},{"title":"Update email communication preferences","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/users/marketing/email-preferences/","href":"/api-reference/account/update-email-communication-preferences"},{"title":"Get an idempotency key result","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/users/idempotency/{key}/","href":"/api-reference/account/get-an-idempotency-key-result"}]},{"group":"Questionnaires","pages":[{"title":"Questionnaire endpoints: schema, answers and submit","sidebarTitle":"Questionnaires","href":"/api-reference/tags/questionnaires"},{"title":"List questionnaire categories","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/users/questionnaires/categories/","href":"/api-reference/questionnaires/list-questionnaire-categories"},{"title":"Get a questionnaire schema and saved progress","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/users/questionnaires/{slug}/schema/","href":"/api-reference/questionnaires/get-a-questionnaire-schema-and-saved-progress"},{"title":"Get saved answers","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/users/questionnaires/{slug}/progress/","href":"/api-reference/questionnaires/get-saved-answers"},{"title":"Replace saved answers","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/users/questionnaires/{slug}/progress/","href":"/api-reference/questionnaires/replace-saved-answers"},{"title":"Get the next questionnaire question","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/users/questionnaires/{slug}/current/","href":"/api-reference/questionnaires/get-the-next-questionnaire-question"},{"title":"Send questionnaire answers","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/users/questionnaires/{slug}/answer/","href":"/api-reference/questionnaires/send-questionnaire-answers"},{"title":"Get a previously answered question","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/users/questionnaires/{slug}/back/","href":"/api-reference/questionnaires/get-a-previously-answered-question"},{"title":"Get questionnaire answers for review","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/users/questionnaires/{slug}/review/","href":"/api-reference/questionnaires/get-questionnaire-answers-for-review"},{"title":"Submit for medical review","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/users/questionnaires/{slug}/submit/","href":"/api-reference/questionnaires/submit-for-medical-review"},{"title":"Submit the legacy patient form","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/users/forms/user/","href":"/api-reference/questionnaires/submit-the-legacy-patient-form"}]},{"group":"Consultations","pages":[{"title":"Consultation endpoints: status and photographs","sidebarTitle":"Consultations","href":"/api-reference/tags/consultations"},{"title":"List consultation photos","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/questionnaire/consultations/{id}/images/","href":"/api-reference/consultations/list-consultation-photos"},{"title":"Create a consultation photo","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/questionnaire/consultations/{id}/images/","href":"/api-reference/consultations/create-a-consultation-photo"},{"title":"Download a consultation photo","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/questionnaire/consultations/{id}/images/{image_id}/content/","href":"/api-reference/consultations/download-a-consultation-photo"},{"title":"List patient consultations","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/users/consultations/","href":"/api-reference/consultations/list-patient-consultations"},{"title":"Get a consultation","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/users/consultations/{id}/","href":"/api-reference/consultations/get-a-consultation"},{"title":"Delete a consultation photo","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/questionnaire/consultations/{id}/images/{image_id}/","href":"/api-reference/consultations/delete-a-consultation-photo"}]},{"group":"Prescriptions","pages":[{"title":"Prescription endpoints: list, PDF download and reissue","sidebarTitle":"Prescriptions","href":"/api-reference/tags/prescriptions"},{"title":"List patient prescriptions","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/users/prescriptions/","href":"/api-reference/prescriptions/list-patient-prescriptions"},{"title":"Download a prescription PDF by kind","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/users/prescriptions/{id}/pdf/{kind}/","href":"/api-reference/prescriptions/download-a-prescription-pdf-by-kind"},{"title":"Download a prescription PDF","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/users/prescriptions/{id}/pdf/","href":"/api-reference/prescriptions/download-a-prescription-pdf"},{"title":"Request a prescription reissue","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/users/prescriptions/{id}/request-reissue/","href":"/api-reference/prescriptions/request-a-prescription-reissue"},{"title":"Verify a prescription token","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/users/verify/prescription/{token}/","href":"/api-reference/prescriptions/verify-a-prescription-token"}]},{"group":"Messages","pages":[{"title":"Message endpoints: medical team conversations","sidebarTitle":"Messages","href":"/api-reference/tags/messages"},{"title":"List patient conversations","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/users/conversations/","href":"/api-reference/messages/list-patient-conversations"},{"title":"Create a medical-team conversation","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/users/conversations/","href":"/api-reference/messages/create-a-medical-team-conversation"},{"title":"Get a conversation","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/users/conversations/{id}/","href":"/api-reference/messages/get-a-conversation"},{"title":"Get unread counts","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/users/conversations/unread-summary/","href":"/api-reference/messages/get-unread-counts"},{"title":"List patient messages","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/users/conversations/{id}/messages/","href":"/api-reference/messages/list-patient-messages"},{"title":"Send a message","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/users/conversations/{id}/messages/","href":"/api-reference/messages/send-a-message"},{"title":"Download a message attachment","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/users/conversations/{id}/messages/{message_id}/attachment/","href":"/api-reference/messages/download-a-message-attachment"},{"title":"Mark a conversation as read","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/users/conversations/{id}/mark-read/","href":"/api-reference/messages/mark-a-conversation-as-read"},{"title":"Mark a conversation as unread","description":"Marks the conversation unread.\n\n### Access, effects and retries\n**Ownership:** Eligible incoming message in permitted conversation.\n\n**Prerequisites:** Authentication and permission to access the consultation are required.\n\n**Effects:** Marks specified message_id or latest incoming message unread.\n\n**Retries:** No incoming eligible message yields 400; read counters before retry.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/users/conversations/{id}/mark-unread/","href":"/api-reference/messages/mark-a-conversation-as-unread"}]},{"group":"Billing","pages":[{"title":"Billing endpoints: checkout, plans and invoices","sidebarTitle":"Billing","href":"/api-reference/tags/billing"},{"title":"Create a checkout session","description":"Creates a Stripe checkout session for a treatment, or returns an existing consultation already covered by an active plan.\n\n`plan` picks what is bought: `one_off` (the default when omitted) is a single consultation with no renewal; `subscription` is the ongoing plan. Weight loss and hair loss accept either — the Hi-Doctor app pre-selects the plan, and their one-off is a single review whose prescription covers 30 days of treatment for hair loss. Every other category is `one_off` only, and asking for a plan there is a `400` (`subscription_not_available_for_treatment`).\n\nRefuses with `PROFILE_INCOMPLETE` if the profile is missing required fields.\n\n### Access, effects and retries\n**Ownership:** Patient, completed relevant questionnaire/profile and own brand.\n\n**Prerequisites:** An authenticated patient account is required.\n\n**Effects:** Creates provider checkout session and local checkout row; can emit attribution event.\n\n**Retries:** No advertised idempotency key; duplicate request may create another session. Never complete payment.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/users/checkout/","href":"/api-reference/billing/create-a-checkout-session"},{"title":"Get checkout session status","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/users/stripe/session/{session_id}/","href":"/api-reference/billing/get-checkout-session-status"},{"title":"Get patient subscription","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/users/subscriptions/me/","href":"/api-reference/billing/get-patient-subscription"},{"title":"Get renewal options for a category","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/users/subscriptions/renewal-options/","href":"/api-reference/billing/get-renewal-options-for-a-category"},{"title":"List pending renewal choices","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/users/subscriptions/pending-choice/","href":"/api-reference/billing/list-pending-renewal-choices"},{"title":"Confirm a pending renewal choice","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/users/subscriptions/pending-choice/confirm/","href":"/api-reference/billing/confirm-a-pending-renewal-choice"},{"title":"Cancel a subscription at period end","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/users/subscriptions/cancel/","href":"/api-reference/billing/cancel-a-subscription-at-period-end"},{"title":"Reactivate a subscription","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/users/subscriptions/reactivate/","href":"/api-reference/billing/reactivate-a-subscription"},{"title":"Request an early subscription order","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/users/subscriptions/early-order/","href":"/api-reference/billing/request-an-early-subscription-order"},{"title":"Create a billing portal session","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/users/subscriptions/portal/","href":"/api-reference/billing/create-a-billing-portal-session"},{"title":"List patient payments","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/users/payments/","href":"/api-reference/billing/list-patient-payments"},{"title":"Download an invoice PDF","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/users/payments/{id}/invoice/","href":"/api-reference/billing/download-an-invoice-pdf"},{"title":"Download a credit note PDF","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/users/payments/{id}/credit-notes/{refund_pk}/","href":"/api-reference/billing/download-a-credit-note-pdf"}]},{"group":"Records","pages":[{"title":"Records endpoints: consultation orders and documents","sidebarTitle":"Records","href":"/api-reference/tags/records"},{"title":"List patient orders","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/users/orders/","href":"/api-reference/records/list-patient-orders"},{"title":"List health documents","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/users/documents/","href":"/api-reference/records/list-health-documents"},{"title":"Create a health document","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/users/documents/","href":"/api-reference/records/create-a-health-document"},{"title":"Delete a health document","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/users/documents/{document_id}/","href":"/api-reference/records/delete-a-health-document"},{"title":"Download a health document","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/users/documents/{document_id}/content/","href":"/api-reference/records/download-a-health-document"}]},{"group":"Safety reports","pages":[{"title":"Safety report endpoints: suspected side effects","sidebarTitle":"Safety reports","href":"/api-reference/tags/safety-reports"},{"title":"List reported side effects","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/users/adverse-events/","href":"/api-reference/safety-reports/list-reported-side-effects"},{"title":"Report a suspected side effect","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/users/adverse-events/","href":"/api-reference/safety-reports/report-a-suspected-side-effect"}]},{"group":"Progress","pages":[{"title":"Progress endpoints: weight-loss journal","sidebarTitle":"Progress","href":"/api-reference/tags/progress"},{"title":"Get patient goal","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/users/journal/goal/","href":"/api-reference/progress/get-patient-goal"},{"title":"Replace the progress goal","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /v1/users/journal/goal/","href":"/api-reference/progress/replace-the-progress-goal"},{"title":"Get injection plan","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/users/journal/injection-plan/","href":"/api-reference/progress/get-injection-plan"},{"title":"Update the injection plan","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /v1/users/journal/injection-plan/","href":"/api-reference/progress/update-the-injection-plan"},{"title":"List weight entries","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/users/journal/weight-entries/","href":"/api-reference/progress/list-weight-entries"},{"title":"Create a daily weight entry","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/users/journal/weight-entries/","href":"/api-reference/progress/create-a-daily-weight-entry"},{"title":"Update a weight entry","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/users/journal/weight-entries/{id}/","href":"/api-reference/progress/update-a-weight-entry"},{"title":"Get a weight entry","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/users/journal/weight-entries/{id}/","href":"/api-reference/progress/get-a-weight-entry"},{"title":"Delete a weight entry","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/users/journal/weight-entries/{id}/","href":"/api-reference/progress/delete-a-weight-entry"},{"title":"Replace a weight entry","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /v1/users/journal/weight-entries/{id}/","href":"/api-reference/progress/replace-a-weight-entry"},{"title":"List patient injections","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/users/journal/injections/","href":"/api-reference/progress/list-patient-injections"},{"title":"Create an injection entry","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/users/journal/injections/","href":"/api-reference/progress/create-an-injection-entry"},{"title":"Update an injection","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/users/journal/injections/{id}/","href":"/api-reference/progress/update-an-injection"},{"title":"Get an injection","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/users/journal/injections/{id}/","href":"/api-reference/progress/get-an-injection"},{"title":"Delete an injection","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/users/journal/injections/{id}/","href":"/api-reference/progress/delete-an-injection"},{"title":"Replace an injection","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /v1/users/journal/injections/{id}/","href":"/api-reference/progress/replace-an-injection"},{"title":"List patient notes","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/users/journal/notes/","href":"/api-reference/progress/list-patient-notes"},{"title":"Create a progress note","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/users/journal/notes/","href":"/api-reference/progress/create-a-progress-note"},{"title":"Update a note","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/users/journal/notes/{id}/","href":"/api-reference/progress/update-a-note"},{"title":"Get a note","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/users/journal/notes/{id}/","href":"/api-reference/progress/get-a-note"},{"title":"Delete a note","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/users/journal/notes/{id}/","href":"/api-reference/progress/delete-a-note"},{"title":"Replace a note","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /v1/users/journal/notes/{id}/","href":"/api-reference/progress/replace-a-note"}]},{"group":"Referrals","pages":[{"title":"Referral endpoints: summary and referred patients","sidebarTitle":"Referrals","href":"/api-reference/tags/referrals"},{"title":"Get referral summary","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/users/referrals/me/","href":"/api-reference/referrals/get-referral-summary"},{"title":"List people you referred","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/users/referrals/me/referred/","href":"/api-reference/referrals/list-people-you-referred"},{"title":"List referral transactions","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/users/referrals/me/transactions/","href":"/api-reference/referrals/list-referral-transactions"},{"title":"Get monthly referral totals","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/users/referrals/me/monthly/","href":"/api-reference/referrals/get-monthly-referral-totals"},{"title":"Activate the referral account","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/users/referrals/activate/","href":"/api-reference/referrals/activate-the-referral-account"}]}]}]},{"tab":"Partners","pages":[{"title":"Partners","href":"/partners/overview"}]},{"tab":"Articles","pages":[{"title":"Articles","href":"/blog/connect-hi-doctor-mcp"}]},{"tab":"Health library","pages":[{"title":"Health library","href":"/library/overview"}]}]},"basePath":"","title":"Billing endpoints: checkout, plans and invoices - Hi Doctor","buildId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","deploymentId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","dynamics":[],"chunks":[]}