Members reach a payment page headed by a name the console never showed them #13

Closed
opened 2026-09-21 07:18:05 +00:00 by cgalo5758 · 1 comment
Owner

What a person cannot do today

Learn who will charge their card before they are on the payment provider's page. Subscribing hands off to Stripe Checkout with a bare redirect, and that page is headed by the Stripe account's public business name. When an operator never sets that name, Stripe copies the account's registered legal name into it, and into the statement descriptor that appears on the member's card statement. Where the legal name differs from the deployment's own, the first time a member reads it is above the card fields, on a page that is not the console's, and again on their card statement.

What they should be able to do

A member reads who will bill them, and what the charge will be called on their card statement, on the console's own Products page before the hand-off, and again when they return after paying. The console says nothing when both names already match the deployment's own name. An operator sees on the console the names members will see, and which of them still carry the legal name.

Why it matters

Two independent walks of the purchase path reported the same surprise: the page that asks for a card is headed by a name nothing in the product introduced. That reads as a misdirected payment and is reason enough to abandon the purchase. A charge under an unrecognised statement line is a known source of disputes and chargebacks, which cost the operator money. The console is software other operators deploy with their own Stripe accounts, so each install has to notice this on its own; a fix made once in one account's settings does not reach the next deployment.

Where

internal/server/operator_integrations_stripe.go and its template, the Stripe provider page; internal/integrations/stripe/workflows/environment_check.go, the existing read-back this sits beside; internal/embeds/templates/partials/member_plans.html and member_addons.html, the Products page sections; internal/embeds/templates/index.html, the return from Stripe; docs/stripe.md and docs/production-deployment.md.

Done when

  • The console reads the names members will see without requiring any new permission on the API key. Where the key can read the Stripe account, it reads the public business name, the statement descriptor and the icon. Where it cannot, it reads the public business name from an invoice preview, and the statement descriptor from the latest charge once one exists.
  • The Stripe provider page shows those values, marks the public name or the descriptor when either matches the account's legal name, marks a missing icon, and states what it could not read and which key permission would allow it.
  • The Products page carries one line under the Plans heading and one under the add-ons heading, each only when that section has a button leading to Stripe and the billing name or the statement text would not be recognised against the deployment's own name. Each such button is described by its section's line for screen readers.
  • The notice shown on returning from Stripe after paying carries the same facts under the same condition.
  • The Stripe documentation tells operators to set the public business name, the statement descriptor and the icon on the live account and on every sandbox, and describes the optional read permission and what it exposes.
  • Every scenario has a screen at desktop and mobile width: both key cases on the provider page, billing off, one ladder, many ladders with add-ons, add-ons only, matching names, a known and an unknown statement descriptor, the return after paying, and a plan switch that never visits Stripe.

Migrated from status/issues.md at b7a0e15

## What a person cannot do today Learn who will charge their card before they are on the payment provider's page. Subscribing hands off to Stripe Checkout with a bare redirect, and that page is headed by the Stripe account's public business name. When an operator never sets that name, Stripe copies the account's registered legal name into it, and into the statement descriptor that appears on the member's card statement. Where the legal name differs from the deployment's own, the first time a member reads it is above the card fields, on a page that is not the console's, and again on their card statement. ## What they should be able to do A member reads who will bill them, and what the charge will be called on their card statement, on the console's own Products page before the hand-off, and again when they return after paying. The console says nothing when both names already match the deployment's own name. An operator sees on the console the names members will see, and which of them still carry the legal name. ## Why it matters Two independent walks of the purchase path reported the same surprise: the page that asks for a card is headed by a name nothing in the product introduced. That reads as a misdirected payment and is reason enough to abandon the purchase. A charge under an unrecognised statement line is a known source of disputes and chargebacks, which cost the operator money. The console is software other operators deploy with their own Stripe accounts, so each install has to notice this on its own; a fix made once in one account's settings does not reach the next deployment. ## Where [`internal/server/operator_integrations_stripe.go`](https://git.coopcloud.tech/wiki-cafe/member-console/src/commit/94334c0/internal/server/operator_integrations_stripe.go) and its template, the Stripe provider page; [`internal/integrations/stripe/workflows/environment_check.go`](https://git.coopcloud.tech/wiki-cafe/member-console/src/commit/94334c0/internal/integrations/stripe/workflows/environment_check.go), the existing read-back this sits beside; [`internal/embeds/templates/partials/member_plans.html`](https://git.coopcloud.tech/wiki-cafe/member-console/src/commit/94334c0/internal/embeds/templates/partials/member_plans.html) and `member_addons.html`, the Products page sections; `internal/embeds/templates/index.html`, the return from Stripe; `docs/stripe.md` and `docs/production-deployment.md`. ## Done when - The console reads the names members will see without requiring any new permission on the API key. Where the key can read the Stripe account, it reads the public business name, the statement descriptor and the icon. Where it cannot, it reads the public business name from an invoice preview, and the statement descriptor from the latest charge once one exists. - The Stripe provider page shows those values, marks the public name or the descriptor when either matches the account's legal name, marks a missing icon, and states what it could not read and which key permission would allow it. - The Products page carries one line under the Plans heading and one under the add-ons heading, each only when that section has a button leading to Stripe and the billing name or the statement text would not be recognised against the deployment's own name. Each such button is described by its section's line for screen readers. - The notice shown on returning from Stripe after paying carries the same facts under the same condition. - The Stripe documentation tells operators to set the public business name, the statement descriptor and the icon on the live account and on every sandbox, and describes the optional read permission and what it exposes. - Every scenario has a screen at desktop and mobile width: both key cases on the provider page, billing off, one ladder, many ladders with add-ons, add-ons only, matching names, a known and an unknown statement descriptor, the return after paying, and a plan switch that never visits Stripe. Migrated from status/issues.md at b7a0e15
cgalo5758 added this to the Public launch milestone 2026-09-21 07:18:05 +00:00
Author
Owner

Fixed in 27fb02f. The Stripe provider page shows the public business name, the statement descriptor and the icon, marks a name or descriptor that still equals the legal name, and says what the key could not read and which permission would allow it. The Products page, and the notice on returning from checkout, say who bills the member and what their card statement will show whenever either would not be recognised.

Fixed in 27fb02f. The Stripe provider page shows the public business name, the statement descriptor and the icon, marks a name or descriptor that still equals the legal name, and says what the key could not read and which permission would allow it. The Products page, and the notice on returning from checkout, say who bills the member and what their card statement will show whenever either would not be recognised.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: wiki-cafe/member-console#13