Provider-owned payment UI

Stripe Embedded Checkout in a same-page payment modal.

Customers stay on the approved product origin in a DOM modal—not a browser popup or automatic redirect—while Stripe owns the payment interface and Vidle Pay owns the trusted order contract.

Original-site modal

Mount Stripe directly where the purchase begins.

The product backend creates an authenticated checkout for one registered app-scoped EUR SKU. The browser receives a publishable key and short-lived Checkout client secret, then the shared widget mounts Stripe's provider-owned iframe in the product modal.

Vidle Pay is never nested inside another payment iframe. If Stripe requires external authentication, Stripe controls that transition and returns to the App's approved origin.

Browser receives

Only session-scoped provider data.

  • Stripe publishable key
  • Checkout client secret
  • Vidle Pay order ID
  • Short-lived recovery URL
  • No server credential or trusted amount

Completion

The modal callback is not payment proof.

Stripe can tell the browser that Checkout completed, but the product does not grant access from that message. It polls its authenticated order endpoint while the shared webhook verifies and queues the authoritative Stripe event.

If settlement is delayed, the modal shows a pending state. It never turns a timeout into a false success. The customer can close the page while server processing continues.

Idempotent creation

Retries with the same order ID must preserve the same user, SKU, quantity, and request fingerprint.

Exact origin

Return URLs come from the registered product origin and cannot be supplied by the browser.

Verified fulfillment

App-specific signed callbacks and stable event IDs make entitlement changes replay-safe.

Recovery

Use a top-level recovery page only when necessary.

If Stripe.js or the product modal cannot initialize, the product may offer the recovery URL returned with the same order. The user chooses that navigation explicitly; the system does not silently create a second payment attempt.

Link

Let Stripe decide when Link is eligible.

When enabled for Mindepy and available to the buyer, Link can appear inside the same Embedded Checkout iframe. No separate Link SDK or Link-specific fulfillment path is required.

Questions, answered

Frequently asked questions

Does Vidle Pay receive card numbers?

No. Stripe renders and receives sensitive payment details. Vidle Pay receives only the Stripe identifiers and status needed for reconciliation.

What if Embedded Checkout cannot load?

Offer the short-lived recovery URL as an explicit top-level action. It keeps the same order and server-side catalog boundary.

Can browser popup blocking stop the payment modal?

No. The widget creates a modal in the current document and does not call window.open(). Stripe still controls any separate authentication experience required by a bank.

Build on a reliable payment boundary

Give every SaaS product one secure way to charge.

Start with the integration guide, then register the app, domain, and server credentials before enabling checkout.