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

# claimEarnRewards

> Prepares and executes a claim of accrued Earn vault rewards with an EVM wallet

## Function Signature

```typescript theme={"system"}
claimEarnRewards(params: {
  vaultId: string;
  walletMetadata: WalletMetadata;
  password?: string;
  externalServerKeyShares?: ServerKeyShare[];
  sponsored?: boolean;
  chain?: Chain;
  rpcUrl?: string;
  onStepChange?: (step: EarnExecutionStep) => void;
  traceContext?: TraceContext;
}): Promise<EarnTransactionResult>
```

## Description

Prepares and executes a claim of every reward the wallet has accrued in an [Earn](https://www.dynamic.xyz/docs/earn/overview.md) vault: it builds the payload with [`prepareClaimRewards`](https://www.dynamic.xyz/docs/node/reference/earn/prepare-claim-rewards) and executes it with [`executeEarnTransaction`](https://www.dynamic.xyz/docs/node/reference/evm/execute-earn-transaction). Rewards are supported only for vaults from some providers; for any other provider the API rejects the request with an HTTP 400 error. See [Provider support](https://www.dynamic.xyz/docs/earn/overview.md#provider-support).

## Parameters

### Required Parameters

* **`vaultId`** (`string`): The vault identifier from [`listVaults`](https://www.dynamic.xyz/docs/node/reference/earn/list-vaults).
* **`walletMetadata`** ([`WalletMetadata`](https://www.dynamic.xyz/docs/node/reference/types/wallet-metadata)): Non-sensitive wallet metadata persisted from `createWalletAccount()` / `importPrivateKey()`. Its `chainName` must be `'EVM'`.

### Optional Parameters

* **`password`** (`string`): Required if the wallet was created with `backUpToDynamic: true`. Used for backup decryption when `externalServerKeyShares` is not provided.
* **`externalServerKeyShares`** ([`ServerKeyShare[]`](https://www.dynamic.xyz/docs/node/reference/types/server-key-share)): Caller-supplied plaintext shares.
* **`sponsored`** (`boolean`): When `true`, relays the claim as a gasless transaction. See [EVM Gas Sponsorship](https://www.dynamic.xyz/docs/node/wallets/server-wallets/gas-sponsorship-evm.md).
* **`chain`** (`Chain`): The viem chain for the vault. Its `id` must match the vault's `chainId`. When omitted, the chain is built from `rpcUrl`, so one of `chain` or `rpcUrl` is required.
* **`rpcUrl`** (`string`): RPC endpoint for the vault's chain.
* **`onStepChange`** (`(step: EarnExecutionStep) => void`): Reports `transaction` as execution proceeds.
* **`traceContext`** (`TraceContext`): Trace context forwarded to the Dynamic API.

## Returns

* **`Promise<EarnTransactionResult>`**: An object with `transactionHash`, the hash of the claim transaction.

## Example

```typescript theme={"system"}
import { authenticatedEvmClient } from './client';

const evmClient = await authenticatedEvmClient();

const { transactionHash } = await evmClient.claimEarnRewards({
  vaultId: 'steakhouse-prime-usdc',
  walletMetadata,
  externalServerKeyShares,
  password: 'user-password',
  rpcUrl: 'https://mainnet.base.org',
});
```

## Error Handling

Fails with an HTTP 403 error when Earn is not enabled for your environment, an HTTP 400 error when the vault's provider does not support rewards, or an HTTP 422 error when the wallet has nothing to claim. Throws when `walletMetadata.chainName` is not `'EVM'`, when `chain.id` mismatches the payload's `chainId`, when neither `chain` nor `rpcUrl` is given, or when the claim transaction reverts.

## See Also

* [Earn](https://www.dynamic.xyz/docs/node/earn.md)
* [getRewards](https://www.dynamic.xyz/docs/node/reference/earn/get-rewards.md)
* [executeEarnTransaction](https://www.dynamic.xyz/docs/node/reference/evm/execute-earn-transaction.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.