@fantastic.dev/better-stripe 0.20.0 → 0.20.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -14,6 +14,12 @@
14
14
  - Remove internal tracker references from public documentation and add a
15
15
  regression check that prevents their reintroduction.
16
16
 
17
+ ## [0.20.1](https://github.com/FantasticDevHQ/better-stripe/compare/v0.20.0...v0.20.1) (2026-10-15)
18
+
19
+ ### Documentation
20
+
21
+ - record live saved-card verification and sandbox setup ([#178](https://github.com/FantasticDevHQ/better-stripe/issues/178)) ([18d8b30](https://github.com/FantasticDevHQ/better-stripe/commit/18d8b30cd739c90e68508bd4d119297dc219da5c))
22
+
17
23
  ## [0.20.0](https://github.com/FantasticDevHQ/better-stripe/compare/v0.19.0...v0.20.0) (2026-10-15)
18
24
 
19
25
  ### Features
package/README.md CHANGED
@@ -49,7 +49,7 @@ claim primitives alone do not enforce a minimum.
49
49
 
50
50
  ## Status
51
51
 
52
- **Version**: `0.20.0` <!-- x-release-please-version --> (pre-1.0). API may change between minor versions until 1.0.
52
+ **Version**: `0.20.1` <!-- x-release-please-version --> (pre-1.0). API may change between minor versions until 1.0.
53
53
 
54
54
  Used in production by its authors. Webhook pipeline is covered by unit tests and a live E2E harness (`npm run e2e:webhooks`) that fires real Stripe-signed events and asserts the ledger.
55
55
 
@@ -1649,6 +1649,23 @@ Creation and browser confirmation are not settlement proof. Customer-account
1649
1649
  operations require Accounts v2 support in the sandbox or merchant account; the
1650
1650
  [customer preview guide](docs/accounts-v2-preview.md) explains eligibility.
1651
1651
 
1652
+ #### Live sandbox verification, 2026-10-15
1653
+
1654
+ The public intent APIs and `SaveCard` passed real Stripe test-mode verification
1655
+ at commit `332d49c`, merged in [PR #166](https://github.com/FantasticDevHQ/better-stripe/pull/166).
1656
+ Browser 3DS failure, retry on the same SetupIntent, and successful authentication
1657
+ passed. A card saved for `off_session` use then succeeded on a later PaymentIntent;
1658
+ all successful test payments were refunded. Provider checks also covered customer
1659
+ ownership, redisplay permission, idempotent retries and declines.
1660
+
1661
+ The initial `non_connect_platform_accounts_v2_access_blocked` error was resolved
1662
+ by enabling Connect in the intended Connect test sandbox. The browser flow used
1663
+ `2026-09-30.endive`; separate API checks also passed on `2026-09-30.preview`.
1664
+ This does not establish customer-only preview eligibility for another account.
1665
+ See the [sandbox setup findings](docs/accounts-v2-preview.md#connect-sandbox-setup-findings-2026-10-15),
1666
+ [authentication and reuse results](docs/react-workflows.md#live-authentication-and-reuse-results-2026-10-15),
1667
+ and [uploaded screenshots and provider records](https://github.com/FantasticDevHQ/better-stripe/pull/166#issuecomment-6185124292).
1668
+
1652
1669
  ## Component history and currency summaries
1653
1670
 
1654
1671
  See the [read contract guide](docs/read-contracts.md) for reactive product, price and payout
@@ -16,7 +16,7 @@ enable the account feature or extend BetterStripe's supported-version list.
16
16
 
17
17
  ## Enable the sandbox feature first
18
18
 
19
- In the intended sandbox, the account owner must enable **Reusable payment
19
+ For a non-Connect merchant, the account owner must enable **Reusable payment
20
20
  methods for Global Payouts** under **Account previews and features**. If the toggle
21
21
  is unavailable or disabled, check account-owner permissions and request access
22
22
  using Stripe's form. A disabled toggle alone does not identify the cause. This also enables Stripe's
@@ -28,6 +28,44 @@ Accounts and changes how Stripe-hosted integrations create customers. Review
28
28
  Stripe's limitations and migration behavior before changing any live account.
29
29
  See [Stripe's customer Account guide](https://docs.stripe.com/accounts-v2/use-accounts-as-customers).
30
30
 
31
+ ## Connect sandbox setup findings, 2026-10-15
32
+
33
+ Saved-card setup verification initially encountered
34
+ `non_connect_platform_accounts_v2_access_blocked` while creating a
35
+ customer-configured Account. Changing between the supported GA and preview
36
+ request versions did not resolve the account eligibility block.
37
+
38
+ For the Connect integration under test, enabling Connect in the existing
39
+ standalone test sandbox resolved the block. We used Stripe CLI `1.53.1` and its
40
+ `tools` plugin `0.15.0`. With an authenticated CLI profile for the intended
41
+ sandbox, replace `YOUR_SANDBOX_PROFILE` with its profile name:
42
+
43
+ ```sh
44
+ stripe --project-name YOUR_SANDBOX_PROFILE tools enable_connect --json
45
+ ```
46
+
47
+ Confirm the profile points to the intended standalone sandbox before running it.
48
+ The tool enables Connect in that sandbox and is idempotent. Its help states that
49
+ live accounts and sandboxes controlled by another platform are not eligible.
50
+ Inspect `stripe tools enable_connect --help` for the installed version's behavior.
51
+ See Stripe's [sandbox guide](https://docs.stripe.com/sandboxes) and
52
+ [Connect guide](https://docs.stripe.com/connect).
53
+
54
+ After enablement, customer-account provisioning, SetupIntent authentication and
55
+ later saved-card payments passed with test credentials. The browser flow used
56
+ `2026-09-30.endive`; separate API checks passed on `2026-09-30.preview` in the
57
+ same Connect-enabled sandbox. These results do not prove non-Connect preview
58
+ eligibility. A merchant using customer-only Accounts must follow the preview
59
+ setup above rather than enabling Connect merely to bypass the block. Neither
60
+ BetterStripe nor a different request version enables Stripe account features.
61
+
62
+ The [live verification evidence](https://github.com/FantasticDevHQ/better-stripe/pull/166#issuecomment-6185124292)
63
+ contains screenshots and sanitized provider records. The
64
+ [React guide](react-workflows.md#live-authentication-and-reuse-results-2026-10-15)
65
+ records authentication and reuse outcomes. Successful test payments were refunded,
66
+ unfinished intents canceled, saved test cards detached and fixture products/prices
67
+ archived. No live account configuration or live payment was part of these checks.
68
+
31
69
  ## Configure one client and its webhook route
32
70
 
33
71
  ```ts
@@ -609,6 +609,37 @@ Existing `AddCardForm` and `PaymentMethods` tokenization/attach integrations rem
609
609
  available. Tokenization plus attachment does not complete SetupIntent or SCA
610
610
  verification.
611
611
 
612
+ ### Live authentication and reuse results, 2026-10-15
613
+
614
+ The public `SaveCard` workflow and `BetterStripe.createSetupIntent` /
615
+ `BetterStripe.createPaymentIntent` methods were exercised against real Stripe.js
616
+ and Stripe test APIs at commit `332d49c`, merged in
617
+ [PR #166](https://github.com/FantasticDevHQ/better-stripe/pull/166).
618
+ The Connect-enabled sandbox used `2026-09-30.endive` for browser confirmation.
619
+ Separate API checks also passed on `2026-09-30.preview`.
620
+
621
+ | Check | Observed result |
622
+ | -------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
623
+ | Explicit consent and repeated provisioning with the same request key | Off-session setup accepted; retries returned the same intent. |
624
+ | Card `4000000000003220`, failed 3DS challenge then retry | A retryable authentication error appeared. Retrying the same SetupIntent and completing 3DS succeeded. Stripe SetupAttempts recorded both outcomes. |
625
+ | Card `4000002500003155`, setup then later off-session payment | 3DS setup succeeded with `usage: "off_session"` and `allow_redisplay: "always"`. The saved method belonged to the expected V2 customer; the later payment succeeded and was refunded. |
626
+ | Later off-session reuse of card ending `3220` | Stripe returned `authentication_required`. Successful setup does not guarantee every later payment can avoid authentication. |
627
+ | API decline and payment retry checks | Decline returned `card_declined` / `requires_payment_method`; same-key payment provisioning returned the same intent. |
628
+
629
+ Use these public test card numbers only in a Stripe test payment form, with a
630
+ future expiration and test CVC. Use Stripe's test PaymentMethod IDs for API tests.
631
+ See [Stripe's testing guide](https://docs.stripe.com/testing#regulatory-cards).
632
+
633
+ [Uploaded screenshots and provider records](https://github.com/FantasticDevHQ/better-stripe/pull/166#issuecomment-6185124292)
634
+ show the challenge, retryable failure and successful reuse. No continuous video
635
+ was recorded. Test payments were refunded and disposable fixtures cleaned up.
636
+ The test used a local ownership fixture for the host callback. It verifies package
637
+ orchestration and actual provider authentication, not production application
638
+ authentication, redirect-return recovery, webhook delivery or Dojo's saved-card UI.
639
+ Consumer applications still need to verify their own authenticated adapters and saved-card UI.
640
+ See [sandbox setup findings](accounts-v2-preview.md#connect-sandbox-setup-findings-2026-10-15)
641
+ for the account eligibility requirement.
642
+
612
643
  ## Component history and currency summaries
613
644
 
614
645
  See the [read contract guide](read-contracts.md) for reactive product, price and payout
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fantastic.dev/better-stripe",
3
- "version": "0.20.0",
3
+ "version": "0.20.1",
4
4
  "description": "A Convex component for Stripe V2 Accounts API integration.",
5
5
  "keywords": [
6
6
  "stripe",