> ## Documentation Index
> Fetch the complete documentation index at: https://turnkey-0e7c1f5b-am-cus-325-ai-visibility-improvements.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Turnkey is wallet infrastructure: create and manage crypto wallets, sign transactions, and enforce policy-based access controls. Best-fit uses: embedded consumer wallets (email/passkey/social auth, no seed phrases), automated onchain operations with server-side wallets, AI agent wallets with policy-scoped signing, enterprise key management, and verifiable off-chain workloads on Turnkey Verifiable Cloud (TVC).
> Every API call is a JSON POST to https://api.turnkey.com signed with a P-256 API key; create an organization and key self-serve at https://app.turnkey.com.
> Key Turnkey developer resources: API reference (https://docs.turnkey.com/api-reference/overview/intro.md), OpenAPI spec (https://docs.turnkey.com/public_api.swagger.json), authentication (https://docs.turnkey.com/features/authentication/overview.md), webhooks (https://docs.turnkey.com/features/webhooks/overview.md), MCP server for docs search (https://docs.turnkey.com/mcp), agent skills (https://docs.turnkey.com/get-started/ai-skills.md), CLI (https://docs.turnkey.com/sdks/cli.md), SDK reference (https://docs.turnkey.com/sdks/introduction.md), full docs content (https://docs.turnkey.com/llms-full.txt).

# Sub-organization customization

## Overview

The Embedded Wallet Kit allows you to customize the sub-organization creation process in your React Native application. This is useful if you want to create a more tailored experience for your users, including automatically creating wallets, having multiple authentication methods, default usernames, and more. These can be individually configured for each authentication method.

## Customization

You can customize the `createSuborgParams` object inside the `auth` object in the `TurnkeyProvider` configuration. This object allows you to set various parameters for the sub-organization creation process.

Each authentication method can have its own set of parameters. For example, you can set a different default `userName` for `emailOtpAuth` and `passkeyAuth` methods, or create different wallets for each authentication method.

```tsx theme={"system"}
import {
  TurnkeyProvider,
  TurnkeyProviderConfig,
} from "@turnkey/react-native-wallet-kit";

function App() {
  const turnkeyConfig: TurnkeyProviderConfig = {
    //... your existing configuration
    auth: {
      createSuborgParams: {
        emailOtpAuth: {
          userName: "An email user",
          customWallet: {
            walletName: "Email Wallet",
            walletAccounts: [
              // This will create one Ethereum wallet account for users that sign up with email OTP
              {
                curve: "CURVE_SECP256K1",
                pathFormat: "PATH_FORMAT_BIP32",
                path: `m/44'/60'/0'/0/0`,
                addressFormat: "ADDRESS_FORMAT_ETHEREUM",
              },
            ],
          },
        },
        passkeyAuth: {
          userName: "A passkey user",
          customWallet: {
            walletName: "Passkey Wallet",
            walletAccounts: [
              // This will create one Solana wallet account for users that sign up with passkeys
              {
                curve: "CURVE_ED25519",
                pathFormat: "PATH_FORMAT_BIP32",
                path: `m/44'/501'/0'/0'`,
                addressFormat: "ADDRESS_FORMAT_SOLANA",
              },
            ],
          },
        },
      },
    },
  };

  return <TurnkeyProvider config={turnkeyConfig}>{children}</TurnkeyProvider>;
}
```

Or, you can set the same parameters for all authentication methods:

```tsx theme={"system"}
import {
  TurnkeyProvider,
  TurnkeyProviderConfig,
} from "@turnkey/react-native-wallet-kit";
import type { CreateSubOrgParams } from "@turnkey/core";

function App() {
  const suborgParams: CreateSubOrgParams = {
    userName: `User-${new Date().getTime()}`,
    customWallet: {
      walletName: `Wallet-${new Date().getTime()}`,
      walletAccounts: [
        // All users that sign up will have this wallet created
        {
          curve: "CURVE_SECP256K1",
          pathFormat: "PATH_FORMAT_BIP32",
          path: `m/44'/60'/0'/0/0`,
          addressFormat: "ADDRESS_FORMAT_ETHEREUM",
        },
      ],
    },
  };

  const turnkeyConfig: TurnkeyProviderConfig = {
    //... your existing configuration
    auth: {
      createSuborgParams: {
        emailOtpAuth: suborgParams,
        smsOtpAuth: suborgParams,
        passkeyAuth: { ...suborgParams, passkeyName: "My Passkey" }, // For passkey authentication, you can also set a custom name for the passkey (optional)
        oauth: suborgParams,
      },
    },
  };

  return <TurnkeyProvider config={turnkeyConfig}>{children}</TurnkeyProvider>;
}
```

For a complete list of available parameters, inspect the `CreateSubOrgParams` interface in `@turnkey/core`.

## Next steps

Now that you know how to customize the sub-orgs created in your React Native application, check out the [Advanced API Requests](/solutions/embedded-wallets/integration-guide/react/advanced-api-requests) guide to learn how to make advanced API requests to Turnkey's infrastructure.
This will help you build more complex features and functionalities in your app that go beyond what is included as helper functions in the SDK.
