> ## Documentation Index
> Fetch the complete documentation index at: https://docs.crossmint.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Components

> React components for React SDK reference for Crossmint checkout

## CrossmintEmbeddedCheckout

### Props

<ResponseField name="appearance" type="EmbeddedCheckoutV3Appearance">
  <Expandable title="properties">
    <ResponseField name="fonts" type="{ cssSrc: string }[]">
      <Expandable title="properties">
        <ResponseField name="cssSrc" type="string" required />
      </Expandable>
    </ResponseField>

    <ResponseField name="rules" type="EmbeddedCheckoutV3AppearanceRules">
      <Expandable title="properties">
        <ResponseField name="DestinationInput" type="{ display?: &#x22;hidden&#x22; }">
          <Expandable title="properties">
            <ResponseField name="display" type="&#x22;hidden&#x22;" />
          </Expandable>
        </ResponseField>

        <ResponseField name="Input" type="object">
          <Expandable title="properties">
            <ResponseField name="borderRadius" type="string" />

            <ResponseField name="colors" type="{ background?: string; border?: string; boxShadow?: string; placeholder?: string; text?: string }" />

            <ResponseField name="focus" type="{ colors?: { background?: string; border?: string; boxShadow?: string } }" />

            <ResponseField name="font" type="{ family?: string; size?: string; weight?: string }" />

            <ResponseField name="hover" type="{ colors?: { background?: string; border?: string; boxShadow?: string; text?: string } }" />
          </Expandable>
        </ResponseField>

        <ResponseField name="Label" type="{ colors?: { text?: string }; font?: { family?: string; size?: string; weight?: string } }">
          <Expandable title="properties">
            <ResponseField name="colors" type="{ text?: string }" />

            <ResponseField name="font" type="{ family?: string; size?: string; weight?: string }" />
          </Expandable>
        </ResponseField>

        <ResponseField name="PrimaryButton" type="object">
          <Expandable title="properties">
            <ResponseField name="borderRadius" type="string" />

            <ResponseField name="colors" type="{ background?: string; text?: string }" />

            <ResponseField name="disabled" type="{ colors?: { background?: string; text?: string } }" />

            <ResponseField name="font" type="{ family?: string; size?: string; weight?: string }" />

            <ResponseField name="hover" type="{ colors?: { background?: string; text?: string } }" />
          </Expandable>
        </ResponseField>

        <ResponseField name="ReceiptEmailInput" type="{ display?: &#x22;hidden&#x22; }">
          <Expandable title="properties">
            <ResponseField name="display" type="&#x22;hidden&#x22;" />
          </Expandable>
        </ResponseField>

        <ResponseField name="Tab" type="object">
          <Expandable title="properties">
            <ResponseField name="borderRadius" type="string" />

            <ResponseField name="colors" type="{ background?: string; border?: string; boxShadow?: string; text?: string }" />

            <ResponseField name="font" type="{ family?: string; size?: string; weight?: string }" />

            <ResponseField name="hover" type="{ colors?: { background?: string; border?: string; boxShadow?: string; text?: string } }" />

            <ResponseField name="selected" type="{ colors?: { background?: string; border?: string; boxShadow?: string; text?: string } }" />
          </Expandable>
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="variables" type="EmbeddedCheckoutV3AppearanceVariables">
      <Expandable title="properties">
        <ResponseField name="borderRadius" type="string" />

        <ResponseField name="colors" type="object">
          <Expandable title="properties">
            <ResponseField name="accent" type="string" />

            <ResponseField name="backgroundPrimary" type="string" />

            <ResponseField name="borderPrimary" type="string" />

            <ResponseField name="danger" type="string" />

            <ResponseField name="textPrimary" type="string" />

            <ResponseField name="textSecondary" type="string" />

            <ResponseField name="warning" type="string" />
          </Expandable>
        </ResponseField>

        <ResponseField name="fontFamily" type="string" />

        <ResponseField name="fontSizeUnit" type="string" />

        <ResponseField name="spacingUnit" type="string" />
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="clientSecret" type="string" />

<ResponseField name="jwt" type="string" />

<ResponseField name="orderId" type="string" />

<ResponseField name="payment" type="EmbeddedCheckoutV3Payment" required>
  <Expandable title="properties">
    <ResponseField name="crypto" type="EmbeddedCheckoutV3CryptoPayment" required>
      <Expandable title="properties">
        <ResponseField name="defaultChain" type="BlockchainIncludingTestnet" />

        <ResponseField name="defaultCurrency" type="CryptoCurrency" />

        <ResponseField name="enabled" type="boolean" required />

        <ResponseField name="payer" type="EmbeddedCheckoutPayer">
          <Expandable title="properties">
            <ResponseField name="address" type="string" required />

            <ResponseField name="initialChain" type="PayerSupportedBlockchains" required />

            <ResponseField name="supportedChains" type="PayerSupportedBlockchains[]" />

            <ResponseField name="handleChainSwitch" type="unknown" required />

            <ResponseField name="handleSignAndSendTransaction" type="unknown" required />

            <ResponseField name="handleSignMessage" type="unknown" />
          </Expandable>
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="defaultMethod" type="&#x22;fiat&#x22; | &#x22;crypto&#x22;" />

    <ResponseField name="fiat" type="EmbeddedCheckoutV3FiatPayment" required>
      <Expandable title="properties">
        <ResponseField name="allowedMethods" type="{ applePay?: boolean; card?: boolean; googlePay?: boolean }">
          <Expandable title="properties">
            <ResponseField name="applePay" type="boolean" />

            <ResponseField name="card" type="boolean" />

            <ResponseField name="googlePay" type="boolean" />
          </Expandable>
        </ResponseField>

        <ResponseField name="defaultCurrency" type="FiatCurrency" />

        <ResponseField name="enabled" type="boolean" required />
      </Expandable>
    </ResponseField>

    <ResponseField name="receiptEmail" type="string" />
  </Expandable>
</ResponseField>

<ResponseField name="lineItems" type="EmbeddedCheckoutV3LineItem | EmbeddedCheckoutV3LineItem[]">
  <Expandable title="properties">
    <ResponseField name="callData" type="Record<string, any>" />

    <ResponseField name="collectionLocator" type="string" />

    <ResponseField name="tokenLocator" type="string" />

    <ResponseField name="executionParameters" type="Record<string, any>" />

    <ResponseField name="productLocator" type="string" />
  </Expandable>
</ResponseField>

<ResponseField name="locale" type="Locale" />

<ResponseField name="metadata" type="JSONObject" />

<ResponseField name="recipient" type="EmbeddedCheckoutV3Recipient">
  <Expandable title="properties">
    <ResponseField name="email" type="string" />

    <ResponseField name="physicalAddress" type="EmbeddedCheckoutV3PhysicalAddress">
      <Expandable title="properties">
        <ResponseField name="city" type="string" required />

        <ResponseField name="country" type="&#x22;US&#x22;" required />

        <ResponseField name="line1" type="string" required />

        <ResponseField name="line2" type="string" />

        <ResponseField name="name" type="string" required />

        <ResponseField name="postalCode" type="string" required />

        <ResponseField name="state" type="string" required />
      </Expandable>
    </ResponseField>

    <ResponseField name="walletAddress" type="string" />
  </Expandable>
</ResponseField>

### Usage

```tsx theme={null}
import { CrossmintEmbeddedCheckout } from "@crossmint/client-sdk-react-ui";

function Checkout() {
    return (
        <CrossmintEmbeddedCheckout
            lineItems={{
                collectionLocator: "crossmint:YOUR_COLLECTION_ID",
                callData: {
                    totalPrice: "0.001",
                },
            }}
            payment={{
                crypto: {
                    enabled: true,
                    defaultChain: "base-sepolia",
                    defaultCurrency: "usdc",
                },
                fiat: {
                    enabled: true,
                    defaultCurrency: "usd",
                    allowedMethods: {
                        card: true,
                        applePay: true,
                        googlePay: true,
                    },
                },
                receiptEmail: "buyer@example.com",
            }}
            recipient={{ email: "buyer@example.com" }}
            locale="en-US"
        />
    );
}
```

***

## CrossmintHostedCheckout

### Props

<ResponseField name="appearance" type="CrossmintHostedCheckoutV3Appearance">
  <Expandable title="properties">
    <ResponseField name="display" type="&#x22;popup&#x22; | &#x22;new-tab&#x22; | &#x22;same-tab&#x22;" />

    <ResponseField name="overlay" type="CrossmintHostedCheckoutV3OverlayOptions">
      <Expandable title="properties">
        <ResponseField name="enabled" type="boolean" required />
      </Expandable>
    </ResponseField>

    <ResponseField name="rules" type="HostedCheckoutV3AppearanceRules">
      <Expandable title="properties">
        <ResponseField name="DestinationInput" type="{ display?: &#x22;hidden&#x22; }">
          <Expandable title="properties">
            <ResponseField name="display" type="&#x22;hidden&#x22;" />
          </Expandable>
        </ResponseField>

        <ResponseField name="ReceiptEmailInput" type="{ display?: &#x22;hidden&#x22; }">
          <Expandable title="properties">
            <ResponseField name="display" type="&#x22;hidden&#x22;" />
          </Expandable>
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="theme" type="{ button?: CrossmintHostedCheckoutV3ButtonTheme; checkout?: CrossmintHostedCheckoutV3Theme }">
      <Expandable title="properties">
        <ResponseField name="button" type="CrossmintHostedCheckoutV3ButtonTheme" />

        <ResponseField name="checkout" type="CrossmintHostedCheckoutV3Theme" />
      </Expandable>
    </ResponseField>

    <ResponseField name="variables" type="CrossmintHostedCheckoutV3AppearanceVariables">
      <Expandable title="properties">
        <ResponseField name="colors" type="{ accent?: string }">
          <Expandable title="properties">
            <ResponseField name="accent" type="string" />
          </Expandable>
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="lineItems" type="EmbeddedCheckoutV3LineItem | EmbeddedCheckoutV3LineItem[]">
  <Expandable title="properties">
    <ResponseField name="callData" type="Record<string, any>" />

    <ResponseField name="collectionLocator" type="string" />

    <ResponseField name="tokenLocator" type="string" />

    <ResponseField name="executionParameters" type="Record<string, any>" />

    <ResponseField name="productLocator" type="string" />
  </Expandable>
</ResponseField>

<ResponseField name="locale" type="Locale" />

<ResponseField name="metadata" type="JSONObject" />

<ResponseField name="payment" type="HostedCheckoutV3Payment" required>
  <Expandable title="properties">
    <ResponseField name="crypto" type="HostedCheckoutV3CryptoPayment" required>
      <Expandable title="properties">
        <ResponseField name="defaultChain" type="BlockchainIncludingTestnet" />

        <ResponseField name="defaultCurrency" type="CryptoCurrency" />

        <ResponseField name="enabled" type="boolean" required />
      </Expandable>
    </ResponseField>

    <ResponseField name="defaultMethod" type="&#x22;fiat&#x22; | &#x22;crypto&#x22;" />

    <ResponseField name="fiat" type="HostedCheckoutV3FiatPayment" required>
      <Expandable title="properties">
        <ResponseField name="defaultCurrency" type="FiatCurrency" />

        <ResponseField name="enabled" type="boolean" required />
      </Expandable>
    </ResponseField>

    <ResponseField name="receiptEmail" type="string" />
  </Expandable>
</ResponseField>

<ResponseField name="recipient" type="EmbeddedCheckoutV3Recipient">
  <Expandable title="properties">
    <ResponseField name="email" type="string" />

    <ResponseField name="physicalAddress" type="EmbeddedCheckoutV3PhysicalAddress">
      <Expandable title="properties">
        <ResponseField name="city" type="string" required />

        <ResponseField name="country" type="&#x22;US&#x22;" required />

        <ResponseField name="line1" type="string" required />

        <ResponseField name="line2" type="string" />

        <ResponseField name="name" type="string" required />

        <ResponseField name="postalCode" type="string" required />

        <ResponseField name="state" type="string" required />
      </Expandable>
    </ResponseField>

    <ResponseField name="walletAddress" type="string" />
  </Expandable>
</ResponseField>

<ResponseField name="clientSecret" type="string" />

<ResponseField name="orderId" type="string" />

### Usage

```tsx theme={null}
import { CrossmintHostedCheckout } from "@crossmint/client-sdk-react-ui";

function BuyButton() {
    return (
        <CrossmintHostedCheckout
            lineItems={{
                collectionLocator: "crossmint:YOUR_COLLECTION_ID",
                callData: {
                    totalPrice: "0.001",
                },
            }}
            payment={{
                crypto: {
                    enabled: true,
                    defaultChain: "base-sepolia",
                    defaultCurrency: "usdc",
                },
                fiat: {
                    enabled: true,
                    defaultCurrency: "usd",
                },
                receiptEmail: "buyer@example.com",
            }}
            recipient={{ email: "buyer@example.com" }}
            appearance={{
                display: "popup",
                overlay: { enabled: true },
                theme: {
                    button: "dark",
                    checkout: "light",
                },
            }}
            locale="en-US"
        />
    );
}
```

***

## CrossmintPaymentMethodManagement

### Props

<ResponseField name="allowedModes" type="&#x22;new&#x22; | &#x22;existing&#x22;[]">
  Which sections the management UI renders. `["new"]` (default) shows only the "add new" section: no saved-methods fetch, no auto-open/auto-select of an existing method. Include `"existing"` to also show the saved-methods section.
</ResponseField>

<ResponseField name="allowedPaymentMethodTypes" type="PaymentMethodManagementAllowedType[]">
  Filter array of which method types the "add new" section offers (default `["card"]`). LM0 renders the first supported entry; passing more than one type does not yet render a type picker.
</ResponseField>

<ResponseField name="appearance" type="PaymentMethodManagementAppearance">
  <Expandable title="properties">
    <ResponseField name="fonts" type="EmbeddedCheckoutV3Appearance[&#x22;fonts&#x22;]" />

    <ResponseField name="rules" type="EmbeddedCheckoutV3Appearance[&#x22;rules&#x22;]" />

    <ResponseField name="variables" type="EmbeddedCheckoutV3Appearance[&#x22;variables&#x22;]" />
  </Expandable>
</ResponseField>

<ResponseField name="jwt" type="string" required />

<ResponseField name="onPaymentMethodSelected" type="(paymentMethod: CrossmintPaymentMethod) => void | Promise<void>" />

### Usage

```tsx theme={null}
import { CrossmintPaymentMethodManagement } from "@crossmint/client-sdk-react-ui";

function PaymentMethods({ jwt }: { jwt: string }) {
    return (
        <CrossmintPaymentMethodManagement
            jwt={jwt}
            allowedModes={["new", "existing"]}
            allowedPaymentMethodTypes={["card"]}
            onPaymentMethodSelected={(paymentMethod) => {
                if (paymentMethod.type === "card") {
                    console.log("Card selected:", paymentMethod.card.last4);
                }
            }}
        />
    );
}
```

> **Note:** CrossmintPaymentMethodManagement renders an iframe-based UI for managing saved payment methods. Requires a valid JWT for authentication. The onPaymentMethodSelected callback receives a discriminated union — narrow on `type` before accessing variant-specific fields.
