Build financial products for businesses

Give every business customer a white-label digital asset account it controls. Each business manages its own funds, team, and approval workflows, while your platform defines how money can move.

Platform view· the other side
Each business here gets its own account. See how the payment service provider (PSP) behind them runs accounts for many businesses, with platform guardrails it sets for all of them. Open the platform view
  1. Create the platform client

    Docs

    Create one Dynamic client for your application, then add the blockchain networks your platform supports.

    lib/dynamic/client.ts
    import { createDynamicClient } from "@dynamic-labs-sdk/client";
    import { addEvmExtension } from "@dynamic-labs-sdk/evm";
    import { addSolanaExtension } from "@dynamic-labs-sdk/solana";
    
    export const client = createDynamicClient({
      environmentId: process.env.NEXT_PUBLIC_DYNAMIC_ENVIRONMENT_ID!,
    });
    addEvmExtension(client);
    addSolanaExtension(client);
  2. Connect Dynamic to your platform

    Docs

    Wrap your application with QueryClientProvider and DynamicProvider so Dynamic hooks are available across your platform.

    app/providers.tsx
    import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
    import { DynamicProvider } from "@dynamic-labs-sdk/react-hooks";
    import { client } from "@/lib/dynamic/client";
    
    const queryClient = new QueryClient();
    
    export function Providers({ children }: { children: React.ReactNode }) {
      return (
        <QueryClientProvider client={queryClient}>
          <DynamicProvider client={client}>{children}</DynamicProvider>
        </QueryClientProvider>
      );
    }
  3. Give each team member their own login

    Docs

    Send a one-time code to their email, then verify it to sign them in.

    components/screens/auth-screen.tsx
    import { useSendEmailOTP, useVerifyOTP } from "@dynamic-labs-sdk/react-hooks";
    
    const { mutate: sendOtp, data: otpVerification } = useSendEmailOTP();
    const { mutate: verifyOtp } = useVerifyOTP();
    
    sendOtp({ email });
    // User types the 6-digit code from their inbox:
    verifyOtp({ otp: code, otpVerification });
  4. Show the organizations they can access

    List the organizations available to the signed-in user. Each organization represents a business they belong to.

    hooks/use-business-accounts.ts
    import { listBusinessAccounts } from "@dynamic-labs-sdk/client/waas";
    
    const { items = [], nextCursor } = await listBusinessAccounts();
    for (const account of items) {
      console.log(account.id, account.name, account.externalRef);
    }
Accounts - Dynamic Demos