[email protected] through [email protected].
Highlights
- Stripe pay-with-crypto — the
stripewidget prop arms a Stripe checkout that settles USDC on your chosen chain. See Stripe Onramp. intentIdon widget callbacks — every lifecycle callback that fires after a quote exists now carries the intent id alongsidesessionId, so you can correlate widget events with the Trails API and Trailscan without reading it off the quote object.- Card onramps land on the destination chain — Meld and Stripe card onramps buy the destination token directly when the provider supports it, falling back to USDC on Base otherwise.
- Robinhood Chain support — chain id 4663.
Stripe Checkout
Set thestripe prop to charge a fiat price and settle in USDC. The prop takes TrailsStripeCheckoutProps:
amountCents(required) — price in USD cents. The browser declares this value under a public key, so verify the settled amount and order reference server-side before fulfilling the order.orderRef(optional) — merchant order label attached to the PaymentIntent metadata. It is also the checkout-identity key: changing it mints a fresh checkout reference. Prefer supplying it; when omitted, one checkout reference spans the prop’s lifetime.chainId(optional) — settlement chain. Live merchant keys accept Base (8453, default), Polygon (137) and Ethereum (1); test keys settle on Base Sepolia (84532) only.testMode(optional) — set when the project’s merchant key is a Stripe test-mode key.
merchantCheckout prop), fires the new onPaymentCreated callback, and reports intentId on onSuccess. Use getStripeSettlementChainIds()
to validate the settlement chain for your merchant key, and the useIntentSettlement hook to observe settlement state outside the widget.
useQuote accepts a settlement option with the same settlement quote params.
See Stripe Onramp for the full integration.
intentId
intentId: string | nullis added to the payloads ofonQuote,onSignRequest,onSign,onSignReject,onApproveRequest,onApprove,onApproveReject,onStatus,onOriginConfirmation,onDestinationConfirmation, and to the mode-specific success and error callbacks (onPaymentSuccess/onPaymentError,onFundingSuccess/onFundingError,onSwapSuccess/onSwapError,onEarnSuccess/onEarnError,onWithdrawSuccess/onWithdrawError). TheTrailsWidgetequivalentsonSuccessandonErrorgain it too.intentIdis the id of the intent created for the active quote. It isnullfor passthrough quotes (same-chain, same-token transfers that need no intent) and resets whenever a new quote cycle begins.- The
*Startcallbacks fire before quoting and keep their{ sessionId }payload.onOpenandonCloseare unchanged.
Card Onramps
- Card onramps (Meld and Stripe) buy the destination token directly when the provider supports it, and fall back to USDC on Base otherwise. The landing token is resolved before the quote is shown, and quote origins are locked to the landing.
- Stripe or Meld is picked automatically by country; a chooser screen appears only when both are available. The provider screen is titled “Pay by card”.
- Filter the provider list with
onramp.cardProviders, an allowlist of"stripe"and"meld"values. Omit it to offer every provider the deployment advertises; unknown values are ignored, and a list with no known value behaves like no list. Meld quote rejections now surface the provider’s reason instead of a generic API error.
Robinhood Chain
Robinhood Chain (id 4663) joins the supported chains. See Supported Chains.Features
defaultDisplayCurrencywidget prop: ISO 4217 code (e.g."NZD") for the fiat currency used to display amounts. Defaults to"USD"; a currency the user picks in preferences takes precedence.disablePassthroughonuseQuoteand the widget: same-chain, same-token wallet quotes default to a passthrough transfer that skips intent orchestration. Setting it forces the intent flow — the SDK sendsoptions.disablePassthroughon theQuoteIntentrequest and reports the quote as not passthrough-eligible. Default:false.
Fixes
- Keep polling the intent receipt after a failed wallet send instead of stopping at the error.
- Widget screens, and the WalletConnect QR container, honor the theme CSS variables.
- Fall back to Trails’ WalletConnect runtime when host adapters have no pairing connector, and hide embedded-wallet connectors such as Privy’s from the connect list unless the host features them.
- Mesh integrations without account linking skip the auth-only link and create the link token at the deposit step; the Mesh funding countdown is anchored to the committed intent’s expiry instead of a hard-coded 5 minutes.
- Order the widget chain filter by the shared chain order, and show the history and settings header buttons on the funding method screen.
- Guard null token arrays in intent history balances.
- Session, request and element ids are generated from Web Crypto (
crypto.getRandomValues) instead ofMath.random.
New Exports
CheckoutEventBase({ sessionId: string; intentId: string | null }) andTransactionConfirmationEventfrom0xtrails.useIntentSettlement, theIntentSettlementStatetype, andgetStripeSettlementChainIdsfrom0xtrails.TrailsStripeCheckoutPropsvia the widget props.
API Bindings
options.disablePassthroughonQuoteIntentrequests in@0xtrails/api, and the settlement types regenerated for the Stripe checkout flow.
Breaking Changes
- Bluvo onramp support is removed (deprecated server-side on Sep 18). The Bluvo exchange option no longer appears; remove any
bluvoreferences from your onramp configuration. - The
intentIdfield itself is additive: handlers that destructuresessionIdkeep working, and a handler you typed yourself as{ sessionId: string }still compiles because the widget passes a superset.