Path D
Owner-issued payment link
The owner console mints a payment link for a quote or a rebilled expense and sends it to the buyer.
What the visitor is trying to do
“I received a payment link from the owner and I need to review the invoice, confirm my details, and pay securely.”
Entry points
| Element | Destination |
|---|---|
| Owner email payment link | /paiement/<ref>/ |
Flow
flowchart LR
OWNER["Owner console"] --> ISSUE["POST /owner/quote/<ref>/lien-paiement"]
ISSUE --> EMAIL["Email with payment link"]
EMAIL --> PAGE["/paiement/<ref>/
Payment page"]
PAGE --> FORM["Identity form"]
FORM --> START["POST /paiement/<ref>/demarrer/"]
START --> SESSION["Stripe Checkout session"]
SESSION --> RETURN["/paiement/<ref>/retour/"]
SESSION --> CANCEL["/paiement/<ref>/annule/"]
RETURN --> WEBHOOK["Webhook confirms PAID"]
WEBHOOK --> ENTITLE["Entitlement + delivery link"]
Screen inventory
| ID | Screen | User task |
|---|---|---|
| P0 | Landing | Choose an entry point |
| P10 | Payment page (owner link) | Review invoice and start payment |
| P11 | Stripe hosted checkout | Enter card and confirm |
| P12 | Return / cancelled | See confirmation or backing-out notice |
| P13 | Webhook (machine) | Settle payment and grant entitlement |
| P14 | Entitlement / delivery | Download file or see access instructions |
Flow scenario
Scenario D1
Pay an owner-issued invoice
Trigger
- Owner generates a payment link from the quote console
- Link is sent by email to the buyer
- Buyer clicks the link
Experience
- The payment page shows the amount, the published terms, and a pre-filled identity form.
- The visitor can correct their details but cannot change the amount.
- POST to
/paiement/<ref>/demarrer/opens Stripe Checkout. - The return page shows settlement status; if the webhook has not arrived yet it says “confirmation en cours”.
- For subscriptions, the page links to the Stripe customer portal.
Trust and safety rules
- The amount charged is always read from the stored quote or settlement — never from a browser field.
- The terms version is frozen at payment creation time; later CGV updates do not retroactively change an open payment.
- The return page never declares a payment settled: it shows “confirmation en cours” until the signed webhook arrives.
- No card data touches the server. Stripe hosts the checkout page and returns the buyer via HTTPS.
- An owner-issued link is a capability: holding the reference is what grants the right to pay that invoice.
- Payment pages are blocked by
robots.txtand carry no editorial SEO value.
Interaction rules
- The visitor can correct identity details but cannot change the amount or terms.
- For subscriptions, the page links to the Stripe customer portal for cancellation, card updates, and invoice history.
- Mobile fields use 16 px text to avoid browser zoom; choice targets are at least 44×44 px.
- Reduced-motion preferences disable nonessential transitions.
Result states
| State | What the visitor sees | What happens next |
|---|---|---|
| Pending | Payment page with invoice details, “continuer vers le paiement sécurisé” | Redirect to Stripe |
| Processing | Return page: “confirmation en cours” | Webhook settles the row |
| Paid | Return page: receipt, download links, next instalment if any | Buyer downloads or books |
| Cancelled | “Vous avez annulé le paiement” — nothing was charged | Buyer may restart |
| Failed | Error message, no charge | Buyer retries or contacts support |