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

# IP Whitelist

> API anahtarınızı belirli IP adreslerinden gelen çağrılarla sınırlandırın.

Production ortamında **IP whitelist kullanmanızı şiddetle öneririz**. Whitelist, anahtarınız sızsa bile sınırlanmış IP'ler dışından kullanılmasını engeller.

## Nasıl çalışır?

API anahtarı oluştururken veya düzenlerken bir IP listesi tanımlarsınız. Whitelist boş bırakılırsa **tüm IP'lerden** erişim açıktır.

| Whitelist durumu          | Davranış                                                 |
| ------------------------- | -------------------------------------------------------- |
| Boş                       | Tüm IP'lerden istek kabul edilir                         |
| Bir veya daha fazla giriş | Yalnızca listedeki IP'lerden gelen istekler kabul edilir |

Whitelist dışı bir IP'den istek gelirse `403 Forbidden` ve `ip_not_allowed` koduyla reddedilir (RFC 9457 problem+json).

## Desteklenen formatlar

| Format       | Örnek              | Anlam              |
| ------------ | ------------------ | ------------------ |
| Tek IP       | `52.18.42.10`      | Sadece bu IP       |
| CIDR aralığı | `52.18.42.0/24`    | 256 adresli aralık |
| IPv6         | `2a05:d018:abc::1` | IPv6 desteği       |

## Yapılandırma

<Steps>
  <Step title="Konsola gidin">
    [Konsol → Ayarlar → API Anahtarları](https://dashboard.payven.com.tr/api-settings) sayfasını açın.
  </Step>

  <Step title="Anahtarı düzenleyin">
    Sınırlamak istediğiniz anahtarın yanındaki **Düzenle** butonuna tıklayın.
  </Step>

  <Step title="IP'leri ekleyin">
    Sunucu IP'lerinizi tek tek veya CIDR formatında ekleyin. Aynı satırda virgülle ayırabilirsiniz.
  </Step>

  <Step title="Kaydedin">
    Değişiklik **anında** etkilidir.
  </Step>
</Steps>

## Sunucunuzun IP'sini öğrenmek

<CodeGroup>
  ```bash cURL theme={null}
  curl https://ifconfig.me
  ```

  ```javascript Node.js theme={null}
  const res = await fetch("https://ifconfig.me");
  console.log(await res.text());
  ```
</CodeGroup>

<Warning>
  **NAT/Load Balancer arkasındaysanız**, çıkış IP'leriniz bunlardır — uygulama sunucularınız değil. Cloud sağlayıcı NAT Gateway veya statik IP kullanın.
</Warning>

## Webhook tarafı

Payven'in **size** gönderdiği webhook istekleri sabit IP havuzlarından çıkar. Güncel havuz listesini almak için [destek ekibimize](/resources/support) ulaşın — değişikliklerde önceden e-posta ile bildirilir.

<Note>
  **Önerilen yaklaşım:** Webhook tarafında **birincil güvenlik mekanizması imza doğrulamadır**, IP filtresi değildir. [HMAC-SHA256 imza doğrulama](/sanal-pos/webhooks/signature) kurun; IP filtresi yalnızca isteğe bağlı ek katman olarak değerlendirin.
</Note>

## Sık karşılaşılan sorunlar

<AccordionGroup>
  <Accordion title="403 ip_not_allowed dönüyor ama IP whitelist'te">
    Cloud ortamlarda çıkış IP'si dinamik olabilir (örn. AWS NAT Gateway elastic IP'siz). Statik bir IP atayıp tekrar deneyin.
  </Accordion>

  <Accordion title="Sandbox'ta whitelist'i devre dışı bırakabilir miyim?">
    Evet — geliştirme aşamasında sandbox anahtarınız için listeyi boş bırakabilirsiniz. Production'da ise mutlaka tanımlayın.
  </Accordion>

  <Accordion title="IPv6 destekleniyor mu?">
    Evet. CIDR notasyonu da geçerlidir.
  </Accordion>
</AccordionGroup>
