Idempotent creation
Retries with the same order ID must preserve the same user, SKU, quantity, and request fingerprint.
Provider-owned payment UI
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
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
Completion
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.
Retries with the same order ID must preserve the same user, SKU, quantity, and request fingerprint.
Return URLs come from the registered product origin and cannot be supplied by the browser.
App-specific signed callbacks and stable event IDs make entitlement changes replay-safe.
Recovery
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
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
No. Stripe renders and receives sensitive payment details. Vidle Pay receives only the Stripe identifiers and status needed for reconciliation.
Offer the short-lived recovery URL as an explicit top-level action. It keeps the same order and server-side catalog boundary.
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
Start with the integration guide, then register the app, domain, and server credentials before enabling checkout.