Skip to main content
executeYieldTransaction is the method the Dynamic SDK calls when depositToYieldVault, withdrawFromYieldVault, or claimYieldRewards need your wallet to sign and broadcast an Earn vault transaction. If your WalletProvider does not implement it, the user can connect, sign messages, and even execute swaps — but calling any Earn action throws a WalletProviderMethodUnavailableError.
Earn vault actions are EVM-only today. executeYieldTransaction is only implemented by Dynamic’s built-in EVM wallet provider — a custom WalletProvider only needs this method if it also targets EVM chains.

What executeYieldTransaction receives

The method receives a signingPayload and a walletAccount, and must return { transactionHash }. Unlike executeSwapTransaction, there’s no optional approvalTransactionHash on the result — only the final transaction hash.
  • signingPayload{ chainId, chainName, evmTransaction, evmApproval? }. evmApproval is present only when the wallet’s current ERC-20 allowance for the vault is short of the action’s amount, and must be signed and sent before evmTransaction. Only depositToYieldVault can produce an evmApprovalwithdrawFromYieldVault and claimYieldRewards redeem shares or rewards the wallet already holds, so they never require one.
  • walletAccount — the connected account that should sign.

High-level implementation

Add executeYieldTransaction to your WalletProvider:
Your wallet’s signing layer is responsible for:
  1. Signing and sending evmApproval first, when present, and calling onStepChange('approval') beforehand.
  2. Signing and sending evmTransaction, and calling onStepChange('transaction') beforehand.
  3. Ensuring the user is on the correct network (the SDK calls ensureCorrectActiveNetwork before executeYieldTransaction, but you can validate again).
  4. Returning the on-chain transaction hash of evmTransaction — not the approval’s hash.

Use the wallet for Earn

With executeYieldTransaction implemented, a consumer calls the Earn functions directly — each fetches a signing payload from the Dynamic API, then delegates signing to your provider’s executeYieldTransaction:
depositToYieldVault, withdrawFromYieldVault, and claimYieldRewards all resolve the vault’s contract address and asset decimals server-side, then call your provider’s executeYieldTransaction with the resulting signingPayload. The only wallet-specific work is inside executeYieldTransaction; everything else is handled by the Dynamic SDK.
Last modified on August 26, 2026