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

# IP Whitelist and Public Key

<AccordionGroup>
  <Accordion title="Why do I have to whitelist the IP address or generate a public key?" onClick={() => posthog.capture('Accordion Clicked', { title: "Why do I have to whitelist the IP address or generate a public key?" })}>
    Whitelisting the IP address or generating a public key provides a layer of authentication. These cybersecurity techniques prevent anonymous or unknown disbursement requests and allow only verified requests.
  </Accordion>

  <Accordion title="What is an IP address?" onClick={() => posthog.capture('Accordion Clicked', { title: "What is an IP address?" })}>
    A string of characters that identifies each computer using the Internet Protocol to communicate over a network. Computers use IP addresses to communicate with each other over the internet.
  </Accordion>

  <Accordion title="What does it mean to whitelist an IP?" onClick={() => posthog.capture('Accordion Clicked', { title: "What does it mean to whitelist an IP?" })}>
    Whitelisted IPs are an index of approved entities. A whitelist approves a list of email addresses, IP addresses for communication.
  </Accordion>

  <Accordion title="What happens after I whitelist my IP address?" onClick={() => posthog.capture('Accordion Clicked', { title: "What happens after I whitelist my IP address?" })}>
    The Cashfree Payments production server allows your API requests.
  </Accordion>

  <Accordion title="How many IP addresses can I whitelist?" onClick={() => posthog.capture('Accordion Clicked', { title: "How many IP addresses can I whitelist?" })}>
    You can whitelist a maximum of 25 IP addresses.
  </Accordion>

  <Accordion title="Does Cashfree Payments support IPv6?" onClick={() => posthog.capture('Accordion Clicked', { title: "Does Cashfree Payments support IPv6?" })}>
    No, we only support API requests from IPv4 at the moment.
  </Accordion>

  <Accordion title="When do I use a public key?" onClick={() => posthog.capture('Accordion Clicked', { title: "When do I use a public key?" })}>
    If your IP address is not static, generate a public key in the Cashfree Payments portal.
  </Accordion>

  <Accordion title="How to generate a public key from the Cashfree Payments portal?" onClick={() => posthog.capture('Accordion Clicked', { title: "How to generate a public key from the Cashfree Payments portal?" })}>
    1. In the Cashfree Payments dashboard, select **Developers** from the navigation panel on the left.
    2. Select **Two-Factor Authentication** from the **Payouts** card.
    3. Select **Public Key** from the **Select 2FA Method** dropdown menu.
    4. Select **Generate Public Key**.
    5. The public key is downloaded to your computer. Use your registered email ID to access the key.

           <img src="https://mintcdn.com/cashfreepayments-d00050e9/rpH767oy7-0Ptnam/static/payouts/payouts/Public_Key.gif?s=e91da17df1288886ea7a441af2db4899" alt="" width="1920" height="972" data-path="static/payouts/payouts/Public_Key.gif" />
  </Accordion>

  <Accordion title="How many public keys can I generate at a time?" onClick={() => posthog.capture('Accordion Clicked', { title: "How many public keys can I generate at a time?" })}>
    One. You can generate only 1 public key at a time.
  </Accordion>

  <Accordion title="How to use the public key to send API requests?" onClick={() => posthog.capture('Accordion Clicked', { title: "How to use the public key to send API requests?" })}>
    You need to generate a signature and proceed with the API requests.

    Below are the steps to generate the signature:

    1. Retrieve your client ID.
    2. Append this with CURRENT UNIX timestamp separated by a period (.).
    3. Encrypt this data with the generated public key using RSA encryption - this is the signature.
    4. Pass this signature in the header X-CF-Signature.
  </Accordion>
</AccordionGroup>
