## Summary - remove hosted email-payment/payment-link creation from POS and order management - automatically capture authorized card payments instead of exposing a manual capture action - replace provider-specific Stripe wording with card-terminal terminology - retain ordinary terminal payment, receipts, order completion, and navigation - add focused unit and Playwright regression coverage Paired API change: https://github.com/copenhagentruckwash/api/pull/327 ## Verification - focused frontend unit tests: 8/8 passed - desktop card-payment Playwright: 4/4 passed - mobile card-payment Playwright: 15/15 passed - admin order action rail Playwright: 3/3 passed - ESLint, translation generation/checks, build, and diff checks passed - all 18 visual states passed their relevant DOM assertions ## Visual change previews ### View: Regular POS card-payment view **Description:** The hosted email-payment action is removed and provider-specific wording becomes generic card-terminal wording. #### Mobile **Before:**  **After:**  #### Tablet **Before:**  **After:**  #### Desktop **Before:**  **After:**  ### View: Authorized payment capture **Description:** The manual capture action is replaced by an automatically initiated capture and its in-progress state. #### Mobile **Before:**  **After:**  #### Tablet **Before:**  **After:**  #### Desktop **Before:**  **After:**  ### View: Order-dashboard action rail **Description:** The hosted Stripe invoice/payment-link action is removed while normal order actions remain. #### Mobile **Before:**  **After:**  #### Tablet **Before:**  **After:**  #### Desktop **Before:**  **After:**  ## Residual risk No live Stripe Terminal hardware or production Stripe account was used. Browser behavior is verified with repository-owned mocks; the API suite verifies route and payment-intent lifecycle wiring.
Stripe cleanup visual evidence
Authentic browser captures compare origin/master at
fd31609cb379cda36fb16ef7077fc9db3c91eb2b with the feature at
6e795b253062606e6122cc7e630e17651b9b7efd.
Both revisions were rendered by their own Vite applications and exercised with the repository's mocked Playwright API support. No production API, Stripe account, or product-source modification was used to create the evidence.
Regular POS card-payment view
The baseline identifies the integration as Stripe and offers an email payment. The feature uses provider-neutral card-terminal wording and removes the hosted email-payment action while preserving terminal payment.
| Device | Before | After |
|---|---|---|
| Mobile | Before | After |
| Tablet | Before | After |
| Desktop | Before | After |
Authorized payment capture
Both revisions receive a mocked payment intent in requires_capture state. The
baseline exposes a manual capture action. The feature automatically issues the
capture request and shows its in-progress state without a second manual action.
| Device | Before | After |
|---|---|---|
| Mobile | Before | After |
| Tablet | Before | After |
| Desktop | Before | After |
Order-dashboard action rail
The baseline action rail includes the hosted Stripe invoice/payment-link action. The feature removes it while preserving receipts, ordinary order completion, and navigation.
| Device | Before | After |
|---|---|---|
| Mobile | Before | After |
| Tablet | Before | After |
| Desktop | Before | After |
All nine paired states passed their relevant DOM assertions across Chromium mobile, tablet, and desktop projects.