# Değişiklik günlüğü

## Eylül 2026

### 10 Eylül

**HTML formu artık imzalı bir kap gönderiyor.** Ayrı fatura alanları yerine — `data` (JSON'un base64url'si) ve `signature` (`data` dizesinin HMAC-SHA256'sı). Uç nokta `invoices/createFromForm` yerine `invoices/form` oldu. Eski formlar artık çalışmıyor ve yeniden oluşturulmalı: bkz. [HTML formu imzası](./creating-invoices/html-forms/form-signature.md).

### 8 Eylül

**Webhook gövdesindeki sayısal alanlar artık sayı.** Daha önce dize olarak gönderilen altı alan artık sayı olarak gönderiliyor: `project.commissionRate`, `invoice.commissionFiatUSD`, `invoice.amountFiatUSD`, `invoice.amountFiat`, `invoice.calcAmountFiat`, `payment.amount`. Alan kümesi, adları ve sıraları değişmedi.

Unutmayın: sondaki sıfırlar atılır, bu yüzden 10.00 tutarı 10 olarak gelir. 0.0001 altındaki tutarlar üstel gösterimle gelir, örneğin 1.0e-6 — standart JSON ayrıştırma doğru sayıyı döndürür; yalnızca elle dize ayrıştırma bozulur.

Dağıtımdan önce oluşturulmuş ve henüz teslim edilmemiş bildirimler eski biçimde gelir. Kuyruk boşalana kadar işleyiciniz iki varyantı da kabul etmelidir — bu, en fazla iki gün sürer.

### 6 Eylül

**API yanıtlarındaki sayısal alanlar artık sayı.** `invoices/list`, `payments/list` ve `invoices/create` metotlarını etkiler.

| Alan | Önce | Sonra |
| --- | --- | --- |
| `commissionFiatUSD` | `"0.10"` | `0.1` |
| `amountFiatUSD` | `"10.00"` | `10` |
| `amountFiat` | `"1000.00"` | `1000` |
| `views` | `"0"` | `0` |
| `payment.amount` | `"10.500000000"` | `10.5` |

**Bir projeyle sınırlanan anahtar artık kısıtlamayı tüm metotlarda uyguluyor.** Daha önce bazı metotlar projeyi yok sayıyordu. Artık listeleme metotlarında bir filtredir ve başka bir projenin faturası veya cüzdanı için yapılan istek `Restricted project` ile reddedilir. Proje kısıtlamasına uyamayan metot, böyle bir anahtara kapalıdır. Ayrıntılar “Anahtar kapsamı” bölümündedir.

**Ödeme listesi artık eşleşmemiş ödemeleri de döndürüyor.** Daha önce `payments/list` yalnızca bir faturaya bağlı ödemeleri döndürüyordu. Artık sonuçlar, tüm cüzdanlarınızdaki ödemeleri içerir; eşleşmemiş olanın `invoice` bloğu yoktur. Bunlar, tam da `invoices/bindPayment` ile manuel eşleştirme için gereken ödemelerdir.

**Fatura iptali artık ret nedenlerini ayırt ediyor.** Daha önce hem eksik fatura hem de sağlanmayan koşullar genel bir `Invoice not found` döndürüyordu. Artık `Invoice not found` yalnızca faturanın var olmadığı anlamına gelir; sağlanmayan koşullar ise `Invoice cannot be canceled` döndürür.

**Hatalı biçimli tanımlayıcılar artık reddediliyor.** `invoices/list`, `invoiceId`, `invoiceUid` ve `projectId` değerlerini doğrular; `payments/list` — `walletId` ve `invoiceId` değerlerini. Uymayan bir değer, alan adıyla birlikte `Parameter is filled in incorrectly` döndürür. Daha önce böyle bir parametre sessizce atılıyor ve sonuçlar filtresiz geliyordu.

**Dönem sınırları artık adı geçen günün tamamını kapsıyor.** `startDate` ve `endDate`, `00:00:00` ile `23:59:59` arasında yorumlanır. Daha önce bitiş günü tamamen kesiliyordu ve tek günlük sorgu, yalnızca tam gece yarısı oluşturulmuş kayıtları döndürüyordu. `invoices/list`, `payments/list`, `statistics/invoices` ve `statistics/payments` metotlarını etkiler.

**Bakiye geçmişine proje alanı eklendi.** `billing/history` metodundaki her işlem artık bir `projectId` alanı taşır. Hesap düzeyindeki işlemler — bakiye yüklemeleri ve bonuslar — için `null` olur.

### 4 Eylül

**Açıklama ve hizmet verisi orijinal hâliyle dönüyor.** `description` ve `serviceData` alanları eskiden kodlanmış saklanıyordu ve API yanıtlarında tırnak `&quot;`, küçüktür işareti ise `<` olarak geliyordu. Artık tam olarak satıcının gönderdiği döndürülür. HTML'de görüntülerken değere kendi tarafınızda kaçış uygulayın.

**HTML formları yalnızca POST kabul ediyor.** Adres çubuğunda parametreler taşıyan bir bağlantıyla fatura oluşturmak artık çalışmıyor — parametreler yalnızca istek gövdesinden okunur. Bağlantı kullanıyorduysanız bunları `method="post"` içeren bir formla değiştirin.

### 3 Eylül

**Webhook bildirimleri artık imzalanıyor.** `X-Timestamp` ve `X-Signature` başlıkları eklendi; imza, webhook gizli anahtarıyla HMAC-SHA256 kullanılarak hesaplanır. İmzayı doğrulamak, gerçek bildirimi sahtesinden ayırmanızı sağlar. Mekanizma ve örnekler “Webhook imzası doğrulama” bölümündedir.

Değişiklik geriye dönük uyumludur: kontrolü eklemezseniz işleyiciniz eskisi gibi çalışmaya devam eder.
