> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.fluveo.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.fluveo.com/_mcp/server.

# The hosted payment page

> **Status: test-only.** Customers can complete a test-mode payment on the hosted page at
> `pay.fluveo.com`, reached via the `url` on a [Checkout Session](/checkout/checkout-sessions)
> or a [payment link](/checkout/payment-links).

> **Coming from Stripe? Hosted Checkout is not Elements.** "Payment Element" in Stripe is a
> client-side component you mount in your own page. Hosted Checkout is a complete
> Fluveo page — you redirect to it, or show the whole page in an iframe (see
> [Embed Fluveo Checkout in an iframe](/checkout/embed-in-iframe)). If you need an
> in-page card form of your own, no public Elements/publishable-key flow is currently
> certified.

When a customer opens the session/link `url`, Fluveo serves a complete payment page:

* **The Fluveo runtime at `/v1/fluveo.js`** renders the payment form (card fields,
  wallets where enabled, and any required 3-D Secure step). It runs on Fluveo's
  domain, not yours, and exposes `window.Fluveo` in the browser.
* **Card data goes to the vault, never to you.** PANs are captured directly into the
  card vault (VGS) on the hosted page, so the raw card number never touches your
  servers — this is what keeps your PCI scope at its lowest.
* **On completion, Fluveo redirects** the customer to the `success_url` (or
  `cancel_url`), appending the session id so your return handler can look it up.
  Inside an iframe it sends your page a message instead
  ([Embed Fluveo Checkout in an iframe](/checkout/embed-in-iframe)).

## Your responsibilities

The hosted page handles collection; you handle the bookends:

1. **Create** the [Checkout Session](/checkout/checkout-sessions) (or link) and
   redirect to its `url`.
2. **On return**, re-retrieve server-side and fulfill only when paid — see the
   [Checkout overview](/checkout/overview) golden path.
3. **Reconcile server-side** by retrieving the Checkout Session until it reaches
   a terminal state. You may also use a signed merchant WebhookEndpoint.

## Runtime boundary

Hosted Checkout delivers the browser runtime as part of the page. There is no
loader package to install for this redirect flow. A fully custom in-app card
form is not part of the promoted public contract because Fluveo does not issue
publishable keys today.