---
title: "Payout rejected"
method: POST
path: "wallet_action.payout.rejected"
---

# Payout rejected

`POST wallet_action.payout.rejected` (webhook)

Fired when a wallet action fails before any onchain effects (e.g. policy rejection, simulation failure). Safe to retry.

## Payload

- WalletActionPayoutRejectedWebhookPayload: Payload for the wallet_action.payout.rejected webhook event.
  - `type` 'wallet_action.payout.rejected', 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` 'swap' | 'transfer' | 'earn_deposit' | 'earn_withdraw' | 'earn_incentive_claim' | 'earn_fee_collect' | 'payout', required: Type of wallet action
  - `created_at` string, required: ISO 8601 timestamp of when the wallet action was created.
  - `provider` 'bridge', required: The offramp provider that settles the payout.
  - `environment` 'sandbox' | 'production', required: The provider environment the payout runs against.
  - `source_asset` string, required: Source crypto asset sent on-chain (e.g. "usdc").
  - `source_chain` string, required: Source chain the crypto was sent from (e.g. "base").
  - `source_amount` string, required: Decimal amount offramped, in the asset's standard units (e.g. "100.00").
  - `destination_fiat_account_id` string, required: The registered external fiat account the payout settles to.
  - `destination_currency` string, required: The fiat currency the payout settles in (e.g. "usd").
  - `destination_payment_rail` string, required: The fiat payment rail the payout settles over (e.g. "ach", "sepa", "wire").
  - `status` 'rejected', 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 at the time of rejection; `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.
      - 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.
  - `rejected_at` string, required: ISO 8601 timestamp of when the wallet action was rejected.

## 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/6a80d4be53a8?raw)
