Original-site checkout
Mount Stripe Embedded Checkout in each product's own modal and use the shared recovery page only as an explicit fallback.
A shared EUR billing control layer
Connect approved products to an app-scoped EUR billing contract without letting the browser choose prices, users, merchant routes, or return destinations.
Catalog before checkout
Every billable feature begins as an App-scoped SKU. The canonical record identifies an active Mindepy Stripe Price, EUR amount in minor units, payment mode, billing interval, and entitlement key.
When a backend requests checkout, its app key selects exactly one product and the SKU selects that App's approved catalog entry. The authenticated user and unique external order ID make every request tenant-scoped and idempotent.
This gives finance and engineering one durable answer to which product, seller, Price, and entitlement produced a charge.
Mount Stripe Embedded Checkout in each product's own modal and use the shared recovery page only as an explicit fallback.
Track trialing, active, past-due, paused, canceled, and unpaid states from verified Stripe events.
Open Stripe Billing Portal using the app-scoped customer and subscription route stored on the order.
Explicit state
A one-time order can be created, open, processing, paid, fulfilled, failed, expired, partially refunded, refunded, or disputed. Preserving those states prevents temporary payment delays from looking like permanent success or failure.
Refund and dispute events can revoke or restore an entitlement without rewriting the immutable payment history.
| Signal | Order action | Product effect |
|---|---|---|
| payment completed | Mark paid | Grant mapped entitlement |
| payment pending | Keep processing | Wait for settlement |
| renewal failed | Keep history | Mark access past due |
| refund succeeds | Partial or full refund | Revoke when required |
| dispute created | Mark disputed | Pause access pending outcome |
Merchant and tenant isolation
Every order snapshots the Mindepy route and App ID. Stripe event retrieval, reconciliation, Billing Portal, refunds, and disputes must use the same account and tenant that created the object.
Database checks reject another Stripe merchant route, and the Worker exposes no second Stripe key path. A provider outage never changes the legal seller behind an existing order.
Signed product callbacks use a versioned app-derived secret and stable event ID so retries cannot grant access twice.
Questions, answered
No. The backend sends a registered SKU, and Vidle Pay loads its trusted EUR Stripe Price and immutable billing contract from the server catalog.
Verified Stripe invoice and subscription events synchronize state. Each product can open Stripe Billing Portal only for a customer stored under its authenticated App.
Build on a reliable payment boundary
Start with the integration guide, then register the app, domain, and server credentials before enabling checkout.