Create a payment request and get back the checkout_url, Relay’s pay
page for it. Relay creates one Stripe PaymentIntent on your
organization’s own connected Stripe account, as a direct charge (in
subscription mode, an incomplete Subscription whose first-period
PaymentIntent is that one object): the money settles to your Stripe
account, you are the merchant of record, and Relay never holds the
funds. Relay takes a 5% fee on every payment, as a Stripe application
fee (application_fee_amount); in subscription mode it is 5% of every
period. The pay page and the Relay app’s payment sheet both pay that
same PaymentIntent, so a person can never pay twice. Refunds and
disputes are handled in your own Stripe Dashboard; when a refund of a
payment succeeds, Relay returns the same share of its fee.
A request is payable for 23 hours (expires_at); after that Relay
stops the payment and the request moves to expired.
Send the request to a person as a payment message part. Its status
moves only on Stripe’s word: payment.succeeded, payment.canceled
and payment.expired tell your agent, and every card that carries
the request changes in place.
Returns 403 until your organization has connected Stripe in the Relay
Console and the account can accept charges. Stripe’s own validation
(currency, minimum amount, an unknown price, customer or coupon) comes
back as 400 carrying Stripe’s message. Returns 503 while payments are
not available on this server.
What is being paid for, the same three values as PayPal Orders v2 items[].category (PHYSICAL_GOODS, DIGITAL_GOODS, DONATION; developer.paypal.com/docs/api/orders/v2/). The App Store Review Guidelines (developer.apple.com/app-store/review/guidelines/) decide where each can be paid:
physical_goods: physical goods, and services used in the real world, such as a haircut or a ride (3.1.3(e)). Payable anywhere.
digital_goods: anything used in an app or online. A person pays by opening the link in Safari, and only on the United States storefront (3.1.1(a)); sending one to a person whose devices report only other storefronts returns 422 (error code 2006). A tip to an agent or a creator is digital_goods (3.1.1: tips to digital content providers use In-App Purchase).
donation: money for a charity or a fundraiser. Collected outside the app, on any storefront (3.2.2(iv): such apps "may only collect funds outside of the app, such as via Safari…").
Up to 49 keys of your own, returned on the request and on every payment.* event, and stamped on the Stripe objects created on your account. Keys starting with relay_ are reserved; Relay adds relay_payment_request_id.
payment collects one charge of amount in currency. subscription starts an auto-renewing subscription from a recurring price_id on your connected Stripe account; the person pays the first period at checkout and Stripe renews it from then on.
Optional product picture, an HTTPS address, like Telegram sendInvoice photo_url (core.telegram.org/bots/api#sendinvoice). Relay copies it into its own image store, the way it stores agent pictures, and returns Relay's address. Shown on the card and on the pay page.
Maximum string length: 2048
Response
The same Idempotency-Key and body were used before; the first request is returned.
What is being paid for, the same three values as PayPal Orders v2 items[].category (PHYSICAL_GOODS, DIGITAL_GOODS, DONATION; developer.paypal.com/docs/api/orders/v2/). The App Store Review Guidelines (developer.apple.com/app-store/review/guidelines/) decide where each can be paid:
physical_goods: physical goods, and services used in the real world, such as a haircut or a ride (3.1.3(e)). Payable anywhere.
digital_goods: anything used in an app or online. A person pays by opening the link in Safari, and only on the United States storefront (3.1.1(a)); sending one to a person whose devices report only other storefronts returns 422 (error code 2006). A tip to an agent or a creator is digital_goods (3.1.1: tips to digital content providers use In-App Purchase).
donation: money for a charity or a fundraiser. Collected outside the app, on any storefront (3.2.2(iv): such apps "may only collect funds outside of the app, such as via Safari…").
{"docsConfig":{"theme":"luma","$schema":"https://mintlify.com/docs.json","name":"Relay","description":"Relay API v1 documentation.","colors":{"primary":"#006BE6","light":"#4DA3FF","dark":"#007EFF"},"logo":{"light":"https://mintcdn.com/relay-staging/fjL9_TNOlSXF6Cqt/logo/light.png?fit=max\u0026auto=format\u0026n=fjL9_TNOlSXF6Cqt\u0026q=85\u0026s=66c2d390ee2afe0b0d1d99bc84b1ca0d","dark":"https://mintcdn.com/relay-staging/YFXuCpEIcllu8dZZ/logo/dark.png?fit=max\u0026auto=format\u0026n=YFXuCpEIcllu8dZZ\u0026q=85\u0026s=7c2ce728bd59af19440a86a1e1235c16","href":"/"},"favicon":"https://mintcdn.com/relay-staging/ACSI-_boGHGW-2RY/favicon-staging.png?fit=max\u0026auto=format\u0026n=ACSI-_boGHGW-2RY\u0026q=85\u0026s=55869334cfb76b3c7e5ff51626edddb8","api":{"params":{"expanded":"closed"},"playground":{"display":"simple"},"examples":{"defaults":"required","languages":["curl"]}},"appearance":{"default":"system","strict":false},"navbar":{"links":[{"icon":"copy","href":"/integrations/agent-prompt#relay-agent-prompt","label":"Copy agent prompt"}],"primary":{"type":"button","label":"Console","href":"https://console.staging.relayapp.im"}},"footer":{"socials":{"website":"https://relayapp.im","github":"https://github.com/relaymessenger"}},"seo":{"metatags":{"og:image":"https://docs.staging.relayapp.im/images/og-image.png","twitter:image":"https://docs.staging.relayapp.im/images/og-image.png","twitter:card":"summary_large_image"}},"fonts":{"family":"Figtree"},"contextual":{"options":["copy","view"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"relay-staging","hasAudioNarration":false,"actualSubdomain":"relay-staging","customDomains":["docs.staging.relayapp.im"],"gitSource":{"type":"github","owner":"relaymessenger","repo":"relay-docs","deployBranch":"staging","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6ad9bfcb9679105657d485cb","collectionId":"6736b8e2-1e01-4508-8c21-19c70f62684f","liveDeploymentHistoryId":"6ad9bfcb9679105657d485cb","schemaVersion":"v3"},"entitlements":{},"buildId":"6ad9bfcb9679105657d485cb","clientVersion":"0.0.3990","searchFilterCounts":[{"language":"default","tag":"Guides","count":102},{"language":"default","tag":"CLI","count":92},{"language":"default","tag":"API Reference","count":68},{"language":"default","tag":"Chats","count":54},{"language":"default","tag":"Agents","count":28},{"language":"default","tag":"Webhook Events","count":28},{"language":"default","tag":"Error Codes","count":23},{"language":"default","tag":"Calls","count":20},{"language":"default","tag":"2xxx — Resource errors","count":19},{"language":"default","tag":"Webhooks","count":18}]},"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":"editor-v7-file-tree","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":"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":"pause-universal-search-reconcile","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":"per-site-search-delta","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":"editor-private-page-search","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":"editor-nav-generations","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":"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":"byok-sep-25","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":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","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":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":true},"customCss":[{"filePath":"style.css","content":"@keyframes buttons-browser-rise{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes selection-appear{0%{opacity:0}to{opacity:1}}@keyframes selection-rise{0%{transform:translateY(12px);opacity:0}to{transform:translateY(0);opacity:1}}:root{--relay-brand-blue:#0b75ff}html.dark img[src*=\"/images/brands/cline.svg\"],html.dark img[src*=\"/images/brands/elevenlabs.svg\"],html.dark img[src*=\"/images/brands/openai.svg\"],html.dark img[src*=\"/images/brands/opencode.svg\"],html.dark img[src*=\"/images/brands/pipecat.svg\"],html.dark img[src*=\"/images/brands/vercel.svg\"]{filter:invert(1)}html.dark img[src*=\"/images/brands/livekit.svg\"]{background:#fff;border-radius:3px}@media (min-width:600px){#navbar div.flex-1:has(>a>img.nav-logo){flex:0 0 auto!important}#navbar nav[aria-label=Main]{justify-content:flex-start!important}}#navbar div.absolute.w-full.h-full.border-b,#navbar>div.border-b{border-bottom-width:0}[data-component-part=scroll-area-scrollbar]{background-color:transparent}html{scrollbar-width:thin;scrollbar-color:#d4d4d4 transparent}html.dark{scrollbar-color:#525252 transparent}.hero-art{display:block}.hero-art>svg{display:block;width:100%;height:auto}.dark .hero-art-light,.hero-art-dark{display:none}.dark .hero-art-dark{display:block}.frame:has(>.relay-preview){padding:0;background:0 0;border:0;box-shadow:none;border-radius:12px}.frame:has(>.relay-preview)>.absolute.inset-0{display:none}.frame:has(>.relay-preview)>figcaption{margin-top:8px;padding:0 8px;color:rgb(var(--gray-500))}.dark .frame:has(>.relay-preview)>figcaption{color:rgb(var(--gray-400))}.relay-preview{position:relative;background:#fff;color:#000}.dark .relay-preview{background:#000;color:#fff}.relay-preview>*{width:100%;min-width:0}.relay-preview-reset{position:absolute;top:8px;right:8px;z-index:3;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;margin:0;padding:0;border:0;border-radius:8px;background:0 0;color:rgb(var(--gray-400));cursor:pointer;transition:color .15s ease-in-out,background-color .15s ease-in-out}.relay-preview-reset:hover{color:rgb(var(--gray-600));background:rgb(var(--gray-100))}.dark .relay-preview-reset{color:rgb(var(--gray-500))}.dark .relay-preview-reset:hover{color:rgb(var(--gray-300));background:rgb(255 255 255/.1)}.relay-preview-reset:focus-visible{outline:2px solid currentColor;outline-offset:2px}.relay-preview-reset svg.icon{background-color:currentColor}.relay-preview-bar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px;padding:0 12px 16px}.relay-preview-seg{display:inline-flex;flex-wrap:wrap;justify-content:center;padding:2px;border-radius:9px;background:rgb(var(--gray-100))}.dark .relay-preview-seg{background:rgb(255 255 255/.08)}.relay-preview-seg button{margin:0;padding:3px 10px;border:0;border-radius:7px;background:0 0;color:rgb(var(--gray-500));font:inherit;font-size:12px;font-weight:500;line-height:18px;white-space:nowrap;cursor:pointer;transition:color .15s ease-in-out,background-color .15s ease-in-out}.relay-preview-seg button:hover{color:rgb(var(--gray-800))}.relay-preview-seg button[aria-pressed=true]{background:#fff;color:rgb(var(--gray-900));box-shadow:0 1px 2px rgb(0 0 0/.1),0 0 0 .5px rgb(0 0 0/.06)}.dark .relay-preview-hint,.dark .relay-preview-seg button{color:rgb(var(--gray-400))}.dark .relay-preview-seg button:hover{color:rgb(var(--gray-200))}.dark .relay-preview-seg button[aria-pressed=true]{background:rgb(255 255 255/.16);color:#fff;box-shadow:none}.relay-preview-seg button:focus-visible{outline:2px solid currentColor;outline-offset:1px}.relay-preview-hint{color:rgb(var(--gray-500));font-size:12px;line-height:18px}.buttons-preview-frame{position:relative;overflow:hidden}.buttons-preview-stage{display:flex;flex-direction:column;box-sizing:border-box;max-width:402px;margin:0 auto;padding:16px}.buttons-preview-message{display:flex;flex-direction:column;align-self:flex-start;gap:8px;width:260px;max-width:100%}.selection-preview .buttons-preview-message{align-self:stretch;width:auto}.buttons-preview-text{isolation:isolate;padding:10px 14px;border-radius:20px;background:#f1f3f5;color:#111827;font-size:17px;line-height:1.35;white-space:pre-wrap;overflow-wrap:anywhere}.dark .buttons-preview-text{background:#242b36;color:#f3f4f6}.buttons-preview-text.has-tail{position:relative;margin-bottom:7px}.buttons-preview-text-tail{position:absolute;left:0;top:calc(100% - 16px);z-index:-1;fill:#f1f3f5}.dark .buttons-preview-text-tail{fill:#242b36}.buttons-preview-stack{display:flex;flex-direction:column;align-self:flex-start;gap:4px;width:75%;max-width:75%}.buttons-preview-pill{box-sizing:border-box;display:flex;justify-content:space-between;align-items:center;gap:5px;width:100%;min-height:48px;padding:12px 16px 12px 20px;border-radius:24px;background:#eef5ff;color:#0b75ff;font-weight:600;font-size:17px;line-height:24px;font-family:-apple-system,BlinkMacSystemFont,\"SF Pro Text\",system-ui,sans-serif}.dark .buttons-preview-pill{background:#101e33;color:#6fb0ff}.buttons-preview-action{border:0;text-align:left;cursor:pointer;transition:background-color .2s ease-in-out,transform .15s ease-out}.buttons-preview-action:active{transform:scale(.97);opacity:1}.buttons-preview-action:focus-visible{outline:2px solid currentColor;outline-offset:3px}.buttons-reply{margin-top:8px;animation:selection-appear .2s ease-in-out}.buttons-reply svg{max-width:100%;height:auto}.buttons-preview-own,.buttons-reply{align-self:flex-end;max-width:100%}.buttons-preview-arrow{flex:none;width:1em;height:1em;font-size:.72em;line-height:1}.buttons-preview-tap path{fill:#0b75ff}.buttons-preview-tap text,.buttons-url-preview{font-family:-apple-system,BlinkMacSystemFont,\"SF Pro Text\",\"Inter\",system-ui,sans-serif}.buttons-preview-tap text{fill:#fff;font-size:17px}.buttons-preview.is-browser-open .buttons-preview-frame{min-height:440px}.buttons-url-preview{position:absolute;inset:0;display:flex;flex-direction:column;background:#fff;color:#111827;animation:buttons-browser-rise .28s ease-out}.dark .buttons-url-preview{background:#000;color:#f3f4f6}.buttons-browser-bar{flex:none;display:grid;grid-template-columns:44px 1fr 44px;align-items:center;gap:4px;padding:10px 8px;background:#f2f2f7;border-bottom:1px solid #e5e5ea}.dark .buttons-browser-bar{background:#1c1c1e;border-bottom-color:#2c2c2e}.buttons-url-close{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;margin:0 auto;padding:0;border:0;border-radius:16px;background:#e3e3e8;color:#3c3c43;cursor:pointer;transition:transform .15s ease-out}.dark .buttons-url-close{background:#2c2c2e;color:#ebebf5}.buttons-url-close:active{transform:scale(.94)}.buttons-url-close:focus-visible{outline:2px solid #0b75ff;outline-offset:2px}.buttons-url-close svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}.buttons-browser-address{display:flex;align-items:center;justify-content:center;gap:5px;min-width:0;height:34px;padding:0 12px;border-radius:12px;background:#e3e3e8;font-size:14px;font-weight:500}.dark .buttons-browser-address{background:#2c2c2e}.buttons-browser-address span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.buttons-browser-address svg{flex:none;width:10px;height:12px;fill:none;stroke:currentColor;stroke-width:1.4}.buttons-browser-reload,.buttons-browser-toolbar svg{fill:none;stroke:#0b75ff;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.buttons-browser-reload{justify-self:center;width:16px;height:16px}.buttons-browser-page{flex:1 1 auto;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:24px;text-align:center}.buttons-url-caption{font-size:12px;color:#68717e}.dark .buttons-browser-note,.dark .buttons-url-caption{color:#a0a7b2}.buttons-url-address{font-size:15px;font-weight:600;overflow-wrap:anywhere}.buttons-browser-note{max-width:240px;font-size:13px;color:#68717e}.buttons-browser-toolbar{flex:none;display:flex;justify-content:space-around;padding:10px 8px 14px;background:#f2f2f7;border-top:1px solid #e5e5ea}.dark .buttons-browser-toolbar{background:#1c1c1e;border-top-color:#2c2c2e}.buttons-browser-toolbar svg{width:22px;height:22px}.buttons-browser-toolbar svg.is-disabled{stroke:#c7c7cc}.dark .buttons-browser-toolbar svg.is-disabled{stroke:#48484a}.selection-preview.is-sheet-open .buttons-preview-frame{min-height:400px}.selection-answer,.selection-prompt{display:block;align-self:flex-start;max-width:100%;margin:0;padding:0;border:0;background:0 0;cursor:pointer;transition:transform .15s ease-out}.selection-answer{align-self:flex-end;animation:selection-appear .2s ease-in-out}.selection-answer:active,.selection-prompt:active{transform:scale(.97);opacity:1}.selection-answer:focus-visible,.selection-prompt:focus-visible,.selection-send:focus-visible,.selection-sheet-grabber:focus-visible,.selection-sheet-option:focus-visible{outline:2px solid #0b75ff;outline-offset:3px}.dark .selection-answer:focus-visible,.dark .selection-prompt:focus-visible,.dark .selection-send:focus-visible,.dark .selection-sheet-grabber:focus-visible,.dark .selection-sheet-option:focus-visible{outline-color:#6fb0ff}.selection-card{display:block;max-width:100%;height:auto;font-family:-apple-system,BlinkMacSystemFont,\"SF Pro Text\",\"Inter\",system-ui,sans-serif}.selection-card-leading .selection-card-shape{fill:#f1f3f5}.dark .selection-card-leading .selection-card-shape{fill:#242b36}.selection-card-trailing .selection-card-shape{fill:#0b75ff}.selection-card-title{font-size:15px;font-weight:600}.selection-card-subtitle{font-size:13px}.selection-card-label{font-size:15px}.selection-card-leading .selection-card-label,.selection-card-leading .selection-card-title{fill:#111827}.selection-card-leading .selection-card-subtitle{fill:#68717e}.selection-card-leading .selection-card-mark{stroke:#111827}.selection-card-leading .selection-card-chevron{stroke:#68717e}.dark .selection-card-leading .selection-card-label,.dark .selection-card-leading .selection-card-title{fill:#f3f4f6}.dark .selection-card-leading .selection-card-subtitle{fill:#a0a7b2}.dark .selection-card-leading .selection-card-mark{stroke:#f3f4f6}.dark .selection-card-leading .selection-card-chevron{stroke:#a0a7b2}.selection-card-trailing .selection-card-label,.selection-card-trailing .selection-card-title{fill:#fff}.selection-card-trailing .selection-card-mark{stroke:#fff}.selection-card-trailing .selection-card-chevron{stroke:rgba(255,255,255,.75)}.selection-card-chevron,.selection-card-mark{fill:none;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}.selection-sheet-layer,.selection-sheet-scrim{position:absolute;inset:0}.selection-sheet-scrim{background:rgba(15,23,42,.38)}.selection-sheet{position:absolute;left:0;right:0;bottom:0;display:flex;flex-direction:column;max-height:100%;border-radius:16px 16px 11px 11px;background:#fff;color:#111827;font-family:-apple-system,BlinkMacSystemFont,\"SF Pro Text\",\"Inter\",system-ui,sans-serif;animation:selection-rise .22s ease-out}.dark .selection-sheet{background:#151a23;color:#f3f4f6}.selection-sheet-grabber{flex:none;align-self:center;width:56px;height:20px;margin:0;padding:0;border:0;background:0 0;cursor:pointer}.selection-sheet-grabber::before{content:\"\";display:block;width:36px;height:5px;margin:7px auto 0;border-radius:3px;background:#c7c7cc}.dark .selection-sheet-grabber::before{background:#48484a}.selection-sheet-title{flex:none;padding:12px 24px;font-size:22px;font-weight:700;line-height:1.2}.selection-sheet-list{flex:1 1 auto;min-height:0;max-height:260px;overflow-y:auto;padding-bottom:76px;-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 14px,#000 calc(100% - 56px),transparent 100%);mask-image:linear-gradient(to bottom,transparent 0,#000 14px,#000 calc(100% - 56px),transparent 100%)}.selection-sheet.is-read-only .selection-sheet-list{padding-bottom:26px;-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 14px);mask-image:linear-gradient(to bottom,transparent 0,#000 14px)}.selection-sheet-option{position:relative;box-sizing:border-box;display:flex;align-items:center;gap:12px;width:100%;margin:0;padding:14px 20px;border:0;background:0 0;color:inherit;font:inherit;font-size:16px;text-align:left;cursor:pointer}.selection-sheet-option+.selection-sheet-option::before{content:\"\";position:absolute;top:0;left:52px;right:0;height:1px;background:#e5e7eb}.dark .selection-sheet-option+.selection-sheet-option::before{background:#2b323d}.selection-sheet-option:disabled{cursor:default}.selection-sheet-label{overflow-wrap:anywhere;font-weight:600}.selection-box{flex:none;width:22px;height:22px}.selection-box circle{fill:transparent;stroke:#b9bec7;stroke-width:1.5;transition:fill .2s ease-in-out,stroke .2s ease-in-out}.dark .selection-box circle{stroke:#6b7280}.selection-box path{fill:none;stroke:#fff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;opacity:0;transition:opacity .2s ease-in-out}.selection-sheet-option[aria-checked=true] .selection-box circle{fill:#0b75ff;stroke:#0b75ff}.selection-sheet-option[aria-checked=true] .selection-box path{opacity:1}.selection-sheet-footer{position:absolute;left:0;right:0;bottom:0;display:flex;justify-content:center;padding:0 0 16px;pointer-events:none}.selection-send{box-sizing:border-box;display:block;width:calc(50% + 16px);height:48px;margin:0;padding:0;border:0;border-radius:24px;background:#0b75ff;color:#fff;box-shadow:0 6px 18px rgba(15,23,42,.16),inset 0 1px 0 rgba(255,255,255,.35);pointer-events:auto;font-family:inherit;font-size:17px;font-weight:600;opacity:1;cursor:pointer;transition:background-color .2s ease-in-out,color .2s ease-in-out,transform .15s ease-out}.selection-send:active:not(:disabled){transform:scale(.96);opacity:1}.selection-send:disabled{background:#eceef1;color:rgba(60,60,67,.3);opacity:1;cursor:default}.dark .selection-send:disabled{background:#2c2c2e;color:rgba(235,235,245,.3)}.native-dialog,.native-preview{--app-blue:var(--relay-brand-blue);--app-incoming:#e9e9e9;--app-ink:#000;--app-secondary:rgba(60,60,67,.6);--app-group:#f2f2f7;--app-field:#fff;--app-line:rgba(60,60,67,.18);color:var(--app-ink);font:17px/1.3 -apple-system,BlinkMacSystemFont,\"SF Pro Text\",system-ui,sans-serif}.dark .native-dialog,.dark .native-preview{--app-blue:#007eff;--app-incoming:#2c2c2e;--app-ink:#fff;--app-secondary:rgba(235,235,245,.6);--app-group:#000;--app-field:#1c1c1e;--app-line:rgba(84,84,88,.65)}.native-dialog *,.native-preview *{box-sizing:border-box}.native-dialog button,.native-preview button{font:inherit;cursor:pointer}.native-dialog :focus-visible,.native-preview button:focus-visible{outline:2px solid var(--app-blue);outline-offset:3px}.native-preview{position:relative}.native-transcript{display:flex;flex-direction:column;gap:8px;max-width:402px;margin:0 auto;padding:16px;box-sizing:border-box}.native-text{align-self:flex-start;max-width:calc(100% - 94px);border-radius:20px;padding:10px 14px;background:var(--app-incoming);overflow-wrap:anywhere}.native-capsule{border:0;border-radius:999px;padding:8px 12px;min-height:40px;width:100%;background:color-mix(in srgb,var(--app-blue) 15%,transparent);color:var(--app-blue);font-weight:600!important;line-height:22px}.form-calendar-grid button[aria-pressed=true],.native-capsule.is-primary{background:var(--app-blue);color:#fff}.native-capsule:active{opacity:.7;transform:scale(.97)}.native-capsule:disabled{opacity:.35;cursor:default}.rich-shelf{display:flex;align-items:stretch;gap:8px;padding-bottom:7px}.rich-shelf.is-carousel{scroll-behavior:smooth;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scrollbar-width:thin}.rich-balloon{position:relative;isolation:isolate;flex:0 0 min(350px,calc(100% - 94px));min-width:0;scroll-snap-align:start}.rich-balloon.is-small{flex-basis:min(180px,calc(100% - 94px))}.rich-card,.rich-media{background:var(--app-incoming)}.rich-card{display:flex;flex-direction:column;height:100%;overflow:hidden;border-radius:18px}.rich-media{display:block;flex-shrink:0;width:100%;padding:0;border:0}.rich-media:focus-visible{outline-offset:-3px}.rich-media img{display:block;width:100%;height:100%;object-fit:cover;margin:0;border-radius:0}.rich-copy{padding:16px 16px 0}.rich-media+.rich-copy{padding-top:12px}.rich-title{font-size:17px;font-weight:600;overflow-wrap:anywhere}.rich-description{margin-top:2px;color:var(--app-secondary);overflow-wrap:anywhere}.rich-suggestions{display:flex;flex-direction:column;gap:8px;padding:12px 16px 16px;margin-top:auto}.native-tail{position:absolute;left:0;bottom:-7px;width:23px;height:24px;fill:var(--app-incoming);z-index:-1}.rich-followups{display:flex;flex-direction:column;gap:4px;width:calc((100% - 94px)*.75)}.rich-followups .native-capsule{min-height:48px;text-align:left;padding:12px 16px 12px 20px}.rich-scroll-controls{display:flex;justify-content:center;gap:12px}.rich-scroll-controls button{background:0 0;border:0;color:var(--app-blue);width:32px;height:28px;border-radius:8px;font-size:24px}.native-replies{display:flex;flex-direction:column;gap:8px}.native-replies:empty{display:none}.native-preview .buttons-preview-tap path,.native-preview .selection-card-trailing .selection-card-shape{fill:var(--app-blue)}.native-preview .selection-card-leading .selection-card-shape{fill:var(--app-incoming)}.native-preview .selection-card-leading .selection-card-title{fill:var(--app-ink)}.native-preview .selection-card-leading .selection-card-subtitle{fill:var(--app-secondary)}.native-preview .selection-card-leading .selection-card-chevron{stroke:var(--app-secondary)}.form-preview .selection-card-leading .selection-card-subtitle{fill:rgba(60,60,67,.72)}.dark .form-preview .selection-card-leading .selection-card-subtitle{fill:rgba(235,235,245,.7)}.form-preview .selection-card-trailing .selection-card-subtitle{fill:rgba(255,255,255,.8)}.dark .form-preview .selection-card-trailing .selection-card-subtitle{fill:rgba(255,255,255,.6)}.rich-followups .native-capsule{background:#eef5ff;color:#0b75ff}.dark .rich-followups .native-capsule{background:#101e33;color:#6fb0ff}.native-form-answer,.native-form-prompt{display:block;width:fit-content;max-width:100%;background:0 0;border:0;padding:0}.native-form-prompt{align-self:flex-start}.native-form-answer{align-self:flex-end}.native-form-answer svg,.native-form-prompt svg{display:block;max-width:100%;height:auto}.native-response{padding:8px 16px;font-size:13px}.native-response summary{cursor:pointer;color:var(--app-secondary)}.native-response pre{font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere;max-height:220px;overflow:auto}.native-dialog{width:min(402px,calc(100vw - 24px));max-height:min(680px,90dvh);padding:0;border:0;border-radius:28px;background:var(--app-field);margin:auto;box-shadow:0 20px 80px #0003}.native-dialog::backdrop{background:#0006}.native-dialog[open]{display:flex;flex-direction:column}.native-sheet-bar{flex-shrink:0;display:grid;grid-template-columns:1fr 32px;align-items:center;gap:8px;padding:12px 16px;font-size:17px}.native-sheet-bar button{width:32px;height:32px;padding:0;border:0;border-radius:50%;background:var(--app-incoming);color:var(--app-ink);font-size:24px;line-height:1}.native-sheet-bar .native-back{color:var(--app-blue);background:0 0;font-size:32px}.rich-photo{width:100%;min-height:0;object-fit:contain;margin:0}.rich-url{padding:24px;overflow-wrap:anywhere}.native-form-content h3,.rich-url p{color:var(--app-secondary);font-size:15px}.native-form-sheet{background:var(--app-group);height:min(620px,90dvh)}.native-form-sheet .native-sheet-bar{grid-template-columns:32px 1fr 32px;text-align:center}.native-grabber{flex-shrink:0;width:36px;height:5px;border-radius:3px;background:var(--app-line);margin:8px auto 0}.native-form-content{overflow-y:auto;flex:1;min-height:0;padding:8px 20px 20px}.native-form-content section{margin:16px 0 24px}.native-form-content h3{display:flex;justify-content:space-between;gap:8px;margin:0 16px 7px;font-size:13px;font-weight:400;text-transform:uppercase}.native-form-content h3 span:last-child:not(:first-child){text-transform:none}.native-field-group{background:var(--app-field);border-radius:12px;overflow:hidden}.native-field-group input,.native-field-group textarea{display:block;width:100%;border:0;border-radius:0;padding:12px 16px;margin:0;background:0 0;color:var(--app-ink);font:inherit;resize:vertical}.native-field-group input::placeholder,.native-field-group textarea::placeholder{color:var(--app-secondary)}.native-field-group:focus-within{outline:2px solid var(--app-blue);outline-offset:2px}.native-field-group :focus-visible{outline-offset:-3px}.form-choice,.form-date,.form-picker{display:flex;width:100%;min-height:44px;gap:8px;align-items:center;justify-content:space-between;border:0;padding:10px 16px;background:0 0;color:var(--app-ink);text-align:left}.form-choice+.form-choice{border-top:.5px solid var(--app-line)}.form-check{color:var(--app-blue);font-weight:600}.form-switch{display:flex;align-items:center;width:51px;height:31px;flex-shrink:0;border-radius:16px;padding:2px;background:var(--app-line)}.form-switch>span{display:block;width:27px;height:27px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0003}.form-switch.is-on{background:var(--app-blue);justify-content:flex-end}.form-picker select{max-width:60%;min-width:64px;border:0;color:var(--app-blue);background:0 0;font:inherit}.form-date>span:last-child{padding:6px 11px;border-radius:999px;background:var(--app-incoming);color:var(--app-blue)}.form-calendar{padding:12px 16px}.form-calendar-heading{display:flex;align-items:center;gap:12px}.form-calendar-heading strong{flex:1;font-size:17px}.form-calendar-heading button{background:0 0;color:var(--app-blue);border:0;font-size:28px}.form-calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;text-align:center;margin-top:12px}.form-calendar-grid>span{font-size:12px;color:var(--app-secondary)}.form-calendar-grid button{aspect-ratio:1;padding:0;border:0;border-radius:50%;color:var(--app-ink);background:0 0}.form-calendar button:disabled{opacity:.25;cursor:default}.form-clear-date{display:block;border:0;background:0 0;color:#ff3b30;padding:10px 16px}.form-answer-row{white-space:pre-wrap;overflow-wrap:anywhere}.form-answer-row+.form-answer-row{border-top:.5px solid var(--app-line)}.form-answer-row>span{display:block;font-size:15px;color:var(--app-secondary);margin-bottom:5px}.form-answer-row,.form-intro{padding:12px 16px}.form-hint{color:var(--app-secondary);font-size:13px;padding:0 16px}.native-form-bottom{display:flex;justify-content:center;padding:12px 16px 16px;flex-shrink:0}.native-form-bottom .native-capsule{min-height:50px;width:calc(50% + 32px);max-width:100%}[data-component-part=card-icon]:has(img[src*=\"/images/brands/\"]){flex-shrink:0}@media (prefers-reduced-motion:reduce){.buttons-preview *,.buttons-preview ::before{transition:none!important;animation:none!important}.buttons-preview-action:active,.selection-answer:active,.selection-prompt:active,.selection-send:active:not(:disabled){transform:none}.rich-shelf.is-carousel{scroll-behavior:auto}.native-capsule:active{transform:none!important}}.a2-balloon{align-self:flex-start;width:min(350px,calc(100% - 40px))}.a2-card{padding:16px;background:var(--app-incoming);overflow:hidden}.a2-col,.a2-row{display:flex;flex-direction:column;gap:8px}.a2-row{flex-direction:row}.a2-text{line-height:1.25;overflow-wrap:anywhere}.a2-badge,.a2-text.is-caption{font-size:13px;color:var(--app-secondary)}.a2-badge{display:inline-block;padding:4px 10px;border-radius:999px;font-weight:700;background:color-mix(in srgb,var(--app-blue) 15%,transparent);color:var(--app-blue);white-space:nowrap}.a2-divider{border:0;border-top:1px solid var(--app-line);margin:4px 0}.native-preview .a2-button{border:0;border-radius:999px;min-height:44px;width:100%;padding:10px 16px;background:var(--app-blue);color:#fff;font-weight:600;font-size:17px}.native-preview .a2-button.is-borderless{background:0 0;color:var(--app-blue)}.a2-slider{display:flex;flex-direction:column;gap:6px}.a2-slider-head{display:flex;justify-content:space-between;color:var(--app-secondary);font-size:15px}.a2-slider input{-webkit-appearance:none;appearance:none;width:100%;height:4px;border-radius:2px;margin:10px 0;background:linear-gradient(to right,var(--app-blue) var(--a2-fill),var(--app-line) var(--a2-fill))}.a2-slider input::-webkit-slider-thumb{-webkit-appearance:none;width:36px;height:24px;border-radius:12px;background:#fff;box-shadow:0 1px 4px rgba(0,0,0,.25)}.a2-slider input::-moz-range-thumb{width:36px;height:24px;border-radius:12px;border:0;background:#fff;box-shadow:0 1px 4px rgba(0,0,0,.25)}.native-preview .a2-check,.native-preview .a2-choice{display:flex;align-items:center;gap:10px;border:0;background:0 0;color:inherit;padding:4px 0;text-align:left;font-size:17px}.a2-box{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:6px;border:2px solid var(--app-secondary);color:#fff;font-size:14px;font-weight:700}.a2-check.is-on .a2-box{background:var(--app-blue);border-color:var(--app-blue)}.a2-check.is-on span:last-child{text-decoration:line-through;color:var(--app-secondary)}.a2-choices{display:flex;flex-direction:column;gap:2px}.a2-dot{width:22px;height:22px;border-radius:50%;border:2px solid var(--app-secondary);flex-shrink:0}.a2-choice.is-on .a2-dot{border:7px solid var(--app-blue)}.a2-chart{display:flex;align-items:flex-end;gap:12px;height:160px;padding-top:8px}.a2-bar-slot{flex:1;height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:4px;font-size:12px;color:var(--app-secondary)}.a2-bar{width:100%;background:var(--app-blue);border-radius:4px 4px 0 0;min-height:2px}.a2-map{position:relative;height:180px;border-radius:12px;background:#dfe9d8;overflow:hidden}.dark .a2-map{background:#26322b}.native-preview .a2-pin{position:absolute;width:18px;height:18px;margin:-9px 0 0 -9px;border-radius:50%;border:3px solid #fff;background:#ff3b30;padding:0;box-shadow:0 1px 3px rgba(0,0,0,.3)}.native-preview .a2-pin.is-on{transform:scale(1.3)}.a2-pin-detail{display:flex;flex-direction:column;margin-top:8px;font-size:15px}.a2-pin-detail span{color:var(--app-secondary)}.a2-countdown{font-size:34px;font-weight:600;font-variant-numeric:tabular-nums}.a2-image{height:140px;border-radius:12px;background:var(--app-line)}.a2-row>.a2-text{flex:1 1 auto;overflow-wrap:break-word}.a2-row>.a2-badge{flex:0 0 auto}"}],"page":{"pagePath":"api-reference/payments/create-a-payment-request","slug":"/api-reference/payments/create-a-payment-request","pageMetadata":{"title":"Create a payment request","description":"Create a payment request and get back the `checkout_url`, Relay's pay\npage for it. Relay creates one Stripe PaymentIntent on your\norganization's own connected Stripe account, as a direct charge (in\nsubscription mode, an incomplete Subscription whose first-period\nPaymentIntent is that one object): the money settles to your Stripe\naccount, you are the merchant of record, and Relay never holds the\nfunds. Relay takes a 5% fee on every payment, as a Stripe application\nfee (`application_fee_amount`); in subscription mode it is 5% of every\nperiod. The pay page and the Relay app's payment sheet both pay that\nsame PaymentIntent, so a person can never pay twice. Refunds and\ndisputes are handled in your own Stripe Dashboard; when a refund of a\npayment succeeds, Relay returns the same share of its fee.\n\nA request is payable for 23 hours (`expires_at`); after that Relay\nstops the payment and the request moves to `expired`.\n\nSend the request to a person as a `payment` message part. Its status\nmoves only on Stripe's word: `payment.succeeded`, `payment.canceled`\nand `payment.expired` tell your agent, and every card that carries\nthe request changes in place.\n\nReturns 403 until your organization has connected Stripe in the Relay\nConsole and the account can accept charges. Stripe's own validation\n(currency, minimum amount, an unknown price, customer or coupon) comes\nback as 400 carrying Stripe's message. Returns 503 while payments are\nnot available on this server.\n","deprecated":null,"version":null,"sidebarTitle":"Create","openapi":"/api-reference/openapi.mint.yaml post /v1/payment_requests","href":"/api-reference/payments/create-a-payment-request","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Create a payment request and get back the \", _jsx(_components.code, {\n children: \"checkout_url\"\n }), \", Relay’s pay\\npage for it. Relay creates one Stripe PaymentIntent on your\\norganization’s own connected Stripe account, as a direct charge (in\\nsubscription mode, an incomplete Subscription whose first-period\\nPaymentIntent is that one object): the money settles to your Stripe\\naccount, you are the merchant of record, and Relay never holds the\\nfunds. Relay takes a 5% fee on every payment, as a Stripe application\\nfee (\", _jsx(_components.code, {\n children: \"application_fee_amount\"\n }), \"); in subscription mode it is 5% of every\\nperiod. The pay page and the Relay app’s payment sheet both pay that\\nsame PaymentIntent, so a person can never pay twice. Refunds and\\ndisputes are handled in your own Stripe Dashboard; when a refund of a\\npayment succeeds, Relay returns the same share of its fee.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"A request is payable for 23 hours (\", _jsx(_components.code, {\n children: \"expires_at\"\n }), \"); after that Relay\\nstops the payment and the request moves to \", _jsx(_components.code, {\n children: \"expired\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Send the request to a person as a \", _jsx(_components.code, {\n children: \"payment\"\n }), \" message part. Its status\\nmoves only on Stripe’s word: \", _jsx(_components.code, {\n children: \"payment.succeeded\"\n }), \", \", _jsx(_components.code, {\n children: \"payment.canceled\"\n }), \"\\nand \", _jsx(_components.code, {\n children: \"payment.expired\"\n }), \" tell your agent, and every card that carries\\nthe request changes in place.\"]\n }), \"\\n\", _jsx(_components.p, {\n children: \"Returns 403 until your organization has connected Stripe in the Relay\\nConsole and the account can accept charges. Stripe’s own validation\\n(currency, minimum amount, an unknown price, customer or coupon) comes\\nback as 400 carrying Stripe’s message. Returns 503 while payments are\\nnot available on this server.\"\n })]\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}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Create a payment request","description":"Create a payment request and get back the `checkout_url`, Relay's pay\npage for it. Relay creates one Stripe PaymentIntent on your\norganization's own connected Stripe account, as a direct charge (in\nsubscription mode, an incomplete Subscription whose first-period\nPaymentIntent is that one object): the money settles to your Stripe\naccount, you are the merchant of record, and Relay never holds the\nfunds. Relay takes a 5% fee on every payment, as a Stripe application\nfee (`application_fee_amount`); in subscription mode it is 5% of every\nperiod. The pay page and the Relay app's payment sheet both pay that\nsame PaymentIntent, so a person can never pay twice. Refunds and\ndisputes are handled in your own Stripe Dashboard; when a refund of a\npayment succeeds, Relay returns the same share of its fee.\n\nA request is payable for 23 hours (`expires_at`); after that Relay\nstops the payment and the request moves to `expired`.\n\nSend the request to a person as a `payment` message part. Its status\nmoves only on Stripe's word: `payment.succeeded`, `payment.canceled`\nand `payment.expired` tell your agent, and every card that carries\nthe request changes in place.\n\nReturns 403 until your organization has connected Stripe in the Relay\nConsole and the account can accept charges. Stripe's own validation\n(currency, minimum amount, an unknown price, customer or coupon) comes\nback as 400 carrying Stripe's message. Returns 503 while payments are\nnot available on this server.\n","deprecated":null,"version":null,"sidebarTitle":"Create","openapi":"/api-reference/openapi.mint.yaml post /v1/payment_requests","href":"/api-reference/payments/create-a-payment-request","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/relay-staging/603be6d9fda39113/agent-prompt.js","/_mintlify/custom/relay-staging/e136a31f650b5647/posthog.js"],"openApiReferenceData":{"operation":{"operationId":"createPaymentRequest","x-mint":{"metadata":{"sidebarTitle":"Create"},"href":"/api-reference/payments/create-a-payment-request"},"summary":"Create a payment request","description":"Create a payment request and get back the `checkout_url`, Relay's pay\npage for it. Relay creates one Stripe PaymentIntent on your\norganization's own connected Stripe account, as a direct charge (in\nsubscription mode, an incomplete Subscription whose first-period\nPaymentIntent is that one object): the money settles to your Stripe\naccount, you are the merchant of record, and Relay never holds the\nfunds. Relay takes a 5% fee on every payment, as a Stripe application\nfee (`application_fee_amount`); in subscription mode it is 5% of every\nperiod. The pay page and the Relay app's payment sheet both pay that\nsame PaymentIntent, so a person can never pay twice. Refunds and\ndisputes are handled in your own Stripe Dashboard; when a refund of a\npayment succeeds, Relay returns the same share of its fee.\n\nA request is payable for 23 hours (`expires_at`); after that Relay\nstops the payment and the request moves to `expired`.\n\nSend the request to a person as a `payment` message part. Its status\nmoves only on Stripe's word: `payment.succeeded`, `payment.canceled`\nand `payment.expired` tell your agent, and every card that carries\nthe request changes in place.\n\nReturns 403 until your organization has connected Stripe in the Relay\nConsole and the account can accept charges. Stripe's own validation\n(currency, minimum amount, an unknown price, customer or coupon) comes\nback as 400 carrying Stripe's message. Returns 503 while payments are\nnot available on this server.\n","tags":["Payments"],"security":["c4903f45-2b66-412b-a8ab-8ec5f105d3c3"],"parameters":["bb9b5857-71c8-4f7f-8f70-53b197341e28"],"requestBody":"3e9a7d0f-d4f7-4198-ad5e-76bfe0dd9a54","responses":{"200":"7329f463-3fd9-4c54-8cb3-5ff1eaa3b999","201":"74545c47-af0c-460f-b043-fe7a7908690f","400":"bb4d17a1-fc3f-4af1-b67b-c8f1ebe916f2","401":"79d9d78f-3a15-468e-8ce8-3449538ee300","403":"fdfdb650-dd36-4bd4-aee7-8f2102194bd3","409":"3cfd7aec-66c5-44f9-bddd-d4eec65799db","500":"509fa24e-faa0-401f-a29a-110a251a0008","503":"9749bd9d-c273-40f8-a080-f7134aab53ed"},"method":"post","type":"path","servers":["5fe554b7-ad2b-4bee-af8d-aab2bdda93ef"],"path":"/v1/payment_requests","baseUrlOptions":["https://api.staging.relayapp.im"],"title":"Create a payment request","codeSamples":[],"requestExampleLanguages":["bash"],"requiredOnlyExamples":true,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"bb9b5857-71c8-4f7f-8f70-53b197341e28":{"name":"Idempotency-Key","in":"header","required":false,"description":"Reusing a key with the same body returns the first request (200); with a different body, 409.","schema":{"type":"string","minLength":1,"maxLength":255,"isRequired":false,"description":"Reusing a key with the same body returns the first request (200); with a different body, 409.","uniqueKey":"","typeLabel":"string"}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["description","category"],"properties":{"description":{"type":"string","minLength":1,"maxLength":32,"description":"The card's title line and the checkout's product name. Trimmed; 1 to 32 characters.","isRequired":true,"uniqueKey":"description","typeLabel":"string"},"category":{"type":"string","enum":["physical_goods","digital_goods","donation"],"description":"What is being paid for, the same three values as PayPal Orders v2 `items[].category` (PHYSICAL_GOODS, DIGITAL_GOODS, DONATION; developer.paypal.com/docs/api/orders/v2/). The App Store Review Guidelines (developer.apple.com/app-store/review/guidelines/) decide where each can be paid:\n- `physical_goods`: physical goods, and services used in the real world, such as a haircut or a ride (3.1.3(e)). Payable anywhere.\n- `digital_goods`: anything used in an app or online. A person pays by opening the link in Safari, and only on the United States storefront (3.1.1(a)); sending one to a person whose devices report only other storefronts returns 422 (error code `2006`). A tip to an agent or a creator is `digital_goods` (3.1.1: tips to digital content providers use In-App Purchase).\n- `donation`: money for a charity or a fundraiser. Collected outside the app, on any storefront (3.2.2(iv): such apps \"may only collect funds outside of the app, such as via Safari…\").","isRequired":true,"uniqueKey":"category","typeLabel":"enum\u003cstring>"},"amount":{"type":"integer","description":"Payment mode (required there). What to charge, in the currency's minor units; Stripe's minimum and maximum apply. Omit in subscription mode.","uniqueKey":"amount","typeLabel":"integer"},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$","description":"Payment mode (required there). A 3-letter ISO 4217 code, returned lowercase. Omit in subscription mode; the price carries it.","uniqueKey":"currency","typeLabel":"string"},"metadata":{"type":"object","maxProperties":49,"additionalProperties":{"type":"string","uniqueKey":"metadata.additionalProperties","typeLabel":"string"},"description":"Up to 49 keys of your own, returned on the request and on every `payment.*` event, and stamped on the Stripe objects created on your account. Keys starting with `relay_` are reserved; Relay adds `relay_payment_request_id`.","uniqueKey":"metadata","typeLabel":"object"},"mode":{"type":"string","enum":["payment","subscription"],"default":"payment","description":"`payment` collects one charge of `amount` in `currency`. `subscription` starts an auto-renewing subscription from a recurring `price_id` on your connected Stripe account; the person pays the first period at checkout and Stripe renews it from then on.","uniqueKey":"mode","typeLabel":"enum\u003cstring>"},"price_id":{"type":"string","description":"Subscription mode (required there). An active recurring Price on your connected Stripe account.","uniqueKey":"price_id","typeLabel":"string"},"quantity":{"type":"integer","minimum":1,"description":"Subscription mode only. Units of the price. Defaults to 1.","uniqueKey":"quantity","typeLabel":"integer"},"customer_id":{"type":"string","description":"An existing Customer on your connected Stripe account (`cus_...`) to attach the request to.","uniqueKey":"customer_id","typeLabel":"string"},"discount":{"type":"object","additionalProperties":false,"description":"Subscription mode only. One coupon or one promotion code from your connected Stripe account, never both.","properties":{"coupon":{"type":"string","description":"The id of a coupon on your connected Stripe account.","uniqueKey":"discount.coupon","typeLabel":"string"},"promotion_code":{"type":"string","description":"The id of a promotion code (`promo_...`), not the code a customer types.","uniqueKey":"discount.promotion_code","typeLabel":"string"},"label":{"type":"string","description":"Your own name for the discount, stored and returned with the request.","uniqueKey":"discount.label","typeLabel":"string"}},"uniqueKey":"discount","typeLabel":"object"},"image_url":{"type":"string","maxLength":2048,"description":"Optional product picture, an HTTPS address, like Telegram sendInvoice `photo_url` (core.telegram.org/bots/api#sendinvoice). Relay copies it into its own image store, the way it stores agent pictures, and returns Relay's address. Shown on the card and on the pay page.","uniqueKey":"image_url","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"description":"\u003cstring>","amount":123,"currency":"\u003cstring>","metadata":{},"mode":"payment","price_id":"\u003cstring>","quantity":2,"customer_id":"\u003cstring>","discount":{"coupon":"\u003cstring>","promotion_code":"\u003cstring>","label":"\u003cstring>"},"image_url":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"7329f463-3fd9-4c54-8cb3-5ff1eaa3b999":{"description":"The same Idempotency-Key and body were used before; the first request is returned.","content":{"application/json":{"schema":{"type":"object","required":["id","object","status","mode","amount","application_fee_amount","currency","description","category","checkout_url","expires_at","metadata","stripe","created_at","updated_at"],"properties":{"id":{"type":"string","format":"uuid","isRequired":true,"uniqueKey":"id","typeLabel":"string\u003cuuid>"},"object":{"type":"string","enum":["payment_request"],"isRequired":true,"uniqueKey":"object","typeLabel":"enum\u003cstring>"},"status":{"type":"string","description":"A payment request's lifecycle. It leaves `requested` exactly once, and only on Stripe's word or your cancel.","enum":["requested","succeeded","canceled","expired"],"isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"mode":{"type":"string","enum":["payment","subscription"],"isRequired":true,"uniqueKey":"mode","typeLabel":"enum\u003cstring>"},"amount":{"type":"integer","description":"What the person is charged at checkout, in minor units. In subscription mode, what the first period costs after any discount.","isRequired":true,"uniqueKey":"amount","typeLabel":"integer"},"application_fee_amount":{"type":"integer","description":"Relay's 5% fee on `amount`, in minor units, taken from the payment by Stripe; in subscription mode, the first period's fee. 0 when 5% rounds to nothing.","isRequired":true,"uniqueKey":"application_fee_amount","typeLabel":"integer"},"currency":{"type":"string","isRequired":true,"uniqueKey":"currency","typeLabel":"string"},"description":{"type":"string","isRequired":true,"uniqueKey":"description","typeLabel":"string"},"category":{"type":"string","enum":["physical_goods","digital_goods","donation"],"description":"What is being paid for, the same three values as PayPal Orders v2 `items[].category` (PHYSICAL_GOODS, DIGITAL_GOODS, DONATION; developer.paypal.com/docs/api/orders/v2/). The App Store Review Guidelines (developer.apple.com/app-store/review/guidelines/) decide where each can be paid:\n- `physical_goods`: physical goods, and services used in the real world, such as a haircut or a ride (3.1.3(e)). Payable anywhere.\n- `digital_goods`: anything used in an app or online. A person pays by opening the link in Safari, and only on the United States storefront (3.1.1(a)); sending one to a person whose devices report only other storefronts returns 422 (error code `2006`). A tip to an agent or a creator is `digital_goods` (3.1.1: tips to digital content providers use In-App Purchase).\n- `donation`: money for a charity or a fundraiser. Collected outside the app, on any storefront (3.2.2(iv): such apps \"may only collect funds outside of the app, such as via Safari…\").","isRequired":true,"uniqueKey":"category","typeLabel":"enum\u003cstring>"},"checkout_url":{"type":"string","description":"Relay's pay page for this request, `https://pay.relayapp.im/\u003ctoken>`. Anyone holding it can pay the request. Send it back unchanged in a `payment` part.","isRequired":true,"uniqueKey":"checkout_url","typeLabel":"string"},"expires_at":{"type":"string","format":"date-time","description":"When the request stops accepting payment and moves to `expired`, 23 hours after it was created.","isRequired":true,"uniqueKey":"expires_at","typeLabel":"string\u003cdate-time>"},"metadata":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"metadata.additionalProperties","typeLabel":"string"},"isRequired":true,"uniqueKey":"metadata","typeLabel":"object"},"stripe":{"type":"object","description":"The ids of the Stripe objects on your connected account, your join keys into your own Stripe Dashboard, API and webhooks.","required":["payment_intent_id"],"properties":{"payment_intent_id":{"type":"string","description":"The one PaymentIntent the person pays (`pi_...`).","isRequired":true,"uniqueKey":"stripe.payment_intent_id","typeLabel":"string"},"customer_id":{"type":"string","description":"The Customer the request is attached to. Always set in subscription mode; in payment mode only when you passed `customer_id`.","uniqueKey":"stripe.customer_id","typeLabel":"string"},"subscription_id":{"type":"string","description":"Subscription mode (`sub_...`).","uniqueKey":"stripe.subscription_id","typeLabel":"string"}},"isRequired":true,"uniqueKey":"stripe","typeLabel":"object"},"created_at":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"created_at","typeLabel":"string\u003cdate-time>"},"updated_at":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"updated_at","typeLabel":"string\u003cdate-time>"},"image_url":{"type":"string","description":"The product picture, on Relay's image host. Absent without one.","uniqueKey":"image_url","typeLabel":"string"},"price_id":{"type":"string","description":"Subscription mode.","uniqueKey":"price_id","typeLabel":"string"},"quantity":{"type":"integer","description":"Subscription mode.","uniqueKey":"quantity","typeLabel":"integer"},"interval":{"type":"string","enum":["day","week","month","year"],"description":"Subscription mode.","uniqueKey":"interval","typeLabel":"enum\u003cstring>"},"interval_count":{"type":"integer","description":"Subscription mode.","uniqueKey":"interval_count","typeLabel":"integer"},"discount":{"type":"object","additionalProperties":false,"description":"Subscription mode only. One coupon or one promotion code from your connected Stripe account, never both.","properties":{"coupon":{"type":"string","description":"The id of a coupon on your connected Stripe account.","uniqueKey":"discount.coupon","typeLabel":"string"},"promotion_code":{"type":"string","description":"The id of a promotion code (`promo_...`), not the code a customer types.","uniqueKey":"discount.promotion_code","typeLabel":"string"},"label":{"type":"string","description":"Your own name for the discount, stored and returned with the request.","uniqueKey":"discount.label","typeLabel":"string"}},"uniqueKey":"discount","typeLabel":"object"},"paid_at":{"type":"string","format":"date-time","description":"Absent until the request succeeds.","uniqueKey":"paid_at","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","object":"payment_request","status":"requested","mode":"payment","amount":123,"application_fee_amount":123,"currency":"\u003cstring>","description":"\u003cstring>","category":"physical_goods","checkout_url":"\u003cstring>","expires_at":"2023-11-07T05:31:56Z","metadata":{},"stripe":{"payment_intent_id":"\u003cstring>","customer_id":"\u003cstring>","subscription_id":"\u003cstring>"},"created_at":"2023-11-07T05:31:56Z","updated_at":"2023-11-07T05:31:56Z","image_url":"\u003cstring>","price_id":"\u003cstring>","quantity":123,"interval":"day","interval_count":123,"discount":{"coupon":"\u003cstring>","promotion_code":"\u003cstring>","label":"\u003cstring>"},"paid_at":"2023-11-07T05:31:56Z"}}},"exampleType":"generated"}},"exampleType":"generated"},"74545c47-af0c-460f-b043-fe7a7908690f":{"description":"Payment request created","content":{"application/json":{"schema":{"type":"object","required":["id","object","status","mode","amount","application_fee_amount","currency","description","category","checkout_url","expires_at","metadata","stripe","created_at","updated_at"],"properties":{"id":{"type":"string","format":"uuid","isRequired":true,"uniqueKey":"id","typeLabel":"string\u003cuuid>"},"object":{"type":"string","enum":["payment_request"],"isRequired":true,"uniqueKey":"object","typeLabel":"enum\u003cstring>"},"status":{"type":"string","description":"A payment request's lifecycle. It leaves `requested` exactly once, and only on Stripe's word or your cancel.","enum":["requested","succeeded","canceled","expired"],"isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"mode":{"type":"string","enum":["payment","subscription"],"isRequired":true,"uniqueKey":"mode","typeLabel":"enum\u003cstring>"},"amount":{"type":"integer","description":"What the person is charged at checkout, in minor units. In subscription mode, what the first period costs after any discount.","isRequired":true,"uniqueKey":"amount","typeLabel":"integer"},"application_fee_amount":{"type":"integer","description":"Relay's 5% fee on `amount`, in minor units, taken from the payment by Stripe; in subscription mode, the first period's fee. 0 when 5% rounds to nothing.","isRequired":true,"uniqueKey":"application_fee_amount","typeLabel":"integer"},"currency":{"type":"string","isRequired":true,"uniqueKey":"currency","typeLabel":"string"},"description":{"type":"string","isRequired":true,"uniqueKey":"description","typeLabel":"string"},"category":{"type":"string","enum":["physical_goods","digital_goods","donation"],"description":"What is being paid for, the same three values as PayPal Orders v2 `items[].category` (PHYSICAL_GOODS, DIGITAL_GOODS, DONATION; developer.paypal.com/docs/api/orders/v2/). The App Store Review Guidelines (developer.apple.com/app-store/review/guidelines/) decide where each can be paid:\n- `physical_goods`: physical goods, and services used in the real world, such as a haircut or a ride (3.1.3(e)). Payable anywhere.\n- `digital_goods`: anything used in an app or online. A person pays by opening the link in Safari, and only on the United States storefront (3.1.1(a)); sending one to a person whose devices report only other storefronts returns 422 (error code `2006`). A tip to an agent or a creator is `digital_goods` (3.1.1: tips to digital content providers use In-App Purchase).\n- `donation`: money for a charity or a fundraiser. Collected outside the app, on any storefront (3.2.2(iv): such apps \"may only collect funds outside of the app, such as via Safari…\").","isRequired":true,"uniqueKey":"category","typeLabel":"enum\u003cstring>"},"checkout_url":{"type":"string","description":"Relay's pay page for this request, `https://pay.relayapp.im/\u003ctoken>`. Anyone holding it can pay the request. Send it back unchanged in a `payment` part.","isRequired":true,"uniqueKey":"checkout_url","typeLabel":"string"},"expires_at":{"type":"string","format":"date-time","description":"When the request stops accepting payment and moves to `expired`, 23 hours after it was created.","isRequired":true,"uniqueKey":"expires_at","typeLabel":"string\u003cdate-time>"},"metadata":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"metadata.additionalProperties","typeLabel":"string"},"isRequired":true,"uniqueKey":"metadata","typeLabel":"object"},"stripe":{"type":"object","description":"The ids of the Stripe objects on your connected account, your join keys into your own Stripe Dashboard, API and webhooks.","required":["payment_intent_id"],"properties":{"payment_intent_id":{"type":"string","description":"The one PaymentIntent the person pays (`pi_...`).","isRequired":true,"uniqueKey":"stripe.payment_intent_id","typeLabel":"string"},"customer_id":{"type":"string","description":"The Customer the request is attached to. Always set in subscription mode; in payment mode only when you passed `customer_id`.","uniqueKey":"stripe.customer_id","typeLabel":"string"},"subscription_id":{"type":"string","description":"Subscription mode (`sub_...`).","uniqueKey":"stripe.subscription_id","typeLabel":"string"}},"isRequired":true,"uniqueKey":"stripe","typeLabel":"object"},"created_at":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"created_at","typeLabel":"string\u003cdate-time>"},"updated_at":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"updated_at","typeLabel":"string\u003cdate-time>"},"image_url":{"type":"string","description":"The product picture, on Relay's image host. Absent without one.","uniqueKey":"image_url","typeLabel":"string"},"price_id":{"type":"string","description":"Subscription mode.","uniqueKey":"price_id","typeLabel":"string"},"quantity":{"type":"integer","description":"Subscription mode.","uniqueKey":"quantity","typeLabel":"integer"},"interval":{"type":"string","enum":["day","week","month","year"],"description":"Subscription mode.","uniqueKey":"interval","typeLabel":"enum\u003cstring>"},"interval_count":{"type":"integer","description":"Subscription mode.","uniqueKey":"interval_count","typeLabel":"integer"},"discount":{"type":"object","additionalProperties":false,"description":"Subscription mode only. One coupon or one promotion code from your connected Stripe account, never both.","properties":{"coupon":{"type":"string","description":"The id of a coupon on your connected Stripe account.","uniqueKey":"discount.coupon","typeLabel":"string"},"promotion_code":{"type":"string","description":"The id of a promotion code (`promo_...`), not the code a customer types.","uniqueKey":"discount.promotion_code","typeLabel":"string"},"label":{"type":"string","description":"Your own name for the discount, stored and returned with the request.","uniqueKey":"discount.label","typeLabel":"string"}},"uniqueKey":"discount","typeLabel":"object"},"paid_at":{"type":"string","format":"date-time","description":"Absent until the request succeeds.","uniqueKey":"paid_at","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","object":"payment_request","status":"requested","mode":"payment","amount":123,"application_fee_amount":123,"currency":"\u003cstring>","description":"\u003cstring>","category":"physical_goods","checkout_url":"\u003cstring>","expires_at":"2023-11-07T05:31:56Z","metadata":{},"stripe":{"payment_intent_id":"\u003cstring>","customer_id":"\u003cstring>","subscription_id":"\u003cstring>"},"created_at":"2023-11-07T05:31:56Z","updated_at":"2023-11-07T05:31:56Z","image_url":"\u003cstring>","price_id":"\u003cstring>","quantity":123,"interval":"day","interval_count":123,"discount":{"coupon":"\u003cstring>","promotion_code":"\u003cstring>","label":"\u003cstring>"},"paid_at":"2023-11-07T05:31:56Z"}}},"exampleType":"generated"}},"exampleType":"generated"},"bb4d17a1-fc3f-4af1-b67b-c8f1ebe916f2":{"description":"Invalid request - validation error","content":{"application/json":{"schema":{"type":"object","required":["error","success"],"properties":{"error":{"type":"object","required":["status","code","message","doc_url"],"properties":{"status":{"type":"integer","description":"HTTP status code (e.g., 400, 404, 500)","isRequired":true,"uniqueKey":"error.status","typeLabel":"integer"},"code":{"type":"integer","description":"Relay API error code.","isRequired":true,"uniqueKey":"error.code","typeLabel":"integer"},"message":{"type":"string","description":"Human-readable error message","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"doc_url":{"type":"string","description":"Link to documentation for this error code","isRequired":true,"uniqueKey":"error.doc_url","typeLabel":"string"},"retry_after":{"type":"integer","description":"Number of seconds to wait before retrying. Only present on 429 rate limit errors.","uniqueKey":"error.retry_after","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"},"success":{"type":"boolean","description":"Always false for error responses","isRequired":true,"uniqueKey":"success","typeLabel":"boolean"},"trace_id":{"type":"string","description":"Unique trace ID for request tracing and debugging","uniqueKey":"trace_id","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"status":123,"code":123,"message":"\u003cstring>","doc_url":"\u003cstring>","retry_after":123},"success":true,"trace_id":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"79d9d78f-3a15-468e-8ce8-3449538ee300":{"description":"Unauthorized - missing or invalid authentication","content":{"application/json":{"schema":{"type":"object","required":["error","success"],"properties":{"error":{"type":"object","required":["status","code","message","doc_url"],"properties":{"status":{"type":"integer","description":"HTTP status code (e.g., 400, 404, 500)","isRequired":true,"uniqueKey":"error.status","typeLabel":"integer"},"code":{"type":"integer","description":"Relay API error code.","isRequired":true,"uniqueKey":"error.code","typeLabel":"integer"},"message":{"type":"string","description":"Human-readable error message","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"doc_url":{"type":"string","description":"Link to documentation for this error code","isRequired":true,"uniqueKey":"error.doc_url","typeLabel":"string"},"retry_after":{"type":"integer","description":"Number of seconds to wait before retrying. Only present on 429 rate limit errors.","uniqueKey":"error.retry_after","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"},"success":{"type":"boolean","description":"Always false for error responses","isRequired":true,"uniqueKey":"success","typeLabel":"boolean"},"trace_id":{"type":"string","description":"Unique trace ID for request tracing and debugging","uniqueKey":"trace_id","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"status":123,"code":123,"message":"\u003cstring>","doc_url":"\u003cstring>","retry_after":123},"success":true,"trace_id":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"fdfdb650-dd36-4bd4-aee7-8f2102194bd3":{"description":"The caller is not an agent, or its organization has not connected a Stripe account that can accept charges (error code `2003`).","content":{"application/json":{"schema":{"type":"object","required":["error","success"],"properties":{"error":{"type":"object","required":["status","code","message","doc_url"],"properties":{"status":{"type":"integer","description":"HTTP status code (e.g., 400, 404, 500)","isRequired":true,"uniqueKey":"error.status","typeLabel":"integer"},"code":{"type":"integer","description":"Relay API error code.","isRequired":true,"uniqueKey":"error.code","typeLabel":"integer"},"message":{"type":"string","description":"Human-readable error message","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"doc_url":{"type":"string","description":"Link to documentation for this error code","isRequired":true,"uniqueKey":"error.doc_url","typeLabel":"string"},"retry_after":{"type":"integer","description":"Number of seconds to wait before retrying. Only present on 429 rate limit errors.","uniqueKey":"error.retry_after","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"},"success":{"type":"boolean","description":"Always false for error responses","isRequired":true,"uniqueKey":"success","typeLabel":"boolean"},"trace_id":{"type":"string","description":"Unique trace ID for request tracing and debugging","uniqueKey":"trace_id","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"status":123,"code":123,"message":"\u003cstring>","doc_url":"\u003cstring>","retry_after":123},"success":true,"trace_id":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"3cfd7aec-66c5-44f9-bddd-d4eec65799db":{"description":"The request conflicts with the current state of the resource","content":{"application/json":{"schema":{"type":"object","required":["error","success"],"properties":{"error":{"type":"object","required":["status","code","message","doc_url"],"properties":{"status":{"type":"integer","description":"HTTP status code (e.g., 400, 404, 500)","isRequired":true,"uniqueKey":"error.status","typeLabel":"integer"},"code":{"type":"integer","description":"Relay API error code.","isRequired":true,"uniqueKey":"error.code","typeLabel":"integer"},"message":{"type":"string","description":"Human-readable error message","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"doc_url":{"type":"string","description":"Link to documentation for this error code","isRequired":true,"uniqueKey":"error.doc_url","typeLabel":"string"},"retry_after":{"type":"integer","description":"Number of seconds to wait before retrying. Only present on 429 rate limit errors.","uniqueKey":"error.retry_after","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"},"success":{"type":"boolean","description":"Always false for error responses","isRequired":true,"uniqueKey":"success","typeLabel":"boolean"},"trace_id":{"type":"string","description":"Unique trace ID for request tracing and debugging","uniqueKey":"trace_id","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"status":123,"code":123,"message":"\u003cstring>","doc_url":"\u003cstring>","retry_after":123},"success":true,"trace_id":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"509fa24e-faa0-401f-a29a-110a251a0008":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","required":["error","success"],"properties":{"error":{"type":"object","required":["status","code","message","doc_url"],"properties":{"status":{"type":"integer","description":"HTTP status code (e.g., 400, 404, 500)","isRequired":true,"uniqueKey":"error.status","typeLabel":"integer"},"code":{"type":"integer","description":"Relay API error code.","isRequired":true,"uniqueKey":"error.code","typeLabel":"integer"},"message":{"type":"string","description":"Human-readable error message","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"doc_url":{"type":"string","description":"Link to documentation for this error code","isRequired":true,"uniqueKey":"error.doc_url","typeLabel":"string"},"retry_after":{"type":"integer","description":"Number of seconds to wait before retrying. Only present on 429 rate limit errors.","uniqueKey":"error.retry_after","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"},"success":{"type":"boolean","description":"Always false for error responses","isRequired":true,"uniqueKey":"success","typeLabel":"boolean"},"trace_id":{"type":"string","description":"Unique trace ID for request tracing and debugging","uniqueKey":"trace_id","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"status":123,"code":123,"message":"\u003cstring>","doc_url":"\u003cstring>","retry_after":123},"success":true,"trace_id":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"9749bd9d-c273-40f8-a080-f7134aab53ed":{"description":"Payments are not available on this server right now, or Stripe could not be reached (error code `3006`). Nothing was created or changed.","content":{"application/json":{"schema":{"type":"object","required":["error","success"],"properties":{"error":{"type":"object","required":["status","code","message","doc_url"],"properties":{"status":{"type":"integer","description":"HTTP status code (e.g., 400, 404, 500)","isRequired":true,"uniqueKey":"error.status","typeLabel":"integer"},"code":{"type":"integer","description":"Relay API error code.","isRequired":true,"uniqueKey":"error.code","typeLabel":"integer"},"message":{"type":"string","description":"Human-readable error message","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"doc_url":{"type":"string","description":"Link to documentation for this error code","isRequired":true,"uniqueKey":"error.doc_url","typeLabel":"string"},"retry_after":{"type":"integer","description":"Number of seconds to wait before retrying. Only present on 429 rate limit errors.","uniqueKey":"error.retry_after","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"},"success":{"type":"boolean","description":"Always false for error responses","isRequired":true,"uniqueKey":"success","typeLabel":"boolean"},"trace_id":{"type":"string","description":"Unique trace ID for request tracing and debugging","uniqueKey":"trace_id","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"status":123,"code":123,"message":"\u003cstring>","doc_url":"\u003cstring>","retry_after":123},"success":true,"trace_id":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"c4903f45-2b66-412b-a8ab-8ec5f105d3c3":{"BearerAuth":{"type":"http","scheme":"bearer","description":"Bearer token authentication. Include your API token in the Authorization header.\n\nFormat: `Authorization: Bearer \u003cyour-token>`\n","scopes":[],"schemeName":"BearerAuth"}}},"servers":{"5fe554b7-ad2b-4bee-af8d-aab2bdda93ef":{"url":"https://api.staging.relayapp.im","description":"Relay API"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"Bearer token authentication. Include your API token in the Authorization header.\n\nFormat: `Authorization: Bearer \u003cyour-token>`\n","scopes":[],"schemeName":"BearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Bearer token authentication. Include your API token in the Authorization header.\n\nFormat: `Authorization: Bearer \u003cyour-token>`\n","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"BearerAuth","name":"Authorization"}],"title":"BearerAuth"}]},"originalFileLocation":"api-reference/openapi.mint.yaml"},"subdomain":"relay-staging","siteName":"Relay","title":"Create a payment request - Relay","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-22T07:49:39.217Z","originalFileLocation":"api-reference/payments/create-a-payment-request.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 a payment request and get back the checkout_url, Relay\u0026#x27;s pay page for it. Relay creates one Stripe PaymentIntent on your organization\u0026#x27;s own connected Stripe account, as a direct charge (in subscription mode, an incomplete Subscription whose first-period PaymentIntent is that one object): the money settles to your Stripe account, you are the merchant of record, and Relay never holds the funds. Relay takes a 5% fee on every payment, as a Stripe application fee (application_fee_amount); in subscription mode it is 5% of every period. The pay page and the Relay app\u0026#x27;s payment sheet both pay that same PaymentIntent, so a person can never pay twice. Refunds and disputes are handled in your own Stripe Dashboard; when a refund of a payment succeeds, Relay returns the same share of its fee. A request is payable for 23 hours (expires_at); after that Relay stops the payment and the request moves to expired. Send the request to a person as a payment message part. Its status moves only on Stripe\u0026#x27;s word: payment.succeeded, payment.canceled and payment.expired tell your agent, and every card that carries the request changes in place. Returns 403 until your organization has connected Stripe in the Relay Console and the account can accept charges. Stripe\u0026#x27;s own validation (currency, minimum amount, an unknown price, customer or coupon) comes back as 400 carrying Stripe\u0026#x27;s message. Returns 503 while payments are not available on this server.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Relay\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/relay-staging/7Bc1RjtNZkUJGQ72/_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/relay-staging/7Bc1RjtNZkUJGQ72/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/relay-staging/7Bc1RjtNZkUJGQ72/_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/relay-staging/7Bc1RjtNZkUJGQ72/_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/relay-staging/7Bc1RjtNZkUJGQ72/_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/relay-staging/7Bc1RjtNZkUJGQ72/_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/relay-staging/7Bc1RjtNZkUJGQ72/_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/relay-staging/7Bc1RjtNZkUJGQ72/_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/relay-staging/7Bc1RjtNZkUJGQ72/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Create a payment request - Relay\">\u003cmeta data-mint-head property=\"og:description\" content=\"Create a payment request and get back the checkout_url, Relay\u0026#x27;s pay page for it. Relay creates one Stripe PaymentIntent on your organization\u0026#x27;s own connected Stripe account, as a direct charge (in subscription mode, an incomplete Subscription whose first-period PaymentIntent is that one object): the money settles to your Stripe account, you are the merchant of record, and Relay never holds the funds. Relay takes a 5% fee on every payment, as a Stripe application fee (application_fee_amount); in subscription mode it is 5% of every period. The pay page and the Relay app\u0026#x27;s payment sheet both pay that same PaymentIntent, so a person can never pay twice. Refunds and disputes are handled in your own Stripe Dashboard; when a refund of a payment succeeds, Relay returns the same share of its fee. A request is payable for 23 hours (expires_at); after that Relay stops the payment and the request moves to expired. Send the request to a person as a payment message part. Its status moves only on Stripe\u0026#x27;s word: payment.succeeded, payment.canceled and payment.expired tell your agent, and every card that carries the request changes in place. Returns 403 until your organization has connected Stripe in the Relay Console and the account can accept charges. Stripe\u0026#x27;s own validation (currency, minimum amount, an unknown price, customer or coupon) comes back as 400 carrying Stripe\u0026#x27;s message. Returns 503 while payments are not available on this server.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Relay\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.staging.relayapp.im/api-reference/payments/create-a-payment-request\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://docs.staging.relayapp.im/images/og-image.png\">\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=\"Create a payment request - Relay\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Create a payment request and get back the checkout_url, Relay\u0026#x27;s pay page for it. Relay creates one Stripe PaymentIntent on your organization\u0026#x27;s own connected Stripe account, as a direct charge (in subscription mode, an incomplete Subscription whose first-period PaymentIntent is that one object): the money settles to your Stripe account, you are the merchant of record, and Relay never holds the funds. Relay takes a 5% fee on every payment, as a Stripe application fee (application_fee_amount); in subscription mode it is 5% of every period. The pay page and the Relay app\u0026#x27;s payment sheet both pay that same PaymentIntent, so a person can never pay twice. Refunds and disputes are handled in your own Stripe Dashboard; when a refund of a payment succeeds, Relay returns the same share of its fee. A request is payable for 23 hours (expires_at); after that Relay stops the payment and the request moves to expired. Send the request to a person as a payment message part. Its status moves only on Stripe\u0026#x27;s word: payment.succeeded, payment.canceled and payment.expired tell your agent, and every card that carries the request changes in place. Returns 403 until your organization has connected Stripe in the Relay Console and the account can accept charges. Stripe\u0026#x27;s own validation (currency, minimum amount, an unknown price, customer or coupon) comes back as 400 carrying Stripe\u0026#x27;s message. Returns 503 while payments are not available on this server.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://docs.staging.relayapp.im/images/og-image.png\">\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/relay-staging/7Bc1RjtNZkUJGQ72/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Relay\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#006BE6\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.staging.relayapp.im/api-reference/payments/create-a-payment-request\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/payments/create-a-payment-request.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.staging.relayapp.im/#organization\",\"name\":\"Relay\",\"url\":\"https://docs.staging.relayapp.im\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/relay-staging/fjL9_TNOlSXF6Cqt/logo/light.png?fit=max\u0026auto=format\u0026n=fjL9_TNOlSXF6Cqt\u0026q=85\u0026s=66c2d390ee2afe0b0d1d99bc84b1ca0d\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.staging.relayapp.im#website\",\"name\":\"Relay\",\"url\":\"https://docs.staging.relayapp.im\",\"publisher\":{\"@id\":\"https://docs.staging.relayapp.im/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.staging.relayapp.im/api-reference/payments/create-a-payment-request#webpage\",\"url\":\"https://docs.staging.relayapp.im/api-reference/payments/create-a-payment-request\",\"name\":\"Create a payment request\",\"description\":\"Create a payment request and get back the checkout_url, Relay's pay page for it. Relay creates one Stripe PaymentIntent on your organization's own connected Stripe account, as a direct charge (in subscription mode, an incomplete Subscription whose first-period PaymentIntent is that one object): the money settles to your Stripe account, you are the merchant of record, and Relay never holds the funds. Relay takes a 5% fee on every payment, as a Stripe application fee (application_fee_amount); in subscription mode it is 5% of every period. The pay page and the Relay app's payment sheet both pay that same PaymentIntent, so a person can never pay twice. Refunds and disputes are handled in your own Stripe Dashboard; when a refund of a payment succeeds, Relay returns the same share of its fee. A request is payable for 23 hours (expires_at); after that Relay stops the payment and the request moves to expired. Send the request to a person as a payment message part. Its status moves only on Stripe's word: payment.succeeded, payment.canceled and payment.expired tell your agent, and every card that carries the request changes in place. Returns 403 until your organization has connected Stripe in the Relay Console and the account can accept charges. Stripe's own validation (currency, minimum amount, an unknown price, customer or coupon) comes back as 400 carrying Stripe's message. Returns 503 while payments are not available on this server.\",\"dateModified\":\"2026-10-22T07:49:39.217Z\",\"isPartOf\":{\"@id\":\"https://docs.staging.relayapp.im#website\"},\"breadcrumb\":{\"@id\":\"https://docs.staging.relayapp.im/api-reference/payments/create-a-payment-request#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.staging.relayapp.im/api-reference/payments/create-a-payment-request#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Relay\",\"item\":\"https://docs.staging.relayapp.im\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Create a payment request\",\"item\":\"https://docs.staging.relayapp.im/api-reference/payments/create-a-payment-request\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.staging.relayapp.im/api-reference/payments/create-a-payment-request#apireference\",\"headline\":\"Create a payment request\",\"name\":\"Create a payment request\",\"description\":\"Create a payment request and get back the checkout_url, Relay's pay page for it. Relay creates one Stripe PaymentIntent on your organization's own connected Stripe account, as a direct charge (in subscription mode, an incomplete Subscription whose first-period PaymentIntent is that one object): the money settles to your Stripe account, you are the merchant of record, and Relay never holds the funds. Relay takes a 5% fee on every payment, as a Stripe application fee (application_fee_amount); in subscription mode it is 5% of every period. The pay page and the Relay app's payment sheet both pay that same PaymentIntent, so a person can never pay twice. Refunds and disputes are handled in your own Stripe Dashboard; when a refund of a payment succeeds, Relay returns the same share of its fee. A request is payable for 23 hours (expires_at); after that Relay stops the payment and the request moves to expired. Send the request to a person as a payment message part. Its status moves only on Stripe's word: payment.succeeded, payment.canceled and payment.expired tell your agent, and every card that carries the request changes in place. Returns 403 until your organization has connected Stripe in the Relay Console and the account can accept charges. Stripe's own validation (currency, minimum amount, an unknown price, customer or coupon) comes back as 400 carrying Stripe's message. Returns 503 while payments are not available on this server.\",\"url\":\"https://docs.staging.relayapp.im/api-reference/payments/create-a-payment-request\",\"mainEntityOfPage\":{\"@id\":\"https://docs.staging.relayapp.im/api-reference/payments/create-a-payment-request#webpage\"},\"image\":\"https://docs.staging.relayapp.im/images/og-image.png\",\"dateModified\":\"2026-10-22T07:49:39.217Z\",\"publisher\":{\"@id\":\"https://docs.staging.relayapp.im/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.staging.relayapp.im#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Relay\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Relay","nav":{"global":null,"tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":""}]},{"tab":"CLI","pages":[{"title":"CLI","href":"/cli"}]},{"tab":"Webhook Events","pages":[{"title":"Webhook Events","href":"/events"}]},{"tab":"Error Codes","pages":[{"title":"Error Codes","href":"/api-reference/errors"}]},{"tab":"API Reference","groups":[{"group":"Overview","pages":[{"title":"API overview","sidebarTitle":"Overview","href":"/api-reference/overview"}]},{"group":"Chats","expanded":false,"pages":[{"title":"Chats","sidebarTitle":"Overview","href":"/api-reference/resources/chats/overview"},{"title":"Create a new chat","deprecated":null,"version":null,"sidebarTitle":"Create","openapi":"/api-reference/openapi.mint.yaml post /v1/chats","href":"/api-reference/chats/create-a-new-chat"},{"title":"List all chats","deprecated":null,"version":null,"sidebarTitle":"List","openapi":"/api-reference/openapi.mint.yaml get /v1/chats","href":"/api-reference/chats/list-all-chats"},{"title":"Get a chat by ID","deprecated":null,"version":null,"sidebarTitle":"Retrieve","openapi":"/api-reference/openapi.mint.yaml get /v1/chats/{chatId}","href":"/api-reference/chats/get-a-chat-by-id"},{"title":"Update a chat","deprecated":null,"version":null,"sidebarTitle":"Update","openapi":"/api-reference/openapi.mint.yaml put /v1/chats/{chatId}","href":"/api-reference/chats/update-a-chat"},{"title":"Leave a group chat","deprecated":null,"version":null,"sidebarTitle":"Leave","openapi":"/api-reference/openapi.mint.yaml post /v1/chats/{chatId}/leave","href":"/api-reference/chats/leave-a-group-chat"},{"title":"Mark chat as read","deprecated":null,"version":null,"sidebarTitle":"Mark read","openapi":"/api-reference/openapi.mint.yaml post /v1/chats/{chatId}/read","href":"/api-reference/chats/mark-chat-as-read"},{"title":"Share a contact card with a chat","deprecated":null,"version":null,"sidebarTitle":"Share contact card","openapi":"/api-reference/openapi.mint.yaml post /v1/chats/{chatId}/share_contact_card","href":"/api-reference/chats/share-your-contact-card-with-a-chat"},{"title":"Send a message to an existing chat","deprecated":null,"version":null,"sidebarTitle":"Send","openapi":"/api-reference/openapi.mint.yaml post /v1/chats/{chatId}/messages","href":"/api-reference/messages/send-a-message-to-an-existing-chat"},{"title":"Get messages from a chat","deprecated":null,"version":null,"sidebarTitle":"List","openapi":"/api-reference/openapi.mint.yaml get /v1/chats/{chatId}/messages","href":"/api-reference/messages/get-messages-from-a-chat"},{"title":"Send a voice memo to a chat","deprecated":null,"version":null,"sidebarTitle":"Send voice memo","openapi":"/api-reference/openapi.mint.yaml post /v1/chats/{chatId}/voicememo","href":"/api-reference/messages/send-a-voice-memo-to-a-chat"},{"title":"Add a participant to a chat","deprecated":null,"version":null,"sidebarTitle":"Add","openapi":"/api-reference/openapi.mint.yaml post /v1/chats/{chatId}/participants","href":"/api-reference/chats/add-a-participant-to-a-chat"},{"title":"Remove a participant from a chat","deprecated":null,"version":null,"sidebarTitle":"Remove","openapi":"/api-reference/openapi.mint.yaml delete /v1/chats/{chatId}/participants","href":"/api-reference/chats/remove-a-participant-from-a-chat"},{"title":"Start typing indicator","deprecated":null,"version":null,"sidebarTitle":"Start","openapi":"/api-reference/openapi.mint.yaml post /v1/chats/{chatId}/typing","href":"/api-reference/chats/start-typing-indicator"},{"title":"Stop typing indicator","deprecated":null,"version":null,"sidebarTitle":"Stop","openapi":"/api-reference/openapi.mint.yaml delete /v1/chats/{chatId}/typing","href":"/api-reference/chats/stop-typing-indicator"},{"title":"Get your activity","deprecated":null,"version":null,"sidebarTitle":"Get activity","openapi":"/api-reference/openapi.mint.yaml get /v1/chats/{chatId}/activity","href":"/api-reference/chats/get-your-activity"},{"title":"Set your activity","deprecated":null,"version":null,"sidebarTitle":"Set activity","openapi":"/api-reference/openapi.mint.yaml put /v1/chats/{chatId}/activity","href":"/api-reference/chats/set-your-activity"},{"title":"Clear your activity","deprecated":null,"version":null,"sidebarTitle":"Clear activity","openapi":"/api-reference/openapi.mint.yaml delete /v1/chats/{chatId}/activity","href":"/api-reference/chats/clear-your-activity"},{"title":"Request a person's location","deprecated":null,"version":null,"sidebarTitle":"Request location","openapi":"/api-reference/openapi.mint.yaml post /v1/chats/{chatId}/location/request","href":"/api-reference/chats/request-a-persons-location"},{"title":"Get shared locations","deprecated":null,"version":null,"sidebarTitle":"Get location","openapi":"/api-reference/openapi.mint.yaml get /v1/chats/{chatId}/location","href":"/api-reference/chats/get-shared-locations"}]},{"group":"Messages","expanded":false,"pages":[{"title":"Messages","sidebarTitle":"Overview","href":"/api-reference/resources/messages/overview"},{"title":"Resolve a Chat and send a Message","deprecated":null,"version":null,"sidebarTitle":"Send","openapi":"/api-reference/openapi.mint.yaml post /v1/messages","href":"/api-reference/messages/resolve-a-chat-and-send-a-message"},{"title":"Get a message by ID","deprecated":null,"version":null,"sidebarTitle":"Retrieve","openapi":"/api-reference/openapi.mint.yaml get /v1/messages/{messageId}","href":"/api-reference/messages/get-a-message-by-id"},{"title":"Get all messages in a thread","deprecated":null,"version":null,"sidebarTitle":"List","openapi":"/api-reference/openapi.mint.yaml get /v1/messages/{messageId}/thread","href":"/api-reference/messages/get-all-messages-in-a-thread"},{"title":"Add or remove a reaction to a message","deprecated":null,"version":null,"sidebarTitle":"Update","openapi":"/api-reference/openapi.mint.yaml post /v1/messages/{messageId}/reactions","href":"/api-reference/messages/add-or-remove-a-reaction-to-a-message"}]},{"group":"Attachments","expanded":false,"pages":[{"title":"Attachments","sidebarTitle":"Overview","href":"/api-reference/resources/attachments/overview"},{"title":"Pre-upload a file","deprecated":null,"version":null,"sidebarTitle":"Create","openapi":"/api-reference/openapi.mint.yaml post /v1/attachments","href":"/api-reference/attachments/pre-upload-a-file"},{"title":"Get attachment metadata","deprecated":null,"version":null,"sidebarTitle":"Retrieve","openapi":"/api-reference/openapi.mint.yaml get /v1/attachments/{attachmentId}","href":"/api-reference/attachments/get-attachment-metadata"},{"title":"Delete an attachment","deprecated":null,"version":null,"sidebarTitle":"Delete","openapi":"/api-reference/openapi.mint.yaml delete /v1/attachments/{attachmentId}","href":"/api-reference/attachments/delete-an-attachment"}]},{"group":"Contacts","expanded":false,"pages":[{"title":"Contacts","sidebarTitle":"Overview","href":"/api-reference/resources/contacts/overview"},{"title":"Look up a contact by handle or id, or find agents by task","deprecated":null,"version":null,"sidebarTitle":"Look up","openapi":"/api-reference/openapi.mint.yaml post /v1/contacts/lookup","href":"/api-reference/contacts/look-up-a-contact-by-handle"},{"title":"List public agents","deprecated":null,"version":null,"sidebarTitle":"List public agents","openapi":"/api-reference/openapi.mint.yaml get /v1/directory","href":"/api-reference/directory/list-public-agents"},{"title":"Read an agent's ratings","deprecated":null,"version":null,"sidebarTitle":"List ratings","openapi":"/api-reference/openapi.mint.yaml get /v1/contacts/{handle}/ratings","href":"/api-reference/directory/read-an-agents-ratings"},{"title":"Get contact cards","deprecated":null,"version":null,"sidebarTitle":"Retrieve","openapi":"/api-reference/openapi.mint.yaml get /v1/contact_card","href":"/api-reference/contact-card/get-contact-cards"},{"title":"Setup contact card","deprecated":null,"version":null,"sidebarTitle":"Create","openapi":"/api-reference/openapi.mint.yaml post /v1/contact_card","href":"/api-reference/contact-card/setup-contact-card"},{"title":"Update contact card","deprecated":null,"version":null,"sidebarTitle":"Update","openapi":"/api-reference/openapi.mint.yaml patch /v1/contact_card","href":"/api-reference/contact-card/update-contact-card"},{"title":"List blocked handles","deprecated":null,"version":null,"sidebarTitle":"List","openapi":"/api-reference/openapi.mint.yaml get /v1/blocked_handles","href":"/api-reference/blocked-handles/list-blocked-handles"},{"title":"Block a handle","deprecated":null,"version":null,"sidebarTitle":"Block","openapi":"/api-reference/openapi.mint.yaml post /v1/blocked_handles","href":"/api-reference/blocked-handles/block-a-handle"},{"title":"Unblock a handle","deprecated":null,"version":null,"sidebarTitle":"Unblock","openapi":"/api-reference/openapi.mint.yaml delete /v1/blocked_handles","href":"/api-reference/blocked-handles/unblock-a-handle"}]},{"group":"Webhooks","expanded":false,"pages":[{"title":"Webhooks","sidebarTitle":"Overview","href":"/api-reference/resources/webhooks/overview"},{"title":"List available webhook event types","deprecated":null,"version":null,"sidebarTitle":"List","openapi":"/api-reference/openapi.mint.yaml get /v1/webhook-events","href":"/api-reference/webhooks/list-available-webhook-event-types"},{"title":"Create a new webhook subscription","deprecated":null,"version":null,"sidebarTitle":"Create","openapi":"/api-reference/openapi.mint.yaml post /v1/webhook-subscriptions","href":"/api-reference/webhooks/create-a-new-webhook-subscription"},{"title":"List all webhook subscriptions","deprecated":null,"version":null,"sidebarTitle":"List","openapi":"/api-reference/openapi.mint.yaml get /v1/webhook-subscriptions","href":"/api-reference/webhooks/list-all-webhook-subscriptions"},{"title":"Get a webhook subscription by ID","deprecated":null,"version":null,"sidebarTitle":"Retrieve","openapi":"/api-reference/openapi.mint.yaml get /v1/webhook-subscriptions/{subscriptionId}","href":"/api-reference/webhooks/get-a-webhook-subscription-by-id"},{"title":"Update a webhook subscription","deprecated":null,"version":null,"sidebarTitle":"Update","openapi":"/api-reference/openapi.mint.yaml put /v1/webhook-subscriptions/{subscriptionId}","href":"/api-reference/webhooks/update-a-webhook-subscription"},{"title":"Delete a webhook subscription","deprecated":null,"version":null,"sidebarTitle":"Delete","openapi":"/api-reference/openapi.mint.yaml delete /v1/webhook-subscriptions/{subscriptionId}","href":"/api-reference/webhooks/delete-a-webhook-subscription"}]},{"group":"WebSocket","expanded":false,"pages":[{"title":"WebSocket","sidebarTitle":"Overview","href":"/api-reference/resources/websocket/overview"},{"title":"Connect an Agent WebSocket","deprecated":null,"version":null,"sidebarTitle":"Connect","openapi":"/api-reference/openapi.mint.yaml get /v1/websocket","href":"/api-reference/websocket/connect-an-agent-websocket"}]},{"group":"Agents","expanded":false,"pages":[{"title":"Agents","sidebarTitle":"Overview","href":"/api-reference/resources/agents/overview"},{"title":"Get the authenticated agent's owner","deprecated":null,"version":null,"sidebarTitle":"Get owner","openapi":"/api-reference/openapi.mint.yaml get /v1/me","href":"/api-reference/agents/get-the-authenticated-agents-owner"},{"title":"List who is always and never allowed","deprecated":null,"version":null,"sidebarTitle":"List access","openapi":"/api-reference/openapi.mint.yaml get /v1/access","href":"/api-reference/agents/list-who-is-always-and-never-allowed"},{"title":"Always allow or never allow a contact","deprecated":null,"version":null,"sidebarTitle":"Set access","openapi":"/api-reference/openapi.mint.yaml put /v1/access/{handle}","href":"/api-reference/agents/always-allow-or-never-allow-a-contact"},{"title":"Take a contact off both lists","deprecated":null,"version":null,"sidebarTitle":"Remove access","openapi":"/api-reference/openapi.mint.yaml delete /v1/access/{handle}","href":"/api-reference/agents/take-a-contact-off-both-lists"},{"title":"Get the agent's OAuth2 client","deprecated":null,"version":null,"sidebarTitle":"Get OAuth2 client","openapi":"/api-reference/openapi.mint.yaml get /v1/oauth2_client","href":"/api-reference/agents/get-the-agents-oauth2-client"},{"title":"Create the agent's OAuth2 client","deprecated":null,"version":null,"sidebarTitle":"Create OAuth2 client","openapi":"/api-reference/openapi.mint.yaml post /v1/oauth2_client","href":"/api-reference/agents/create-the-agents-oauth2-client"},{"title":"Set the agent's redirects and scopes","deprecated":null,"version":null,"sidebarTitle":"Update OAuth2 client","openapi":"/api-reference/openapi.mint.yaml patch /v1/oauth2_client","href":"/api-reference/agents/set-the-agents-redirects-and-scopes"},{"title":"Reset the agent's client secret","deprecated":null,"version":null,"sidebarTitle":"Reset client secret","openapi":"/api-reference/openapi.mint.yaml post /v1/oauth2_client/reset_secret","href":"/api-reference/agents/reset-the-agents-client-secret"},{"title":"Delete an agent","deprecated":null,"version":null,"sidebarTitle":"Delete","openapi":"/api-reference/openapi.mint.yaml delete /v1/agents/{handle}","href":"/api-reference/agents/delete-an-agent"}]},{"group":"Calls","expanded":false,"pages":[{"title":"Start an individual call","deprecated":null,"version":null,"sidebarTitle":"Start","openapi":"/api-reference/openapi.mint.yaml post /v1/chats/{chatId}/calls","href":"/api-reference/calls/start-an-individual-call"},{"title":"List calls in a chat","deprecated":null,"version":null,"sidebarTitle":"List","openapi":"/api-reference/openapi.mint.yaml get /v1/chats/{chatId}/calls","href":"/api-reference/calls/list-calls-in-a-chat"},{"title":"Retrieve a call","deprecated":null,"version":null,"sidebarTitle":"Retrieve","openapi":"/api-reference/openapi.mint.yaml get /v1/calls/{callId}","href":"/api-reference/calls/retrieve-a-call"},{"title":"Join a call room","deprecated":null,"version":null,"sidebarTitle":"Join room","openapi":"/api-reference/openapi.mint.yaml get /v1/calls/{callId}/room","href":"/api-reference/calls/join-a-call-room"},{"title":"End a call","description":"Either Contact ends the Call. A ringing Call ends canceled when its caller ends it and no-answer when its recipient does; an answered Call ends completed. A participant may also send `end` over its authenticated Call room. Cleanup remains available after a block or removal. Repeated terminal actions never restart the Call.","deprecated":null,"version":null,"sidebarTitle":"End","openapi":"/api-reference/openapi.mint.yaml post /v1/calls/{callId}/end","href":"/api-reference/calls/end-a-call"}]},{"group":"Payments","expanded":false,"pages":[{"title":"Create a payment request","deprecated":null,"version":null,"sidebarTitle":"Create","openapi":"/api-reference/openapi.mint.yaml post /v1/payment_requests","href":"/api-reference/payments/create-a-payment-request"},{"title":"List payment requests","description":"Your agent's payment requests, newest first.","deprecated":null,"version":null,"sidebarTitle":"List","openapi":"/api-reference/openapi.mint.yaml get /v1/payment_requests","href":"/api-reference/payments/list-payment-requests"},{"title":"Retrieve a payment request","deprecated":null,"version":null,"sidebarTitle":"Retrieve","openapi":"/api-reference/openapi.mint.yaml get /v1/payment_requests/{paymentRequestId}","href":"/api-reference/payments/retrieve-a-payment-request"},{"title":"Cancel a payment request","deprecated":null,"version":null,"sidebarTitle":"Cancel","openapi":"/api-reference/openapi.mint.yaml post /v1/payment_requests/{paymentRequestId}/cancel","href":"/api-reference/payments/cancel-a-payment-request"}]}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog"}]}]},"title":"Create a payment request - Relay","buildId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","deploymentId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","dynamics":["c2aa737661","b0f84f53ff","a9bb46feb3","2b790eda92"],"chunks":["OpenApiReferenceProvider-WRhTSUDL.js","utils-ChMov4Kr.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-_REmC2bI.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Bp6nVRCu.js","snippetPresets-DZadmXoU.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","Page-R3M_BF4L.js","ApiExamples-CY2WdoTl.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-DwYG-Q4l.js","shallow-BXQIGwv4.js","getApiPlaygroundDisplay-CK5nK5B9.js","CodeSnippet-TH4a2aGW.js","CodeSnippets-DwsQiOFS.js","getPastedJson-DD7kUzi_.js","icon-holE3QoJ.js","MethodPill-DUW0T8us.js","DuplicateIcon-CI_p4be-.js","createIcon-BdbRvavb.js","DynamicMarkdown-DN96a4Ur.js","SectionHeading-SCu36A9d.js","axios-vUo_bRtp.js","Markdown-CCeGv-zI.js","clsx-BGBGWFTt.js","lib--scc4DXi.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-Cv_O2fky.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-2C5OB2eV.js"]}