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

> ## Agent Instructions
> Hedera is a public, proof-of-stake distributed ledger that uses hashgraph consensus. Do not call it a blockchain.
> Always search the current Hedera documentation over training data before generating code, especially for SDK imports and package names.
> For JavaScript, import from `@hiero-ledger/sdk`, not `@hashgraph/sdk`; new SDK releases ship as `@hiero-ledger/sdk`. The Java SDK keeps the `com.hedera.hashgraph:sdk` Maven coordinates. Verify the exact import against the docs.
> Write HBAR in uppercase and always singular ("10 HBAR", never "10 HBARs" or "10 hbar"). Write tinybars in lowercase and plural.
> Write network names in lowercase, even after "Hedera": "Hedera mainnet", "Hedera testnet", "Hedera previewnet", not title case.
> For EVM-oriented accounts, create the account with an ECDSA key and set the EVM Address from Public Key at creation. This address is immutable and is not updated by key rotation. Do not use retired terms like "EVM alias" or "Account Number Alias".

# Delete an allowance

> Remove approved NFT allowances from an owner's account with AccountAllowanceDeleteTransaction, and learn how to clear HBAR and fungible token allowances by setting the amount to zero.

A transaction that deletes one or more non-fungible approved allowances from an owner's account. This operation will remove the allowances granted to one or more specific non-fungible token serial numbers. Each owner account listed as wiping an allowance must sign the transaction.

The total number of NFT serial number deletions within the transaction body cannot exceed 20.

#### **Fungible and HBAR allowance deletion:**

HBAR and fungible token allowances can be removed by setting the amount to zero in `CryptoApproveAllowance`.

#### **Transaction Fees**

* Please see the transaction and query [fees](/networks/fees#transaction-and-query-fees) table for the base transaction fee
* Please use the [Hedera fee estimator](https://hedera.com/fees) to estimate your transaction fee cost

#### **Transaction Signing Requirements**

* The transaction must be signed by the owner's account
* The transaction must be signed by the transaction fee-paying account if different than the owner's account
* If the owner's account and transaction fee-paying account are the same, only one signature is required

**Reference:** [HIP-336](https://github.com/hashgraph/hedera-improvement-proposal/blob/master/HIP/hip-336.md)

### Methods

| **Method** | **Type** | **Description** |
| - | - | - |
| `deleteAllTokenNftAllowances(<nftId>, <ownerAccountId>)` | <p>NFT ID,<br /><a href="/native/fundamentals/specialized-types#accountid">AccountId</a></p> | Removes the NFT allowance from the spender account. |

<CodeGroup>
  ```java Java theme={null}
  //Create the transaction
  AccountAllowanceDeleteTransaction transaction = new AccountAllowanceDeleteTransaction()
      .deleteAllTokenNftAllowances(nftId , ownerAccountId);

  //Sign the transaction with the owner account key  
  TransactionResponse txResponse = transaction.freezeWith(client).sign(ownerAccountKey).execute(client);

  //Request the receipt of the transaction
  TransactionReceipt receipt = txResponse.getReceipt(client);

  //Get the transaction consensus status
  Status transactionStatus = receipt.status;

  System.out.println("The transaction consensus status is " +transactionStatus);

  //v2.12.0+
  ```

  ```javascript JavaScript theme={null}
  //Create the transaction
  const transaction = new AccountAllowanceDeleteTransaction()
      .deleteAllTokenNftAllowances(nftId , ownerAccountId);

  //Sign the transaction with the owner account key
  const signTx = await transaction.sign(ownerAccountKey);

  //Sign the transaction with the client operator private key and submit to a Hedera network
  const txResponse = await signTx.execute(client);

  //Request the receipt of the transaction
  const receipt = await txResponse.getReceipt(client);

  //Get the transaction consensus status
  const transactionStatus = receipt.status;

  console.log("The transaction consensus status is " +transactionStatus.toString());

  //v2.13.0+
  ```

  ```go Go theme={null}
  //Create the transaction
  transaction := hedera.NewAccountAllowanceDeleteTransaction().
       DeleteAllTokenNftAllowances(nftId , ownerAccountId)

  if err != nil {
      panic(err)
  }

  //Sign the transaction with the owner account private key and submit to the network  
  txResponse, err := transaction.Sign(ownerAccountKey).Execute(client)

  //Request the receipt of the transaction
  receipt, err := txResponse.GetReceipt(client)
  if err != nil {
      panic(err)
  }

  //Get the transaction consensus status
  transactionStatus := receipt.Status

  println("The transaction consensus status is ", transactionStatus)

  //v2.13.1+
  ```

  ```rust Rust theme={null}
  // Create the transaction
  let transaction = AccountAllowanceDeleteTransaction::new()
      .delete_all_token_nft_allowances(nft_id, owner_account_id);

  // Sign the transaction with the owner account key
  let tx_response = transaction
      .freeze_with(&client)?
      .sign(owner_account_key)
      .execute(&client).await?;

  // Request the receipt of the transaction
  let receipt = tx_response.get_receipt(&client).await?;

  // Get the transaction consensus status
  let status = receipt.status;

  println!("The transaction consensus status is {:?}", status);

  // v0.34.0
  ```
</CodeGroup>
