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.

Status Implemented Last reviewed 2026-08-06 All user flows →
User intent

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

ElementDestination
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

IDScreenUser task
P0LandingChoose an entry point
P10Payment page (owner link)Review invoice and start payment
P11Stripe hosted checkoutEnter card and confirm
P12Return / cancelledSee confirmation or backing-out notice
P13Webhook (machine)Settle payment and grant entitlement
P14Entitlement / deliveryDownload 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

  1. The payment page shows the amount, the published terms, and a pre-filled identity form.
  2. The visitor can correct their details but cannot change the amount.
  3. POST to /paiement/<ref>/demarrer/ opens Stripe Checkout.
  4. The return page shows settlement status; if the webhook has not arrived yet it says “confirmation en cours”.
  5. 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.txt and 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

StateWhat the visitor seesWhat happens next
PendingPayment page with invoice details, “continuer vers le paiement sécurisé”Redirect to Stripe
ProcessingReturn page: “confirmation en cours”Webhook settles the row
PaidReturn page: receipt, download links, next instalment if anyBuyer downloads or books
Cancelled“Vous avez annulé le paiement” — nothing was chargedBuyer may restart
FailedError message, no chargeBuyer retries or contacts support