> ## 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.

# Tutarlar ve Para Birimleri

> Payven'de tutarlar her zaman kuruş cinsinden tam sayıdır.

Tüm Payven API'lerinde tutarlar **kuruş** cinsinden, **64-bit tam sayı** (`long`) olarak iletilir. Ondalıklı (`float`, `decimal`) değer **kabul edilmez**. İstemci tarafında 32-bit `int` kullanmayın — yüksek tutarlı işlemlerde taşma riskine girersiniz.

Tutar her zaman bir para birimiyle birlikte taşınır:

```json theme={null}
{ "amount": 15000, "currency": "TRY" }
```

## Çevrim kuralı

`tutar (kuruş) = tutar (₺) × 100`

| Görünen tutar  | API değeri  |
| -------------- | ----------- |
| 0,01 ₺         | `1`         |
| 1,00 ₺         | `100`       |
| 25,50 ₺        | `2550`      |
| 150,00 ₺       | `15000`     |
| 1.234,56 ₺     | `123456`    |
| 1.999.999,99 ₺ | `199999999` |

## Örnek dönüştürme fonksiyonları

<CodeGroup>
  ```csharp C# theme={null}
  public static long LiraToKurus(decimal lira) => (long)Math.Round(lira * 100m);
  public static decimal KurusToLira(long kurus) => kurus / 100m;

  // Görüntüleme
  public static string FormatKurus(long kurus) =>
      (kurus / 100m).ToString("N2", new CultureInfo("tr-TR")) + " ₺";
  ```

  ```javascript Node.js theme={null}
  const liraToKurus = (lira) => Math.round(lira * 100);
  const kurusToLira = (kurus) => kurus / 100;

  const formatKurus = (kurus) =>
    new Intl.NumberFormat("tr-TR", {
      style: "currency",
      currency: "TRY",
    }).format(kurus / 100);
  ```

  ```go Go theme={null}
  func LiraToKurus(lira float64) int64 {
      return int64(math.Round(lira * 100))
  }
  func KurusToLira(kurus int64) float64 {
      return float64(kurus) / 100
  }
  ```

  ```php PHP theme={null}
  function liraToKurus(float $lira): int {
      return (int) round($lira * 100);
  }
  function kurusToLira(int $kurus): float {
      return $kurus / 100;
  }
  ```

  ```python Python theme={null}
  from decimal import Decimal, ROUND_HALF_UP

  def lira_to_kurus(lira: Decimal) -> int:
      return int((Decimal(lira) * 100).quantize(Decimal("1"), rounding=ROUND_HALF_UP))

  def kurus_to_lira(kurus: int) -> Decimal:
      return Decimal(kurus) / 100
  ```
</CodeGroup>

<Warning>
  **Float kullanmayın.** Ondalık aritmetiği yuvarlama hatalarına yol açar. Çevrimi mutlaka tamsayı (`integer`/`long`) ile yapın.
</Warning>

## Para birimleri

| Kod   | Para birimi      | Doğrudan kabul | DCC çıktısı |
| ----- | ---------------- | -------------- | ----------- |
| `TRY` | Türk Lirası      | Evet           | —           |
| `USD` | Amerikan Doları  | —              | Evet        |
| `EUR` | Euro             | —              | Evet        |
| `GBP` | İngiliz Sterlini | —              | Evet        |

Request body'sinde `currency` alanına şu an yalnız `"TRY"` gönderilir. Yabancı kartlarda **DCC (Dynamic Currency Conversion)** akışı devreye girerse Payven, kart para birimindeki çevrilmiş tutarı response body'sinde döner — istemci `USD`/`EUR`/`GBP` değerini doğrudan göndermez. Detay: [DCC Akışı](/sanal-pos/payments/dcc).

## Sınır değerler

| Kural                     | Limit                                  |
| ------------------------- | -------------------------------------- |
| Minimum işlem tutarı      | 100 kuruş (1,00 ₺)                     |
| Maksimum tek işlem tutarı | Plan ve banka anlaşmanıza göre değişir |
| Kısmi iade tutarı         | Orijinal işlem tutarını aşamaz         |

İhlal durumunda `invalid_amount` veya `refund_exceeds_original` kodu ile `422 Unprocessable Entity` döner. Tüm hata yanıtları RFC 9457 problem+json formatındadır — bkz. [Hata Yönetimi](/documentation/concepts/errors).
