---
title: "Tmmf withdraw failed"
method: POST
path: "wallet_action.tmmf_withdraw.failed"
---

# Tmmf withdraw failed

`POST wallet_action.tmmf_withdraw.failed` (webhook)

Fired when a wallet action fails after at least one transaction was broadcast. There may be onchain state changes; inspect the steps for details.

## Payload

- WalletActionTmmfWithdrawFailedWebhookPayload: Payload for the wallet_action.tmmf_withdraw.failed webhook event.
  - `type` 'wallet_action.tmmf_withdraw.failed', required: The type of webhook event.
  - `reference_id` string, nullable: Developer-provided reference ID, if one was included in the request.
  - `wallet_action_id` string, required: The ID of the wallet action.
  - `wallet_id` string, required: The ID of the wallet involved in the action.
  - `action_type` union, required: Type of wallet action
    - 'swap' | 'transfer' | 'earn_deposit' | 'earn_withdraw' | 'earn_incentive_claim' | 'earn_fee_collect' | 'payout' | 'tmmf_deposit' | 'tmmf_withdraw'
    - string
  - `created_at` string, required: ISO 8601 timestamp of when the wallet action was created.
  - `status` 'failed', required: The status of the wallet action.
  - `failure_reason` FailureReason, required: A description of why a wallet action (or a step within a wallet action) failed.
    - `message` string, required: Human-readable failure message.
    - `details` unknown
  - `steps` WalletActionStep[], required: The steps of the wallet action, where completed steps have transaction hashes and the failing step has a failure_reason; `gas_credits_charged` on a step may still be `null` when this webhook fires, so fetch the wallet action directly for up-to-date gas data.
    - union: A step within a wallet action, representing a single onchain action.
      - object: A wallet action step consisting of an EVM transaction.
        - `type` 'evm_transaction', required
        - `failure_reason` FailureReason: A description of why a wallet action (or a step within a wallet action) failed.
          - `message` string, required: Human-readable failure message.
          - `details` unknown
        - `finalized` boolean: Whether this step has reached on-chain finality. Absent until finality is confirmed.
        - `gas_credits_charged` CurrencyAmount: A monetary value with its currency denomination.
          - `value` string, required: The monetary value as a string.
          - `currency` 'usd', required: Currency code
        - `gas_credits_charged_usd` string, nullable: Deprecated, use `gas_credits_charged` instead; gas credits charged in USD for this step, if sponsored, as a decimal string.
        - `status` 'preparing' | 'queued' | 'pending' | 'retrying' | 'confirmed' | 'rejected' | 'reverted' | 'replaced' | 'abandoned', required: EVM transaction status.
        - `caip2` string, required: CAIP-2 chain identifier of the transaction, containing the chain ID.
        - `transaction_hash` string, nullable, required: The transaction hash for this step. May change while the step status is non-terminal.
      - object: A wallet action step consisting of an EVM user operation.
        - `type` 'evm_user_operation', required
        - `failure_reason` FailureReason: A description of why a wallet action (or a step within a wallet action) failed.
          - `message` string, required: Human-readable failure message.
          - `details` unknown
        - `finalized` boolean: Whether this step has reached on-chain finality. Absent until finality is confirmed.
        - `gas_credits_charged` CurrencyAmount: A monetary value with its currency denomination.
          - `value` string, required: The monetary value as a string.
          - `currency` 'usd', required: Currency code
        - `gas_credits_charged_usd` string, nullable: Deprecated, use `gas_credits_charged` instead; gas credits charged in USD for this step, if sponsored, as a decimal string.
        - `status` 'preparing' | 'queued' | 'pending' | 'retrying' | 'confirmed' | 'rejected' | 'reverted' | 'replaced' | 'abandoned', required: User operation status.
        - `user_operation_hash` string, nullable, required: The user operation hash for this step. May change while the step status is non-terminal.
        - `bundle_transaction_hash` string, nullable, required: Transaction hash of the bundle in which this user operation was included. Null until included by a bundler.
        - `caip2` string, required: CAIP-2 network identifier, containing the chain ID of the user operation.
        - `entrypoint_version` '0.6' | '0.7' | '0.8' | '0.9', required: The entrypoint version of the user operation.
      - object: A wallet action step consisting of an SVM (Solana) transaction.
        - `type` 'svm_transaction', required
        - `failure_reason` FailureReason: A description of why a wallet action (or a step within a wallet action) failed.
          - `message` string, required: Human-readable failure message.
          - `details` unknown
        - `finalized` boolean: Whether this step has reached on-chain finality. Absent until finality is confirmed.
        - `gas_credits_charged` CurrencyAmount: A monetary value with its currency denomination.
          - `value` string, required: The monetary value as a string.
          - `currency` 'usd', required: Currency code
        - `gas_credits_charged_usd` string, nullable: Deprecated, use `gas_credits_charged` instead; gas credits charged in USD for this step, if sponsored, as a decimal string.
        - `status` 'preparing' | 'queued' | 'pending' | 'confirmed' | 'rejected' | 'reverted' | 'failed', required: SVM transaction status.
        - `caip2` string, required: CAIP-2 chain identifier for the Solana network.
        - `transaction_signature` string, nullable, required: The Solana transaction signature (base58-encoded). Null until broadcast.
      - object: A wallet action step consisting of a TVM (Tron) transaction.
        - `type` 'tvm_transaction', required
        - `failure_reason` FailureReason: A description of why a wallet action (or a step within a wallet action) failed.
          - `message` string, required: Human-readable failure message.
          - `details` unknown
        - `gas_credits_charged` CurrencyAmount: A monetary value with its currency denomination.
          - `value` string, required: The monetary value as a string.
          - `currency` 'usd', required: Currency code
        - `gas_credits_charged_usd` string, nullable: Deprecated, use `gas_credits_charged` instead; gas credits charged in USD for this step, if sponsored, as a decimal string.
        - `status` 'preparing' | 'queued' | 'pending' | 'confirmed' | 'rejected' | 'reverted' | 'failed', required: TVM transaction status.
        - `caip2` string, required: CAIP-2 chain identifier for the Tron network.
        - `transaction_id` string, nullable, required: The Tron transaction ID. Null until broadcast.
      - object: A wallet action step representing a cross-chain/cross-asset fill by an external provider.
        - `type` 'external_transaction', required
        - `failure_reason` FailureReason: A description of why a wallet action (or a step within a wallet action) failed.
          - `message` string, required: Human-readable failure message.
          - `details` unknown
        - `status` 'preparing' | 'queued' | 'pending' | 'confirmed' | 'rejected' | 'failed', required: External transaction step status.
        - `provider` union, required: External provider that fills an external transaction step.
          - 'relay' | 'tempo_routes' | 'bridge'
          - string
      - object: A wallet action step representing a transaction executed by a custodian (e.g. Bridge).
        - `type` 'custodian_transaction', required
        - `failure_reason` FailureReason: A description of why a wallet action (or a step within a wallet action) failed.
          - `message` string, required: Human-readable failure message.
          - `details` unknown
        - `status` 'preparing' | 'queued' | 'custodian_reviewing' | 'pending' | 'confirmed' | 'rejected' | 'failed', required: Custodian transaction step status.
        - `custodian` string, required: Identifier of the custodian executing this transaction (e.g. "bridge").
        - `transaction_hash` string, nullable, required: Identifier of the transaction the custodian last reported on the destination chain. Set on a settled transfer, and also on a failed one when the custodian had already broadcast a payout that was later returned. Null until the custodian reports one.
      - object: A wallet action step representing a Tempo Zone settlement on its parent chain.
        - `type` 'tempo_zone_settlement', required
        - `failure_reason` FailureReason: A description of why a wallet action (or a step within a wallet action) failed.
          - `message` string, required: Human-readable failure message.
          - `details` unknown
        - `caip2` string, nullable, required: CAIP-2 identifier of the Tempo parent chain, or null when unavailable.
        - `transaction_hash` string, required: A hex-encoded string prefixed with '0x', capped at 300002 characters (150,000 bytes).
        - `status` 'preparing' | 'queued' | 'pending' | 'confirmed' | 'rejected' | 'failed', required: Tempo Zone settlement step status.
      - object: A wallet action step representing the settlement of a tokenized money market fund (tMMF) order by WisdomTree.
        - `type` 'wisdomtree_settlement', required
        - `failure_reason` FailureReason: A description of why a wallet action (or a step within a wallet action) failed.
          - `message` string, required: Human-readable failure message.
          - `details` unknown
        - `status` union, required
          - 'preparing' | 'queued' | 'pending' | 'confirmed' | 'rejected' | 'failed': WisdomTree settlement step status.
          - string: WisdomTree settlement step status.
        - `caip2` string, nullable, required: CAIP-2 identifier of the chain the order trades on.
        - `order_type` 'primary' | 'secondary', required: How a tMMF order fills: `secondary` from the provider pool in minutes, or `primary` at the next NAV strike.
        - `requested` union, required: What a tMMF order sends: the deposit asset for a deposit, fund shares for a withdrawal.
          - object: An amount of the currency a tMMF deposit sends.
            - `deposit_asset` string, required: Currency symbol, e.g. "USDC". Case-insensitive.
            - `amount` string, required: A positive decimal amount in the asset's standard unit, e.g. "1000.00".
          - object: An amount of fund shares a tMMF order sends or receives.
            - `fund` string, required: Fund ticker, e.g. "WTGXX". Case-insensitive.
            - `amount` string, required: A positive decimal amount in the asset's standard unit, e.g. "1000.00".
        - `received` union, required: What a tMMF order receives: fund shares for a deposit, the withdraw asset for a withdrawal.
          - object: An amount of fund shares a tMMF order sends or receives.
            - `fund` string, required: Fund ticker, e.g. "WTGXX". Case-insensitive.
            - `amount` string, required: A positive decimal amount in the asset's standard unit, e.g. "1000.00".
          - object: An amount of the currency a tMMF withdrawal receives.
            - `withdraw_asset` string, required: Currency symbol, e.g. "USDC". Case-insensitive.
            - `amount` string, required: A positive decimal amount in the asset's standard unit, e.g. "1000.00".
        - `settlement_transaction_hash` string, nullable, required: The transaction that delivered the received asset. Null until Privy verifies the settlement.
  - `failed_at` string, required: ISO 8601 timestamp of when the wallet action failed.
  - `event_id` string, required: The ID of this event, stable across repeat deliveries so clients can deduplicate on it.

## Acknowledgement `200`

Return a 200 status to indicate that the webhook was received successfully.

---

[API](https://skmtc.dev/privy-io/apis/privy-api.md) - [All operations](https://skmtc.dev/privy-io/apis/privy-api/llms.txt) - [OpenAPI document](https://skmtc.dev/privy-io/apis/privy-api/revisions/a70bfc9325a3?raw)
