A shared EUR billing control layer

A SaaS billing platform built around one trustworthy order model.

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

Keep price identity on the server.

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.

01

Original-site checkout

Mount Stripe Embedded Checkout in each product's own modal and use the shared recovery page only as an explicit fallback.

02

Subscriptions

Track trialing, active, past-due, paused, canceled, and unpaid states from verified Stripe events.

03

Billing management

Open Stripe Billing Portal using the app-scoped customer and subscription route stored on the order.

Explicit state

Billing is a state machine, not a success flag.

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.

SignalOrder actionProduct effect
payment completedMark paidGrant mapped entitlement
payment pendingKeep processingWait for settlement
renewal failedKeep historyMark access past due
refund succeedsPartial or full refundRevoke when required
dispute createdMark disputedPause access pending outcome

Merchant and tenant isolation

Mindepy and EUR by design.

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.

EURapp-scoped reviewed catalogs
Mindepyone Stripe merchant boundary
Signedper-App entitlement callbacks

Questions, answered

Frequently asked questions

Can the browser change a price or currency?

No. The backend sends a registered SKU, and Vidle Pay loads its trusted EUR Stripe Price and immutable billing contract from the server catalog.

How are subscriptions managed?

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

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.