# Approve NFT

## Approve Single NFT

{% tabs %}
{% tab title="Code Example" %}
{% code title="approve-nft.tsx" fullWidth="true" %}

```javascript
import {
  approveToken,
  ApproveTypes,
  RawTransaction
} from "@ramper-v2/multi";
import Web3 from "web3";
import { CHAIN_DATA } from "@wallet/constants";
 
const rpcURL = CHAIN_DATA[chain].rpcURL;
const client = new Web3(
  new Web3.providers.HttpProvider(rpcURL)
);
 
const approveNFTData = {
  approveContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',
  spender: '0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826',
  tokenID: '2443'
}
 
 
const handleApproveNFT = async () => {
  try {
    const { approveContract, spender, tokenID } = approveNFTData;
 
    if (!approveContract || !chain) return;
 
    const contract = new client.eth.Contract(
      ERC721ABI as any,
        approveContract
      );
    const dataraw = contract.methods.approve(spender, tokenID);
    const rawTransaction: RawTransaction = {
      data: dataraw.encodeABI(),
      to: approveContract,
    };
 
    const result = await approveToken({
      transaction: rawTransaction,
      options: {
        type: ApproveTypes.NFT,
      },
      chain,
    });
  } catch (error) {
    // Error Handler
  }
};
```

{% endcode %}
{% endtab %}

{% tab title="Demo UI" %}

<figure><img src="https://2309458538-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FA4lEcolAe1xxpS9iPO2F%2Fuploads%2FwUppSVdCTXqYvelImBVo%2Fimage.png?alt=media&#x26;token=a0209706-739d-448a-89ea-5c8ea3ff8863" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

## Approve NFT Collection

{% tabs %}
{% tab title="Code Example" %}
{% code title="approve-nft-collection.tsx" fullWidth="true" %}

```javascript
import {
  approveToken,
  ApproveTypes
} from "@ramper-v2/multi";
import Web3 from "web3";
import { CHAIN_DATA } from "@wallet/constants";
 
const rpcURL = CHAIN_DATA[chain].rpcURL;
 
const approveNFTCollectionData = {
  approveContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',
  spender: '0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826',
  tokenID: '2443'
}
 
const client = new Web3(
  new Web3.providers.HttpProvider(rpcURL)
);
 
const handleApproveNFTCollection = async () => {
  try {
    const { approveContract, spender } = approveNFTCollectionData;
 
    const contract = new client.eth.Contract(
      ERC721ABI as any,
      approveContract
    );
    const dataraw = contract.methods.setApprovalForAll(spender, true);
    const rawTransaction: RawTransaction = {
      data: dataraw.encodeABI(),
      to: approveContract,
    };
 
    const result = await approveToken(rawTransaction, {
      type: ApproveTypes.NFTCOLLECTION,
    });
  } catch (error) {
    // Error Handler
  }
};
```

{% endcode %}
{% endtab %}

{% tab title="Demo UI" %}

<figure><img src="https://2309458538-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FA4lEcolAe1xxpS9iPO2F%2Fuploads%2F1cCck10HhDoE4rovPyoV%2Fimage.png?alt=media&#x26;token=578d977f-0912-4211-9261-6fe5a4074653" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}
