Rheo documentation
Developer guide

Stripe Payment Links

Collect payment in a web funnel with a Stripe Payment Link on an Integration Node. No host Stripe backend required.

Purpose

Collect payment in a web funnel with a Stripe Payment Link. Create the link in the Stripe Dashboard, paste it on a Rheo Integration Node, and the web SDK redirects. Rheo never stores Stripe API keys, and your host app does not need a Checkout Session endpoint for this path.

How to

  1. In Stripe, create a Payment Link for the plan or product you want to sell.
  2. In Rheo, add an Integration Node and choose Stripe.
  3. Paste the Payment Link URL (https://buy.stripe.com/… or another https://*.stripe.com host).
  4. Wire outcomes: Purchased, Cancelled, Dismissed, Failed, plus required Fallback.
  5. In Stripe → Payment Link → After payment → Redirect, send users back to the page that mounts <Flow />.
  6. In Rheo, open App settings → Convert settings → Integrations. On the Web SDK card, copy the Stripe webhook URL into Stripe, save the webhook signing secret, and add the funnel origin under Allowed web origins.

Recommended return URL (either works):

https://yoursite.com/onboarding?rheo_stripe_status=success

or Stripe’s session template on your funnel URL:

https://yoursite.com/onboarding?session_id={CHECKOUT_SESSION_ID}

You can also call buildStripePaymentLinkReturnUrl from @getrheo/react to add rheo_stripe_status=success for you.

  1. Embed the flow (no Stripe adapter):
import { RheoProvider, Flow } from '@getrheo/react';

<RheoProvider
  config={{
    publishableKey: '…',
  }}
>
  <Flow channelId="ch_…" />
</RheoProvider>

Multiple plans

Use a plan-selection screen with branching, and send each plan to its own Stripe Integration Node with that plan’s Payment Link. Same flow construct; different links per branch.

Resume after redirect

Before leaving your site, the SDK registers a checkout attempt and saves the in-progress session in sessionStorage. A matched return restores that session and advances the graph. It does not count as revenue.

  • success (rheo_stripe_status=success or session_id=cs_test_… / cs_live_…, with a saved attempt) → purchase_completed
  • any other session_id is ignored
  • Back with no success marker checks the attempt. Confirmed payment still takes Purchased. A still-pending attempt takes Cancelled.

iap_purchase is written only when Stripe sends checkout.session.completed to the app webhook and the attempt matches.

Mobile SDKs

Native SDKs soft-fail Stripe surfaces (Fallback). Use RevenueCat / Superwall for mobile IAP. Channel pin shows a non-blocking warning when a version mixes mobile-only and web-only steps.