Skip to main content

createCheckoutTransaction

Creates a new checkout transaction for a specified amount and currency. This is the first step in the checkout flow, returning a transaction object with an ID used for all subsequent operations. Before calling this function, ensure you have a valid checkoutId from your Dynamic dashboard. If no checkoutId is provided, the SDK falls back to the first checkout configured for your environment.

Usage

import { createCheckoutTransaction } from '@dynamic-labs-sdk/client';

const response = await createCheckoutTransaction({
  amount: '25.00',
  currency: 'USD',
  checkoutId: 'your-checkout-id',
});

console.log('Transaction ID:', response.transaction.id);
console.log('Status:', response.transaction.executionState);

Parameters

ParameterTypeDescription
amountstringThe payment amount (e.g., '25.00').
currencystringThe fiat currency code (e.g., 'USD').
checkoutIdstring (optional)The checkout configuration ID from the Dynamic dashboard. Falls back to the first configured checkout if omitted.
destinationAddressesDestinationAddress[] (optional)Settlement addresses for receiving funds. Each entry has an address and chain.
expiresInnumber (optional)Time in seconds before the transaction expires.
memoobject (optional)Arbitrary metadata to attach to the transaction.

DestinationAddress

FieldTypeDescription
addressstringThe wallet address to receive settlement funds.
chainChainThe blockchain chain (e.g., 'EVM', 'SOL').

Returns

Promise<CheckoutTransactionCreateResponse> - A promise that resolves to the created transaction:
type CheckoutTransactionCreateResponse = {
  transaction: CheckoutTransaction;
  sessionToken: string;
};
The CheckoutTransaction object includes:
type CheckoutTransaction = {
  id: string;                          // Unique transaction ID
  checkoutId: string;                  // Associated checkout config
  status: string;                      // Current status
  amount: string;                      // Payment amount
  currency: string;                    // Fiat currency code
  executionState?: CheckoutExecutionState;
  settlementState?: CheckoutSettlementState;
  riskState?: CheckoutRiskState;
  quote?: CheckoutTransactionQuote;    // Conversion quote (when available)
  sourceType?: CheckoutSourceType;
  fromChainId?: string;
  fromChainName?: Chain;
  fromToken?: string;
  txHash?: string;                     // On-chain transaction hash (after broadcast)
};

Examples

Basic checkout

import { createCheckoutTransaction } from '@dynamic-labs-sdk/client';

const response = await createCheckoutTransaction({
  amount: '10.00',
  currency: 'USD',
});

const { transaction } = response;
console.log('Created transaction:', transaction.id);

With destination addresses

import { createCheckoutTransaction } from '@dynamic-labs-sdk/client';

const response = await createCheckoutTransaction({
  amount: '50.00',
  currency: 'USD',
  checkoutId: 'checkout_abc123',
  destinationAddresses: [
    {
      address: '0x742d35Cc6634C0532925a3b844Bc9e7595f7ABCD',
      chain: 'EVM',
    },
    {
      address: 'BMA4wb2dcuhghUCYTPT1Z95vtPhoZKKj4CizxmEKaoVR',
      chain: 'SOL',
    }
  ],
});

With expiration and metadata

import { createCheckoutTransaction } from '@dynamic-labs-sdk/client';

const response = await createCheckoutTransaction({
  amount: '100.00',
  currency: 'USD',
  checkoutId: 'checkout_abc123',
  expiresIn: 600, // 10 minutes
  memo: {
    orderId: 'order_12345',
    productName: 'Premium Plan',
  },
});