{
  "brand": "Kevmi",
  "version": "2026-10-23.16",
  "updatedAt": "2026-10-23",
  "articles": [
    {
      "id": "quickstart",
      "title": "Hızlı başlangıç",
      "summary": "Çalışma alanınızı keşfedin, mağazanızı kurun ve müşterinizin göreceği şekilde bir fatura görüntüleyin. Bu kılavuz sizi ana adımlarda sırasıyla ilerletir.",
      "group": "start",
      "url": "/docs/quickstart",
      "tags": [
        "başlat",
        "kurulum",
        "ilk ödeme",
        "hızlı başlangıç"
      ],
      "sections": [
        {
          "id": "explore",
          "title": "1. Ürünü keşfedin",
          "paragraphs": [
            "Test siparişi oluşturmak, ödeme bağlantılarını keşfetmek ve ücret hesaplamasını kontrol etmek için demo çalışma alanını açın. Demo ayrı test verileri kullanır. Banka ödemesi oluşturmaz veya bir cüzdana para aktarmaz."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Demo çalışma alanını açın",
              "href": "/demo/index.html"
            },
            {
              "label": "Ödeme sayfasını önizle",
              "href": "/pay/demo"
            }
          ]
        },
        {
          "id": "account",
          "title": "2. Telegram ile hesap oluşturun",
          "paragraphs": [
            "Telegram girişinden sonra satıcı hesabı açılır. Web sitesi kayıt süreci /account#applications adresindedir; hem form hem de bireysel takip /account#applications/{id} adresinde uygulama içinde kalır.",
            "Yeni bir ödeme ve kart niyeti, satıcının en son web sitesi inceleme başvurusunun onaylanmasını gerektirir. Onay tek başına ödeme ağ geçidini bağlamaz. İnceleme gönderimden sonra değişirse, mevcut işlem durum okumaları, mutabakat ve talep edilen banka kodu için kullanılabilir kalır."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Hesabınızı açın",
              "href": "/account"
            }
          ]
        },
        {
          "id": "settings",
          "title": "3. Mağazanızı kurun",
          "paragraphs": [],
          "bullets": [],
          "steps": [
            "Müşterinizin tanıyacağı bir mağaza adı seçin.",
            "Varsayılan bir KDV kuralı seçin. Her yeni fatura, müşteri ücreti ve KDV paylarını ayrı ayrı %0 ile %100 arasında kabul eder.",
            "Telegram'da almak istediğiniz bildirimleri seçin.",
            "Tipik bir sipariş tutarını kontrol etmek için hesap makinesini kullanın."
          ],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Ücretleri ve KDV'yi hesapla",
              "href": "/pricing"
            }
          ]
        },
        {
          "id": "invoice",
          "title": "4. Ödeme bağlantısı hazırlayın",
          "paragraphs": [
            "Net bir sipariş başlığı, tutar ve para birimi girin. Müşteri, satın alma ayrıntıları ve ödenmesi gereken toplam tutar ile özel bir sayfa alır. Mevcut bir fatura, mağaza ayarlarınız değiştiğinde orijinal koşullarını korur."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Ödeme bağlantıları kılavuzu",
              "href": "/docs/payment-links"
            }
          ]
        },
        {
          "id": "activate",
          "title": "5. Ödeme kullanılabilirliğini kontrol edin",
          "paragraphs": [
            "Hesabınızdan faturaları, API anahtarlarını, araçları ve webhook'ları yönetin. Ödemeden önce Kevmi, ağ geçidi yapılandırmasını, satıcı onayını, tutarı ve fatura koşullarını kontrol eder. Seçilen yöntem kullanılamıyorsa, ödeme sayfası nedenini açıklar.",
            "Yeni çalışma alanı faturaları USD taban fiyat kullanır ve Any dört yöntemin tümünü sunar. SBP, donmuş Rusya Merkez Bankası referans kuru üzerinden RUB'a çevrilir; kripto, açık 1:1 USD/USDT fatura kuralını kullanır. Eski yerel fiyatlandırma, eski faturalar ve pricingMode=universal olmayan API istekleri için kullanılabilir durumda kalır. Aşağıdaki çoklu mağaza ve USD fiyatlandırma bölümüne bakın.",
            "Yeni bir canlı kart veya Alipay ödemesi için mevcut ağ geçidi yalnızca feeCustomerPercent=0 ve vatCustomerPercent=100'ü destekler: satıcı tüm işlem ücretini karşılar ve KDV müşteri için tam olarak eklenir. Diğer paylar bir faturada kaydedilip hesaplanabilir, ancak yürütme unsupported_allocation ile engellenir. Sunucu kaydedilmiş koşulları sessizce asla değiştirmez. SBP ve USDT kripto ödemeleri tüm işlem ücreti paylarını destekler ve KDV içermez."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "Fatura, anahtar veya başvuru oluşturmak para yükümlülüğü getirmez. API üzerinden ödeme oluşturma kullanılamaz; para çekme koşulları ayrı bir kılavuzda ele alınır.",
          "links": [
            {
              "label": "Ağ geçidi entegrasyon gereksinimleri",
              "href": "/docs/gateway"
            }
          ]
        },
        {
          "id": "stores-usd",
          "title": "Birden fazla mağaza ve tek USD taban fiyat",
          "paragraphs": [
            "Toplu analiz ve işlemler için Tüm mağazaları seçin veya kendi kayıtları için bir mağaza seçin. Her mağazanın ayrı bir storeId'si, adı, varsayılan KDV'si, faturaları, API anahtarları, webhook uç noktaları, olay geçmişi ve web sitesi uygulaması vardır. Bildirimler ve destek talepleri hesaba aittir. Bir hesap en fazla 100 mağaza oluşturabilir. Mevcut kayıtlar ilk mağazasında kalır.",
            "Yeni çalışma alanı faturaları pricingMode=\"universal\" ve USD taban fiyat kullanır. Any, kart, alipay, sbp ve kriptoyu içerir; bir satıcı bir alt küme seçebilir. Kartlar ve Alipay USD tahsil eder. SBP, Rusya Merkez Bankası USD/RUB referans kurunu kullanarak RUB tahsil eder. Kripto, açık fatura kuralı 1 USD = 1 USDT kapsamında USDT tahsil eder. Bu bir fatura dönüştürme kuralıdır, piyasa USDT kotasyonu değildir. Ağ geçidi, transferden önce seçilen coin'in kurunu, tam transfer tutarını ve talimatlarını sağlar.",
            "Referans kuru ve her iki tutar oluşturma sırasında dondurulur. RUB dönüştürmesi içeren faturalar 24 saat içinde sona erer. Referans kuru alınamazsa, oluşturma FX_UNAVAILABLE ile başarısız olur; uydurulmuş veya bayat yedek kur kullanılmaz. Sahip yanıt tutarı ve kotasyonlar USD muhasebe para birimini kullanır. quotes[method].settlement, yerel tahsil kotasyonunu içerir. Genel ödeme sayfası, seçilen tahsil para birimini currency içinde, orijinal fiyatı baseAmountMinor/baseCurrency içinde ve referans kurunu fx içinde gösterir. Bir ödeme gönderildikten sonra yöntemi değiştirilemez; bir faturanın tek ağ geçidi işlemi vardır.",
            "Amaçlanan mağaza içinde bir API anahtarı oluşturun ve sunucunuzdan Authorization: Bearer <key> gönderin. Mağaza bağlaması değişmezdir; X-Kevmi-Store, anahtara başka bir mağazaya erişim izni veremez. Tarayıcı oturumları X-Kevmi-Store: <storeId> seçer; atlanırsa ilk mağaza seçilir. all değeri yalnızca GET /api/account/dashboard ve GET /api/payment-links tarafından kabul edilir. Değişiklikler seçili bir mağaza, Origin ve X-CSRF-Token gerektirir. Hesap kimlikleri ve mağaza kimlikleri farklı tanımlayıcılardır.",
            "Uyumluluk için, pricingMode=\"universal\" içermeyen API istekleri yerel fiyatlandırmayı ve orijinal para birimi kısıtlamalarını korur. Mevcut faturalar asla yeniden hesaplanmaz. Analizlerdeki onaylanmış tahsilatlar, doğrulanmış ödemelerden kaydedilmiş fatura giderlerinin düşülmesiyle elde edilir; bunlar çekilebilir bakiye değildir. Eski fatura para birimleri ayrı kalır ve ödemeler destek ile düzenlenir. Bir siparişi yalnızca sunucu API'si, olay geçmişi veya imzalı bir webhook üzerinden payment.fulfillmentReady=true ve payment.status=\"succeeded\" durumunu kontrol ettikten sonra yerine getirin."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        }
      ],
      "body": "1. Ürünü keşfedin\n\nTest siparişi oluşturmak, ödeme bağlantılarını keşfetmek ve ücret hesaplamasını kontrol etmek için demo çalışma alanını açın. Demo ayrı test verileri kullanır. Banka ödemesi oluşturmaz veya bir cüzdana para aktarmaz.\n\nDemo çalışma alanını açın\n\nÖdeme sayfasını önizle\n\n2. Telegram ile hesap oluşturun\n\nTelegram girişinden sonra satıcı hesabı açılır. Web sitesi kayıt süreci /account#applications adresindedir; hem form hem de bireysel takip /account#applications/{id} adresinde uygulama içinde kalır.\n\nYeni bir ödeme ve kart niyeti, satıcının en son web sitesi inceleme başvurusunun onaylanmasını gerektirir. Onay tek başına ödeme ağ geçidini bağlamaz. İnceleme gönderimden sonra değişirse, mevcut işlem durum okumaları, mutabakat ve talep edilen banka kodu için kullanılabilir kalır.\n\nHesabınızı açın\n\n3. Mağazanızı kurun\n\nMüşterinizin tanıyacağı bir mağaza adı seçin.\n\nVarsayılan bir KDV kuralı seçin. Her yeni fatura, müşteri ücreti ve KDV paylarını ayrı ayrı %0 ile %100 arasında kabul eder.\n\nTelegram'da almak istediğiniz bildirimleri seçin.\n\nTipik bir sipariş tutarını kontrol etmek için hesap makinesini kullanın.\n\nÜcretleri ve KDV'yi hesapla\n\n4. Ödeme bağlantısı hazırlayın\n\nNet bir sipariş başlığı, tutar ve para birimi girin. Müşteri, satın alma ayrıntıları ve ödenmesi gereken toplam tutar ile özel bir sayfa alır. Mevcut bir fatura, mağaza ayarlarınız değiştiğinde orijinal koşullarını korur.\n\nÖdeme bağlantıları kılavuzu\n\n5. Ödeme kullanılabilirliğini kontrol edin\n\nHesabınızdan faturaları, API anahtarlarını, araçları ve webhook'ları yönetin. Ödemeden önce Kevmi, ağ geçidi yapılandırmasını, satıcı onayını, tutarı ve fatura koşullarını kontrol eder. Seçilen yöntem kullanılamıyorsa, ödeme sayfası nedenini açıklar.\n\nYeni çalışma alanı faturaları USD taban fiyat kullanır ve Any dört yöntemin tümünü sunar. SBP, donmuş Rusya Merkez Bankası referans kuru üzerinden RUB'a çevrilir; kripto, açık 1:1 USD/USDT fatura kuralını kullanır. Eski yerel fiyatlandırma, eski faturalar ve pricingMode=universal olmayan API istekleri için kullanılabilir durumda kalır. Aşağıdaki çoklu mağaza ve USD fiyatlandırma bölümüne bakın.\n\nYeni bir canlı kart veya Alipay ödemesi için mevcut ağ geçidi yalnızca feeCustomerPercent=0 ve vatCustomerPercent=100'ü destekler: satıcı tüm işlem ücretini karşılar ve KDV müşteri için tam olarak eklenir. Diğer paylar bir faturada kaydedilip hesaplanabilir, ancak yürütme unsupported_allocation ile engellenir. Sunucu kaydedilmiş koşulları sessizce asla değiştirmez. SBP ve USDT kripto ödemeleri tüm işlem ücreti paylarını destekler ve KDV içermez.\n\nFatura, anahtar veya başvuru oluşturmak para yükümlülüğü getirmez. API üzerinden ödeme oluşturma kullanılamaz; para çekme koşulları ayrı bir kılavuzda ele alınır.\n\nAğ geçidi entegrasyon gereksinimleri\n\nBirden fazla mağaza ve tek USD taban fiyat\n\nToplu analiz ve işlemler için Tüm mağazaları seçin veya kendi kayıtları için bir mağaza seçin. Her mağazanın ayrı bir storeId'si, adı, varsayılan KDV'si, faturaları, API anahtarları, webhook uç noktaları, olay geçmişi ve web sitesi uygulaması vardır. Bildirimler ve destek talepleri hesaba aittir. Bir hesap en fazla 100 mağaza oluşturabilir. Mevcut kayıtlar ilk mağazasında kalır.\n\nYeni çalışma alanı faturaları pricingMode=\"universal\" ve USD taban fiyat kullanır. Any, kart, alipay, sbp ve kriptoyu içerir; bir satıcı bir alt küme seçebilir. Kartlar ve Alipay USD tahsil eder. SBP, Rusya Merkez Bankası USD/RUB referans kurunu kullanarak RUB tahsil eder. Kripto, açık fatura kuralı 1 USD = 1 USDT kapsamında USDT tahsil eder. Bu bir fatura dönüştürme kuralıdır, piyasa USDT kotasyonu değildir. Ağ geçidi, transferden önce seçilen coin'in kurunu, tam transfer tutarını ve talimatlarını sağlar.\n\nReferans kuru ve her iki tutar oluşturma sırasında dondurulur. RUB dönüştürmesi içeren faturalar 24 saat içinde sona erer. Referans kuru alınamazsa, oluşturma FX_UNAVAILABLE ile başarısız olur; uydurulmuş veya bayat yedek kur kullanılmaz. Sahip yanıt tutarı ve kotasyonlar USD muhasebe para birimini kullanır. quotes[method].settlement, yerel tahsil kotasyonunu içerir. Genel ödeme sayfası, seçilen tahsil para birimini currency içinde, orijinal fiyatı baseAmountMinor/baseCurrency içinde ve referans kurunu fx içinde gösterir. Bir ödeme gönderildikten sonra yöntemi değiştirilemez; bir faturanın tek ağ geçidi işlemi vardır.\n\nAmaçlanan mağaza içinde bir API anahtarı oluşturun ve sunucunuzdan Authorization: Bearer <key> gönderin. Mağaza bağlaması değişmezdir; X-Kevmi-Store, anahtara başka bir mağazaya erişim izni veremez. Tarayıcı oturumları X-Kevmi-Store: <storeId> seçer; atlanırsa ilk mağaza seçilir. all değeri yalnızca GET /api/account/dashboard ve GET /api/payment-links tarafından kabul edilir. Değişiklikler seçili bir mağaza, Origin ve X-CSRF-Token gerektirir. Hesap kimlikleri ve mağaza kimlikleri farklı tanımlayıcılardır.\n\nUyumluluk için, pricingMode=\"universal\" içermeyen API istekleri yerel fiyatlandırmayı ve orijinal para birimi kısıtlamalarını korur. Mevcut faturalar asla yeniden hesaplanmaz. Analizlerdeki onaylanmış tahsilatlar, doğrulanmış ödemelerden kaydedilmiş fatura giderlerinin düşülmesiyle elde edilir; bunlar çekilebilir bakiye değildir. Eski fatura para birimleri ayrı kalır ve ödemeler destek ile düzenlenir. Bir siparişi yalnızca sunucu API'si, olay geçmişi veya imzalı bir webhook üzerinden payment.fulfillmentReady=true ve payment.status=\"succeeded\" durumunu kontrol ettikten sonra yerine getirin.",
      "readMinutes": 3
    },
    {
      "id": "overview",
      "title": "Kevmi nasıl çalışır",
      "summary": "Kevmi, bireysel faturaları, ödeme yöntemlerini ve fiyatlandırma kurallarını tek bir çalışma alanında birleştirir. Her sipariş ayrı ayrı ödenir. Abonelik veya otomatik yinelenen ücret yoktur.",
      "group": "start",
      "url": "/docs/overview",
      "tags": [
        "genel bakış",
        "tek seferlik ödemeler",
        "çalışma alanı",
        "abonelik yok"
      ],
      "sections": [
        {
          "id": "roles",
          "title": "Satıcı ve müşteri",
          "paragraphs": [
            "Satıcı bir sipariş başlığı, taban fiyat, para birimi ve vergi dağılımı belirler. Müşteri özel bir ödeme sayfası açar, kullanılabilir bir yöntem seçer ve onaylamadan önce toplamı görür.",
            "Müşterinin satıcı çalışma alanına erişimi gerekmez. Ödeme sayfası yalnızca bir siparişin ayrıntılarını gösterir; mağaza bakiyesini, ayarları veya diğer müşteri kayıtlarını göstermez."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "channels",
          "title": "Dört ödeme kanalı",
          "paragraphs": [],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Yöntem",
              "Hedef kitle",
              "Kabul ücreti"
            ],
            "rows": [
              [
                "Uluslararası kartlar",
                "Uluslararası müşteriler",
                "10% + $0.50; 16% KDV"
              ],
              [
                "SBP",
                "Rusya'daki müşteriler",
                "8%; KDV yok"
              ],
              [
                "Alipay",
                "Çin'deki müşteriler",
                "10% + $0.50; 16% KDV"
              ],
              [
                "Kripto para",
                "Kripto ödemeler",
                "4%; KDV yok"
              ]
            ]
          },
          "code": null,
          "note": "Visa ve Mastercard, yayımlanan kısıtlamalar hariç 190'dan fazla ülkede kullanılabilir. Kripto para tüm ülkelerde kullanılabilir.",
          "links": [
            {
              "label": "Ülkeler ve kısıtlamalar",
              "href": "/docs/geography"
            }
          ]
        },
        {
          "id": "workspace",
          "title": "Çalışma alanınızın içinde",
          "paragraphs": [
            "Sunucu kayıtları doğrulanmış hesaba aittir. Demo ayrıdır ve canlı ödeme veya çekilebilir bakiye oluşturamaz."
          ],
          "bullets": [
            "Ödeme bağlantıları ve sipariş koşulları: /account#links.",
            "Web sitesi başvuruları ve bireysel takip: /account#applications.",
            "API anahtarları, webhook'lar, araç ve olaylar: /account#keys, #webhooks, #widget, #events.",
            "Fiyatlandırma, hesap makinesi, ülke haritası ve tam dokümantasyon: /account#knowledge.",
            "Mağaza ayarları, Telegram bildirimleri ve destek talepleri aynı hesapta kalır."
          ],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "money",
          "title": "Tutarları anlama",
          "paragraphs": [
            "Taban fiyat, maliyet dağıtımından önceki mal veya hizmet fiyatıdır. Ücret ve KDV bu tabanı bağımsız olarak kullanır. Müşteri payları ödemeye eklenir; satıcı payları taban fiyattan düşülür. Kart ve Alipay KDV'si %16'dır ve ücret ile KDV dağıtımı ayrı kontrol edilir.",
            "Kevmi'nin platform komisyonu yayınlanan ücretlere zaten dahildir. Ek %5 ek ücret yoktur. USDT TRC20 ödemesi, fon kaynağına ve açık bir dönüşüm kotasyonuna dayalı ayrı bir ücrete tabidir."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Tüm ücretler",
              "href": "/pricing"
            }
          ]
        },
        {
          "id": "availability",
          "title": "Özelliklere erişim",
          "paragraphs": [
            "Belgeler, hesaplayıcı ve belge asistanı oturum açmadan kullanılabilir. Mağaza ayarları, ödeme bağlantıları ve özel destek talepleri hesap gerektirir. Finansal kullanılabilirlik ayrıca kontrol edilir ve kullanılamayan bir ödeme kanalı, tahsilattan önce bildirilir."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        }
      ],
      "body": "Satıcı ve müşteri\n\nSatıcı bir sipariş başlığı, taban fiyat, para birimi ve vergi dağılımı belirler. Müşteri özel bir ödeme sayfası açar, kullanılabilir bir yöntem seçer ve onaylamadan önce toplamı görür.\n\nMüşterinin satıcı çalışma alanına erişimi gerekmez. Ödeme sayfası yalnızca bir siparişin ayrıntılarını gösterir; mağaza bakiyesini, ayarları veya diğer müşteri kayıtlarını göstermez.\n\nDört ödeme kanalı\n\nYöntem · Hedef kitle · Kabul ücreti\nUluslararası kartlar · Uluslararası müşteriler · 10% + $0.50; 16% KDV\nSBP · Rusya'daki müşteriler · 8%; KDV yok\nAlipay · Çin'deki müşteriler · 10% + $0.50; 16% KDV\nKripto para · Kripto ödemeler · 4%; KDV yok\n\nVisa ve Mastercard, yayımlanan kısıtlamalar hariç 190'dan fazla ülkede kullanılabilir. Kripto para tüm ülkelerde kullanılabilir.\n\nÜlkeler ve kısıtlamalar\n\nÇalışma alanınızın içinde\n\nSunucu kayıtları doğrulanmış hesaba aittir. Demo ayrıdır ve canlı ödeme veya çekilebilir bakiye oluşturamaz.\n\nÖdeme bağlantıları ve sipariş koşulları: /account#links.\n\nWeb sitesi başvuruları ve bireysel takip: /account#applications.\n\nAPI anahtarları, webhook'lar, araç ve olaylar: /account#keys, #webhooks, #widget, #events.\n\nFiyatlandırma, hesap makinesi, ülke haritası ve tam dokümantasyon: /account#knowledge.\n\nMağaza ayarları, Telegram bildirimleri ve destek talepleri aynı hesapta kalır.\n\nTutarları anlama\n\nTaban fiyat, maliyet dağıtımından önceki mal veya hizmet fiyatıdır. Ücret ve KDV bu tabanı bağımsız olarak kullanır. Müşteri payları ödemeye eklenir; satıcı payları taban fiyattan düşülür. Kart ve Alipay KDV'si %16'dır ve ücret ile KDV dağıtımı ayrı kontrol edilir.\n\nKevmi'nin platform komisyonu yayınlanan ücretlere zaten dahildir. Ek %5 ek ücret yoktur. USDT TRC20 ödemesi, fon kaynağına ve açık bir dönüşüm kotasyonuna dayalı ayrı bir ücrete tabidir.\n\nTüm ücretler\n\nÖzelliklere erişim\n\nBelgeler, hesaplayıcı ve belge asistanı oturum açmadan kullanılabilir. Mağaza ayarları, ödeme bağlantıları ve özel destek talepleri hesap gerektirir. Finansal kullanılabilirlik ayrıca kontrol edilir ve kullanılamayan bir ödeme kanalı, tahsilattan önce bildirilir.",
      "readMinutes": 3
    },
    {
      "id": "fees",
      "title": "Ödeme ve ödeme ücretleri",
      "summary": "Kabul ücreti ödeme yöntemine bağlıdır ve sipariş taban fiyatını kullanır. Kevmi'nin komisyonu dahildir. KDV ve ödeme ücretleri ayrı gösterilir.",
      "group": "payments",
      "url": "/docs/fees",
      "tags": [
        "ücretler",
        "fiyatlandırma",
        "maliyet",
        "ödeme",
        "komisyon"
      ],
      "sections": [
        {
          "id": "incoming",
          "title": "Bir ödeme kabul etme",
          "paragraphs": [
            "Yüzde ve sabit bileşenleri ekleyin. 5 ABD doları tutarındaki bir kart siparişi için ücret 0,50 ABD doları + 0,50 ABD doları = 1 ABD dolarıdır. KDV 0,80 ABD dolarıdır ve bu ücretten ayrıdır.",
            "Ortalama olarak yaklaşık %5 olan platform payı bu koşullara zaten dahildir. İkinci bir platform yüzdesi eklemeyin."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Yöntem",
              "Yüzde",
              "Sabit ücret",
              "KDV"
            ],
            "rows": [
              [
                "Uluslararası kartlar",
                "10%",
                "$0.50",
                "Taban fiyatın %16'sı"
              ],
              [
                "Alipay",
                "10%",
                "$0.50",
                "Taban fiyatın %16'sı"
              ],
              [
                "SBP",
                "8%",
                "Yok",
                "Yok"
              ],
              [
                "Kripto para",
                "4%",
                "Yok",
                "Yok"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "payout",
          "title": "Fon çekme",
          "paragraphs": [
            "Fon kaynağı ve ödeme ağı ayrı ayarlardır. TRC20 kullanmak her ödeme ücretini aynı yapmaz. Ödeme ücreti, kabul ücretinden ayrıdır.",
            "Sabit ücreti belirtilen para biriminde tutun. Bir ABD doları tutarından 400 RUB düşmeyin veya 3 ABD dolarının 3 USDT'ye eşit olduğunu varsaymayın. Nihai ödeme açık bir dönüşüm kotasyonu gerektirir."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Fon kaynağı",
              "Ödeme ücreti",
              "Hedef"
            ],
            "rows": [
              [
                "Kartlar",
                "4%",
                "USDT TRC20"
              ],
              [
                "Alipay",
                "4%",
                "USDT TRC20"
              ],
              [
                "SBP",
                "%5 + 400 RUB",
                "USDT TRC20"
              ],
              [
                "Kripto para",
                "0% + $3",
                "USDT TRC20"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "rounding",
          "title": "Hesaplama hassasiyeti",
          "paragraphs": [
            "Fatura tutarı bir tam sayıdır: 500, açıkça belirtilen para biriminde 5,00 USD, RUB veya USDT anlamına gelir. Bunlar fatura hesaplama birimleridir; USD ve USDT otomatik olarak dönüştürülmez. Ücretler ve KDV ayrı yukarı yuvarlama kullanır.",
            "Bir kripto transferi için, oluşturulan işlemin döndürdüğü tam ondalık madeni para tutarını ve ağını kullanın. Transfer tutarını yuvarlanmış fatura fiyatından türetmeyin. Bir hesaplama negatif satıcı hasılatı üretemez."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "Formula",
            "code": "feeMinor = roundHalfUp(baseMinor × rate / 100) + fixedMinor\nvatMinor = roundHalfUp(baseMinor × 16 / 100)\n// For SBP and cryptocurrency, vatMinor = 0"
          },
          "note": "",
          "links": []
        },
        {
          "id": "before-pay",
          "title": "Ödemeden önce kontrol edin",
          "paragraphs": [],
          "bullets": [
            "Orijinal sipariş tutarı ve para birimi.",
            "Ücreti ve KDV'nin uygulanıp uygulanmadığını belirleyen ödeme yöntemi.",
            "Faturayla kaydedilen KDV mükellefi.",
            "Müşteri toplamı ve beklenen satıcı alacağı."
          ],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Tutarınızı hesaplayın",
              "href": "/pricing"
            },
            {
              "label": "KDV'yi anlayın",
              "href": "/docs/vat"
            }
          ]
        }
      ],
      "body": "Bir ödeme kabul etme\n\nYüzde ve sabit bileşenleri ekleyin. 5 ABD doları tutarındaki bir kart siparişi için ücret 0,50 ABD doları + 0,50 ABD doları = 1 ABD dolarıdır. KDV 0,80 ABD dolarıdır ve bu ücretten ayrıdır.\n\nOrtalama olarak yaklaşık %5 olan platform payı bu koşullara zaten dahildir. İkinci bir platform yüzdesi eklemeyin.\n\nYöntem · Yüzde · Sabit ücret · KDV\nUluslararası kartlar · 10% · $0.50 · Taban fiyatın %16'sı\nAlipay · 10% · $0.50 · Taban fiyatın %16'sı\nSBP · 8% · Yok · Yok\nKripto para · 4% · Yok · Yok\n\nFon çekme\n\nFon kaynağı ve ödeme ağı ayrı ayarlardır. TRC20 kullanmak her ödeme ücretini aynı yapmaz. Ödeme ücreti, kabul ücretinden ayrıdır.\n\nSabit ücreti belirtilen para biriminde tutun. Bir ABD doları tutarından 400 RUB düşmeyin veya 3 ABD dolarının 3 USDT'ye eşit olduğunu varsaymayın. Nihai ödeme açık bir dönüşüm kotasyonu gerektirir.\n\nFon kaynağı · Ödeme ücreti · Hedef\nKartlar · 4% · USDT TRC20\nAlipay · 4% · USDT TRC20\nSBP · %5 + 400 RUB · USDT TRC20\nKripto para · 0% + $3 · USDT TRC20\n\nHesaplama hassasiyeti\n\nFatura tutarı bir tam sayıdır: 500, açıkça belirtilen para biriminde 5,00 USD, RUB veya USDT anlamına gelir. Bunlar fatura hesaplama birimleridir; USD ve USDT otomatik olarak dönüştürülmez. Ücretler ve KDV ayrı yukarı yuvarlama kullanır.\n\nBir kripto transferi için, oluşturulan işlemin döndürdüğü tam ondalık madeni para tutarını ve ağını kullanın. Transfer tutarını yuvarlanmış fatura fiyatından türetmeyin. Bir hesaplama negatif satıcı hasılatı üretemez.\n\nfeeMinor = roundHalfUp(baseMinor × rate / 100) + fixedMinor\nvatMinor = roundHalfUp(baseMinor × 16 / 100)\n// For SBP and cryptocurrency, vatMinor = 0\n\nÖdemeden önce kontrol edin\n\nOrijinal sipariş tutarı ve para birimi.\n\nÜcreti ve KDV'nin uygulanıp uygulanmadığını belirleyen ödeme yöntemi.\n\nFaturayla kaydedilen KDV mükellefi.\n\nMüşteri toplamı ve beklenen satıcı alacağı.\n\nTutarınızı hesaplayın\n\nKDV'yi anlayın",
      "readMinutes": 3
    },
    {
      "id": "vat",
      "title": "KDV ve maliyet dağıtımı",
      "summary": "Uluslararası kartlar ve Alipay için KDV, taban sipariş fiyatının %16'sıdır. Satıcı, müşteri payını %0 ile %100 arasında belirler ve kalanını gelirden karşılar. SBP ve kripto para, bu yayınlanan koşullar altında KDV'ye tabi değildir.",
      "group": "payments",
      "url": "/docs/vat",
      "tags": [
        "KDV",
        "vergi",
        "müşteri",
        "satıcı",
        "beş dolar"
      ],
      "sections": [
        {
          "id": "base",
          "title": "Ücretler ve vergi için tek taban",
          "paragraphs": [
            "Taban fiyat, mağazanın girdiği sipariş tutarıdır. %10 + 0,50 ABD doları ücreti ve %16 KDV bu fiyattan bağımsız olarak hesaplanır. Ücret, üstüne eklenen KDV'ye uygulanmaz.",
            "5 ABD doları taban fiyatla ücret 1 ABD doları ve KDV 0,80 ABD dolarıdır. Ödeyeni değiştirmek dağıtımı değiştirir, vergi oranını veya hesaplama tabanını değiştirmez."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "customer",
          "title": "Müşteri KDV'yi öder",
          "paragraphs": [
            "Bu varsayılan KDV kuralıdır: eski müşteri değerine eşdeğer %100 müşteri payı. Bu örnekte satıcı ücretin tamamını karşılar. KDV taban fiyata eklenir. Ödeme ekranı sipariş fiyatını, KDV'yi ve ödenecek toplamı gösterir.",
            "Sadece kabul ücreti taban fiyattan düşülür. 5 ABD doları tutarındaki bir sipariş için müşteri 5,80 ABD doları öder ve satıcı 4 ABD doları alır."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "Formula",
            "code": "customerTotalMinor = baseMinor + vatMinor\nmerchantNetMinor = baseMinor - feeMinor"
          },
          "note": "",
          "links": []
        },
        {
          "id": "merchant",
          "title": "Satıcı KDV'yi öder",
          "paragraphs": [
            "Bu örnekte, müşteri payları hem KDV hem de ücret için %0'dır. Eski satıcı KDV değeri, sıfır müşteri KDV payına karşılık gelir; satıcı her iki maliyeti de taban fiyattan karşılar.",
            "5 ABD doları tutarındaki bir sipariş için müşteri 5 ABD doları öder, ücret 1 ABD dolarıdır, KDV 0,80 ABD dolarıdır ve satıcı 3,20 ABD doları alır. KDV taban fiyatın %16'sı olarak kalır; bu kuralı 16/116 formülüyle değiştirmeyin."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "Formula",
            "code": "customerTotalMinor = baseMinor\nmerchantNetMinor = baseMinor - feeMinor - vatMinor"
          },
          "note": "",
          "links": []
        },
        {
          "id": "comparison",
          "title": "Yan yana bir örnek",
          "paragraphs": [],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Tutar",
              "Müşteri KDV'yi öder",
              "Satıcı KDV'yi öder"
            ],
            "rows": [
              [
                "Taban sipariş fiyatı",
                "$5.00",
                "$5.00"
              ],
              [
                "Kabul ücreti",
                "$1.00",
                "$1.00"
              ],
              [
                "KDV",
                "$0.80",
                "$0.80"
              ],
              [
                "Müşteri öder",
                "$5.80",
                "$5.00"
              ],
              [
                "Satıcı alır",
                "$4.00",
                "$3.20"
              ]
            ]
          },
          "code": null,
          "note": "Her iki sütun %0 müşteri işlem ücreti payı varsayar. Ara KDV payları ve ayrı ücret tahsisi hesap makinesinde mevcuttur.",
          "links": []
        },
        {
          "id": "snapshot",
          "title": "Ayar uygulandığında",
          "paragraphs": [
            "Mağaza tercihi başlangıç tahsisini sağlar. Arayüz ve API, her fatura için 0 ile 100 arasında bağımsız tam sayı müşteri KDV ve işlem ücreti paylarını kaydeder. Mağaza ayarlarındaki değişiklikler düzenlenmiş faturaları yeniden hesaplamaz.",
            "Yeni bir canlı kart veya Alipay ödemesi için mevcut ağ geçidi yalnızca feeCustomerPercent=0 ve vatCustomerPercent=100'ü destekler: satıcı tüm işlem ücretini karşılar ve KDV müşteri için tam olarak eklenir. Diğer paylar bir faturada kaydedilip hesaplanabilir, ancak yürütme unsupported_allocation ile engellenir. Sunucu kaydedilmiş koşulları sessizce asla değiştirmez. SBP ve USDT kripto ödemeleri tüm işlem ücreti paylarını destekler ve KDV içermez.",
            "Farklı koşullar için yeni bir bağlantı oluşturun. KDV, SBP ve kripto para için sıfırdır."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Mağaza ayarları",
              "href": "/docs/settings"
            },
            {
              "label": "Hesaplamayı kontrol edin",
              "href": "/pricing"
            },
            {
              "label": "İşlem ücretlerini ve KDV'yi bölün",
              "href": "/docs/cost-sharing"
            }
          ]
        }
      ],
      "body": "Ücretler ve vergi için tek taban\n\nTaban fiyat, mağazanın girdiği sipariş tutarıdır. %10 + 0,50 ABD doları ücreti ve %16 KDV bu fiyattan bağımsız olarak hesaplanır. Ücret, üstüne eklenen KDV'ye uygulanmaz.\n\n5 ABD doları taban fiyatla ücret 1 ABD doları ve KDV 0,80 ABD dolarıdır. Ödeyeni değiştirmek dağıtımı değiştirir, vergi oranını veya hesaplama tabanını değiştirmez.\n\nMüşteri KDV'yi öder\n\nBu varsayılan KDV kuralıdır: eski müşteri değerine eşdeğer %100 müşteri payı. Bu örnekte satıcı ücretin tamamını karşılar. KDV taban fiyata eklenir. Ödeme ekranı sipariş fiyatını, KDV'yi ve ödenecek toplamı gösterir.\n\nSadece kabul ücreti taban fiyattan düşülür. 5 ABD doları tutarındaki bir sipariş için müşteri 5,80 ABD doları öder ve satıcı 4 ABD doları alır.\n\ncustomerTotalMinor = baseMinor + vatMinor\nmerchantNetMinor = baseMinor - feeMinor\n\nSatıcı KDV'yi öder\n\nBu örnekte, müşteri payları hem KDV hem de ücret için %0'dır. Eski satıcı KDV değeri, sıfır müşteri KDV payına karşılık gelir; satıcı her iki maliyeti de taban fiyattan karşılar.\n\n5 ABD doları tutarındaki bir sipariş için müşteri 5 ABD doları öder, ücret 1 ABD dolarıdır, KDV 0,80 ABD dolarıdır ve satıcı 3,20 ABD doları alır. KDV taban fiyatın %16'sı olarak kalır; bu kuralı 16/116 formülüyle değiştirmeyin.\n\ncustomerTotalMinor = baseMinor\nmerchantNetMinor = baseMinor - feeMinor - vatMinor\n\nYan yana bir örnek\n\nTutar · Müşteri KDV'yi öder · Satıcı KDV'yi öder\nTaban sipariş fiyatı · $5.00 · $5.00\nKabul ücreti · $1.00 · $1.00\nKDV · $0.80 · $0.80\nMüşteri öder · $5.80 · $5.00\nSatıcı alır · $4.00 · $3.20\n\nHer iki sütun %0 müşteri işlem ücreti payı varsayar. Ara KDV payları ve ayrı ücret tahsisi hesap makinesinde mevcuttur.\n\nAyar uygulandığında\n\nMağaza tercihi başlangıç tahsisini sağlar. Arayüz ve API, her fatura için 0 ile 100 arasında bağımsız tam sayı müşteri KDV ve işlem ücreti paylarını kaydeder. Mağaza ayarlarındaki değişiklikler düzenlenmiş faturaları yeniden hesaplamaz.\n\nYeni bir canlı kart veya Alipay ödemesi için mevcut ağ geçidi yalnızca feeCustomerPercent=0 ve vatCustomerPercent=100'ü destekler: satıcı tüm işlem ücretini karşılar ve KDV müşteri için tam olarak eklenir. Diğer paylar bir faturada kaydedilip hesaplanabilir, ancak yürütme unsupported_allocation ile engellenir. Sunucu kaydedilmiş koşulları sessizce asla değiştirmez. SBP ve USDT kripto ödemeleri tüm işlem ücreti paylarını destekler ve KDV içermez.\n\nFarklı koşullar için yeni bir bağlantı oluşturun. KDV, SBP ve kripto para için sıfırdır.\n\nMağaza ayarları\n\nHesaplamayı kontrol edin\n\nİşlem ücretlerini ve KDV'yi bölün",
      "readMinutes": 4
    },
    {
      "id": "geography",
      "title": "Ülkeler ve ödeme yöntemleri",
      "summary": "Visa ve Mastercard, yayınlanan kısıtlamalar dışında 190'dan fazla ülkeyi kapsar. SBP Rusya'ya hizmet verir, Alipay Çin'e hizmet verir ve kripto para dünya genelinde mevcuttur.",
      "group": "payments",
      "url": "/docs/geography",
      "tags": [
        "ülkeler",
        "kapsam",
        "190+",
        "Rusya",
        "Çin",
        "Åland Adaları",
        "Arnavutluk",
        "Cezayir",
        "Amerikan Samoası",
        "Andorra",
        "Angola",
        "Anguilla",
        "Antigua ve Barbuda",
        "Arjantin",
        "Ermenistan",
        "Aruba",
        "Avustralya",
        "Avusturya",
        "Azerbaycan",
        "Bahamalar",
        "Bahreyn",
        "Bangladeş",
        "Barbados",
        "Belçika",
        "Belize",
        "Benin",
        "Bermuda",
        "Butan",
        "Bolivya",
        "Karayip Hollandası",
        "Bosna-Hersek",
        "Botsvana",
        "Bouvet Adası",
        "Brezilya",
        "Britanya Hint Okyanusu Toprakları",
        "Brunei",
        "Bulgaristan",
        "Burkina Faso",
        "Yeşil Burun Adaları",
        "Kamboçya",
        "Kamerun",
        "Kanada",
        "Cayman Adaları",
        "Şili",
        "Çin",
        "Christmas Adası",
        "Cocos (Keeling) Adaları",
        "Kolombiya",
        "Komorlar",
        "Cook Adaları",
        "Kosta Rika",
        "Hırvatistan",
        "Curaçao",
        "Kıbrıs",
        "Çekya",
        "Fildişi Sahili",
        "Danimarka",
        "Cibuti",
        "Dominika",
        "Dominik Cumhuriyeti",
        "Ekvador",
        "Mısır",
        "El Salvador",
        "Ekvator Ginesi",
        "Estonya",
        "Esvatini",
        "Etiyopya",
        "Falkland Adaları",
        "Faroe Adaları",
        "Mikronezya",
        "Fiji",
        "Finlandiya",
        "Fransa",
        "Fransız Guyanası",
        "Fransız Polinezyası",
        "Fransız Güney Toprakları",
        "Gabon",
        "Gambiya",
        "Gürcistan",
        "Almanya",
        "Gana",
        "Cebelitarık",
        "Yunanistan",
        "Grönland",
        "Grenada",
        "Guadeloupe",
        "Guam",
        "Guatemala",
        "Guernsey",
        "Gine",
        "Gine-Bissau",
        "Guyana",
        "Heard ve McDonald Adaları",
        "Vatikan",
        "Honduras",
        "Hong Kong ÖİB Çin",
        "Macaristan",
        "İzlanda",
        "Hindistan",
        "Endonezya",
        "İrlanda",
        "Man Adası",
        "İsrail",
        "İtalya",
        "Jamaika",
        "Japonya",
        "Jersey",
        "Ürdün",
        "Kazakistan",
        "Kenya",
        "Kiribati",
        "Kuveyt",
        "Kırgızistan",
        "Laos",
        "Letonya",
        "Lübnan",
        "Lesotho",
        "Liberya",
        "Lihtenştayn",
        "Litvanya",
        "Lüksemburg",
        "Çin Makao ÖİB",
        "Madagaskar",
        "Malavi",
        "Malezya",
        "Maldivler",
        "Malta",
        "Marshall Adaları",
        "Martinik",
        "Moritanya",
        "Mauritius",
        "Mayotte",
        "Meksika",
        "Moldova",
        "Monako",
        "Moğolistan",
        "Karadağ",
        "Montserrat",
        "Fas",
        "Mozambik",
        "Namibya",
        "Nauru",
        "Nepal",
        "Hollanda",
        "Yeni Kaledonya",
        "Yeni Zelanda",
        "Nijer",
        "Nijerya",
        "Niue",
        "Norfolk Adası",
        "Kuzey Makedonya",
        "Kuzey Mariana Adaları",
        "Norveç",
        "Umman",
        "Pakistan",
        "Palau",
        "Panama",
        "Papua Yeni Gine",
        "Paraguay",
        "Peru",
        "Filipinler",
        "Pitcairn Adaları",
        "Polonya",
        "Portekiz",
        "Porto Riko",
        "Katar",
        "Romanya",
        "Ruanda",
        "Réunion",
        "Saint Barthélemy",
        "Saint Helena",
        "Saint Kitts ve Nevis",
        "Saint Lucia",
        "Saint Martin",
        "Saint Pierre ve Miquelon",
        "Saint Vincent ve Grenadinler",
        "Samoa",
        "San Marino",
        "São Tomé ve Príncipe",
        "Suudi Arabistan",
        "Senegal",
        "Sırbistan",
        "Seyşeller",
        "Sierra Leone",
        "Singapur",
        "Sint Maarten",
        "Slovakya",
        "Slovenya",
        "Solomon Adaları",
        "Güney Afrika",
        "Güney Georgia ve Güney Sandwich Adaları",
        "Güney Kore",
        "İspanya",
        "Sri Lanka",
        "Filistin Toprakları",
        "Surinam",
        "Svalbard ve Jan Mayen",
        "İsveç",
        "İsviçre",
        "Tayvan",
        "Tacikistan",
        "Tanzanya",
        "Tayland",
        "Timor-Leste",
        "Togo",
        "Tokelau",
        "Tonga",
        "Trinidad ve Tobago",
        "Tunus",
        "Türkmenistan",
        "Turks ve Caicos Adaları",
        "Tuvalu",
        "Türkiye",
        "Uganda",
        "Ukrayna",
        "Birleşik Arap Emirlikleri",
        "Birleşik Krallık",
        "ABD Dış Adaları",
        "Amerika Birleşik Devletleri",
        "Uruguay",
        "Özbekistan",
        "Vanuatu",
        "Vietnam",
        "Britanya Virjin Adaları",
        "ABD Virjin Adaları",
        "Wallis ve Futuna",
        "Batı Sahra",
        "Zambiya"
      ],
      "sections": [
        {
          "id": "coverage",
          "title": "Kanala göre kapsam",
          "paragraphs": [],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Kanal",
              "Kapsam",
              "Koşullar"
            ],
            "rows": [
              [
                "Uluslararası kartlar",
                "190'dan fazla ülke",
                "Kısıtlama listesi ve Ukrayna'nın beş bölgesi hariç"
              ],
              [
                "SBP",
                "Rusya",
                "Kullanılabilirlik bankaya ve işleme bağlıdır"
              ],
              [
                "Alipay",
                "Çin",
                "Kullanılabilirlik hesaba ve işleme bağlıdır"
              ],
              [
                "Kripto para",
                "Tüm ülkeler",
                "Desteklenen bir coin ve ağ seçin"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "map",
          "title": "Etkileşimli harita",
          "paragraphs": [
            "Coğrafya sayfasında iki boyutlu bir dünya haritası vardır. Filtreler yayınlanan uluslararası kart ülkelerini, SBP için Rusya'yı ve Alipay için Çin'i vurgular. Ülke adına veya ISO koduna göre arama yaparak yöntemlerini ve notlarını görebilirsiniz.",
            "Tarama işareti, beş bölge kartlardan hariç tutulduğu için Ukrayna'yı işaretler. Ukrayna'nın geri kalanı kullanılabilir. Kart kısıtlamaları tüm ülkelerde kullanılabilen kripto para için geçerli değildir."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Haritayı aç",
              "href": "/countries"
            }
          ]
        },
        {
          "id": "cards",
          "title": "Listenin kapsadığı şeyler",
          "paragraphs": [
            "Aşağıdaki eksiksiz liste uluslararası kart kapsamını açıklar. Tüccar kayıt ülkeleri ve ödeme hedefleri ayrı koşullara tabidir.",
            "Onay, ihraç eden ülkeye, bankaya, kart türüne ve ödeme kanalı kontrollerine bağlıdır. Bir ülkenin listede yer alması, her kart veya işlem için onay garanti etmez."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "restrictions",
          "title": "Visa ve Mastercard kısıtlamaları",
          "paragraphs": [
            "Kartlar Kırım, Donetsk, Luhansk, Herson ve Zaporijya'da kullanılamaz. Ukrayna'nın geri kalanı kullanılabilir.",
            "Diğer tüm ülkeler kullanılabilir. Hollanda Antilleri sağlayıcı listesinden tarihsel bir kayıt olarak korunmaktadır; modern Karayip topraklarının hiçbirini engellemez."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Kod",
              "Ülke veya bölge"
            ],
            "rows": [
              [
                "AF",
                "Afganistan"
              ],
              [
                "AQ",
                "Antarktika"
              ],
              [
                "BY",
                "Belarus"
              ],
              [
                "MM",
                "Burma (Myanmar)"
              ],
              [
                "BI",
                "Burundi"
              ],
              [
                "CF",
                "Orta Afrika Cumhuriyeti"
              ],
              [
                "TD",
                "Çad"
              ],
              [
                "CU",
                "Küba"
              ],
              [
                "CD",
                "Demokratik Kongo Cumhuriyeti"
              ],
              [
                "CG",
                "Kongo Cumhuriyeti"
              ],
              [
                "ER",
                "Eritre"
              ],
              [
                "HT",
                "Haiti"
              ],
              [
                "IR",
                "İran"
              ],
              [
                "IQ",
                "Irak"
              ],
              [
                "LY",
                "Libya"
              ],
              [
                "ML",
                "Mali"
              ],
              [
                "NI",
                "Nikaragua"
              ],
              [
                "KP",
                "Kuzey Kore"
              ],
              [
                "RU",
                "Rusya"
              ],
              [
                "SO",
                "Somali"
              ],
              [
                "SS",
                "Güney Sudan"
              ],
              [
                "SD",
                "Sudan"
              ],
              [
                "SY",
                "Suriye"
              ],
              [
                "VE",
                "Venezuela"
              ],
              [
                "YE",
                "Yemen"
              ],
              [
                "ZW",
                "Zimbabve"
              ],
              [
                "UA-43",
                "Kırım (Ukrayna Bölgesi)"
              ],
              [
                "UA-14",
                "Donetsk (Ukrayna Bölgesi)"
              ],
              [
                "UA-65",
                "Herson (Ukrayna Bölgesi)"
              ],
              [
                "UA-09",
                "Luhansk (Ukrayna Bölgesi)"
              ],
              [
                "UA-23",
                "Zaporijya (Ukrayna Bölgesi)"
              ],
              [
                "AN",
                "Hollanda Antilleri"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "card-list",
          "title": "Ülke ve bölge dizini",
          "paragraphs": [
            "Adlar, ISO kodları ve işaretçiler paylaşılan ülke kaydından gelir. Bu notlar uluslararası kartlar için geçerlidir."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "ISO",
              "Ülke veya bölge",
              "Not"
            ],
            "rows": [
              [
                "AX",
                "Åland Adaları",
                "—"
              ],
              [
                "AL",
                "Arnavutluk",
                "—"
              ],
              [
                "DZ",
                "Cezayir",
                "—"
              ],
              [
                "AS",
                "Amerikan Samoası",
                "—"
              ],
              [
                "AD",
                "Andorra",
                "—"
              ],
              [
                "AO",
                "Angola",
                "—"
              ],
              [
                "AI",
                "Anguilla",
                "—"
              ],
              [
                "AG",
                "Antigua ve Barbuda",
                "—"
              ],
              [
                "AR",
                "Arjantin",
                "—"
              ],
              [
                "AM",
                "Ermenistan",
                "—"
              ],
              [
                "AW",
                "Aruba",
                "—"
              ],
              [
                "AU",
                "Avustralya",
                "—"
              ],
              [
                "AT",
                "Avusturya",
                "—"
              ],
              [
                "AZ",
                "Azerbaycan",
                "—"
              ],
              [
                "BS",
                "Bahamalar",
                "—"
              ],
              [
                "BH",
                "Bahreyn",
                "—"
              ],
              [
                "BD",
                "Bangladeş",
                "—"
              ],
              [
                "BB",
                "Barbados",
                "—"
              ],
              [
                "BE",
                "Belçika",
                "—"
              ],
              [
                "BZ",
                "Belize",
                "—"
              ],
              [
                "BJ",
                "Benin",
                "—"
              ],
              [
                "BM",
                "Bermuda",
                "—"
              ],
              [
                "BT",
                "Butan",
                "—"
              ],
              [
                "BO",
                "Bolivya",
                "—"
              ],
              [
                "BQ",
                "Karayip Hollandası",
                "—"
              ],
              [
                "BA",
                "Bosna-Hersek",
                "—"
              ],
              [
                "BW",
                "Botsvana",
                "—"
              ],
              [
                "BV",
                "Bouvet Adası",
                "—"
              ],
              [
                "BR",
                "Brezilya",
                "—"
              ],
              [
                "IO",
                "Britanya Hint Okyanusu Toprakları",
                "—"
              ],
              [
                "BN",
                "Brunei",
                "—"
              ],
              [
                "BG",
                "Bulgaristan",
                "—"
              ],
              [
                "BF",
                "Burkina Faso",
                "—"
              ],
              [
                "CV",
                "Yeşil Burun Adaları",
                "—"
              ],
              [
                "KH",
                "Kamboçya",
                "—"
              ],
              [
                "CM",
                "Kamerun",
                "—"
              ],
              [
                "CA",
                "Kanada",
                "—"
              ],
              [
                "KY",
                "Cayman Adaları",
                "—"
              ],
              [
                "CL",
                "Şili",
                "—"
              ],
              [
                "CN",
                "Çin",
                "—"
              ],
              [
                "CX",
                "Christmas Adası",
                "—"
              ],
              [
                "CC",
                "Cocos (Keeling) Adaları",
                "—"
              ],
              [
                "CO",
                "Kolombiya",
                "—"
              ],
              [
                "KM",
                "Komorlar",
                "—"
              ],
              [
                "CK",
                "Cook Adaları",
                "—"
              ],
              [
                "CR",
                "Kosta Rika",
                "—"
              ],
              [
                "HR",
                "Hırvatistan",
                "—"
              ],
              [
                "CW",
                "Curaçao",
                "—"
              ],
              [
                "CY",
                "Kıbrıs",
                "—"
              ],
              [
                "CZ",
                "Çekya",
                "—"
              ],
              [
                "CI",
                "Fildişi Sahili",
                "—"
              ],
              [
                "DK",
                "Danimarka",
                "—"
              ],
              [
                "DJ",
                "Cibuti",
                "—"
              ],
              [
                "DM",
                "Dominika",
                "—"
              ],
              [
                "DO",
                "Dominik Cumhuriyeti",
                "—"
              ],
              [
                "EC",
                "Ekvador",
                "—"
              ],
              [
                "EG",
                "Mısır",
                "—"
              ],
              [
                "SV",
                "El Salvador",
                "—"
              ],
              [
                "GQ",
                "Ekvator Ginesi",
                "—"
              ],
              [
                "EE",
                "Estonya",
                "—"
              ],
              [
                "SZ",
                "Esvatini",
                "—"
              ],
              [
                "ET",
                "Etiyopya",
                "—"
              ],
              [
                "FK",
                "Falkland Adaları",
                "—"
              ],
              [
                "FO",
                "Faroe Adaları",
                "—"
              ],
              [
                "FM",
                "Mikronezya",
                "—"
              ],
              [
                "FJ",
                "Fiji",
                "—"
              ],
              [
                "FI",
                "Finlandiya",
                "—"
              ],
              [
                "FR",
                "Fransa",
                "—"
              ],
              [
                "GF",
                "Fransız Guyanası",
                "—"
              ],
              [
                "PF",
                "Fransız Polinezyası",
                "—"
              ],
              [
                "TF",
                "Fransız Güney Toprakları",
                "—"
              ],
              [
                "GA",
                "Gabon",
                "—"
              ],
              [
                "GM",
                "Gambiya",
                "—"
              ],
              [
                "GE",
                "Gürcistan",
                "—"
              ],
              [
                "DE",
                "Almanya",
                "—"
              ],
              [
                "GH",
                "Gana",
                "—"
              ],
              [
                "GI",
                "Cebelitarık",
                "—"
              ],
              [
                "GR",
                "Yunanistan",
                "—"
              ],
              [
                "GL",
                "Grönland",
                "—"
              ],
              [
                "GD",
                "Grenada",
                "—"
              ],
              [
                "GP",
                "Guadeloupe",
                "—"
              ],
              [
                "GU",
                "Guam",
                "—"
              ],
              [
                "GT",
                "Guatemala",
                "—"
              ],
              [
                "GG",
                "Guernsey",
                "—"
              ],
              [
                "GN",
                "Gine",
                "—"
              ],
              [
                "GW",
                "Gine-Bissau",
                "—"
              ],
              [
                "GY",
                "Guyana",
                "—"
              ],
              [
                "HM",
                "Heard ve McDonald Adaları",
                "—"
              ],
              [
                "VA",
                "Vatikan",
                "—"
              ],
              [
                "HN",
                "Honduras",
                "—"
              ],
              [
                "HK",
                "Hong Kong ÖİB Çin",
                "—"
              ],
              [
                "HU",
                "Macaristan",
                "—"
              ],
              [
                "IS",
                "İzlanda",
                "—"
              ],
              [
                "IN",
                "Hindistan",
                "—"
              ],
              [
                "ID",
                "Endonezya",
                "—"
              ],
              [
                "IE",
                "İrlanda",
                "—"
              ],
              [
                "IM",
                "Man Adası",
                "—"
              ],
              [
                "IL",
                "İsrail",
                "—"
              ],
              [
                "IT",
                "İtalya",
                "—"
              ],
              [
                "JM",
                "Jamaika",
                "—"
              ],
              [
                "JP",
                "Japonya",
                "—"
              ],
              [
                "JE",
                "Jersey",
                "—"
              ],
              [
                "JO",
                "Ürdün",
                "—"
              ],
              [
                "KZ",
                "Kazakistan",
                "—"
              ],
              [
                "KE",
                "Kenya",
                "—"
              ],
              [
                "KI",
                "Kiribati",
                "—"
              ],
              [
                "KW",
                "Kuveyt",
                "—"
              ],
              [
                "KG",
                "Kırgızistan",
                "—"
              ],
              [
                "LA",
                "Laos",
                "—"
              ],
              [
                "LV",
                "Letonya",
                "—"
              ],
              [
                "LB",
                "Lübnan",
                "—"
              ],
              [
                "LS",
                "Lesotho",
                "—"
              ],
              [
                "LR",
                "Liberya",
                "—"
              ],
              [
                "LI",
                "Lihtenştayn",
                "—"
              ],
              [
                "LT",
                "Litvanya",
                "—"
              ],
              [
                "LU",
                "Lüksemburg",
                "—"
              ],
              [
                "MO",
                "Çin Makao ÖİB",
                "—"
              ],
              [
                "MG",
                "Madagaskar",
                "—"
              ],
              [
                "MW",
                "Malavi",
                "—"
              ],
              [
                "MY",
                "Malezya",
                "—"
              ],
              [
                "MV",
                "Maldivler",
                "—"
              ],
              [
                "MT",
                "Malta",
                "—"
              ],
              [
                "MH",
                "Marshall Adaları",
                "—"
              ],
              [
                "MQ",
                "Martinik",
                "—"
              ],
              [
                "MR",
                "Moritanya",
                "—"
              ],
              [
                "MU",
                "Mauritius",
                "—"
              ],
              [
                "YT",
                "Mayotte",
                "—"
              ],
              [
                "MX",
                "Meksika",
                "—"
              ],
              [
                "MD",
                "Moldova",
                "—"
              ],
              [
                "MC",
                "Monako",
                "—"
              ],
              [
                "MN",
                "Moğolistan",
                "—"
              ],
              [
                "ME",
                "Karadağ",
                "—"
              ],
              [
                "MS",
                "Montserrat",
                "—"
              ],
              [
                "MA",
                "Fas",
                "—"
              ],
              [
                "MZ",
                "Mozambik",
                "—"
              ],
              [
                "NA",
                "Namibya",
                "—"
              ],
              [
                "NR",
                "Nauru",
                "—"
              ],
              [
                "NP",
                "Nepal",
                "—"
              ],
              [
                "NL",
                "Hollanda",
                "—"
              ],
              [
                "NC",
                "Yeni Kaledonya",
                "—"
              ],
              [
                "NZ",
                "Yeni Zelanda",
                "—"
              ],
              [
                "NE",
                "Nijer",
                "—"
              ],
              [
                "NG",
                "Nijerya",
                "—"
              ],
              [
                "NU",
                "Niue",
                "—"
              ],
              [
                "NF",
                "Norfolk Adası",
                "—"
              ],
              [
                "MK",
                "Kuzey Makedonya",
                "—"
              ],
              [
                "MP",
                "Kuzey Mariana Adaları",
                "—"
              ],
              [
                "NO",
                "Norveç",
                "—"
              ],
              [
                "OM",
                "Umman",
                "—"
              ],
              [
                "PK",
                "Pakistan",
                "—"
              ],
              [
                "PW",
                "Palau",
                "—"
              ],
              [
                "PA",
                "Panama",
                "—"
              ],
              [
                "PG",
                "Papua Yeni Gine",
                "—"
              ],
              [
                "PY",
                "Paraguay",
                "—"
              ],
              [
                "PE",
                "Peru",
                "—"
              ],
              [
                "PH",
                "Filipinler",
                "—"
              ],
              [
                "PN",
                "Pitcairn Adaları",
                "—"
              ],
              [
                "PL",
                "Polonya",
                "—"
              ],
              [
                "PT",
                "Portekiz",
                "—"
              ],
              [
                "PR",
                "Porto Riko",
                "—"
              ],
              [
                "QA",
                "Katar",
                "—"
              ],
              [
                "RO",
                "Romanya",
                "—"
              ],
              [
                "RW",
                "Ruanda",
                "—"
              ],
              [
                "RE",
                "Réunion",
                "—"
              ],
              [
                "BL",
                "Saint Barthélemy",
                "—"
              ],
              [
                "SH",
                "Saint Helena",
                "—"
              ],
              [
                "KN",
                "Saint Kitts ve Nevis",
                "—"
              ],
              [
                "LC",
                "Saint Lucia",
                "—"
              ],
              [
                "MF",
                "Saint Martin",
                "—"
              ],
              [
                "PM",
                "Saint Pierre ve Miquelon",
                "—"
              ],
              [
                "VC",
                "Saint Vincent ve Grenadinler",
                "—"
              ],
              [
                "WS",
                "Samoa",
                "—"
              ],
              [
                "SM",
                "San Marino",
                "—"
              ],
              [
                "ST",
                "São Tomé ve Príncipe",
                "—"
              ],
              [
                "SA",
                "Suudi Arabistan",
                "—"
              ],
              [
                "SN",
                "Senegal",
                "—"
              ],
              [
                "RS",
                "Sırbistan",
                "—"
              ],
              [
                "SC",
                "Seyşeller",
                "—"
              ],
              [
                "SL",
                "Sierra Leone",
                "—"
              ],
              [
                "SG",
                "Singapur",
                "—"
              ],
              [
                "SX",
                "Sint Maarten",
                "—"
              ],
              [
                "SK",
                "Slovakya",
                "—"
              ],
              [
                "SI",
                "Slovenya",
                "—"
              ],
              [
                "SB",
                "Solomon Adaları",
                "—"
              ],
              [
                "ZA",
                "Güney Afrika",
                "—"
              ],
              [
                "GS",
                "Güney Georgia ve Güney Sandwich Adaları",
                "—"
              ],
              [
                "KR",
                "Güney Kore",
                "—"
              ],
              [
                "ES",
                "İspanya",
                "—"
              ],
              [
                "LK",
                "Sri Lanka",
                "—"
              ],
              [
                "PS",
                "Filistin Toprakları",
                "—"
              ],
              [
                "SR",
                "Surinam",
                "—"
              ],
              [
                "SJ",
                "Svalbard ve Jan Mayen",
                "—"
              ],
              [
                "SE",
                "İsveç",
                "—"
              ],
              [
                "CH",
                "İsviçre",
                "—"
              ],
              [
                "TW",
                "Tayvan",
                "—"
              ],
              [
                "TJ",
                "Tacikistan",
                "—"
              ],
              [
                "TZ",
                "Tanzanya",
                "—"
              ],
              [
                "TH",
                "Tayland",
                "—"
              ],
              [
                "TL",
                "Timor-Leste",
                "—"
              ],
              [
                "TG",
                "Togo",
                "—"
              ],
              [
                "TK",
                "Tokelau",
                "—"
              ],
              [
                "TO",
                "Tonga",
                "—"
              ],
              [
                "TT",
                "Trinidad ve Tobago",
                "—"
              ],
              [
                "TN",
                "Tunus",
                "—"
              ],
              [
                "TM",
                "Türkmenistan",
                "—"
              ],
              [
                "TC",
                "Turks ve Caicos Adaları",
                "—"
              ],
              [
                "TV",
                "Tuvalu",
                "—"
              ],
              [
                "TR",
                "Türkiye",
                "—"
              ],
              [
                "UG",
                "Uganda",
                "—"
              ],
              [
                "UA",
                "Ukrayna**",
                "Kartlar Kırım, Donetsk, Luhansk, Herson ve Zaporijya'da kullanılamaz. Ukrayna'nın geri kalanı kullanılabilir."
              ],
              [
                "AE",
                "Birleşik Arap Emirlikleri",
                "—"
              ],
              [
                "GB",
                "Birleşik Krallık",
                "—"
              ],
              [
                "UM",
                "ABD Dış Adaları",
                "—"
              ],
              [
                "US",
                "Amerika Birleşik Devletleri",
                "—"
              ],
              [
                "UY",
                "Uruguay",
                "—"
              ],
              [
                "UZ",
                "Özbekistan",
                "—"
              ],
              [
                "VU",
                "Vanuatu",
                "—"
              ],
              [
                "VN",
                "Vietnam",
                "—"
              ],
              [
                "VG",
                "Britanya Virjin Adaları",
                "—"
              ],
              [
                "VI",
                "ABD Virjin Adaları",
                "—"
              ],
              [
                "WF",
                "Wallis ve Futuna",
                "—"
              ],
              [
                "EH",
                "Batı Sahra",
                "—"
              ],
              [
                "ZM",
                "Zambiya",
                "—"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "crypto",
          "title": "Coin'ler ve ödeme ağları",
          "paragraphs": [
            "Katalog 16 coin ve 31 coin/ağ çifti içerir. Bir coin birden fazla ağda kabul edilebilir: Tron üzerinde USDT ve Ethereum üzerinde USDT farklı transfer seçenekleridir. Tam liste aşağıda görünmektedir.",
            "Belirli bir fatura için mevcut seçenekler ve limitleri GET /api/checkout/{token}/crypto-services adresinden gelir. Bu sayfa desteklenen kombinasyonları açıklar; mevcut ağ geçidi yanıtı bir ödemenin oluşturulup oluşturulamayacağını belirler. Tek başına bir referans kaydı, kullanılamayan bir çifti ödenebilir yapmaz.",
            "Tüccar USDT cinsinden bir kripto fatura oluşturur ve müşteri mevcut bir coin ve ağ seçer. Oluşturulan ağ geçidi işlemi tam coin tutarını, adresi, QR kodunu ve son kullanma tarihini sağlar. USDT fatura fiyatı BTC, ETH veya başka bir coin'in döviz kurunu sabitlemez veya 1:1 oranını ima etmez. Ödeme talimatlarındaki tam ondalık tutarı, kendiniz yuvarlamadan veya dönüşüm hesaplamadan aktarın.",
            "USDT TRC20 ayrı bir tüccar ödeme koşuludur. Bu, gelen ödemeleri Tron ile sınırlamaz veya ödeme oluşturmanın hesap veya API üzerinden kullanılabilir olduğu anlamına gelmez. Ödeme kılavuzu para çekme koşullarını ve kısıtlamalarını açıklar."
          ],
          "bullets": [],
          "steps": [
            "Faturayı açın ve ödeme yöntemi olarak kripto parayı seçin.",
            "Bir madeni para ve uygun bir ağ seçin. Gönderen cüzdanının ağı, Kevmi ödeme talimatlarındaki ağla eşleşmelidir.",
            "Ödeme talimatlarını oluşturun ve tam tutarı, tam adresi ve son kullanma süresini kontrol edin. Adresi ve tutarı kopyalayın veya uygun QR kodunu kullanın.",
            "Belirtilen tutarı seçilen ağ üzerinden gönderin. Alıcının talimatlarda gösterilen tam tutarı alması için cüzdan veya ağ ücretlerini hesaba katın.",
            "Ödeme sayfasında onaylanmış bir durum bekleyin. Tek başına bir cüzdan transferi göndermek siparişi tamamlamaz: Kevmi sonucu ağ geçidi üzerinden doğrular."
          ],
          "table": {
            "headers": [
              "Madeni Para",
              "Ad",
              "Ağlar ve ağ geçidi kodları"
            ],
            "rows": [
              [
                "AVAX",
                "Avalanche",
                "Avalanche C-Chain (avalanche)"
              ],
              [
                "BCH",
                "Bitcoin Cash",
                "Bitcoin Cash (bch)"
              ],
              [
                "BNB",
                "BNB",
                "BNB Smart Chain (bsc)"
              ],
              [
                "BTC",
                "Bitcoin",
                "Bitcoin (btc)"
              ],
              [
                "DAI",
                "Dai",
                "BNB Smart Chain (bsc), Ethereum (eth), Polygon PoS (polygon)"
              ],
              [
                "DASH",
                "Dash",
                "Dash (dash)"
              ],
              [
                "DOGE",
                "Dogecoin",
                "Dogecoin (doge)"
              ],
              [
                "ETH",
                "Ethereum",
                "Ethereum (eth), Arbitrum One (arbitrum), BNB Smart Chain (bsc)"
              ],
              [
                "GRAM",
                "Gram",
                "TON (ton)"
              ],
              [
                "LTC",
                "Litecoin",
                "Litecoin (ltc)"
              ],
              [
                "POL",
                "Polygon",
                "Ethereum (eth), Polygon PoS (polygon)"
              ],
              [
                "SHIB",
                "Shiba Inu",
                "Ethereum (eth)"
              ],
              [
                "TRX",
                "TRON",
                "TRON (tron)"
              ],
              [
                "USDC",
                "USD Coin",
                "Arbitrum One (arbitrum), BNB Smart Chain (bsc), Polygon PoS (polygon), Ethereum (eth), Avalanche C-Chain (avalanche)"
              ],
              [
                "USDT",
                "Tether",
                "TRON (tron), Avalanche C-Chain (avalanche), BNB Smart Chain (bsc), TON (ton), Polygon PoS (polygon), Arbitrum One (arbitrum), Ethereum (eth)"
              ],
              [
                "XMR",
                "Monero",
                "Monero (xmr)"
              ]
            ]
          },
          "code": null,
          "note": "Son kullanma süresinden sonra eski ödeme talimatlarını kullanmayın. Zaten fon gönderdiyseniz, aynı işlemi kontrol edin ve gerekirse destekle iletişime geçin; birincisini kontrol etmek için ikinci bir ödeme oluşturmayın.",
          "links": [
            {
              "label": "Ödeme Sayfası",
              "href": "/docs/checkout#method"
            },
            {
              "label": "Ödeme Koşulları",
              "href": "/docs/payouts"
            }
          ]
        },
        {
          "id": "specific",
          "title": "Belirli bir ülkeyi kontrol etme",
          "paragraphs": [
            "Asistan, bir ülkeyi Rusça veya İngilizce adına veya ISO koduna göre bulabilir ve yayınlanmış kapsamını açıklayabilir. ** ülkeler için ihtiyacınız olan konumu belirtin. Çin * için kartınız hakkında sorun.",
            "Bir ülke listede yoksa, bu bilgi tabanı uluslararası kart kapsamını doğrulayamaz. Destek talebine ülkeyi, bankayı ve istenen yöntemi ekleyin. Tam kart numarası veya ödeme sırları göndermeyin."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Coğrafya",
              "href": "/countries"
            },
            {
              "label": "Desteğe sorun",
              "href": "/?support=open"
            }
          ]
        }
      ],
      "body": "Kanala göre kapsam\n\nKanal · Kapsam · Koşullar\nUluslararası kartlar · 190'dan fazla ülke · Kısıtlama listesi ve Ukrayna'nın beş bölgesi hariç\nSBP · Rusya · Kullanılabilirlik bankaya ve işleme bağlıdır\nAlipay · Çin · Kullanılabilirlik hesaba ve işleme bağlıdır\nKripto para · Tüm ülkeler · Desteklenen bir coin ve ağ seçin\n\nEtkileşimli harita\n\nCoğrafya sayfasında iki boyutlu bir dünya haritası vardır. Filtreler yayınlanan uluslararası kart ülkelerini, SBP için Rusya'yı ve Alipay için Çin'i vurgular. Ülke adına veya ISO koduna göre arama yaparak yöntemlerini ve notlarını görebilirsiniz.\n\nTarama işareti, beş bölge kartlardan hariç tutulduğu için Ukrayna'yı işaretler. Ukrayna'nın geri kalanı kullanılabilir. Kart kısıtlamaları tüm ülkelerde kullanılabilen kripto para için geçerli değildir.\n\nHaritayı aç\n\nListenin kapsadığı şeyler\n\nAşağıdaki eksiksiz liste uluslararası kart kapsamını açıklar. Tüccar kayıt ülkeleri ve ödeme hedefleri ayrı koşullara tabidir.\n\nOnay, ihraç eden ülkeye, bankaya, kart türüne ve ödeme kanalı kontrollerine bağlıdır. Bir ülkenin listede yer alması, her kart veya işlem için onay garanti etmez.\n\nVisa ve Mastercard kısıtlamaları\n\nKartlar Kırım, Donetsk, Luhansk, Herson ve Zaporijya'da kullanılamaz. Ukrayna'nın geri kalanı kullanılabilir.\n\nDiğer tüm ülkeler kullanılabilir. Hollanda Antilleri sağlayıcı listesinden tarihsel bir kayıt olarak korunmaktadır; modern Karayip topraklarının hiçbirini engellemez.\n\nKod · Ülke veya bölge\nAF · Afganistan\nAQ · Antarktika\nBY · Belarus\nMM · Burma (Myanmar)\nBI · Burundi\nCF · Orta Afrika Cumhuriyeti\nTD · Çad\nCU · Küba\nCD · Demokratik Kongo Cumhuriyeti\nCG · Kongo Cumhuriyeti\nER · Eritre\nHT · Haiti\nIR · İran\nIQ · Irak\nLY · Libya\nML · Mali\nNI · Nikaragua\nKP · Kuzey Kore\nRU · Rusya\nSO · Somali\nSS · Güney Sudan\nSD · Sudan\nSY · Suriye\nVE · Venezuela\nYE · Yemen\nZW · Zimbabve\nUA-43 · Kırım (Ukrayna Bölgesi)\nUA-14 · Donetsk (Ukrayna Bölgesi)\nUA-65 · Herson (Ukrayna Bölgesi)\nUA-09 · Luhansk (Ukrayna Bölgesi)\nUA-23 · Zaporijya (Ukrayna Bölgesi)\nAN · Hollanda Antilleri\n\nÜlke ve bölge dizini\n\nAdlar, ISO kodları ve işaretçiler paylaşılan ülke kaydından gelir. Bu notlar uluslararası kartlar için geçerlidir.\n\nISO · Ülke veya bölge · Not\nAX · Åland Adaları · —\nAL · Arnavutluk · —\nDZ · Cezayir · —\nAS · Amerikan Samoası · —\nAD · Andorra · —\nAO · Angola · —\nAI · Anguilla · —\nAG · Antigua ve Barbuda · —\nAR · Arjantin · —\nAM · Ermenistan · —\nAW · Aruba · —\nAU · Avustralya · —\nAT · Avusturya · —\nAZ · Azerbaycan · —\nBS · Bahamalar · —\nBH · Bahreyn · —\nBD · Bangladeş · —\nBB · Barbados · —\nBE · Belçika · —\nBZ · Belize · —\nBJ · Benin · —\nBM · Bermuda · —\nBT · Butan · —\nBO · Bolivya · —\nBQ · Karayip Hollandası · —\nBA · Bosna-Hersek · —\nBW · Botsvana · —\nBV · Bouvet Adası · —\nBR · Brezilya · —\nIO · Britanya Hint Okyanusu Toprakları · —\nBN · Brunei · —\nBG · Bulgaristan · —\nBF · Burkina Faso · —\nCV · Yeşil Burun Adaları · —\nKH · Kamboçya · —\nCM · Kamerun · —\nCA · Kanada · —\nKY · Cayman Adaları · —\nCL · Şili · —\nCN · Çin · —\nCX · Christmas Adası · —\nCC · Cocos (Keeling) Adaları · —\nCO · Kolombiya · —\nKM · Komorlar · —\nCK · Cook Adaları · —\nCR · Kosta Rika · —\nHR · Hırvatistan · —\nCW · Curaçao · —\nCY · Kıbrıs · —\nCZ · Çekya · —\nCI · Fildişi Sahili · —\nDK · Danimarka · —\nDJ · Cibuti · —\nDM · Dominika · —\nDO · Dominik Cumhuriyeti · —\nEC · Ekvador · —\nEG · Mısır · —\nSV · El Salvador · —\nGQ · Ekvator Ginesi · —\nEE · Estonya · —\nSZ · Esvatini · —\nET · Etiyopya · —\nFK · Falkland Adaları · —\nFO · Faroe Adaları · —\nFM · Mikronezya · —\nFJ · Fiji · —\nFI · Finlandiya · —\nFR · Fransa · —\nGF · Fransız Guyanası · —\nPF · Fransız Polinezyası · —\nTF · Fransız Güney Toprakları · —\nGA · Gabon · —\nGM · Gambiya · —\nGE · Gürcistan · —\nDE · Almanya · —\nGH · Gana · —\nGI · Cebelitarık · —\nGR · Yunanistan · —\nGL · Grönland · —\nGD · Grenada · —\nGP · Guadeloupe · —\nGU · Guam · —\nGT · Guatemala · —\nGG · Guernsey · —\nGN · Gine · —\nGW · Gine-Bissau · —\nGY · Guyana · —\nHM · Heard ve McDonald Adaları · —\nVA · Vatikan · —\nHN · Honduras · —\nHK · Hong Kong ÖİB Çin · —\nHU · Macaristan · —\nIS · İzlanda · —\nIN · Hindistan · —\nID · Endonezya · —\nIE · İrlanda · —\nIM · Man Adası · —\nIL · İsrail · —\nIT · İtalya · —\nJM · Jamaika · —\nJP · Japonya · —\nJE · Jersey · —\nJO · Ürdün · —\nKZ · Kazakistan · —\nKE · Kenya · —\nKI · Kiribati · —\nKW · Kuveyt · —\nKG · Kırgızistan · —\nLA · Laos · —\nLV · Letonya · —\nLB · Lübnan · —\nLS · Lesotho · —\nLR · Liberya · —\nLI · Lihtenştayn · —\nLT · Litvanya · —\nLU · Lüksemburg · —\nMO · Çin Makao ÖİB · —\nMG · Madagaskar · —\nMW · Malavi · —\nMY · Malezya · —\nMV · Maldivler · —\nMT · Malta · —\nMH · Marshall Adaları · —\nMQ · Martinik · —\nMR · Moritanya · —\nMU · Mauritius · —\nYT · Mayotte · —\nMX · Meksika · —\nMD · Moldova · —\nMC · Monako · —\nMN · Moğolistan · —\nME · Karadağ · —\nMS · Montserrat · —\nMA · Fas · —\nMZ · Mozambik · —\nNA · Namibya · —\nNR · Nauru · —\nNP · Nepal · —\nNL · Hollanda · —\nNC · Yeni Kaledonya · —\nNZ · Yeni Zelanda · —\nNE · Nijer · —\nNG · Nijerya · —\nNU · Niue · —\nNF · Norfolk Adası · —\nMK · Kuzey Makedonya · —\nMP · Kuzey Mariana Adaları · —\nNO · Norveç · —\nOM · Umman · —\nPK · Pakistan · —\nPW · Palau · —\nPA · Panama · —\nPG · Papua Yeni Gine · —\nPY · Paraguay · —\nPE · Peru · —\nPH · Filipinler · —\nPN · Pitcairn Adaları · —\nPL · Polonya · —\nPT · Portekiz · —\nPR · Porto Riko · —\nQA · Katar · —\nRO · Romanya · —\nRW · Ruanda · —\nRE · Réunion · —\nBL · Saint Barthélemy · —\nSH · Saint Helena · —\nKN · Saint Kitts ve Nevis · —\nLC · Saint Lucia · —\nMF · Saint Martin · —\nPM · Saint Pierre ve Miquelon · —\nVC · Saint Vincent ve Grenadinler · —\nWS · Samoa · —\nSM · San Marino · —\nST · São Tomé ve Príncipe · —\nSA · Suudi Arabistan · —\nSN · Senegal · —\nRS · Sırbistan · —\nSC · Seyşeller · —\nSL · Sierra Leone · —\nSG · Singapur · —\nSX · Sint Maarten · —\nSK · Slovakya · —\nSI · Slovenya · —\nSB · Solomon Adaları · —\nZA · Güney Afrika · —\nGS · Güney Georgia ve Güney Sandwich Adaları · —\nKR · Güney Kore · —\nES · İspanya · —\nLK · Sri Lanka · —\nPS · Filistin Toprakları · —\nSR · Surinam · —\nSJ · Svalbard ve Jan Mayen · —\nSE · İsveç · —\nCH · İsviçre · —\nTW · Tayvan · —\nTJ · Tacikistan · —\nTZ · Tanzanya · —\nTH · Tayland · —\nTL · Timor-Leste · —\nTG · Togo · —\nTK · Tokelau · —\nTO · Tonga · —\nTT · Trinidad ve Tobago · —\nTN · Tunus · —\nTM · Türkmenistan · —\nTC · Turks ve Caicos Adaları · —\nTV · Tuvalu · —\nTR · Türkiye · —\nUG · Uganda · —\nUA · Ukrayna** · Kartlar Kırım, Donetsk, Luhansk, Herson ve Zaporijya'da kullanılamaz. Ukrayna'nın geri kalanı kullanılabilir.\nAE · Birleşik Arap Emirlikleri · —\nGB · Birleşik Krallık · —\nUM · ABD Dış Adaları · —\nUS · Amerika Birleşik Devletleri · —\nUY · Uruguay · —\nUZ · Özbekistan · —\nVU · Vanuatu · —\nVN · Vietnam · —\nVG · Britanya Virjin Adaları · —\nVI · ABD Virjin Adaları · —\nWF · Wallis ve Futuna · —\nEH · Batı Sahra · —\nZM · Zambiya · —\n\nCoin'ler ve ödeme ağları\n\nKatalog 16 coin ve 31 coin/ağ çifti içerir. Bir coin birden fazla ağda kabul edilebilir: Tron üzerinde USDT ve Ethereum üzerinde USDT farklı transfer seçenekleridir. Tam liste aşağıda görünmektedir.\n\nBelirli bir fatura için mevcut seçenekler ve limitleri GET /api/checkout/{token}/crypto-services adresinden gelir. Bu sayfa desteklenen kombinasyonları açıklar; mevcut ağ geçidi yanıtı bir ödemenin oluşturulup oluşturulamayacağını belirler. Tek başına bir referans kaydı, kullanılamayan bir çifti ödenebilir yapmaz.\n\nTüccar USDT cinsinden bir kripto fatura oluşturur ve müşteri mevcut bir coin ve ağ seçer. Oluşturulan ağ geçidi işlemi tam coin tutarını, adresi, QR kodunu ve son kullanma tarihini sağlar. USDT fatura fiyatı BTC, ETH veya başka bir coin'in döviz kurunu sabitlemez veya 1:1 oranını ima etmez. Ödeme talimatlarındaki tam ondalık tutarı, kendiniz yuvarlamadan veya dönüşüm hesaplamadan aktarın.\n\nUSDT TRC20 ayrı bir tüccar ödeme koşuludur. Bu, gelen ödemeleri Tron ile sınırlamaz veya ödeme oluşturmanın hesap veya API üzerinden kullanılabilir olduğu anlamına gelmez. Ödeme kılavuzu para çekme koşullarını ve kısıtlamalarını açıklar.\n\nFaturayı açın ve ödeme yöntemi olarak kripto parayı seçin.\n\nBir madeni para ve uygun bir ağ seçin. Gönderen cüzdanının ağı, Kevmi ödeme talimatlarındaki ağla eşleşmelidir.\n\nÖdeme talimatlarını oluşturun ve tam tutarı, tam adresi ve son kullanma süresini kontrol edin. Adresi ve tutarı kopyalayın veya uygun QR kodunu kullanın.\n\nBelirtilen tutarı seçilen ağ üzerinden gönderin. Alıcının talimatlarda gösterilen tam tutarı alması için cüzdan veya ağ ücretlerini hesaba katın.\n\nÖdeme sayfasında onaylanmış bir durum bekleyin. Tek başına bir cüzdan transferi göndermek siparişi tamamlamaz: Kevmi sonucu ağ geçidi üzerinden doğrular.\n\nMadeni Para · Ad · Ağlar ve ağ geçidi kodları\nAVAX · Avalanche · Avalanche C-Chain (avalanche)\nBCH · Bitcoin Cash · Bitcoin Cash (bch)\nBNB · BNB · BNB Smart Chain (bsc)\nBTC · Bitcoin · Bitcoin (btc)\nDAI · Dai · BNB Smart Chain (bsc), Ethereum (eth), Polygon PoS (polygon)\nDASH · Dash · Dash (dash)\nDOGE · Dogecoin · Dogecoin (doge)\nETH · Ethereum · Ethereum (eth), Arbitrum One (arbitrum), BNB Smart Chain (bsc)\nGRAM · Gram · TON (ton)\nLTC · Litecoin · Litecoin (ltc)\nPOL · Polygon · Ethereum (eth), Polygon PoS (polygon)\nSHIB · Shiba Inu · Ethereum (eth)\nTRX · TRON · TRON (tron)\nUSDC · USD Coin · Arbitrum One (arbitrum), BNB Smart Chain (bsc), Polygon PoS (polygon), Ethereum (eth), Avalanche C-Chain (avalanche)\nUSDT · Tether · TRON (tron), Avalanche C-Chain (avalanche), BNB Smart Chain (bsc), TON (ton), Polygon PoS (polygon), Arbitrum One (arbitrum), Ethereum (eth)\nXMR · Monero · Monero (xmr)\n\nSon kullanma süresinden sonra eski ödeme talimatlarını kullanmayın. Zaten fon gönderdiyseniz, aynı işlemi kontrol edin ve gerekirse destekle iletişime geçin; birincisini kontrol etmek için ikinci bir ödeme oluşturmayın.\n\nÖdeme Sayfası\n\nÖdeme Koşulları\n\nBelirli bir ülkeyi kontrol etme\n\nAsistan, bir ülkeyi Rusça veya İngilizce adına veya ISO koduna göre bulabilir ve yayınlanmış kapsamını açıklayabilir. ** ülkeler için ihtiyacınız olan konumu belirtin. Çin * için kartınız hakkında sorun.\n\nBir ülke listede yoksa, bu bilgi tabanı uluslararası kart kapsamını doğrulayamaz. Destek talebine ülkeyi, bankayı ve istenen yöntemi ekleyin. Tam kart numarası veya ödeme sırları göndermeyin.\n\nCoğrafya\n\nDesteğe sorun",
      "readMinutes": 15
    },
    {
      "id": "payment-links",
      "title": "Ödeme bağlantıları",
      "summary": "Bir ödeme bağlantısı, özel bir sipariş sayfası açar. Müşteriler telefonlarında veya bilgisayarlarında satıcıyı, satın alma açıklamasını, mevcut yöntemleri ve ödenmesi gereken toplam tutarı görür.",
      "group": "payments",
      "url": "/docs/payment-links",
      "tags": [
        "ödeme bağlantısı",
        "fatura",
        "ödeme sayfası",
        "duraklat",
        "sipariş",
        "Herhangi biri",
        "yöntem seçimi"
      ],
      "sections": [
        {
          "id": "contents",
          "title": "Bir faturanın içerdikleri",
          "paragraphs": [
            "Yeni çalışma alanı faturaları USD taban fiyat kullanır ve Any dört yöntemin tümünü sunar. SBP, donmuş Rusya Merkez Bankası referans kuru üzerinden RUB'a çevrilir; kripto, açık 1:1 USD/USDT fatura kuralını kullanır. Eski yerel fiyatlandırma, eski faturalar ve pricingMode=universal olmayan API istekleri için kullanılabilir durumda kalır. Aşağıdaki çoklu mağaza ve USD fiyatlandırma bölümüne bakın.",
            "Genel açıklamalara asla şifreler, API anahtarları, kart bilgileri veya banka kodları eklemeyin. Müşterinin tanıdığı bir sipariş başlığı ve referansı kullanın."
          ],
          "bullets": [
            "Mağaza adı, en fazla 120 karakterlik bir sipariş başlığı ve en fazla 500 karakterlik bir açıklama.",
            "Temel tutar ve açık bir USD, RUB veya USDT para birimi.",
            "Uyumlu yöntemler, ayrı ücret ve KDV payları, bir sipariş referansı ve bağlantı son kullanma süresi.",
            "Sahip yanıtları, mevcut bir işlemin kayıtlı durumuyla link.payment içerir; bu, bağlantının kullanılabilirlik durumundan ayrıdır."
          ],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "any",
          "title": "Herhangi biri — müşteri seçer",
          "paragraphs": [
            "Any includes card, alipay, sbp and crypto in universal USD pricing. Pass pricingMode=universal and a concrete methods array. Currency-specific native pricing remains available for compatibility.",
            "Yeni çalışma alanı faturaları USD taban fiyat kullanır ve Any dört yöntemin tümünü sunar. SBP, donmuş Rusya Merkez Bankası referans kuru üzerinden RUB'a çevrilir; kripto, açık 1:1 USD/USDT fatura kuralını kullanır. Eski yerel fiyatlandırma, eski faturalar ve pricingMode=universal olmayan API istekleri için kullanılabilir durumda kalır. Aşağıdaki çoklu mağaza ve USD fiyatlandırma bölümüne bakın.",
            "Yeni bir canlı kart veya Alipay ödemesi için mevcut ağ geçidi yalnızca feeCustomerPercent=0 ve vatCustomerPercent=100'ü destekler: satıcı tüm işlem ücretini karşılar ve KDV müşteri için tam olarak eklenir. Diğer paylar bir faturada kaydedilip hesaplanabilir, ancak yürütme unsupported_allocation ile engellenir. Sunucu kaydedilmiş koşulları sessizce asla değiştirmez. SBP ve USDT kripto ödemeleri tüm işlem ücreti paylarını destekler ve KDV içermez."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Yöntemleri API üzerinden gönderin",
              "href": "/docs/payment-links-api#methods"
            }
          ]
        },
        {
          "id": "create",
          "title": "Bağlantı oluşturma",
          "paragraphs": [],
          "bullets": [],
          "steps": [
            "Hesabınızda Ödeme bağlantılarını açın.",
            "Bir başlık, tutar, para birimi ve açıklama girin. İki kontrol ile ücret ve KDV paylarını ayarlayın.",
            "Müşterinin seçmesi için Herhangi biri seçeneğini bırakın veya belirli yöntemleri seçin. Son kullanma tarihini ayarlayın.",
            "Her yöntem için toplamı karşılaştırın ve ödemeyi önizleyin.",
            "Oluşturmanın hemen ardından hazır ödeme bağlantısını alın, ardından müşteriniz veya widget'ınız için kopyalayın."
          ],
          "table": null,
          "code": null,
          "note": "Ödeme kabulü kullanılamıyorsa, ödeme sayfası onaydan önce bunu bildirir. Fatura oluşturmak para çekmez.",
          "links": []
        },
        {
          "id": "fixed",
          "title": "Koşullar faturada kalır",
          "paragraphs": [
            "Kayıtlı bir fatura, mağaza ayarları değiştiğinde değişmez. Fiyatı, para birimi, ücret ve KDV payları, sipariş referansı ve meta verileri o siparişe aittir. Bu, bağlantıyı zaten açmış bir müşteri için toplamı tutarlı tutar.",
            "Fiyat, açıklama veya maliyet dağılımı değiştiğinde yeni bir bağlantı oluşturun ve eskisini duraklatın. Bir URL tutarını düzenlemek sunucu hesaplamasını değiştiremez."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "public",
          "title": "Özel bir ödeme sayfası",
          "paragraphs": [
            "Sunucu bağlantıları veritabanında kaydedilir ve tüccar hesabı erişimi olmadan /pay/… adresinde cihazlar arasında açılır. Bir müşterinin faturayı görüntülemek için kayıt olması gerekmez. Mağaza bakiyeleri, ayarlar ve diğer müşteri kayıtları özel kalır.",
            "/pay/demo örneği, para çekmeden deneyimi önizler. Tarayıcı demo bağlantıları test verisidir ve gerçek fatura olarak sunulmamalıdır."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Ödeme sayfasını önizle",
              "href": "/pay/demo"
            },
            {
              "label": "Ödeme durumları",
              "href": "/docs/checkout"
            }
          ]
        },
        {
          "id": "control",
          "title": "Kullanılabilirliği yönetme",
          "paragraphs": [
            "Bir bağlantıyı duraklatmak, iptal etmek veya süresini doldurmak yeni bir işlemi engeller. Gönderilmiş bir ödemeyi gizlemez: durum, mutabakat ve istenen banka kodu kullanılabilir kalır. Bağlantı kullanılabilirliği ve finansal durum ayrı ayrı kontrol edilir.",
            "Devam ettirmek, koşulları değiştirmeden duraklatmayı kaldırır. İptal kesindir ve süresi dolmuş bir bağlantı uzatılamaz. Yeni bir sipariş veya değişen koşullar için yeni bir fatura oluşturun, sonucu bilinmeyen bir ödemeyi yeniden denemek için değil."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "stores-usd",
          "title": "Birden fazla mağaza ve tek USD taban fiyat",
          "paragraphs": [
            "Toplu analiz ve işlemler için Tüm mağazaları seçin veya kendi kayıtları için bir mağaza seçin. Her mağazanın ayrı bir storeId'si, adı, varsayılan KDV'si, faturaları, API anahtarları, webhook uç noktaları, olay geçmişi ve web sitesi uygulaması vardır. Bildirimler ve destek talepleri hesaba aittir. Bir hesap en fazla 100 mağaza oluşturabilir. Mevcut kayıtlar ilk mağazasında kalır.",
            "Yeni çalışma alanı faturaları pricingMode=\"universal\" ve USD taban fiyat kullanır. Any, kart, alipay, sbp ve kriptoyu içerir; bir satıcı bir alt küme seçebilir. Kartlar ve Alipay USD tahsil eder. SBP, Rusya Merkez Bankası USD/RUB referans kurunu kullanarak RUB tahsil eder. Kripto, açık fatura kuralı 1 USD = 1 USDT kapsamında USDT tahsil eder. Bu bir fatura dönüştürme kuralıdır, piyasa USDT kotasyonu değildir. Ağ geçidi, transferden önce seçilen coin'in kurunu, tam transfer tutarını ve talimatlarını sağlar.",
            "Referans kuru ve her iki tutar oluşturma sırasında dondurulur. RUB dönüştürmesi içeren faturalar 24 saat içinde sona erer. Referans kuru alınamazsa, oluşturma FX_UNAVAILABLE ile başarısız olur; uydurulmuş veya bayat yedek kur kullanılmaz. Sahip yanıt tutarı ve kotasyonlar USD muhasebe para birimini kullanır. quotes[method].settlement, yerel tahsil kotasyonunu içerir. Genel ödeme sayfası, seçilen tahsil para birimini currency içinde, orijinal fiyatı baseAmountMinor/baseCurrency içinde ve referans kurunu fx içinde gösterir. Bir ödeme gönderildikten sonra yöntemi değiştirilemez; bir faturanın tek ağ geçidi işlemi vardır.",
            "Amaçlanan mağaza içinde bir API anahtarı oluşturun ve sunucunuzdan Authorization: Bearer <key> gönderin. Mağaza bağlaması değişmezdir; X-Kevmi-Store, anahtara başka bir mağazaya erişim izni veremez. Tarayıcı oturumları X-Kevmi-Store: <storeId> seçer; atlanırsa ilk mağaza seçilir. all değeri yalnızca GET /api/account/dashboard ve GET /api/payment-links tarafından kabul edilir. Değişiklikler seçili bir mağaza, Origin ve X-CSRF-Token gerektirir. Hesap kimlikleri ve mağaza kimlikleri farklı tanımlayıcılardır.",
            "Uyumluluk için, pricingMode=\"universal\" içermeyen API istekleri yerel fiyatlandırmayı ve orijinal para birimi kısıtlamalarını korur. Mevcut faturalar asla yeniden hesaplanmaz. Analizlerdeki onaylanmış tahsilatlar, doğrulanmış ödemelerden kaydedilmiş fatura giderlerinin düşülmesiyle elde edilir; bunlar çekilebilir bakiye değildir. Eski fatura para birimleri ayrı kalır ve ödemeler destek ile düzenlenir. Bir siparişi yalnızca sunucu API'si, olay geçmişi veya imzalı bir webhook üzerinden payment.fulfillmentReady=true ve payment.status=\"succeeded\" durumunu kontrol ettikten sonra yerine getirin."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        }
      ],
      "body": "Bir faturanın içerdikleri\n\nYeni çalışma alanı faturaları USD taban fiyat kullanır ve Any dört yöntemin tümünü sunar. SBP, donmuş Rusya Merkez Bankası referans kuru üzerinden RUB'a çevrilir; kripto, açık 1:1 USD/USDT fatura kuralını kullanır. Eski yerel fiyatlandırma, eski faturalar ve pricingMode=universal olmayan API istekleri için kullanılabilir durumda kalır. Aşağıdaki çoklu mağaza ve USD fiyatlandırma bölümüne bakın.\n\nGenel açıklamalara asla şifreler, API anahtarları, kart bilgileri veya banka kodları eklemeyin. Müşterinin tanıdığı bir sipariş başlığı ve referansı kullanın.\n\nMağaza adı, en fazla 120 karakterlik bir sipariş başlığı ve en fazla 500 karakterlik bir açıklama.\n\nTemel tutar ve açık bir USD, RUB veya USDT para birimi.\n\nUyumlu yöntemler, ayrı ücret ve KDV payları, bir sipariş referansı ve bağlantı son kullanma süresi.\n\nSahip yanıtları, mevcut bir işlemin kayıtlı durumuyla link.payment içerir; bu, bağlantının kullanılabilirlik durumundan ayrıdır.\n\nHerhangi biri — müşteri seçer\n\nAny includes card, alipay, sbp and crypto in universal USD pricing. Pass pricingMode=universal and a concrete methods array. Currency-specific native pricing remains available for compatibility.\n\nYeni çalışma alanı faturaları USD taban fiyat kullanır ve Any dört yöntemin tümünü sunar. SBP, donmuş Rusya Merkez Bankası referans kuru üzerinden RUB'a çevrilir; kripto, açık 1:1 USD/USDT fatura kuralını kullanır. Eski yerel fiyatlandırma, eski faturalar ve pricingMode=universal olmayan API istekleri için kullanılabilir durumda kalır. Aşağıdaki çoklu mağaza ve USD fiyatlandırma bölümüne bakın.\n\nYeni bir canlı kart veya Alipay ödemesi için mevcut ağ geçidi yalnızca feeCustomerPercent=0 ve vatCustomerPercent=100'ü destekler: satıcı tüm işlem ücretini karşılar ve KDV müşteri için tam olarak eklenir. Diğer paylar bir faturada kaydedilip hesaplanabilir, ancak yürütme unsupported_allocation ile engellenir. Sunucu kaydedilmiş koşulları sessizce asla değiştirmez. SBP ve USDT kripto ödemeleri tüm işlem ücreti paylarını destekler ve KDV içermez.\n\nYöntemleri API üzerinden gönderin\n\nBağlantı oluşturma\n\nHesabınızda Ödeme bağlantılarını açın.\n\nBir başlık, tutar, para birimi ve açıklama girin. İki kontrol ile ücret ve KDV paylarını ayarlayın.\n\nMüşterinin seçmesi için Herhangi biri seçeneğini bırakın veya belirli yöntemleri seçin. Son kullanma tarihini ayarlayın.\n\nHer yöntem için toplamı karşılaştırın ve ödemeyi önizleyin.\n\nOluşturmanın hemen ardından hazır ödeme bağlantısını alın, ardından müşteriniz veya widget'ınız için kopyalayın.\n\nÖdeme kabulü kullanılamıyorsa, ödeme sayfası onaydan önce bunu bildirir. Fatura oluşturmak para çekmez.\n\nKoşullar faturada kalır\n\nKayıtlı bir fatura, mağaza ayarları değiştiğinde değişmez. Fiyatı, para birimi, ücret ve KDV payları, sipariş referansı ve meta verileri o siparişe aittir. Bu, bağlantıyı zaten açmış bir müşteri için toplamı tutarlı tutar.\n\nFiyat, açıklama veya maliyet dağılımı değiştiğinde yeni bir bağlantı oluşturun ve eskisini duraklatın. Bir URL tutarını düzenlemek sunucu hesaplamasını değiştiremez.\n\nÖzel bir ödeme sayfası\n\nSunucu bağlantıları veritabanında kaydedilir ve tüccar hesabı erişimi olmadan /pay/… adresinde cihazlar arasında açılır. Bir müşterinin faturayı görüntülemek için kayıt olması gerekmez. Mağaza bakiyeleri, ayarlar ve diğer müşteri kayıtları özel kalır.\n\n/pay/demo örneği, para çekmeden deneyimi önizler. Tarayıcı demo bağlantıları test verisidir ve gerçek fatura olarak sunulmamalıdır.\n\nÖdeme sayfasını önizle\n\nÖdeme durumları\n\nKullanılabilirliği yönetme\n\nBir bağlantıyı duraklatmak, iptal etmek veya süresini doldurmak yeni bir işlemi engeller. Gönderilmiş bir ödemeyi gizlemez: durum, mutabakat ve istenen banka kodu kullanılabilir kalır. Bağlantı kullanılabilirliği ve finansal durum ayrı ayrı kontrol edilir.\n\nDevam ettirmek, koşulları değiştirmeden duraklatmayı kaldırır. İptal kesindir ve süresi dolmuş bir bağlantı uzatılamaz. Yeni bir sipariş veya değişen koşullar için yeni bir fatura oluşturun, sonucu bilinmeyen bir ödemeyi yeniden denemek için değil.\n\nBirden fazla mağaza ve tek USD taban fiyat\n\nToplu analiz ve işlemler için Tüm mağazaları seçin veya kendi kayıtları için bir mağaza seçin. Her mağazanın ayrı bir storeId'si, adı, varsayılan KDV'si, faturaları, API anahtarları, webhook uç noktaları, olay geçmişi ve web sitesi uygulaması vardır. Bildirimler ve destek talepleri hesaba aittir. Bir hesap en fazla 100 mağaza oluşturabilir. Mevcut kayıtlar ilk mağazasında kalır.\n\nYeni çalışma alanı faturaları pricingMode=\"universal\" ve USD taban fiyat kullanır. Any, kart, alipay, sbp ve kriptoyu içerir; bir satıcı bir alt küme seçebilir. Kartlar ve Alipay USD tahsil eder. SBP, Rusya Merkez Bankası USD/RUB referans kurunu kullanarak RUB tahsil eder. Kripto, açık fatura kuralı 1 USD = 1 USDT kapsamında USDT tahsil eder. Bu bir fatura dönüştürme kuralıdır, piyasa USDT kotasyonu değildir. Ağ geçidi, transferden önce seçilen coin'in kurunu, tam transfer tutarını ve talimatlarını sağlar.\n\nReferans kuru ve her iki tutar oluşturma sırasında dondurulur. RUB dönüştürmesi içeren faturalar 24 saat içinde sona erer. Referans kuru alınamazsa, oluşturma FX_UNAVAILABLE ile başarısız olur; uydurulmuş veya bayat yedek kur kullanılmaz. Sahip yanıt tutarı ve kotasyonlar USD muhasebe para birimini kullanır. quotes[method].settlement, yerel tahsil kotasyonunu içerir. Genel ödeme sayfası, seçilen tahsil para birimini currency içinde, orijinal fiyatı baseAmountMinor/baseCurrency içinde ve referans kurunu fx içinde gösterir. Bir ödeme gönderildikten sonra yöntemi değiştirilemez; bir faturanın tek ağ geçidi işlemi vardır.\n\nAmaçlanan mağaza içinde bir API anahtarı oluşturun ve sunucunuzdan Authorization: Bearer <key> gönderin. Mağaza bağlaması değişmezdir; X-Kevmi-Store, anahtara başka bir mağazaya erişim izni veremez. Tarayıcı oturumları X-Kevmi-Store: <storeId> seçer; atlanırsa ilk mağaza seçilir. all değeri yalnızca GET /api/account/dashboard ve GET /api/payment-links tarafından kabul edilir. Değişiklikler seçili bir mağaza, Origin ve X-CSRF-Token gerektirir. Hesap kimlikleri ve mağaza kimlikleri farklı tanımlayıcılardır.\n\nUyumluluk için, pricingMode=\"universal\" içermeyen API istekleri yerel fiyatlandırmayı ve orijinal para birimi kısıtlamalarını korur. Mevcut faturalar asla yeniden hesaplanmaz. Analizlerdeki onaylanmış tahsilatlar, doğrulanmış ödemelerden kaydedilmiş fatura giderlerinin düşülmesiyle elde edilir; bunlar çekilebilir bakiye değildir. Eski fatura para birimleri ayrı kalır ve ödemeler destek ile düzenlenir. Bir siparişi yalnızca sunucu API'si, olay geçmişi veya imzalı bir webhook üzerinden payment.fulfillmentReady=true ve payment.status=\"succeeded\" durumunu kontrol ettikten sonra yerine getirin.",
      "readMinutes": 5
    },
    {
      "id": "checkout",
      "title": "Ödeme Sayfası",
      "summary": "Ödeme sayfası, müşteriye ne satın aldığını, nasıl ödeyebileceğini ve onaydan önce ödenmesi gereken tutarı gösterir. Tüccar çalışma alanından ayrıdır.",
      "group": "payments",
      "url": "/docs/checkout",
      "tags": [
        "ödeme sayfası",
        "müşteri",
        "öde",
        "fatura",
        "ödeme hatası"
      ],
      "sections": [
        {
          "id": "review",
          "title": "Siparişi inceleyin",
          "paragraphs": [
            "Mağaza adını, satın alımı, taban fiyatı ve para birimini kontrol edin. Satıcıyla anlaşmanızdan farklıysa, devam etmeden önce düzeltilmiş bir fatura isteyin.",
            "Genel bir fatura yalnızca adresini gerektirir; satıcının hesabına erişim gerekmez. Bir demo sayfası açıkça işaretlenmiştir ve gerçek bir tahsilat için kart bilgisi toplamaz."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "method",
          "title": "Bir yöntem seçin",
          "paragraphs": [
            "Yeni çalışma alanı faturaları USD taban fiyat kullanır ve Any dört yöntemin tümünü sunar. SBP, donmuş Rusya Merkez Bankası referans kuru üzerinden RUB'a çevrilir; kripto, açık 1:1 USD/USDT fatura kuralını kullanır. Eski yerel fiyatlandırma, eski faturalar ve pricingMode=universal olmayan API istekleri için kullanılabilir durumda kalır. Aşağıdaki çoklu mağaza ve USD fiyatlandırma bölümüne bakın.",
            "Kart: tarayıcı ödeme bilgilerini ağ geçidi genel anahtarıyla şifreler. Kevmi şifreli zarfı iletir; sunucusu düz metin kart numaralarını, CVV'yi veya tek kullanımlık banka kodlarını kabul etmez veya saklamaz. İstenen banka kodu formu yalnızca ağ geçidinin sorgulaması geçerliyken görünür.",
            "Alipay: müşteri bir ad sağlar ve bir QR kodu alır. SBP banka ödeme URL'sini açar; ağ geçidi tarafından sağlanan bir QR de kullanılabilir. Ağ geçidi bir tane sağladığında bir son kullanma tarihi gösterilir.",
            "Kripto: bir coin seçin, ardından mevcut katalogdan uygun bir ağ seçin. Bir işlem oluşturduktan sonra, ödeme sayfası tam ondalık tutarı, alıcı adresini ve iki QR modunu görüntüler: yalnızca adres veya adres ve tutar. Cüzdan ağı, seçilen ağla eşleşmelidir. Bir USDT fatura fiyatı başka bir coin'in döviz kurunu kilitlemez: ağ geçidi tarafından sağlanan tutarı kullanın. Süresi dolmuş talimatlar, aynı ödeme için mutabakat devam ederken gizlenir.",
            "Yeni bir canlı kart veya Alipay ödemesi için mevcut ağ geçidi yalnızca feeCustomerPercent=0 ve vatCustomerPercent=100'ü destekler: satıcı tüm işlem ücretini karşılar ve KDV müşteri için tam olarak eklenir. Diğer paylar bir faturada kaydedilip hesaplanabilir, ancak yürütme unsupported_allocation ile engellenir. Sunucu kaydedilmiş koşulları sessizce asla değiştirmez. SBP ve USDT kripto ödemeleri tüm işlem ücreti paylarını destekler ve KDV içermez."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "states",
          "title": "Ödeme durumları",
          "paragraphs": [],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Durum",
              "Anlam",
              "Sonraki adım"
            ],
            "rows": [
              [
                "Aktif",
                "Fatura görüntülenebilir",
                "Toplamı ve seçilen yöntemin kullanılabilirliğini kontrol edin"
              ],
              [
                "Duraklatıldı / süresi doldu / iptal edildi",
                "Bağlantı üzerinden yeni bir ödeme başlatılamaz",
                "Satıcıyla iletişime geçin; orijinal işlem ayrıca kontrol edilir"
              ],
              [
                "Bulunamadı",
                "Adres geçersiz veya kullanılamıyor",
                "Tam adresi kontrol edin"
              ],
              [
                "Ödeme kullanılamıyor",
                "Yeni bir işlem, yapılandırma, yöntem, limit, dağılım veya tüccar incelemesi tarafından engellendi",
                "Görüntülenen mesajı izleyin; kayıtlı fatura koşulları değişmez"
              ],
              [
                "Beklemede / işlem gerekli",
                "Orijinal işlem mevcut veya onay gerektiriyor",
                "Geçerli adımı tamamlayın veya durumunu kontrol edin"
              ],
              [
                "Sonuç kontrol ediliyor",
                "Onaylanmış bir sonuç henüz mevcut değil",
                "Orijinal işlemi kontrol edin; ikinci bir tahsilat oluşturmayın"
              ]
            ]
          },
          "code": null,
          "note": "Bir ağ hatası veya eksik yanıt, hiçbir tahsilatın gerçekleşmediğini kanıtlamaz. Zaten gönderilmiş bir işlem, bağlantı artık yeni ödemeleri kabul etmese bile okunabilir kalır.",
          "links": []
        },
        {
          "id": "confirmation",
          "title": "Ödemeyi ne onaylar",
          "paragraphs": [
            "Ödeme, tam ağ geçidi işleminin sunucu mutabakatıyla onaylanır. Başarılı fulfillment_ready=true, verification=provider_confirmed, anlaşmazlık olmaması ve ödenen tutarın onaylanan toplamla birebir eşleşmesini gerektirir. Kripto ayrıca onaylanmış mutabakat kanıtı gerektirir.",
            "Bir yönlendirme, widget mesajı, kabul edilen banka kodu veya tarayıcı gözlemi para onaylamaz. Bir zaman aşımından sonra, orijinal işlemin durumunu okuyun; bir yedek deneme asla otomatik olarak oluşturulmaz.",
            "Yeni bir ödeme ve kart niyeti, satıcının en son web sitesi inceleme başvurusunun onaylanmasını gerektirir. Onay tek başına ödeme ağ geçidini bağlamaz. İnceleme gönderimden sonra değişirse, mevcut işlem durum okumaları, mutabakat ve talep edilen banka kodu için kullanılabilir kalır."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "help",
          "title": "Yardım alma",
          "paragraphs": [
            "Satıcıya fatura referansını veya adresini, deneme zamanını ve gösterilen hatayı gönderin. Destek ekibine CVV, banka şifresi, onay kodu veya kurtarma ifadesi göndermeyin. Dokümantasyon asistanı terimleri açıklayabilir ancak bir krediyi bağımsız olarak onaylayamaz."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Ödeme yardımı",
              "href": "/?support=open"
            },
            {
              "label": "KDV hesaplaması",
              "href": "/docs/vat"
            }
          ]
        }
      ],
      "body": "Siparişi inceleyin\n\nMağaza adını, satın alımı, taban fiyatı ve para birimini kontrol edin. Satıcıyla anlaşmanızdan farklıysa, devam etmeden önce düzeltilmiş bir fatura isteyin.\n\nGenel bir fatura yalnızca adresini gerektirir; satıcının hesabına erişim gerekmez. Bir demo sayfası açıkça işaretlenmiştir ve gerçek bir tahsilat için kart bilgisi toplamaz.\n\nBir yöntem seçin\n\nYeni çalışma alanı faturaları USD taban fiyat kullanır ve Any dört yöntemin tümünü sunar. SBP, donmuş Rusya Merkez Bankası referans kuru üzerinden RUB'a çevrilir; kripto, açık 1:1 USD/USDT fatura kuralını kullanır. Eski yerel fiyatlandırma, eski faturalar ve pricingMode=universal olmayan API istekleri için kullanılabilir durumda kalır. Aşağıdaki çoklu mağaza ve USD fiyatlandırma bölümüne bakın.\n\nKart: tarayıcı ödeme bilgilerini ağ geçidi genel anahtarıyla şifreler. Kevmi şifreli zarfı iletir; sunucusu düz metin kart numaralarını, CVV'yi veya tek kullanımlık banka kodlarını kabul etmez veya saklamaz. İstenen banka kodu formu yalnızca ağ geçidinin sorgulaması geçerliyken görünür.\n\nAlipay: müşteri bir ad sağlar ve bir QR kodu alır. SBP banka ödeme URL'sini açar; ağ geçidi tarafından sağlanan bir QR de kullanılabilir. Ağ geçidi bir tane sağladığında bir son kullanma tarihi gösterilir.\n\nKripto: bir coin seçin, ardından mevcut katalogdan uygun bir ağ seçin. Bir işlem oluşturduktan sonra, ödeme sayfası tam ondalık tutarı, alıcı adresini ve iki QR modunu görüntüler: yalnızca adres veya adres ve tutar. Cüzdan ağı, seçilen ağla eşleşmelidir. Bir USDT fatura fiyatı başka bir coin'in döviz kurunu kilitlemez: ağ geçidi tarafından sağlanan tutarı kullanın. Süresi dolmuş talimatlar, aynı ödeme için mutabakat devam ederken gizlenir.\n\nYeni bir canlı kart veya Alipay ödemesi için mevcut ağ geçidi yalnızca feeCustomerPercent=0 ve vatCustomerPercent=100'ü destekler: satıcı tüm işlem ücretini karşılar ve KDV müşteri için tam olarak eklenir. Diğer paylar bir faturada kaydedilip hesaplanabilir, ancak yürütme unsupported_allocation ile engellenir. Sunucu kaydedilmiş koşulları sessizce asla değiştirmez. SBP ve USDT kripto ödemeleri tüm işlem ücreti paylarını destekler ve KDV içermez.\n\nÖdeme durumları\n\nDurum · Anlam · Sonraki adım\nAktif · Fatura görüntülenebilir · Toplamı ve seçilen yöntemin kullanılabilirliğini kontrol edin\nDuraklatıldı / süresi doldu / iptal edildi · Bağlantı üzerinden yeni bir ödeme başlatılamaz · Satıcıyla iletişime geçin; orijinal işlem ayrıca kontrol edilir\nBulunamadı · Adres geçersiz veya kullanılamıyor · Tam adresi kontrol edin\nÖdeme kullanılamıyor · Yeni bir işlem, yapılandırma, yöntem, limit, dağılım veya tüccar incelemesi tarafından engellendi · Görüntülenen mesajı izleyin; kayıtlı fatura koşulları değişmez\nBeklemede / işlem gerekli · Orijinal işlem mevcut veya onay gerektiriyor · Geçerli adımı tamamlayın veya durumunu kontrol edin\nSonuç kontrol ediliyor · Onaylanmış bir sonuç henüz mevcut değil · Orijinal işlemi kontrol edin; ikinci bir tahsilat oluşturmayın\n\nBir ağ hatası veya eksik yanıt, hiçbir tahsilatın gerçekleşmediğini kanıtlamaz. Zaten gönderilmiş bir işlem, bağlantı artık yeni ödemeleri kabul etmese bile okunabilir kalır.\n\nÖdemeyi ne onaylar\n\nÖdeme, tam ağ geçidi işleminin sunucu mutabakatıyla onaylanır. Başarılı fulfillment_ready=true, verification=provider_confirmed, anlaşmazlık olmaması ve ödenen tutarın onaylanan toplamla birebir eşleşmesini gerektirir. Kripto ayrıca onaylanmış mutabakat kanıtı gerektirir.\n\nBir yönlendirme, widget mesajı, kabul edilen banka kodu veya tarayıcı gözlemi para onaylamaz. Bir zaman aşımından sonra, orijinal işlemin durumunu okuyun; bir yedek deneme asla otomatik olarak oluşturulmaz.\n\nYeni bir ödeme ve kart niyeti, satıcının en son web sitesi inceleme başvurusunun onaylanmasını gerektirir. Onay tek başına ödeme ağ geçidini bağlamaz. İnceleme gönderimden sonra değişirse, mevcut işlem durum okumaları, mutabakat ve talep edilen banka kodu için kullanılabilir kalır.\n\nYardım alma\n\nSatıcıya fatura referansını veya adresini, deneme zamanını ve gösterilen hatayı gönderin. Destek ekibine CVV, banka şifresi, onay kodu veya kurtarma ifadesi göndermeyin. Dokümantasyon asistanı terimleri açıklayabilir ancak bir krediyi bağımsız olarak onaylayamaz.\n\nÖdeme yardımı\n\nKDV hesaplaması",
      "readMinutes": 5
    },
    {
      "id": "payments",
      "title": "Ödemeler ve durumlar",
      "summary": "Bir fatura bir siparişi tanımlar. Bir ödeme, onu ödemek için belirli bir girişimdir. Bir ödeme girişimi ile bağlantısının kullanılabilirliği ayrı durumlardır.",
      "group": "payments",
      "url": "/docs/payments",
      "tags": [
        "ödeme",
        "durum",
        "beklemede",
        "başarılı",
        "başarısız"
      ],
      "sections": [
        {
          "id": "record",
          "title": "Ödeme kaydı",
          "paragraphs": [
            "Fatura sipariş koşullarını saklar; ödeme, ağ geçidi işlemini tanımlar. İlk başlatma, kalıcı bir bağlama ve bir sunucu Idempotency-Key ayırtır. Gönderim başladıktan sonra, başka bir yöntem aynı fatura üzerinde ikinci bir tahsilat oluşturamaz.",
            "GET /api/payment-links ve GET /api/v1/payments, bağlantı.ödeme ögesini sahibine döndürür. Bağlantının etkin/duraklatılmış/iptal edilmiş/süresi dolmuş durumu, ödeme durumundan ayrıdır. Müşteri yalnızca rastgele ödeme jetonu aracılığıyla kendi işlemini okuyabilir."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Veri",
              "Amaç"
            ],
            "rows": [
              [
                "Tanımlayıcı ve sipariş",
                "Girişimi bir satın alma ile ilişkilendir"
              ],
              [
                "Temel tutar ve para birimi",
                "Hesaplama tabanı"
              ],
              [
                "Ödeme yöntemi",
                "Geçerli ücret ve vergi"
              ],
              [
                "KDV mükellefi",
                "Vergiyi kim karşılar"
              ],
              [
                "Ücret, KDV ve toplamlar",
                "Kaydedilmiş hesaplama"
              ],
              [
                "Durum ve zaman",
                "Geçerli işlem durumu"
              ],
              [
                "Ağ geçidi olay referansı",
                "Sunucu onay kaynağı"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "statuses",
          "title": "Canlı işlem durumları",
          "paragraphs": [
            "Demo, ayrı test kayıtları kullanır. Bir demo durumunu değiştirmek, gerçek bir ödemeyi onaylamaz veya mali kayıtları değiştirmez."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Durum",
              "Anlam"
            ],
            "rows": [
              [
                "beklemede",
                "İşlem oluşturuldu; işlem veya sonuç bekleniyor"
              ],
              [
                "requires_action",
                "Bir banka kodu veya müşteri onayı gereklidir"
              ],
              [
                "processing",
                "Sağlayıcı hâlâ sonucu doğruluyor"
              ],
              [
                "başarılı",
                "Sunucu kesin ödemeyi doğruladı"
              ],
              [
                "başarısız",
                "Girişim onaylanmış ödeme olmadan sona erdi"
              ],
              [
                "expired",
                "Talimatların süresi doldu; mutabakat hâlâ mevcut"
              ],
              [
                "review_required",
                "Ek inceleme gerekiyor; tekrar ödeme yapmayın"
              ],
              [
                "partially_paid",
                "Tutarın yalnızca bir kısmı alındı; başka bir ödeme oluşturmayın"
              ],
              [
                "partially_refunded",
                "Ödemenin bir kısmı iade edildi"
              ],
              [
                "refunded",
                "İade onaylandı"
              ],
              [
                "disputed",
                "İşlem ihtilaflıdır"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "authority",
          "title": "Gerçeğin kaynağı",
          "paragraphs": [
            "İmzalı bir webhook, kesin ağ geçidi işleminin kimliği doğrulanmış bir okumasını tetikler. Kimlikler, sipariş, para birimi, yöntem, temel ve nihai tutarlar, canlı mod ve monotonik sürüm doğrulanır. Gelen bir olay adı tek başına para kanıtı değildir.",
            "Durum, makbuz ve satıcı olayı atomik olarak kaydedilir. Eski yanıtlar daha yeni bir sürümün üzerine yazamaz; kopyalar iki kez yerine getirmez ve beklemede, onaylanmış bir ödemenin yerini alamaz. Bu kayıtlar otomatik olarak çekilebilir bir bakiye veya ödeme oluşturmaz."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "uncertain",
          "title": "Sonuç bilinmediğinde",
          "paragraphs": [],
          "bullets": [],
          "steps": [
            "Orijinal faturayı ve işlem tanımlayıcısını koruyun.",
            "GET /api/checkout/{token}/status uç noktasını okuyun; bu bir tahsilat oluşturmaz.",
            "Açık mutabakat gerektiğinde POST /api/checkout/{token}/reconcile uç noktasını kullanın.",
            "Belirsiz bir sonuçtan sonra yöntemi, tutarı veya idempotency anahtarını değiştirmeyin."
          ],
          "table": null,
          "code": null,
          "note": "Zaman aşımı bir reddetme değildir. Kaybolan bir yanıt, orijinal sunucu anahtarıyla kurtarılır; otomatik olarak hiçbir yedek girişim oluşturulmaz.",
          "links": []
        },
        {
          "id": "stores-usd",
          "title": "Birden fazla mağaza ve tek USD taban fiyat",
          "paragraphs": [
            "Toplu analiz ve işlemler için Tüm mağazaları seçin veya kendi kayıtları için bir mağaza seçin. Her mağazanın ayrı bir storeId'si, adı, varsayılan KDV'si, faturaları, API anahtarları, webhook uç noktaları, olay geçmişi ve web sitesi uygulaması vardır. Bildirimler ve destek talepleri hesaba aittir. Bir hesap en fazla 100 mağaza oluşturabilir. Mevcut kayıtlar ilk mağazasında kalır.",
            "Yeni çalışma alanı faturaları pricingMode=\"universal\" ve USD taban fiyat kullanır. Any, kart, alipay, sbp ve kriptoyu içerir; bir satıcı bir alt küme seçebilir. Kartlar ve Alipay USD tahsil eder. SBP, Rusya Merkez Bankası USD/RUB referans kurunu kullanarak RUB tahsil eder. Kripto, açık fatura kuralı 1 USD = 1 USDT kapsamında USDT tahsil eder. Bu bir fatura dönüştürme kuralıdır, piyasa USDT kotasyonu değildir. Ağ geçidi, transferden önce seçilen coin'in kurunu, tam transfer tutarını ve talimatlarını sağlar.",
            "Referans kuru ve her iki tutar oluşturma sırasında dondurulur. RUB dönüştürmesi içeren faturalar 24 saat içinde sona erer. Referans kuru alınamazsa, oluşturma FX_UNAVAILABLE ile başarısız olur; uydurulmuş veya bayat yedek kur kullanılmaz. Sahip yanıt tutarı ve kotasyonlar USD muhasebe para birimini kullanır. quotes[method].settlement, yerel tahsil kotasyonunu içerir. Genel ödeme sayfası, seçilen tahsil para birimini currency içinde, orijinal fiyatı baseAmountMinor/baseCurrency içinde ve referans kurunu fx içinde gösterir. Bir ödeme gönderildikten sonra yöntemi değiştirilemez; bir faturanın tek ağ geçidi işlemi vardır.",
            "Amaçlanan mağaza içinde bir API anahtarı oluşturun ve sunucunuzdan Authorization: Bearer <key> gönderin. Mağaza bağlaması değişmezdir; X-Kevmi-Store, anahtara başka bir mağazaya erişim izni veremez. Tarayıcı oturumları X-Kevmi-Store: <storeId> seçer; atlanırsa ilk mağaza seçilir. all değeri yalnızca GET /api/account/dashboard ve GET /api/payment-links tarafından kabul edilir. Değişiklikler seçili bir mağaza, Origin ve X-CSRF-Token gerektirir. Hesap kimlikleri ve mağaza kimlikleri farklı tanımlayıcılardır.",
            "Uyumluluk için, pricingMode=\"universal\" içermeyen API istekleri yerel fiyatlandırmayı ve orijinal para birimi kısıtlamalarını korur. Mevcut faturalar asla yeniden hesaplanmaz. Analizlerdeki onaylanmış tahsilatlar, doğrulanmış ödemelerden kaydedilmiş fatura giderlerinin düşülmesiyle elde edilir; bunlar çekilebilir bakiye değildir. Eski fatura para birimleri ayrı kalır ve ödemeler destek ile düzenlenir. Bir siparişi yalnızca sunucu API'si, olay geçmişi veya imzalı bir webhook üzerinden payment.fulfillmentReady=true ve payment.status=\"succeeded\" durumunu kontrol ettikten sonra yerine getirin."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        }
      ],
      "body": "Ödeme kaydı\n\nFatura sipariş koşullarını saklar; ödeme, ağ geçidi işlemini tanımlar. İlk başlatma, kalıcı bir bağlama ve bir sunucu Idempotency-Key ayırtır. Gönderim başladıktan sonra, başka bir yöntem aynı fatura üzerinde ikinci bir tahsilat oluşturamaz.\n\nGET /api/payment-links ve GET /api/v1/payments, bağlantı.ödeme ögesini sahibine döndürür. Bağlantının etkin/duraklatılmış/iptal edilmiş/süresi dolmuş durumu, ödeme durumundan ayrıdır. Müşteri yalnızca rastgele ödeme jetonu aracılığıyla kendi işlemini okuyabilir.\n\nVeri · Amaç\nTanımlayıcı ve sipariş · Girişimi bir satın alma ile ilişkilendir\nTemel tutar ve para birimi · Hesaplama tabanı\nÖdeme yöntemi · Geçerli ücret ve vergi\nKDV mükellefi · Vergiyi kim karşılar\nÜcret, KDV ve toplamlar · Kaydedilmiş hesaplama\nDurum ve zaman · Geçerli işlem durumu\nAğ geçidi olay referansı · Sunucu onay kaynağı\n\nCanlı işlem durumları\n\nDemo, ayrı test kayıtları kullanır. Bir demo durumunu değiştirmek, gerçek bir ödemeyi onaylamaz veya mali kayıtları değiştirmez.\n\nDurum · Anlam\nbeklemede · İşlem oluşturuldu; işlem veya sonuç bekleniyor\nrequires_action · Bir banka kodu veya müşteri onayı gereklidir\nprocessing · Sağlayıcı hâlâ sonucu doğruluyor\nbaşarılı · Sunucu kesin ödemeyi doğruladı\nbaşarısız · Girişim onaylanmış ödeme olmadan sona erdi\nexpired · Talimatların süresi doldu; mutabakat hâlâ mevcut\nreview_required · Ek inceleme gerekiyor; tekrar ödeme yapmayın\npartially_paid · Tutarın yalnızca bir kısmı alındı; başka bir ödeme oluşturmayın\npartially_refunded · Ödemenin bir kısmı iade edildi\nrefunded · İade onaylandı\ndisputed · İşlem ihtilaflıdır\n\nGerçeğin kaynağı\n\nİmzalı bir webhook, kesin ağ geçidi işleminin kimliği doğrulanmış bir okumasını tetikler. Kimlikler, sipariş, para birimi, yöntem, temel ve nihai tutarlar, canlı mod ve monotonik sürüm doğrulanır. Gelen bir olay adı tek başına para kanıtı değildir.\n\nDurum, makbuz ve satıcı olayı atomik olarak kaydedilir. Eski yanıtlar daha yeni bir sürümün üzerine yazamaz; kopyalar iki kez yerine getirmez ve beklemede, onaylanmış bir ödemenin yerini alamaz. Bu kayıtlar otomatik olarak çekilebilir bir bakiye veya ödeme oluşturmaz.\n\nSonuç bilinmediğinde\n\nOrijinal faturayı ve işlem tanımlayıcısını koruyun.\n\nGET /api/checkout/{token}/status uç noktasını okuyun; bu bir tahsilat oluşturmaz.\n\nAçık mutabakat gerektiğinde POST /api/checkout/{token}/reconcile uç noktasını kullanın.\n\nBelirsiz bir sonuçtan sonra yöntemi, tutarı veya idempotency anahtarını değiştirmeyin.\n\nZaman aşımı bir reddetme değildir. Kaybolan bir yanıt, orijinal sunucu anahtarıyla kurtarılır; otomatik olarak hiçbir yedek girişim oluşturulmaz.\n\nBirden fazla mağaza ve tek USD taban fiyat\n\nToplu analiz ve işlemler için Tüm mağazaları seçin veya kendi kayıtları için bir mağaza seçin. Her mağazanın ayrı bir storeId'si, adı, varsayılan KDV'si, faturaları, API anahtarları, webhook uç noktaları, olay geçmişi ve web sitesi uygulaması vardır. Bildirimler ve destek talepleri hesaba aittir. Bir hesap en fazla 100 mağaza oluşturabilir. Mevcut kayıtlar ilk mağazasında kalır.\n\nYeni çalışma alanı faturaları pricingMode=\"universal\" ve USD taban fiyat kullanır. Any, kart, alipay, sbp ve kriptoyu içerir; bir satıcı bir alt küme seçebilir. Kartlar ve Alipay USD tahsil eder. SBP, Rusya Merkez Bankası USD/RUB referans kurunu kullanarak RUB tahsil eder. Kripto, açık fatura kuralı 1 USD = 1 USDT kapsamında USDT tahsil eder. Bu bir fatura dönüştürme kuralıdır, piyasa USDT kotasyonu değildir. Ağ geçidi, transferden önce seçilen coin'in kurunu, tam transfer tutarını ve talimatlarını sağlar.\n\nReferans kuru ve her iki tutar oluşturma sırasında dondurulur. RUB dönüştürmesi içeren faturalar 24 saat içinde sona erer. Referans kuru alınamazsa, oluşturma FX_UNAVAILABLE ile başarısız olur; uydurulmuş veya bayat yedek kur kullanılmaz. Sahip yanıt tutarı ve kotasyonlar USD muhasebe para birimini kullanır. quotes[method].settlement, yerel tahsil kotasyonunu içerir. Genel ödeme sayfası, seçilen tahsil para birimini currency içinde, orijinal fiyatı baseAmountMinor/baseCurrency içinde ve referans kurunu fx içinde gösterir. Bir ödeme gönderildikten sonra yöntemi değiştirilemez; bir faturanın tek ağ geçidi işlemi vardır.\n\nAmaçlanan mağaza içinde bir API anahtarı oluşturun ve sunucunuzdan Authorization: Bearer <key> gönderin. Mağaza bağlaması değişmezdir; X-Kevmi-Store, anahtara başka bir mağazaya erişim izni veremez. Tarayıcı oturumları X-Kevmi-Store: <storeId> seçer; atlanırsa ilk mağaza seçilir. all değeri yalnızca GET /api/account/dashboard ve GET /api/payment-links tarafından kabul edilir. Değişiklikler seçili bir mağaza, Origin ve X-CSRF-Token gerektirir. Hesap kimlikleri ve mağaza kimlikleri farklı tanımlayıcılardır.\n\nUyumluluk için, pricingMode=\"universal\" içermeyen API istekleri yerel fiyatlandırmayı ve orijinal para birimi kısıtlamalarını korur. Mevcut faturalar asla yeniden hesaplanmaz. Analizlerdeki onaylanmış tahsilatlar, doğrulanmış ödemelerden kaydedilmiş fatura giderlerinin düşülmesiyle elde edilir; bunlar çekilebilir bakiye değildir. Eski fatura para birimleri ayrı kalır ve ödemeler destek ile düzenlenir. Bir siparişi yalnızca sunucu API'si, olay geçmişi veya imzalı bir webhook üzerinden payment.fulfillmentReady=true ve payment.status=\"succeeded\" durumunu kontrol ettikten sonra yerine getirin.",
      "readMinutes": 3
    },
    {
      "id": "payouts",
      "title": "USDT TRC20 ödemeleri",
      "summary": "Ödeme koşulları, TRC20 üzerinden USDT'yi belirtir ve ücretler fon kaynağına göre değişir. Bu rehber ücretleri, teklif gereksinimlerini ve kısıtlamaları kapsar: talepler her gün kullanılabilir; uluslararası kart ve Alipay ödemeleri UTC+5 ile ayın 1'inde ve 15'inde işleme alınır.",
      "group": "payments",
      "url": "/docs/payouts",
      "tags": [
        "ödeme",
        "withdrawal",
        "USDT",
        "TRC20",
        "wallet",
        "döviz kuru"
      ],
      "sections": [
        {
          "id": "tariffs",
          "title": "Kaynağa göre ücretler",
          "paragraphs": [
            "Kabul ücreti zaten tüccar kredisine dahildir. Ödeme, kendi ücreti olan ayrı bir işlemdir. Kabul ücretini bakiyeye ikinci kez uygulamayın."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Kaynak",
              "Ücret"
            ],
            "rows": [
              [
                "Kartlar ve Alipay",
                "4%"
              ],
              [
                "SBP",
                "%5 + 400 RUB"
              ],
              [
                "Kripto para",
                "0% + $3"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "quote",
          "title": "Teklifler ve para birimleri",
          "paragraphs": [
            "USD ve RUB tutarları ayrı ayrı muhasebeleştirilmelidir. Döviz kuru olmadan bunları toplamayın. USD itibari bir para birimidir ve USDT dijital bir varlıktır; otomatik 1:1 döviz kuru varsayılmaz.",
            "Bir teklif, kaynak para birimini ve tutarı, ücreti, USDT çıktısını ve süre sonunu belirtmelidir. Tutar veya cüzdan değişikliği, koşulların taze bir şekilde kontrol edilmesini gerektirir."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "address",
          "title": "Alıcı adresi",
          "paragraphs": [
            "Alıcıya ait bir TRC20 adresi kullanın. Adres biçimi doğrulaması bazı yazım hatalarını yakalayabilir ancak sahibi doğrulayamaz veya teslimatı garanti edemez.",
            "Göndermeden önce tam adresi ve ağı kontrol edin. Sunucu, tutarı, mevcut bakiyeyi ve teklifi istemci formundan bağımsız olarak doğrulamalıdır."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "flow",
          "title": "Ödeme süreci",
          "paragraphs": [
            "Demo, hesaplama için yalnızca elle girilen bir teklif kullanır. Test ödemesi demo fonları ayırır ve varlık aktarmaz."
          ],
          "bullets": [],
          "steps": [
            "Fon kaynağını ve borçlandırma tutarını seçin.",
            "Bir TRC20 adresi girin.",
            "Güncel bir teklif alın ve ücreti inceleyin.",
            "Kesin istek koşullarını onaylayın.",
            "Sunucu tarafından onaylanmış bir sonuç bekleyin."
          ],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "availability",
          "title": "Ödeme kullanılabilirliği",
          "paragraphs": [
            "Ödeme inceleme talepleri, Hesap → Ödemeler bölümünde ve /api/account/payout-requests üzerinden kullanılabilir. Bir mağaza, tahsilat kaynağı, USD cinsinden tutar ve USDT TRC20 cüzdanı seçin. Talepler herhangi bir gün gönderilebilir. Uluslararası kart ve Alipay ödemeleri yalnızca her ayın 1'inde ve 15'inde Qyzylorda saatine göre (UTC+5) işleme alınır. Sunucu onayı diğer günlerde engellenir. 1/15 takvim kısıtlaması SBP ve kripto para için geçerli değildir. Talepler ne fon ayırır ne de para gönderir; destek ekibi mevcut tutarı, ücreti, teklifi ve hedefi kontrol eder. Onay, bir transferi doğrulamaz. Eski /api/payouts uç noktası ödeme oluşturmaz.",
            "Doğrulanmış ödemeler, makbuzlar ve olaylar geçmişte tutulur. Bu kayıtlar çekilebilir bir bakiye değildir. Bir ödeme gerçekleştirmek ayrı bir fon defteri, güncel bir teklif, hedef doğrulaması ve transfer onayı gerektirir."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Ağ geçidi entegrasyonu",
              "href": "/docs/gateway"
            }
          ]
        }
      ],
      "body": "Kaynağa göre ücretler\n\nKabul ücreti zaten tüccar kredisine dahildir. Ödeme, kendi ücreti olan ayrı bir işlemdir. Kabul ücretini bakiyeye ikinci kez uygulamayın.\n\nKaynak · Ücret\nKartlar ve Alipay · 4%\nSBP · %5 + 400 RUB\nKripto para · 0% + $3\n\nTeklifler ve para birimleri\n\nUSD ve RUB tutarları ayrı ayrı muhasebeleştirilmelidir. Döviz kuru olmadan bunları toplamayın. USD itibari bir para birimidir ve USDT dijital bir varlıktır; otomatik 1:1 döviz kuru varsayılmaz.\n\nBir teklif, kaynak para birimini ve tutarı, ücreti, USDT çıktısını ve süre sonunu belirtmelidir. Tutar veya cüzdan değişikliği, koşulların taze bir şekilde kontrol edilmesini gerektirir.\n\nAlıcı adresi\n\nAlıcıya ait bir TRC20 adresi kullanın. Adres biçimi doğrulaması bazı yazım hatalarını yakalayabilir ancak sahibi doğrulayamaz veya teslimatı garanti edemez.\n\nGöndermeden önce tam adresi ve ağı kontrol edin. Sunucu, tutarı, mevcut bakiyeyi ve teklifi istemci formundan bağımsız olarak doğrulamalıdır.\n\nÖdeme süreci\n\nDemo, hesaplama için yalnızca elle girilen bir teklif kullanır. Test ödemesi demo fonları ayırır ve varlık aktarmaz.\n\nFon kaynağını ve borçlandırma tutarını seçin.\n\nBir TRC20 adresi girin.\n\nGüncel bir teklif alın ve ücreti inceleyin.\n\nKesin istek koşullarını onaylayın.\n\nSunucu tarafından onaylanmış bir sonuç bekleyin.\n\nÖdeme kullanılabilirliği\n\nÖdeme inceleme talepleri, Hesap → Ödemeler bölümünde ve /api/account/payout-requests üzerinden kullanılabilir. Bir mağaza, tahsilat kaynağı, USD cinsinden tutar ve USDT TRC20 cüzdanı seçin. Talepler herhangi bir gün gönderilebilir. Uluslararası kart ve Alipay ödemeleri yalnızca her ayın 1'inde ve 15'inde Qyzylorda saatine göre (UTC+5) işleme alınır. Sunucu onayı diğer günlerde engellenir. 1/15 takvim kısıtlaması SBP ve kripto para için geçerli değildir. Talepler ne fon ayırır ne de para gönderir; destek ekibi mevcut tutarı, ücreti, teklifi ve hedefi kontrol eder. Onay, bir transferi doğrulamaz. Eski /api/payouts uç noktası ödeme oluşturmaz.\n\nDoğrulanmış ödemeler, makbuzlar ve olaylar geçmişte tutulur. Bu kayıtlar çekilebilir bir bakiye değildir. Bir ödeme gerçekleştirmek ayrı bir fon defteri, güncel bir teklif, hedef doğrulaması ve transfer onayı gerektirir.\n\nAğ geçidi entegrasyonu",
      "readMinutes": 3
    },
    {
      "id": "telegram-login",
      "title": "Telegram ile oturum açın ve kayıt olun",
      "summary": "Telegram kimliğinizi doğrular. Kevmi, hesabınızı ilk oturum açışınızda oluşturur ve sonraki ziyaretlerde açar. Ayrı bir Kevmi şifresi gerekmez.",
      "group": "account",
      "url": "/docs/telegram-login",
      "tags": [
        "Telegram",
        "oturum aç",
        "giriş yap",
        "kayıt ol",
        "hesap",
        "bot"
      ],
      "sections": [
        {
          "id": "steps",
          "title": "Oturum açma",
          "paragraphs": [
            "İstek beş dakika sürer. Süresi dolarsa yeni bir istek başlatın. Eski bir istek oturum elde etmek için yeniden kullanılamaz."
          ],
          "bullets": [],
          "steps": [
            "Oturum Aç veya Hesap Oluştur'u açın ve Telegram ile Devam Et'i seçin.",
            "Bu tarayıcının oluşturduğu bot bağlantısını izleyin.",
            "Web sitesindeki ve bot mesajındaki altı haneli kodu karşılaştırın.",
            "Özel sohbette onaylayın.",
            "Orijinal tarayıcıya dönün. Doğrulamadan sonra hesabınız açılır."
          ],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "browser",
          "title": "Orijinal tarayıcı neden önemlidir",
          "paragraphs": [
            "Telegram bağlantısı, oturum açmayı başlatan tarayıcıdaki korumalı bir çereze bağlıdır. Bir challengeId veya iletilen bağlantı tek başına başka bir cihazda oturum oluşturamaz.",
            "Başka bir cihazda Telegram'da onaylayabilirsiniz, ancak hesap oturum açmanın başladığı tarayıcıda açılır. Başlatmadığınız bir isteği onaylamayın."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "session",
          "title": "Oturumlar ve oturum kapatma",
          "paragraphs": [
            "Bir oturum 24 saate kadar sürer. Rastgele belirteci Güvenli HttpOnly çerezinde saklanır ve JavaScript tarafından okunamaz. Web sitesi oturum kapatması geçerli oturumu sonlandırır.",
            "Bot komutu /logout tüm hesap oturumlarını sonlandırır ve kullanılmayan onayları iptal eder. Yeni bir oturum açma yeni bir istek gerektirir."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "trouble",
          "title": "Oturum açma sorun giderme",
          "paragraphs": [],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Durum",
              "Eylem"
            ],
            "rows": [
              [
                "Bağlantının süresi doldu",
                "Web sitesinde yeni bir istek başlatın"
              ],
              [
                "Farklı bir tarayıcı açık",
                "Oturum açmanın başladığı sekmeye dönün"
              ],
              [
                "Kodlar farklı",
                "Onaylamayın; yeniden başlatın"
              ],
              [
                "Oturum açma kullanılamıyor",
                "Daha sonra deneyin veya destekle iletişime geçin"
              ],
              [
                "Geçici ağ hatası",
                "Bir sonraki kontrolü bekleyin veya oturum açmayı yeniden deneyin"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "privacy",
          "title": "Oturum açma için kullanılan bilgiler",
          "paragraphs": [
            "Sunucu, hesabı oluşturmak için doğrulanmış bir Telegram kimliği ve mevcut profil alanlarını alır. Yalnızca herkese açık bir kullanıcı adı kimlik kanıtı değildir.",
            "Bot sizden Telegram şifrenizi, bankacılık kodlarınızı, CVV'nizi, tohum ifadenizi veya özel anahtarlarınızı istemez."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Kimlik Doğrulama API'si",
              "href": "/docs/auth-api"
            },
            {
              "label": "Oturum Aç",
              "href": "/login"
            }
          ]
        },
        {
          "id": "assistant-admin-v16",
          "title": "Asistan, destek ve proje yönetimi",
          "paragraphs": [
            "İlk Telegram girişi, onaylanmış bir satıcı değil, not_submitted durumuna sahip bir hesap ve bir taslak mağaza oluşturur. Hesap, başvuru formunu veya mevcut incelemeyi açar; ödeme kabul etmek uzman onayı gerektirir. Her yeni mağazanın kendi incelemesi vardır. GET /api/stores, reviewStatus ve applicationId değerlerini döndürür. Bağlı mağazalar toplu erişimi korur ve destek ile dokümantasyon inceleme sırasında kullanılabilir kalır.",
            "Özel işlemlerde yardıma ihtiyacınız olduğunda sohbette verilerime erişimi etkinleştirin. includeAccount=true içeren bir web isteği geçerli bir oturum, Origin ve X-CSRF-Token gerektirir; X-Kevmi-Store sahip olunan bir mağazayı veya tüm sahip olunan mağazaları seçer. İzin olmadan asistan yalnızca genel belgeleri kullanır. Telegram'da, gönderen kimliği doğrulandıktan sonra ayrı bir düğme erişimi etkinleştirir.",
            "read_account aracı sahip olunan mağazaları, doğrulanmış ödeme durumuna sahip faturaları, etkinlikleri, başvuruları ve uzman yanıtlarını içeren destek taleplerini okur. 30 kayıt ve nextPage döndürür; daha eski kayıtlara sayfalama yoluyla erişilir. Yanıt başına okuma sayısı sınırlıdır, bu nedenle eksik bir örnek açıklanmalıdır. API anahtarları, webhook sırları, kart bilgileri ve oturumlar araca sağlanmaz. Araç ücret talep edemez, ödeme yapamaz, geri ödeme yapamaz veya ayarları değiştiremez.",
            "Çalışma alanında veya Telegram'da bir destek talebi oluşturmak, kalıcı bir kuyruğa ayrı bir yönetici uyarısı yerleştirir. /admin/tickets?ticket=<id> bağlantısına bağlanır; geçici Telegram arızaları yeniden denenir. Kurtarma ayrıca uyarısı olmayan daha eski açık talepleri de alır. Yöneticiler talep sayfasında yanıt verir; yanıt kullanıcı çalışma alanına kaydedilir ve destek bildirimleri etkinleştirildiğinde Telegram üzerinden gönderilir.",
            "Bot ana menü, mağazalar, bildirimler, destek, güvenlik ve dil için satır içi düğmeler kullanır. Gezinme geçerli mesajı düzenler; kullanılamayan eski bir menü değiştirilir. Ödeme ve güvenlik bildirimleri tek kullanımlık gezinme olarak ele alınmaz. Menüden çıkış yapmak onay gerektirir. Açık /logout komutu yine de her hesap oturumunu sonlandırır.",
            "/admin/project paneli, sunucu tarafı MODERATOR_TELEGRAM_IDS izin listesindeki Telegram kimlikleriyle sınırlıdır. Kullanıcıları, mağazaları, işlemleri, anahtar iptalini, webhook devre dışı bırakmayı, fatura duraklatmayı, kabul kontrollerini ve bir denetim günlüğünü içerir. Değişiklikler CSRF ve bir gerekçe gerektirir. Panel bir yöneticiyi kısıtlayamaz veya bir ödemeyi manuel olarak başarılı ilan edemez. Bir sahibi kısıtlamak oturumları sonlandırır ve API anahtarı erişimini engeller; bir mağazayı kısıtlamak yeni işlemleri durdurur. Geçmiş korunur.",
            "Kamu teklifi etkinleştirilmiş her dilde /public-offer adresinde, gizlilik politikası ise /privacy-policy adresinde mevcuttur. Madeni paraları ada veya kısaltmaya göre arayın. Birden fazla canlı ağ mevcut olduğunda yalnızca bir ağ seçici görünür. Tek bir ağ otomatik olarak seçilir ve onayda adlandırılmış olarak kalır. Canlı ağ geçidi kullanılabilirliği seçilebilir çiftleri belirler; referans kataloğu bir hizmeti etkinleştirmez.",
            "Rutin web uygulaması sürümleri için update.sh kullanın: adayı derleyin, geçiş geçmişini kontrol edin, SQLite'ı çevrimiçi yedekleyin, ikinci bir kapsayıcı başlatın, doğrulayın ve Caddy'yi sorunsuz şekilde değiştirin. Ağ geçidi, PostgreSQL ve posta yeniden başlatılmaz. Önceki statik varlıklar açık sekmeler için kullanılabilir durumda kalır. Yeni bir geçiş açıkça gözden geçirilmiş yetkilendirme gerektirir; uyumsuz bir şema değişikliği sorunsuz bir dağıtım değildir."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Kamu teklifi",
              "href": "/public-offer"
            },
            {
              "label": "Gizlilik politikası",
              "href": "/privacy-policy"
            }
          ]
        }
      ],
      "body": "Oturum açma\n\nİstek beş dakika sürer. Süresi dolarsa yeni bir istek başlatın. Eski bir istek oturum elde etmek için yeniden kullanılamaz.\n\nOturum Aç veya Hesap Oluştur'u açın ve Telegram ile Devam Et'i seçin.\n\nBu tarayıcının oluşturduğu bot bağlantısını izleyin.\n\nWeb sitesindeki ve bot mesajındaki altı haneli kodu karşılaştırın.\n\nÖzel sohbette onaylayın.\n\nOrijinal tarayıcıya dönün. Doğrulamadan sonra hesabınız açılır.\n\nOrijinal tarayıcı neden önemlidir\n\nTelegram bağlantısı, oturum açmayı başlatan tarayıcıdaki korumalı bir çereze bağlıdır. Bir challengeId veya iletilen bağlantı tek başına başka bir cihazda oturum oluşturamaz.\n\nBaşka bir cihazda Telegram'da onaylayabilirsiniz, ancak hesap oturum açmanın başladığı tarayıcıda açılır. Başlatmadığınız bir isteği onaylamayın.\n\nOturumlar ve oturum kapatma\n\nBir oturum 24 saate kadar sürer. Rastgele belirteci Güvenli HttpOnly çerezinde saklanır ve JavaScript tarafından okunamaz. Web sitesi oturum kapatması geçerli oturumu sonlandırır.\n\nBot komutu /logout tüm hesap oturumlarını sonlandırır ve kullanılmayan onayları iptal eder. Yeni bir oturum açma yeni bir istek gerektirir.\n\nOturum açma sorun giderme\n\nDurum · Eylem\nBağlantının süresi doldu · Web sitesinde yeni bir istek başlatın\nFarklı bir tarayıcı açık · Oturum açmanın başladığı sekmeye dönün\nKodlar farklı · Onaylamayın; yeniden başlatın\nOturum açma kullanılamıyor · Daha sonra deneyin veya destekle iletişime geçin\nGeçici ağ hatası · Bir sonraki kontrolü bekleyin veya oturum açmayı yeniden deneyin\n\nOturum açma için kullanılan bilgiler\n\nSunucu, hesabı oluşturmak için doğrulanmış bir Telegram kimliği ve mevcut profil alanlarını alır. Yalnızca herkese açık bir kullanıcı adı kimlik kanıtı değildir.\n\nBot sizden Telegram şifrenizi, bankacılık kodlarınızı, CVV'nizi, tohum ifadenizi veya özel anahtarlarınızı istemez.\n\nKimlik Doğrulama API'si\n\nOturum Aç\n\nAsistan, destek ve proje yönetimi\n\nİlk Telegram girişi, onaylanmış bir satıcı değil, not_submitted durumuna sahip bir hesap ve bir taslak mağaza oluşturur. Hesap, başvuru formunu veya mevcut incelemeyi açar; ödeme kabul etmek uzman onayı gerektirir. Her yeni mağazanın kendi incelemesi vardır. GET /api/stores, reviewStatus ve applicationId değerlerini döndürür. Bağlı mağazalar toplu erişimi korur ve destek ile dokümantasyon inceleme sırasında kullanılabilir kalır.\n\nÖzel işlemlerde yardıma ihtiyacınız olduğunda sohbette verilerime erişimi etkinleştirin. includeAccount=true içeren bir web isteği geçerli bir oturum, Origin ve X-CSRF-Token gerektirir; X-Kevmi-Store sahip olunan bir mağazayı veya tüm sahip olunan mağazaları seçer. İzin olmadan asistan yalnızca genel belgeleri kullanır. Telegram'da, gönderen kimliği doğrulandıktan sonra ayrı bir düğme erişimi etkinleştirir.\n\nread_account aracı sahip olunan mağazaları, doğrulanmış ödeme durumuna sahip faturaları, etkinlikleri, başvuruları ve uzman yanıtlarını içeren destek taleplerini okur. 30 kayıt ve nextPage döndürür; daha eski kayıtlara sayfalama yoluyla erişilir. Yanıt başına okuma sayısı sınırlıdır, bu nedenle eksik bir örnek açıklanmalıdır. API anahtarları, webhook sırları, kart bilgileri ve oturumlar araca sağlanmaz. Araç ücret talep edemez, ödeme yapamaz, geri ödeme yapamaz veya ayarları değiştiremez.\n\nÇalışma alanında veya Telegram'da bir destek talebi oluşturmak, kalıcı bir kuyruğa ayrı bir yönetici uyarısı yerleştirir. /admin/tickets?ticket=<id> bağlantısına bağlanır; geçici Telegram arızaları yeniden denenir. Kurtarma ayrıca uyarısı olmayan daha eski açık talepleri de alır. Yöneticiler talep sayfasında yanıt verir; yanıt kullanıcı çalışma alanına kaydedilir ve destek bildirimleri etkinleştirildiğinde Telegram üzerinden gönderilir.\n\nBot ana menü, mağazalar, bildirimler, destek, güvenlik ve dil için satır içi düğmeler kullanır. Gezinme geçerli mesajı düzenler; kullanılamayan eski bir menü değiştirilir. Ödeme ve güvenlik bildirimleri tek kullanımlık gezinme olarak ele alınmaz. Menüden çıkış yapmak onay gerektirir. Açık /logout komutu yine de her hesap oturumunu sonlandırır.\n\n/admin/project paneli, sunucu tarafı MODERATOR_TELEGRAM_IDS izin listesindeki Telegram kimlikleriyle sınırlıdır. Kullanıcıları, mağazaları, işlemleri, anahtar iptalini, webhook devre dışı bırakmayı, fatura duraklatmayı, kabul kontrollerini ve bir denetim günlüğünü içerir. Değişiklikler CSRF ve bir gerekçe gerektirir. Panel bir yöneticiyi kısıtlayamaz veya bir ödemeyi manuel olarak başarılı ilan edemez. Bir sahibi kısıtlamak oturumları sonlandırır ve API anahtarı erişimini engeller; bir mağazayı kısıtlamak yeni işlemleri durdurur. Geçmiş korunur.\n\nKamu teklifi etkinleştirilmiş her dilde /public-offer adresinde, gizlilik politikası ise /privacy-policy adresinde mevcuttur. Madeni paraları ada veya kısaltmaya göre arayın. Birden fazla canlı ağ mevcut olduğunda yalnızca bir ağ seçici görünür. Tek bir ağ otomatik olarak seçilir ve onayda adlandırılmış olarak kalır. Canlı ağ geçidi kullanılabilirliği seçilebilir çiftleri belirler; referans kataloğu bir hizmeti etkinleştirmez.\n\nRutin web uygulaması sürümleri için update.sh kullanın: adayı derleyin, geçiş geçmişini kontrol edin, SQLite'ı çevrimiçi yedekleyin, ikinci bir kapsayıcı başlatın, doğrulayın ve Caddy'yi sorunsuz şekilde değiştirin. Ağ geçidi, PostgreSQL ve posta yeniden başlatılmaz. Önceki statik varlıklar açık sekmeler için kullanılabilir durumda kalır. Yeni bir geçiş açıkça gözden geçirilmiş yetkilendirme gerektirir; uyumsuz bir şema değişikliği sorunsuz bir dağıtım değildir.\n\nKamu teklifi\n\nGizlilik politikası",
      "readMinutes": 3
    },
    {
      "id": "settings",
      "title": "Mağaza ayarları",
      "summary": "Ayarlar, mağaza adınızı, KDV kuralını ve bildirimlerinizi doğrulanmış hesabınıza bağlar. Değişiklikler, geçerli kullanıcı için sunucuda kaydedilir.",
      "group": "account",
      "url": "/docs/settings",
      "tags": [
        "ayarlar",
        "mağaza",
        "KDV mükellefi",
        "tema",
        "bildirimler"
      ],
      "sections": [
        {
          "id": "name",
          "title": "Mağaza adı",
          "paragraphs": [
            "Müşterinizin siparişte görmeyi beklediği kısa ve tanınabilir bir ad seçin. Ad, çevresindeki boşluklar kırpıldıktan sonra 1–80 karakter içermelidir.",
            "Görüntülenen ad, yasal bilgilerin veya müşteri sözleşmenizin yerini tutmaz. Gizli anahtarları, ödeme kimlik bilgilerini ve başkalarının kişisel bilgilerini bu alana koymayın."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "vat",
          "title": "KDV mükellefi",
          "paragraphs": [
            "Varsayılan ödeyici müşteridir. KDV yalnızca kartlar ve Alipay için geçerlidir. Ayarın değiştirilmesi SBP veya kripto para toplamlarını değiştirmez.",
            "Mevcut faturalar kayıtlı koşullarını korur. Fatura oluştururken, bağımsız müşteri KDV'si ve %0 ila %100 arası ücret payları varsayılanları geçersiz kılabilir. Mağaza tercihi yalnızca gelecekteki faturalar için bir varsayılan sağlar.",
            "Kayıtlı bir tercih, ağ geçidi yeteneklerini genişletmez. Geçerli canlı kart ve Alipay kanalları %100 müşteri KDV'si ve %0 müşteri işlem ücreti gerektirir; diğer kayıtlı dağılımlar hesaplama olarak kalır."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Değer",
              "Yeni bir fatura için kural"
            ],
            "rows": [
              [
                "müşteri",
                "KDV, müşteri taban fiyatına eklenir"
              ],
              [
                "satıcı",
                "Satıcı, KDV'yi taban fiyattan karşılar"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "notifications",
          "title": "Telegram bildirimleri",
          "paragraphs": [
            "Ödeme, ödeme çıkışı, destek ve güvenlik kategorilerini seçin. Bir kategori seçmek bildirimleri kontrol eder; bir ödeme kanalını etkinleştirmez veya finansal olay üretmez.",
            "Bir test mesajı, bağlı özel sohbete teslimatı kontrol eder. Durumu bildirim merkezinde ve GET /api/notifications içinde görünür. Sıraya alınmış bir mesaj henüz teslim edilmemiştir; ayrıca Telegram'ı kontrol edin."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Bildirim kılavuzu",
              "href": "/docs/notifications"
            }
          ]
        },
        {
          "id": "saving",
          "title": "Kaydetme ve hatalar",
          "paragraphs": [
            "Form, tamamlanmış bir kaydetmeyi onaylar. Ağ başarısız olursa, girdiniz yeniden deneme için hazır kalır; yalnızca Kaydet'e basmak değişikliğin saklandığını kanıtlamaz.",
            "Oturumunuz sona erdiğinde tekrar oturum açın. Sunucu, hesabı oturumdan tanır ve tarayıcıdan başka bir mağaza sahibi kimliğini kabul etmez."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "local",
          "title": "Tema ve demo verileri",
          "paragraphs": [
            "Görüntüleme teması cihazda yerel olarak kaydedilir. Demo çalışma alanı ayrı tarayıcı verileri kullanır ve sunucu hesabını değiştirmez.",
            "Demo'yu sıfırlamak yalnızca o tarayıcıdaki test kayıtlarını kaldırır. Bir demo dışa aktarımı banka hesap özeti veya ödeme kanıtı değildir."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "stores-usd",
          "title": "Birden fazla mağaza ve tek USD taban fiyat",
          "paragraphs": [
            "Toplu analiz ve işlemler için Tüm mağazaları seçin veya kendi kayıtları için bir mağaza seçin. Her mağazanın ayrı bir storeId'si, adı, varsayılan KDV'si, faturaları, API anahtarları, webhook uç noktaları, olay geçmişi ve web sitesi uygulaması vardır. Bildirimler ve destek talepleri hesaba aittir. Bir hesap en fazla 100 mağaza oluşturabilir. Mevcut kayıtlar ilk mağazasında kalır.",
            "Yeni çalışma alanı faturaları pricingMode=\"universal\" ve USD taban fiyat kullanır. Any, kart, alipay, sbp ve kriptoyu içerir; bir satıcı bir alt küme seçebilir. Kartlar ve Alipay USD tahsil eder. SBP, Rusya Merkez Bankası USD/RUB referans kurunu kullanarak RUB tahsil eder. Kripto, açık fatura kuralı 1 USD = 1 USDT kapsamında USDT tahsil eder. Bu bir fatura dönüştürme kuralıdır, piyasa USDT kotasyonu değildir. Ağ geçidi, transferden önce seçilen coin'in kurunu, tam transfer tutarını ve talimatlarını sağlar.",
            "Referans kuru ve her iki tutar oluşturma sırasında dondurulur. RUB dönüştürmesi içeren faturalar 24 saat içinde sona erer. Referans kuru alınamazsa, oluşturma FX_UNAVAILABLE ile başarısız olur; uydurulmuş veya bayat yedek kur kullanılmaz. Sahip yanıt tutarı ve kotasyonlar USD muhasebe para birimini kullanır. quotes[method].settlement, yerel tahsil kotasyonunu içerir. Genel ödeme sayfası, seçilen tahsil para birimini currency içinde, orijinal fiyatı baseAmountMinor/baseCurrency içinde ve referans kurunu fx içinde gösterir. Bir ödeme gönderildikten sonra yöntemi değiştirilemez; bir faturanın tek ağ geçidi işlemi vardır.",
            "Amaçlanan mağaza içinde bir API anahtarı oluşturun ve sunucunuzdan Authorization: Bearer <key> gönderin. Mağaza bağlaması değişmezdir; X-Kevmi-Store, anahtara başka bir mağazaya erişim izni veremez. Tarayıcı oturumları X-Kevmi-Store: <storeId> seçer; atlanırsa ilk mağaza seçilir. all değeri yalnızca GET /api/account/dashboard ve GET /api/payment-links tarafından kabul edilir. Değişiklikler seçili bir mağaza, Origin ve X-CSRF-Token gerektirir. Hesap kimlikleri ve mağaza kimlikleri farklı tanımlayıcılardır.",
            "Uyumluluk için, pricingMode=\"universal\" içermeyen API istekleri yerel fiyatlandırmayı ve orijinal para birimi kısıtlamalarını korur. Mevcut faturalar asla yeniden hesaplanmaz. Analizlerdeki onaylanmış tahsilatlar, doğrulanmış ödemelerden kaydedilmiş fatura giderlerinin düşülmesiyle elde edilir; bunlar çekilebilir bakiye değildir. Eski fatura para birimleri ayrı kalır ve ödemeler destek ile düzenlenir. Bir siparişi yalnızca sunucu API'si, olay geçmişi veya imzalı bir webhook üzerinden payment.fulfillmentReady=true ve payment.status=\"succeeded\" durumunu kontrol ettikten sonra yerine getirin."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "assistant-admin-v16",
          "title": "Asistan, destek ve proje yönetimi",
          "paragraphs": [
            "İlk Telegram girişi, onaylanmış bir satıcı değil, not_submitted durumuna sahip bir hesap ve bir taslak mağaza oluşturur. Hesap, başvuru formunu veya mevcut incelemeyi açar; ödeme kabul etmek uzman onayı gerektirir. Her yeni mağazanın kendi incelemesi vardır. GET /api/stores, reviewStatus ve applicationId değerlerini döndürür. Bağlı mağazalar toplu erişimi korur ve destek ile dokümantasyon inceleme sırasında kullanılabilir kalır.",
            "Özel işlemlerde yardıma ihtiyacınız olduğunda sohbette verilerime erişimi etkinleştirin. includeAccount=true içeren bir web isteği geçerli bir oturum, Origin ve X-CSRF-Token gerektirir; X-Kevmi-Store sahip olunan bir mağazayı veya tüm sahip olunan mağazaları seçer. İzin olmadan asistan yalnızca genel belgeleri kullanır. Telegram'da, gönderen kimliği doğrulandıktan sonra ayrı bir düğme erişimi etkinleştirir.",
            "read_account aracı sahip olunan mağazaları, doğrulanmış ödeme durumuna sahip faturaları, etkinlikleri, başvuruları ve uzman yanıtlarını içeren destek taleplerini okur. 30 kayıt ve nextPage döndürür; daha eski kayıtlara sayfalama yoluyla erişilir. Yanıt başına okuma sayısı sınırlıdır, bu nedenle eksik bir örnek açıklanmalıdır. API anahtarları, webhook sırları, kart bilgileri ve oturumlar araca sağlanmaz. Araç ücret talep edemez, ödeme yapamaz, geri ödeme yapamaz veya ayarları değiştiremez.",
            "Çalışma alanında veya Telegram'da bir destek talebi oluşturmak, kalıcı bir kuyruğa ayrı bir yönetici uyarısı yerleştirir. /admin/tickets?ticket=<id> bağlantısına bağlanır; geçici Telegram arızaları yeniden denenir. Kurtarma ayrıca uyarısı olmayan daha eski açık talepleri de alır. Yöneticiler talep sayfasında yanıt verir; yanıt kullanıcı çalışma alanına kaydedilir ve destek bildirimleri etkinleştirildiğinde Telegram üzerinden gönderilir.",
            "Bot ana menü, mağazalar, bildirimler, destek, güvenlik ve dil için satır içi düğmeler kullanır. Gezinme geçerli mesajı düzenler; kullanılamayan eski bir menü değiştirilir. Ödeme ve güvenlik bildirimleri tek kullanımlık gezinme olarak ele alınmaz. Menüden çıkış yapmak onay gerektirir. Açık /logout komutu yine de her hesap oturumunu sonlandırır.",
            "/admin/project paneli, sunucu tarafı MODERATOR_TELEGRAM_IDS izin listesindeki Telegram kimlikleriyle sınırlıdır. Kullanıcıları, mağazaları, işlemleri, anahtar iptalini, webhook devre dışı bırakmayı, fatura duraklatmayı, kabul kontrollerini ve bir denetim günlüğünü içerir. Değişiklikler CSRF ve bir gerekçe gerektirir. Panel bir yöneticiyi kısıtlayamaz veya bir ödemeyi manuel olarak başarılı ilan edemez. Bir sahibi kısıtlamak oturumları sonlandırır ve API anahtarı erişimini engeller; bir mağazayı kısıtlamak yeni işlemleri durdurur. Geçmiş korunur.",
            "Kamu teklifi etkinleştirilmiş her dilde /public-offer adresinde, gizlilik politikası ise /privacy-policy adresinde mevcuttur. Madeni paraları ada veya kısaltmaya göre arayın. Birden fazla canlı ağ mevcut olduğunda yalnızca bir ağ seçici görünür. Tek bir ağ otomatik olarak seçilir ve onayda adlandırılmış olarak kalır. Canlı ağ geçidi kullanılabilirliği seçilebilir çiftleri belirler; referans kataloğu bir hizmeti etkinleştirmez.",
            "Rutin web uygulaması sürümleri için update.sh kullanın: adayı derleyin, geçiş geçmişini kontrol edin, SQLite'ı çevrimiçi yedekleyin, ikinci bir kapsayıcı başlatın, doğrulayın ve Caddy'yi sorunsuz şekilde değiştirin. Ağ geçidi, PostgreSQL ve posta yeniden başlatılmaz. Önceki statik varlıklar açık sekmeler için kullanılabilir durumda kalır. Yeni bir geçiş açıkça gözden geçirilmiş yetkilendirme gerektirir; uyumsuz bir şema değişikliği sorunsuz bir dağıtım değildir."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Kamu teklifi",
              "href": "/public-offer"
            },
            {
              "label": "Gizlilik politikası",
              "href": "/privacy-policy"
            }
          ]
        }
      ],
      "body": "Mağaza adı\n\nMüşterinizin siparişte görmeyi beklediği kısa ve tanınabilir bir ad seçin. Ad, çevresindeki boşluklar kırpıldıktan sonra 1–80 karakter içermelidir.\n\nGörüntülenen ad, yasal bilgilerin veya müşteri sözleşmenizin yerini tutmaz. Gizli anahtarları, ödeme kimlik bilgilerini ve başkalarının kişisel bilgilerini bu alana koymayın.\n\nKDV mükellefi\n\nVarsayılan ödeyici müşteridir. KDV yalnızca kartlar ve Alipay için geçerlidir. Ayarın değiştirilmesi SBP veya kripto para toplamlarını değiştirmez.\n\nMevcut faturalar kayıtlı koşullarını korur. Fatura oluştururken, bağımsız müşteri KDV'si ve %0 ila %100 arası ücret payları varsayılanları geçersiz kılabilir. Mağaza tercihi yalnızca gelecekteki faturalar için bir varsayılan sağlar.\n\nKayıtlı bir tercih, ağ geçidi yeteneklerini genişletmez. Geçerli canlı kart ve Alipay kanalları %100 müşteri KDV'si ve %0 müşteri işlem ücreti gerektirir; diğer kayıtlı dağılımlar hesaplama olarak kalır.\n\nDeğer · Yeni bir fatura için kural\nmüşteri · KDV, müşteri taban fiyatına eklenir\nsatıcı · Satıcı, KDV'yi taban fiyattan karşılar\n\nTelegram bildirimleri\n\nÖdeme, ödeme çıkışı, destek ve güvenlik kategorilerini seçin. Bir kategori seçmek bildirimleri kontrol eder; bir ödeme kanalını etkinleştirmez veya finansal olay üretmez.\n\nBir test mesajı, bağlı özel sohbete teslimatı kontrol eder. Durumu bildirim merkezinde ve GET /api/notifications içinde görünür. Sıraya alınmış bir mesaj henüz teslim edilmemiştir; ayrıca Telegram'ı kontrol edin.\n\nBildirim kılavuzu\n\nKaydetme ve hatalar\n\nForm, tamamlanmış bir kaydetmeyi onaylar. Ağ başarısız olursa, girdiniz yeniden deneme için hazır kalır; yalnızca Kaydet'e basmak değişikliğin saklandığını kanıtlamaz.\n\nOturumunuz sona erdiğinde tekrar oturum açın. Sunucu, hesabı oturumdan tanır ve tarayıcıdan başka bir mağaza sahibi kimliğini kabul etmez.\n\nTema ve demo verileri\n\nGörüntüleme teması cihazda yerel olarak kaydedilir. Demo çalışma alanı ayrı tarayıcı verileri kullanır ve sunucu hesabını değiştirmez.\n\nDemo'yu sıfırlamak yalnızca o tarayıcıdaki test kayıtlarını kaldırır. Bir demo dışa aktarımı banka hesap özeti veya ödeme kanıtı değildir.\n\nBirden fazla mağaza ve tek USD taban fiyat\n\nToplu analiz ve işlemler için Tüm mağazaları seçin veya kendi kayıtları için bir mağaza seçin. Her mağazanın ayrı bir storeId'si, adı, varsayılan KDV'si, faturaları, API anahtarları, webhook uç noktaları, olay geçmişi ve web sitesi uygulaması vardır. Bildirimler ve destek talepleri hesaba aittir. Bir hesap en fazla 100 mağaza oluşturabilir. Mevcut kayıtlar ilk mağazasında kalır.\n\nYeni çalışma alanı faturaları pricingMode=\"universal\" ve USD taban fiyat kullanır. Any, kart, alipay, sbp ve kriptoyu içerir; bir satıcı bir alt küme seçebilir. Kartlar ve Alipay USD tahsil eder. SBP, Rusya Merkez Bankası USD/RUB referans kurunu kullanarak RUB tahsil eder. Kripto, açık fatura kuralı 1 USD = 1 USDT kapsamında USDT tahsil eder. Bu bir fatura dönüştürme kuralıdır, piyasa USDT kotasyonu değildir. Ağ geçidi, transferden önce seçilen coin'in kurunu, tam transfer tutarını ve talimatlarını sağlar.\n\nReferans kuru ve her iki tutar oluşturma sırasında dondurulur. RUB dönüştürmesi içeren faturalar 24 saat içinde sona erer. Referans kuru alınamazsa, oluşturma FX_UNAVAILABLE ile başarısız olur; uydurulmuş veya bayat yedek kur kullanılmaz. Sahip yanıt tutarı ve kotasyonlar USD muhasebe para birimini kullanır. quotes[method].settlement, yerel tahsil kotasyonunu içerir. Genel ödeme sayfası, seçilen tahsil para birimini currency içinde, orijinal fiyatı baseAmountMinor/baseCurrency içinde ve referans kurunu fx içinde gösterir. Bir ödeme gönderildikten sonra yöntemi değiştirilemez; bir faturanın tek ağ geçidi işlemi vardır.\n\nAmaçlanan mağaza içinde bir API anahtarı oluşturun ve sunucunuzdan Authorization: Bearer <key> gönderin. Mağaza bağlaması değişmezdir; X-Kevmi-Store, anahtara başka bir mağazaya erişim izni veremez. Tarayıcı oturumları X-Kevmi-Store: <storeId> seçer; atlanırsa ilk mağaza seçilir. all değeri yalnızca GET /api/account/dashboard ve GET /api/payment-links tarafından kabul edilir. Değişiklikler seçili bir mağaza, Origin ve X-CSRF-Token gerektirir. Hesap kimlikleri ve mağaza kimlikleri farklı tanımlayıcılardır.\n\nUyumluluk için, pricingMode=\"universal\" içermeyen API istekleri yerel fiyatlandırmayı ve orijinal para birimi kısıtlamalarını korur. Mevcut faturalar asla yeniden hesaplanmaz. Analizlerdeki onaylanmış tahsilatlar, doğrulanmış ödemelerden kaydedilmiş fatura giderlerinin düşülmesiyle elde edilir; bunlar çekilebilir bakiye değildir. Eski fatura para birimleri ayrı kalır ve ödemeler destek ile düzenlenir. Bir siparişi yalnızca sunucu API'si, olay geçmişi veya imzalı bir webhook üzerinden payment.fulfillmentReady=true ve payment.status=\"succeeded\" durumunu kontrol ettikten sonra yerine getirin.\n\nAsistan, destek ve proje yönetimi\n\nİlk Telegram girişi, onaylanmış bir satıcı değil, not_submitted durumuna sahip bir hesap ve bir taslak mağaza oluşturur. Hesap, başvuru formunu veya mevcut incelemeyi açar; ödeme kabul etmek uzman onayı gerektirir. Her yeni mağazanın kendi incelemesi vardır. GET /api/stores, reviewStatus ve applicationId değerlerini döndürür. Bağlı mağazalar toplu erişimi korur ve destek ile dokümantasyon inceleme sırasında kullanılabilir kalır.\n\nÖzel işlemlerde yardıma ihtiyacınız olduğunda sohbette verilerime erişimi etkinleştirin. includeAccount=true içeren bir web isteği geçerli bir oturum, Origin ve X-CSRF-Token gerektirir; X-Kevmi-Store sahip olunan bir mağazayı veya tüm sahip olunan mağazaları seçer. İzin olmadan asistan yalnızca genel belgeleri kullanır. Telegram'da, gönderen kimliği doğrulandıktan sonra ayrı bir düğme erişimi etkinleştirir.\n\nread_account aracı sahip olunan mağazaları, doğrulanmış ödeme durumuna sahip faturaları, etkinlikleri, başvuruları ve uzman yanıtlarını içeren destek taleplerini okur. 30 kayıt ve nextPage döndürür; daha eski kayıtlara sayfalama yoluyla erişilir. Yanıt başına okuma sayısı sınırlıdır, bu nedenle eksik bir örnek açıklanmalıdır. API anahtarları, webhook sırları, kart bilgileri ve oturumlar araca sağlanmaz. Araç ücret talep edemez, ödeme yapamaz, geri ödeme yapamaz veya ayarları değiştiremez.\n\nÇalışma alanında veya Telegram'da bir destek talebi oluşturmak, kalıcı bir kuyruğa ayrı bir yönetici uyarısı yerleştirir. /admin/tickets?ticket=<id> bağlantısına bağlanır; geçici Telegram arızaları yeniden denenir. Kurtarma ayrıca uyarısı olmayan daha eski açık talepleri de alır. Yöneticiler talep sayfasında yanıt verir; yanıt kullanıcı çalışma alanına kaydedilir ve destek bildirimleri etkinleştirildiğinde Telegram üzerinden gönderilir.\n\nBot ana menü, mağazalar, bildirimler, destek, güvenlik ve dil için satır içi düğmeler kullanır. Gezinme geçerli mesajı düzenler; kullanılamayan eski bir menü değiştirilir. Ödeme ve güvenlik bildirimleri tek kullanımlık gezinme olarak ele alınmaz. Menüden çıkış yapmak onay gerektirir. Açık /logout komutu yine de her hesap oturumunu sonlandırır.\n\n/admin/project paneli, sunucu tarafı MODERATOR_TELEGRAM_IDS izin listesindeki Telegram kimlikleriyle sınırlıdır. Kullanıcıları, mağazaları, işlemleri, anahtar iptalini, webhook devre dışı bırakmayı, fatura duraklatmayı, kabul kontrollerini ve bir denetim günlüğünü içerir. Değişiklikler CSRF ve bir gerekçe gerektirir. Panel bir yöneticiyi kısıtlayamaz veya bir ödemeyi manuel olarak başarılı ilan edemez. Bir sahibi kısıtlamak oturumları sonlandırır ve API anahtarı erişimini engeller; bir mağazayı kısıtlamak yeni işlemleri durdurur. Geçmiş korunur.\n\nKamu teklifi etkinleştirilmiş her dilde /public-offer adresinde, gizlilik politikası ise /privacy-policy adresinde mevcuttur. Madeni paraları ada veya kısaltmaya göre arayın. Birden fazla canlı ağ mevcut olduğunda yalnızca bir ağ seçici görünür. Tek bir ağ otomatik olarak seçilir ve onayda adlandırılmış olarak kalır. Canlı ağ geçidi kullanılabilirliği seçilebilir çiftleri belirler; referans kataloğu bir hizmeti etkinleştirmez.\n\nRutin web uygulaması sürümleri için update.sh kullanın: adayı derleyin, geçiş geçmişini kontrol edin, SQLite'ı çevrimiçi yedekleyin, ikinci bir kapsayıcı başlatın, doğrulayın ve Caddy'yi sorunsuz şekilde değiştirin. Ağ geçidi, PostgreSQL ve posta yeniden başlatılmaz. Önceki statik varlıklar açık sekmeler için kullanılabilir durumda kalır. Yeni bir geçiş açıkça gözden geçirilmiş yetkilendirme gerektirir; uyumsuz bir şema değişikliği sorunsuz bir dağıtım değildir.\n\nKamu teklifi\n\nGizlilik politikası",
      "readMinutes": 3
    },
    {
      "id": "notifications",
      "title": "Web sitesi ve Telegram bildirimleri",
      "summary": "Hesap olayları üst çubuktaki zil altında görünür. Bildirimleri okuyun, Telegram teslimatını kontrol edin ve çalışma alanınızın ilgili bölümünü açın.",
      "group": "account",
      "url": "/docs/notifications",
      "tags": [
        "bildirimler",
        "Telegram",
        "zil",
        "oku",
        "teslimat"
      ],
      "sections": [
        {
          "id": "inbox",
          "title": "Bildirim merkezi",
          "paragraphs": [
            "Rozet, okunmamış hesap olaylarını sayar. Mesajlar tarihe göre gruplandırılır; Daha fazla yükle eski kayıtları getirir. Ziyaretçilerden oturum açmaları istenir.",
            "Okunma durumu sunucuda saklanır. Görünür sayfalar otomatik olarak yenilenir ve açık sekmeler okunma işaretlerini eşitler. Son görüntülenen mesajdan daha yeni olaylar, daha eski olanlarla birlikte okunmuş olarak işaretlenmez."
          ],
          "bullets": [],
          "steps": [
            "Üst çubuktaki zili seçin.",
            "Tüm olayları veya yalnızca okunmamışları seçin.",
            "İlgili sayfayı açın veya bir mesajı okunmuş olarak işaretleyin.",
            "Zaten yüklenmiş olaylar için Tümünü okunmuş işaretle'yi kullanın."
          ],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "types",
          "title": "Olay kategorileri",
          "paragraphs": [
            "Destek ve güvenlik, yeni bir hesap için etkindir; ödeme kategorileri kullanıcı tarafından seçilir. Merkez, etkin kategoriler için kaydedilmiş olayları gösterir. Tarayıcı demo olayları gerçek fon bildirimleri değildir."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Kategori",
              "İçerik"
            ],
            "rows": [
              [
                "Ödemeler",
                "Onaylanmış ödeme olayları"
              ],
              [
                "Ödeme çıkışları",
                "Onaylanmış ödeme çıkışı olayları"
              ],
              [
                "Destek",
                "Destek talepleri ve başvuru aşaması güncellemeleri"
              ],
              [
                "Güvenlik",
                "Yeni bir doğrulanmış oturum açma"
              ],
              [
                "Test",
                "Telegram'ınıza teslimat kontrolü"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "setup",
          "title": "Teslimat yapılandırma",
          "paragraphs": [
            "Testler, hesap başına saatte üç ile sınırlıdır. Bir test, bakiye değiştirmez veya bir ödeme oluşturmaz. Bir mesajı sıraya almak teslimatı kanıtlamaz."
          ],
          "bullets": [],
          "steps": [
            "Telegram ile oturum açın ve Hesap → Bildirimler bölümünü açın.",
            "İstediğiniz kategorileri etkinleştirin ve kaydedin.",
            "Test teslimatı'nı seçin.",
            "Merkez durumunu ve botun özel sohbetini kontrol edin."
          ],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Bildirim ayarları",
              "href": "/account#notifications"
            }
          ]
        },
        {
          "id": "statuses",
          "title": "Teslimat ve okunma durumu ayrıdır",
          "paragraphs": [
            "Teslimat, Telegram kullanılabilirliğine ve kullanıcı izinlerine bağlıdır. Kayıp bir yanıt, tekrarlanan bir mesaja yol açabilir, ancak tekrarlanan bir mali işleme yol açmaz.",
            "Teslimat başarısız olursa, botun erişilebilir olduğunu ve engellenmediğini kontrol edin. Uygulama bildirim yeniden denemeleri de arka plan işleri olarak çalışır; hizmet etkileşimleri diğer kuyruğa alınmış teslimatları tetikleyebilir. Güncel durum için bildirim merkezini kontrol edin."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Durum",
              "Anlam"
            ],
            "rows": [
              [
                "beklemede",
                "İşlem için sırada"
              ],
              [
                "gönderiliyor",
                "Sunucu teslimatı deniyor"
              ],
              [
                "gönderildi",
                "Telegram gönderimi onayladı"
              ],
              [
                "başarısız",
                "Teslimat başarısız oldu"
              ]
            ]
          },
          "code": null,
          "note": "Mesaj teslimat durumu Telegram'ı ifade eder. Web sitesinde bir bildirimi okundu olarak işaretlemek, Telegram'da okunduğu anlamına gelmez ve teslimatı değiştirmez.",
          "links": []
        },
        {
          "id": "feedback",
          "title": "İşlem onayları",
          "paragraphs": [
            "Web sitesi, tamamlanan bir kaydetme, yeni bağlantı veya benzeri bir işlemden sonra kısa bir bildirim gösterir. Otomatik olarak kapanır ve üzerine gelindiğinde veya odaklanıldığında daha uzun süre kalır.",
            "Bu, arayüz işlemini onaylar. Onaylanmış bir mali durumun yerini almaz veya bir ödeme kaydı oluşturmaz. Alan hataları formun yanında kalır."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "api",
          "title": "API üzerinden okuma ve işaretleme",
          "paragraphs": [
            "GET /api/notifications en fazla 30 hesap olayını, unreadCount ve nextCursor değerlerini döndürür. Başka bir sayfa yüklemek için nextCursor'ı değiştirmeden cursor olarak iletin. unread=1, okunmamış kayıtları seçer. Sıralama düzeni createdAt azalan, ardından id azalandır.",
            "PATCH /api/notifications/read, 1–100 kimlik veya all:true ile birlikte before alanı son görüntülenen olayın milisaniye cinsinden zaman damgası olarak ayarlanmış halini kabul eder. Oturum, Origin ve X-CSRF-Token gereklidir. İstemci kayıt sahibini ayarlayamaz.",
            "Yanıt, updated, readAt ve unreadCount değerlerini içerir. Zaten okunmuş bir olayı okumak, orijinal readAt değerini korur. Olayları listelemek onları okundu olarak işaretlemez; Telegram durumu ve sentAt değişmeden kalır."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "JSON · mark selected",
            "code": "{\n  \"ids\": [\"ntf_46d94180-492e-4c28-b15f-a70049161a63\"]\n}"
          },
          "note": "",
          "links": [
            {
              "label": "API referansı",
              "href": "/docs/api-reference"
            }
          ]
        },
        {
          "id": "commands",
          "title": "Bot komutları",
          "paragraphs": [],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Komut",
              "Eylem"
            ],
            "rows": [
              [
                "/bildirimler",
                "Kategorileri yönet"
              ],
              [
                "/durdur",
                "Bildirimleri devre dışı bırak"
              ],
              [
                "/yardim",
                "Kullanılabilir komutları listele"
              ],
              [
                "/cikis",
                "Tüm hesap oturumlarını sonlandır"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "availability",
          "title": "Özellik kullanılabilirliği",
          "paragraphs": [
            "Bildirim merkezi oturum açmayı gerektirir. Telegram mesajları doğrulanmış özel bot sohbetine gönderilir. Teslimat kullanılamıyorsa, bot izinlerini ve mesaj durumunu kontrol edin.",
            "Bir ödeme veya ödeme çıkışı bildirimi, onaylanmış bir sunucu olayına dayanır. Bir kategori seçmek teslimat tercihlerini değiştirir, işlem kullanılabilirliğini değil."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "assistant-admin-v16",
          "title": "Asistan, destek ve proje yönetimi",
          "paragraphs": [
            "İlk Telegram girişi, onaylanmış bir satıcı değil, not_submitted durumuna sahip bir hesap ve bir taslak mağaza oluşturur. Hesap, başvuru formunu veya mevcut incelemeyi açar; ödeme kabul etmek uzman onayı gerektirir. Her yeni mağazanın kendi incelemesi vardır. GET /api/stores, reviewStatus ve applicationId değerlerini döndürür. Bağlı mağazalar toplu erişimi korur ve destek ile dokümantasyon inceleme sırasında kullanılabilir kalır.",
            "Özel işlemlerde yardıma ihtiyacınız olduğunda sohbette verilerime erişimi etkinleştirin. includeAccount=true içeren bir web isteği geçerli bir oturum, Origin ve X-CSRF-Token gerektirir; X-Kevmi-Store sahip olunan bir mağazayı veya tüm sahip olunan mağazaları seçer. İzin olmadan asistan yalnızca genel belgeleri kullanır. Telegram'da, gönderen kimliği doğrulandıktan sonra ayrı bir düğme erişimi etkinleştirir.",
            "read_account aracı sahip olunan mağazaları, doğrulanmış ödeme durumuna sahip faturaları, etkinlikleri, başvuruları ve uzman yanıtlarını içeren destek taleplerini okur. 30 kayıt ve nextPage döndürür; daha eski kayıtlara sayfalama yoluyla erişilir. Yanıt başına okuma sayısı sınırlıdır, bu nedenle eksik bir örnek açıklanmalıdır. API anahtarları, webhook sırları, kart bilgileri ve oturumlar araca sağlanmaz. Araç ücret talep edemez, ödeme yapamaz, geri ödeme yapamaz veya ayarları değiştiremez.",
            "Çalışma alanında veya Telegram'da bir destek talebi oluşturmak, kalıcı bir kuyruğa ayrı bir yönetici uyarısı yerleştirir. /admin/tickets?ticket=<id> bağlantısına bağlanır; geçici Telegram arızaları yeniden denenir. Kurtarma ayrıca uyarısı olmayan daha eski açık talepleri de alır. Yöneticiler talep sayfasında yanıt verir; yanıt kullanıcı çalışma alanına kaydedilir ve destek bildirimleri etkinleştirildiğinde Telegram üzerinden gönderilir.",
            "Bot ana menü, mağazalar, bildirimler, destek, güvenlik ve dil için satır içi düğmeler kullanır. Gezinme geçerli mesajı düzenler; kullanılamayan eski bir menü değiştirilir. Ödeme ve güvenlik bildirimleri tek kullanımlık gezinme olarak ele alınmaz. Menüden çıkış yapmak onay gerektirir. Açık /logout komutu yine de her hesap oturumunu sonlandırır.",
            "/admin/project paneli, sunucu tarafı MODERATOR_TELEGRAM_IDS izin listesindeki Telegram kimlikleriyle sınırlıdır. Kullanıcıları, mağazaları, işlemleri, anahtar iptalini, webhook devre dışı bırakmayı, fatura duraklatmayı, kabul kontrollerini ve bir denetim günlüğünü içerir. Değişiklikler CSRF ve bir gerekçe gerektirir. Panel bir yöneticiyi kısıtlayamaz veya bir ödemeyi manuel olarak başarılı ilan edemez. Bir sahibi kısıtlamak oturumları sonlandırır ve API anahtarı erişimini engeller; bir mağazayı kısıtlamak yeni işlemleri durdurur. Geçmiş korunur.",
            "Kamu teklifi etkinleştirilmiş her dilde /public-offer adresinde, gizlilik politikası ise /privacy-policy adresinde mevcuttur. Madeni paraları ada veya kısaltmaya göre arayın. Birden fazla canlı ağ mevcut olduğunda yalnızca bir ağ seçici görünür. Tek bir ağ otomatik olarak seçilir ve onayda adlandırılmış olarak kalır. Canlı ağ geçidi kullanılabilirliği seçilebilir çiftleri belirler; referans kataloğu bir hizmeti etkinleştirmez.",
            "Rutin web uygulaması sürümleri için update.sh kullanın: adayı derleyin, geçiş geçmişini kontrol edin, SQLite'ı çevrimiçi yedekleyin, ikinci bir kapsayıcı başlatın, doğrulayın ve Caddy'yi sorunsuz şekilde değiştirin. Ağ geçidi, PostgreSQL ve posta yeniden başlatılmaz. Önceki statik varlıklar açık sekmeler için kullanılabilir durumda kalır. Yeni bir geçiş açıkça gözden geçirilmiş yetkilendirme gerektirir; uyumsuz bir şema değişikliği sorunsuz bir dağıtım değildir."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Kamu teklifi",
              "href": "/public-offer"
            },
            {
              "label": "Gizlilik politikası",
              "href": "/privacy-policy"
            }
          ]
        }
      ],
      "body": "Bildirim merkezi\n\nRozet, okunmamış hesap olaylarını sayar. Mesajlar tarihe göre gruplandırılır; Daha fazla yükle eski kayıtları getirir. Ziyaretçilerden oturum açmaları istenir.\n\nOkunma durumu sunucuda saklanır. Görünür sayfalar otomatik olarak yenilenir ve açık sekmeler okunma işaretlerini eşitler. Son görüntülenen mesajdan daha yeni olaylar, daha eski olanlarla birlikte okunmuş olarak işaretlenmez.\n\nÜst çubuktaki zili seçin.\n\nTüm olayları veya yalnızca okunmamışları seçin.\n\nİlgili sayfayı açın veya bir mesajı okunmuş olarak işaretleyin.\n\nZaten yüklenmiş olaylar için Tümünü okunmuş işaretle'yi kullanın.\n\nOlay kategorileri\n\nDestek ve güvenlik, yeni bir hesap için etkindir; ödeme kategorileri kullanıcı tarafından seçilir. Merkez, etkin kategoriler için kaydedilmiş olayları gösterir. Tarayıcı demo olayları gerçek fon bildirimleri değildir.\n\nKategori · İçerik\nÖdemeler · Onaylanmış ödeme olayları\nÖdeme çıkışları · Onaylanmış ödeme çıkışı olayları\nDestek · Destek talepleri ve başvuru aşaması güncellemeleri\nGüvenlik · Yeni bir doğrulanmış oturum açma\nTest · Telegram'ınıza teslimat kontrolü\n\nTeslimat yapılandırma\n\nTestler, hesap başına saatte üç ile sınırlıdır. Bir test, bakiye değiştirmez veya bir ödeme oluşturmaz. Bir mesajı sıraya almak teslimatı kanıtlamaz.\n\nTelegram ile oturum açın ve Hesap → Bildirimler bölümünü açın.\n\nİstediğiniz kategorileri etkinleştirin ve kaydedin.\n\nTest teslimatı'nı seçin.\n\nMerkez durumunu ve botun özel sohbetini kontrol edin.\n\nBildirim ayarları\n\nTeslimat ve okunma durumu ayrıdır\n\nTeslimat, Telegram kullanılabilirliğine ve kullanıcı izinlerine bağlıdır. Kayıp bir yanıt, tekrarlanan bir mesaja yol açabilir, ancak tekrarlanan bir mali işleme yol açmaz.\n\nTeslimat başarısız olursa, botun erişilebilir olduğunu ve engellenmediğini kontrol edin. Uygulama bildirim yeniden denemeleri de arka plan işleri olarak çalışır; hizmet etkileşimleri diğer kuyruğa alınmış teslimatları tetikleyebilir. Güncel durum için bildirim merkezini kontrol edin.\n\nDurum · Anlam\nbeklemede · İşlem için sırada\ngönderiliyor · Sunucu teslimatı deniyor\ngönderildi · Telegram gönderimi onayladı\nbaşarısız · Teslimat başarısız oldu\n\nMesaj teslimat durumu Telegram'ı ifade eder. Web sitesinde bir bildirimi okundu olarak işaretlemek, Telegram'da okunduğu anlamına gelmez ve teslimatı değiştirmez.\n\nİşlem onayları\n\nWeb sitesi, tamamlanan bir kaydetme, yeni bağlantı veya benzeri bir işlemden sonra kısa bir bildirim gösterir. Otomatik olarak kapanır ve üzerine gelindiğinde veya odaklanıldığında daha uzun süre kalır.\n\nBu, arayüz işlemini onaylar. Onaylanmış bir mali durumun yerini almaz veya bir ödeme kaydı oluşturmaz. Alan hataları formun yanında kalır.\n\nAPI üzerinden okuma ve işaretleme\n\nGET /api/notifications en fazla 30 hesap olayını, unreadCount ve nextCursor değerlerini döndürür. Başka bir sayfa yüklemek için nextCursor'ı değiştirmeden cursor olarak iletin. unread=1, okunmamış kayıtları seçer. Sıralama düzeni createdAt azalan, ardından id azalandır.\n\nPATCH /api/notifications/read, 1–100 kimlik veya all:true ile birlikte before alanı son görüntülenen olayın milisaniye cinsinden zaman damgası olarak ayarlanmış halini kabul eder. Oturum, Origin ve X-CSRF-Token gereklidir. İstemci kayıt sahibini ayarlayamaz.\n\nYanıt, updated, readAt ve unreadCount değerlerini içerir. Zaten okunmuş bir olayı okumak, orijinal readAt değerini korur. Olayları listelemek onları okundu olarak işaretlemez; Telegram durumu ve sentAt değişmeden kalır.\n\n{\n  \"ids\": [\"ntf_46d94180-492e-4c28-b15f-a70049161a63\"]\n}\n\nAPI referansı\n\nBot komutları\n\nKomut · Eylem\n/bildirimler · Kategorileri yönet\n/durdur · Bildirimleri devre dışı bırak\n/yardim · Kullanılabilir komutları listele\n/cikis · Tüm hesap oturumlarını sonlandır\n\nÖzellik kullanılabilirliği\n\nBildirim merkezi oturum açmayı gerektirir. Telegram mesajları doğrulanmış özel bot sohbetine gönderilir. Teslimat kullanılamıyorsa, bot izinlerini ve mesaj durumunu kontrol edin.\n\nBir ödeme veya ödeme çıkışı bildirimi, onaylanmış bir sunucu olayına dayanır. Bir kategori seçmek teslimat tercihlerini değiştirir, işlem kullanılabilirliğini değil.\n\nAsistan, destek ve proje yönetimi\n\nİlk Telegram girişi, onaylanmış bir satıcı değil, not_submitted durumuna sahip bir hesap ve bir taslak mağaza oluşturur. Hesap, başvuru formunu veya mevcut incelemeyi açar; ödeme kabul etmek uzman onayı gerektirir. Her yeni mağazanın kendi incelemesi vardır. GET /api/stores, reviewStatus ve applicationId değerlerini döndürür. Bağlı mağazalar toplu erişimi korur ve destek ile dokümantasyon inceleme sırasında kullanılabilir kalır.\n\nÖzel işlemlerde yardıma ihtiyacınız olduğunda sohbette verilerime erişimi etkinleştirin. includeAccount=true içeren bir web isteği geçerli bir oturum, Origin ve X-CSRF-Token gerektirir; X-Kevmi-Store sahip olunan bir mağazayı veya tüm sahip olunan mağazaları seçer. İzin olmadan asistan yalnızca genel belgeleri kullanır. Telegram'da, gönderen kimliği doğrulandıktan sonra ayrı bir düğme erişimi etkinleştirir.\n\nread_account aracı sahip olunan mağazaları, doğrulanmış ödeme durumuna sahip faturaları, etkinlikleri, başvuruları ve uzman yanıtlarını içeren destek taleplerini okur. 30 kayıt ve nextPage döndürür; daha eski kayıtlara sayfalama yoluyla erişilir. Yanıt başına okuma sayısı sınırlıdır, bu nedenle eksik bir örnek açıklanmalıdır. API anahtarları, webhook sırları, kart bilgileri ve oturumlar araca sağlanmaz. Araç ücret talep edemez, ödeme yapamaz, geri ödeme yapamaz veya ayarları değiştiremez.\n\nÇalışma alanında veya Telegram'da bir destek talebi oluşturmak, kalıcı bir kuyruğa ayrı bir yönetici uyarısı yerleştirir. /admin/tickets?ticket=<id> bağlantısına bağlanır; geçici Telegram arızaları yeniden denenir. Kurtarma ayrıca uyarısı olmayan daha eski açık talepleri de alır. Yöneticiler talep sayfasında yanıt verir; yanıt kullanıcı çalışma alanına kaydedilir ve destek bildirimleri etkinleştirildiğinde Telegram üzerinden gönderilir.\n\nBot ana menü, mağazalar, bildirimler, destek, güvenlik ve dil için satır içi düğmeler kullanır. Gezinme geçerli mesajı düzenler; kullanılamayan eski bir menü değiştirilir. Ödeme ve güvenlik bildirimleri tek kullanımlık gezinme olarak ele alınmaz. Menüden çıkış yapmak onay gerektirir. Açık /logout komutu yine de her hesap oturumunu sonlandırır.\n\n/admin/project paneli, sunucu tarafı MODERATOR_TELEGRAM_IDS izin listesindeki Telegram kimlikleriyle sınırlıdır. Kullanıcıları, mağazaları, işlemleri, anahtar iptalini, webhook devre dışı bırakmayı, fatura duraklatmayı, kabul kontrollerini ve bir denetim günlüğünü içerir. Değişiklikler CSRF ve bir gerekçe gerektirir. Panel bir yöneticiyi kısıtlayamaz veya bir ödemeyi manuel olarak başarılı ilan edemez. Bir sahibi kısıtlamak oturumları sonlandırır ve API anahtarı erişimini engeller; bir mağazayı kısıtlamak yeni işlemleri durdurur. Geçmiş korunur.\n\nKamu teklifi etkinleştirilmiş her dilde /public-offer adresinde, gizlilik politikası ise /privacy-policy adresinde mevcuttur. Madeni paraları ada veya kısaltmaya göre arayın. Birden fazla canlı ağ mevcut olduğunda yalnızca bir ağ seçici görünür. Tek bir ağ otomatik olarak seçilir ve onayda adlandırılmış olarak kalır. Canlı ağ geçidi kullanılabilirliği seçilebilir çiftleri belirler; referans kataloğu bir hizmeti etkinleştirmez.\n\nRutin web uygulaması sürümleri için update.sh kullanın: adayı derleyin, geçiş geçmişini kontrol edin, SQLite'ı çevrimiçi yedekleyin, ikinci bir kapsayıcı başlatın, doğrulayın ve Caddy'yi sorunsuz şekilde değiştirin. Ağ geçidi, PostgreSQL ve posta yeniden başlatılmaz. Önceki statik varlıklar açık sekmeler için kullanılabilir durumda kalır. Yeni bir geçiş açıkça gözden geçirilmiş yetkilendirme gerektirir; uyumsuz bir şema değişikliği sorunsuz bir dağıtım değildir.\n\nKamu teklifi\n\nGizlilik politikası",
      "readMinutes": 4
    },
    {
      "id": "support",
      "title": "Destek sohbeti ve talepler",
      "summary": "Asistan, Kevmi'nin koşullarını açıklar, doğru sayfayı bulur ve ayarlarda yardımcı olur. Sağ alttaki yuvarlak düğmeyi kullanarak sohbeti açın. Hesaba özel bir soru için özel bir talep kullanın.",
      "group": "account",
      "url": "/docs/support",
      "tags": [
        "destek",
        "yardım",
        "AI",
        "asistan",
        "dokümantasyon",
        "talep",
        "sohbet"
      ],
      "sections": [
        {
          "id": "chat",
          "title": "Geçerli sayfada yardım",
          "paragraphs": [
            "Telefonlarda sohbet kompakt bir panelde açılır. Küçültebilir ve yeniden açabilirsiniz; kapalıyken bir yanıt gelirse bir rozet görünür.",
            "Destek, geçerli sayfada açılır. Eski /help adresi, sohbet açık şekilde ana sayfaya yönlendirir."
          ],
          "bullets": [],
          "steps": [
            "Sağ alttaki yuvarlak destek düğmesini seçin veya Sorunuzu sorun.",
            "Mevcut bir konuşmayı açın veya yeni bir tane başlatın. Bir öneri seçin veya bir soru yazın: Enter gönderir; Shift + Enter yeni bir satır ekler.",
            "Yanıtı okuyun ve dokümantasyon kaynaklarını takip edin.",
            "Çalışmaya devam etmek için sohbeti küçültün. Mesajlar ve taslak bu tarayıcıda kalır."
          ],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Destek sohbetini aç",
              "href": "/?support=open"
            }
          ]
        },
        {
          "id": "history",
          "title": "Konuşmalar, taslaklar ve geçmiş",
          "paragraphs": [
            "Her konuyu ayrı bir konuşmada tutun. Geçmişi başlık veya metne göre arayın, bir konuşmayı yeniden adlandırın ve önemli olanları sabitleyin. Yeni bir konuşma daha önceki sohbetleri korur ve her biri kendi taslağını tutar.",
            "Bir konuşmayı Silinenler'den geri yükleyin veya onaydan sonra kalıcı olarak silin. Geçmiş, bu cihazın tarayıcısında saklanır, sayfa yenilemelerinde korunur ve cihazlar, hesabınız veya Telegram arasında eşitlenmez. Tarayıcıda site verilerini temizlemek yerel geçmişi kaldırır.",
            "Tarayıcı depolaması kullanılamıyorsa, sohbet açık sayfanın belleğinde devam eder. Yerel konuşmalar, oturum açtıktan sonra sunucuda saklanan özel destek taleplerinden ayrıdır."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "knowledge",
          "title": "Yanıtlar neye dayanır",
          "paragraphs": [
            "Web sitesi ve bot, sürümlendirilmiş bir bilgi tabanı kullanır. Sunucu, yayınlanmış kılavuzları, yapılandırılmış fiyatlandırmayı, tahsis ve ülke bilgilerini, sayfa kataloğunu ve gerçek özellik hazır olma durumunu üretken asistana sağlar. Taban, uygulamaları, API anahtarlarını, widget'ları ve webhook'ları içerir.",
            "Yanıt kaynakları yalnızca o tabandaki makalelere atıfta bulunur. Onaylanmış bilgi yetersiz olduğunda, asistan bunu belirtir ve daha spesifik bir soru veya destek talebi önerir. Ülkeler, ödeme süreleri, limitler veya vergi yükümlülükleri uydurmaz."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "context",
          "title": "Takip soruları ve bağlam",
          "paragraphs": [
            "Sonraki soru, seçilen konuşmanın son üç soru-cevap çiftini içerir; \"Satıcı KDV öderse ne olur?\" gibi takip sorularında yardımcı olur. Diğer yerel geçmiş, isteğe otomatik olarak eklenmez.",
            "Fiyatlandırma veya Ödeme Sayfası gibi kısa bir bölüm etiketi de gönderilir. URL, sorgu parametreleri ve fatura jetonu hariç tutulur. Önceki mesajlar güvenilmeyen bağlamdır ve bilgi tabanına karşı kontrol edilir."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "modes",
          "title": "Yapay zeka ve dokümantasyon araması",
          "paragraphs": [
            "Yapay zeka modu, yapılandırılmış bir sağlayıcı, sunucu depolaması ve kullanılabilir bir kota kullanır. /api/config, yapılandırma hazırlığını bildirir; model bağlantısı bir istek üzerine kontrol edilir. Kullanılamayan üretim, tükenmiş kota veya geçersiz bir yanıt, etiketlenmiş dokümantasyon aramasına geri döner.",
            "Arama harici bir model olmadan da çalışır. Özel kayıtlar açık sahip izni gerektirir ve yalnızca okunabilir. İzin olmadan yalnızca herkese açık bilgiler kullanılabilir. Fon yükleyemez, ödeme oluşturamaz veya ayarları değiştiremez."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Mod",
              "Davranış"
            ],
            "rows": [
              [
                "ai",
                "Tüm yayınlanmış bilgilerden bir yanıt yazar ve ilgili kılavuzlara bağlantı verir"
              ],
              [
                "arama",
                "Eşleşen yayınlanmış dokümantasyonu döndürür"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "question",
          "title": "Yararlı bir soru sormak",
          "paragraphs": [
            "Örneğin: “5 $'lık bir kart siparişi, KDV satıcı tarafından ödeniyor. Satıcı ne alır?” Yayınlanmış hesaplayıcıdaki kesin rakamları kontrol edin.",
            "Sohbet alanı en fazla 1.800 karakter kabul eder. Bağlantı başarısız olursa, soru başka bir deneme için alanda kalır."
          ],
          "bullets": [
            "Yöntemi adlandırın: kart, SBP, Alipay veya kripto para.",
            "Bir hesaplama için, taban tutarı ve her iki müşteri maliyet payını verin: ücret ve KDV.",
            "Bir hata için, sayfayı, eylemi ve gösterilen mesajı adlandırın.",
            "Şifre, oturum açma kodu, jeton, CVV veya kurtarma ifadesi göndermeyin."
          ],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "request",
          "title": "API üzerinden sormak",
          "paragraphs": [
            "POST /api/support/ask, kırpıldıktan sonra 2–2.000 karakter uzunluğunda bir soru kabul eder. İsteğe bağlı geçmiş, role=user veya role=assistant olan en fazla altı mesaj içerir. Kullanıcı mesajları 1–1.800 karakter ve asistan mesajları 1–3.000 karakter kabul eder.",
            "İsteğe bağlı pageContext, URL, jeton, sorgu parametresi veya satır sonu içermeyen 1–80 karakterlik bir bölüm etiketidir. İsteğe bağlı locale ru, en, es, de veya fr'dir ve yanıt dilini seçer. İngilizce varsayılandır; tam teknik kaynaklar Rusça ve İngilizce olarak mevcuttur. API, sistem mesajlarını, araçları veya keyfi sağlayıcı talimatlarını kabul etmez.",
            "JSON gövde sınırı 65.536 bayttır. Yanıt mode, answer, sources, knowledgeVersion ve needsHuman içerir; üretim kullanılamadığında aiUnavailable:true bulunur. Kullanıcı oturumu gerekmez; sağlanan bir Origin, uygulamayla eşleşmelidir."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "API sözleşmesi",
              "href": "/docs/api-reference"
            }
          ]
        },
        {
          "id": "ticket",
          "title": "Özel destek talepleri",
          "paragraphs": [
            "Oturum açtıktan sonra, 1–120 karakterlik bir konu ve 5–4.000 karakterlik bir mesajla bir talep oluşturun. Hesabınızda saklanır ve başka bir kullanıcı tarafından görülemez.",
            "Liste en son 30 talebi gösterir. Kendi talebinizi kapatabilirsiniz. Durum sorarken referansını saklayın; çözüm süresi soruna bağlıdır."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Destek taleplerim",
              "href": "/account#support"
            }
          ]
        },
        {
          "id": "assistant-admin-v16",
          "title": "Asistan, destek ve proje yönetimi",
          "paragraphs": [
            "İlk Telegram girişi, onaylanmış bir satıcı değil, not_submitted durumuna sahip bir hesap ve bir taslak mağaza oluşturur. Hesap, başvuru formunu veya mevcut incelemeyi açar; ödeme kabul etmek uzman onayı gerektirir. Her yeni mağazanın kendi incelemesi vardır. GET /api/stores, reviewStatus ve applicationId değerlerini döndürür. Bağlı mağazalar toplu erişimi korur ve destek ile dokümantasyon inceleme sırasında kullanılabilir kalır.",
            "Özel işlemlerde yardıma ihtiyacınız olduğunda sohbette verilerime erişimi etkinleştirin. includeAccount=true içeren bir web isteği geçerli bir oturum, Origin ve X-CSRF-Token gerektirir; X-Kevmi-Store sahip olunan bir mağazayı veya tüm sahip olunan mağazaları seçer. İzin olmadan asistan yalnızca genel belgeleri kullanır. Telegram'da, gönderen kimliği doğrulandıktan sonra ayrı bir düğme erişimi etkinleştirir.",
            "read_account aracı sahip olunan mağazaları, doğrulanmış ödeme durumuna sahip faturaları, etkinlikleri, başvuruları ve uzman yanıtlarını içeren destek taleplerini okur. 30 kayıt ve nextPage döndürür; daha eski kayıtlara sayfalama yoluyla erişilir. Yanıt başına okuma sayısı sınırlıdır, bu nedenle eksik bir örnek açıklanmalıdır. API anahtarları, webhook sırları, kart bilgileri ve oturumlar araca sağlanmaz. Araç ücret talep edemez, ödeme yapamaz, geri ödeme yapamaz veya ayarları değiştiremez.",
            "Çalışma alanında veya Telegram'da bir destek talebi oluşturmak, kalıcı bir kuyruğa ayrı bir yönetici uyarısı yerleştirir. /admin/tickets?ticket=<id> bağlantısına bağlanır; geçici Telegram arızaları yeniden denenir. Kurtarma ayrıca uyarısı olmayan daha eski açık talepleri de alır. Yöneticiler talep sayfasında yanıt verir; yanıt kullanıcı çalışma alanına kaydedilir ve destek bildirimleri etkinleştirildiğinde Telegram üzerinden gönderilir.",
            "Bot ana menü, mağazalar, bildirimler, destek, güvenlik ve dil için satır içi düğmeler kullanır. Gezinme geçerli mesajı düzenler; kullanılamayan eski bir menü değiştirilir. Ödeme ve güvenlik bildirimleri tek kullanımlık gezinme olarak ele alınmaz. Menüden çıkış yapmak onay gerektirir. Açık /logout komutu yine de her hesap oturumunu sonlandırır.",
            "/admin/project paneli, sunucu tarafı MODERATOR_TELEGRAM_IDS izin listesindeki Telegram kimlikleriyle sınırlıdır. Kullanıcıları, mağazaları, işlemleri, anahtar iptalini, webhook devre dışı bırakmayı, fatura duraklatmayı, kabul kontrollerini ve bir denetim günlüğünü içerir. Değişiklikler CSRF ve bir gerekçe gerektirir. Panel bir yöneticiyi kısıtlayamaz veya bir ödemeyi manuel olarak başarılı ilan edemez. Bir sahibi kısıtlamak oturumları sonlandırır ve API anahtarı erişimini engeller; bir mağazayı kısıtlamak yeni işlemleri durdurur. Geçmiş korunur.",
            "Kamu teklifi etkinleştirilmiş her dilde /public-offer adresinde, gizlilik politikası ise /privacy-policy adresinde mevcuttur. Madeni paraları ada veya kısaltmaya göre arayın. Birden fazla canlı ağ mevcut olduğunda yalnızca bir ağ seçici görünür. Tek bir ağ otomatik olarak seçilir ve onayda adlandırılmış olarak kalır. Canlı ağ geçidi kullanılabilirliği seçilebilir çiftleri belirler; referans kataloğu bir hizmeti etkinleştirmez.",
            "Rutin web uygulaması sürümleri için update.sh kullanın: adayı derleyin, geçiş geçmişini kontrol edin, SQLite'ı çevrimiçi yedekleyin, ikinci bir kapsayıcı başlatın, doğrulayın ve Caddy'yi sorunsuz şekilde değiştirin. Ağ geçidi, PostgreSQL ve posta yeniden başlatılmaz. Önceki statik varlıklar açık sekmeler için kullanılabilir durumda kalır. Yeni bir geçiş açıkça gözden geçirilmiş yetkilendirme gerektirir; uyumsuz bir şema değişikliği sorunsuz bir dağıtım değildir."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Kamu teklifi",
              "href": "/public-offer"
            },
            {
              "label": "Gizlilik politikası",
              "href": "/privacy-policy"
            }
          ]
        }
      ],
      "body": "Geçerli sayfada yardım\n\nTelefonlarda sohbet kompakt bir panelde açılır. Küçültebilir ve yeniden açabilirsiniz; kapalıyken bir yanıt gelirse bir rozet görünür.\n\nDestek, geçerli sayfada açılır. Eski /help adresi, sohbet açık şekilde ana sayfaya yönlendirir.\n\nSağ alttaki yuvarlak destek düğmesini seçin veya Sorunuzu sorun.\n\nMevcut bir konuşmayı açın veya yeni bir tane başlatın. Bir öneri seçin veya bir soru yazın: Enter gönderir; Shift + Enter yeni bir satır ekler.\n\nYanıtı okuyun ve dokümantasyon kaynaklarını takip edin.\n\nÇalışmaya devam etmek için sohbeti küçültün. Mesajlar ve taslak bu tarayıcıda kalır.\n\nDestek sohbetini aç\n\nKonuşmalar, taslaklar ve geçmiş\n\nHer konuyu ayrı bir konuşmada tutun. Geçmişi başlık veya metne göre arayın, bir konuşmayı yeniden adlandırın ve önemli olanları sabitleyin. Yeni bir konuşma daha önceki sohbetleri korur ve her biri kendi taslağını tutar.\n\nBir konuşmayı Silinenler'den geri yükleyin veya onaydan sonra kalıcı olarak silin. Geçmiş, bu cihazın tarayıcısında saklanır, sayfa yenilemelerinde korunur ve cihazlar, hesabınız veya Telegram arasında eşitlenmez. Tarayıcıda site verilerini temizlemek yerel geçmişi kaldırır.\n\nTarayıcı depolaması kullanılamıyorsa, sohbet açık sayfanın belleğinde devam eder. Yerel konuşmalar, oturum açtıktan sonra sunucuda saklanan özel destek taleplerinden ayrıdır.\n\nYanıtlar neye dayanır\n\nWeb sitesi ve bot, sürümlendirilmiş bir bilgi tabanı kullanır. Sunucu, yayınlanmış kılavuzları, yapılandırılmış fiyatlandırmayı, tahsis ve ülke bilgilerini, sayfa kataloğunu ve gerçek özellik hazır olma durumunu üretken asistana sağlar. Taban, uygulamaları, API anahtarlarını, widget'ları ve webhook'ları içerir.\n\nYanıt kaynakları yalnızca o tabandaki makalelere atıfta bulunur. Onaylanmış bilgi yetersiz olduğunda, asistan bunu belirtir ve daha spesifik bir soru veya destek talebi önerir. Ülkeler, ödeme süreleri, limitler veya vergi yükümlülükleri uydurmaz.\n\nTakip soruları ve bağlam\n\nSonraki soru, seçilen konuşmanın son üç soru-cevap çiftini içerir; \"Satıcı KDV öderse ne olur?\" gibi takip sorularında yardımcı olur. Diğer yerel geçmiş, isteğe otomatik olarak eklenmez.\n\nFiyatlandırma veya Ödeme Sayfası gibi kısa bir bölüm etiketi de gönderilir. URL, sorgu parametreleri ve fatura jetonu hariç tutulur. Önceki mesajlar güvenilmeyen bağlamdır ve bilgi tabanına karşı kontrol edilir.\n\nYapay zeka ve dokümantasyon araması\n\nYapay zeka modu, yapılandırılmış bir sağlayıcı, sunucu depolaması ve kullanılabilir bir kota kullanır. /api/config, yapılandırma hazırlığını bildirir; model bağlantısı bir istek üzerine kontrol edilir. Kullanılamayan üretim, tükenmiş kota veya geçersiz bir yanıt, etiketlenmiş dokümantasyon aramasına geri döner.\n\nArama harici bir model olmadan da çalışır. Özel kayıtlar açık sahip izni gerektirir ve yalnızca okunabilir. İzin olmadan yalnızca herkese açık bilgiler kullanılabilir. Fon yükleyemez, ödeme oluşturamaz veya ayarları değiştiremez.\n\nMod · Davranış\nai · Tüm yayınlanmış bilgilerden bir yanıt yazar ve ilgili kılavuzlara bağlantı verir\narama · Eşleşen yayınlanmış dokümantasyonu döndürür\n\nYararlı bir soru sormak\n\nÖrneğin: “5 $'lık bir kart siparişi, KDV satıcı tarafından ödeniyor. Satıcı ne alır?” Yayınlanmış hesaplayıcıdaki kesin rakamları kontrol edin.\n\nSohbet alanı en fazla 1.800 karakter kabul eder. Bağlantı başarısız olursa, soru başka bir deneme için alanda kalır.\n\nYöntemi adlandırın: kart, SBP, Alipay veya kripto para.\n\nBir hesaplama için, taban tutarı ve her iki müşteri maliyet payını verin: ücret ve KDV.\n\nBir hata için, sayfayı, eylemi ve gösterilen mesajı adlandırın.\n\nŞifre, oturum açma kodu, jeton, CVV veya kurtarma ifadesi göndermeyin.\n\nAPI üzerinden sormak\n\nPOST /api/support/ask, kırpıldıktan sonra 2–2.000 karakter uzunluğunda bir soru kabul eder. İsteğe bağlı geçmiş, role=user veya role=assistant olan en fazla altı mesaj içerir. Kullanıcı mesajları 1–1.800 karakter ve asistan mesajları 1–3.000 karakter kabul eder.\n\nİsteğe bağlı pageContext, URL, jeton, sorgu parametresi veya satır sonu içermeyen 1–80 karakterlik bir bölüm etiketidir. İsteğe bağlı locale ru, en, es, de veya fr'dir ve yanıt dilini seçer. İngilizce varsayılandır; tam teknik kaynaklar Rusça ve İngilizce olarak mevcuttur. API, sistem mesajlarını, araçları veya keyfi sağlayıcı talimatlarını kabul etmez.\n\nJSON gövde sınırı 65.536 bayttır. Yanıt mode, answer, sources, knowledgeVersion ve needsHuman içerir; üretim kullanılamadığında aiUnavailable:true bulunur. Kullanıcı oturumu gerekmez; sağlanan bir Origin, uygulamayla eşleşmelidir.\n\nAPI sözleşmesi\n\nÖzel destek talepleri\n\nOturum açtıktan sonra, 1–120 karakterlik bir konu ve 5–4.000 karakterlik bir mesajla bir talep oluşturun. Hesabınızda saklanır ve başka bir kullanıcı tarafından görülemez.\n\nListe en son 30 talebi gösterir. Kendi talebinizi kapatabilirsiniz. Durum sorarken referansını saklayın; çözüm süresi soruna bağlıdır.\n\nDestek taleplerim\n\nAsistan, destek ve proje yönetimi\n\nİlk Telegram girişi, onaylanmış bir satıcı değil, not_submitted durumuna sahip bir hesap ve bir taslak mağaza oluşturur. Hesap, başvuru formunu veya mevcut incelemeyi açar; ödeme kabul etmek uzman onayı gerektirir. Her yeni mağazanın kendi incelemesi vardır. GET /api/stores, reviewStatus ve applicationId değerlerini döndürür. Bağlı mağazalar toplu erişimi korur ve destek ile dokümantasyon inceleme sırasında kullanılabilir kalır.\n\nÖzel işlemlerde yardıma ihtiyacınız olduğunda sohbette verilerime erişimi etkinleştirin. includeAccount=true içeren bir web isteği geçerli bir oturum, Origin ve X-CSRF-Token gerektirir; X-Kevmi-Store sahip olunan bir mağazayı veya tüm sahip olunan mağazaları seçer. İzin olmadan asistan yalnızca genel belgeleri kullanır. Telegram'da, gönderen kimliği doğrulandıktan sonra ayrı bir düğme erişimi etkinleştirir.\n\nread_account aracı sahip olunan mağazaları, doğrulanmış ödeme durumuna sahip faturaları, etkinlikleri, başvuruları ve uzman yanıtlarını içeren destek taleplerini okur. 30 kayıt ve nextPage döndürür; daha eski kayıtlara sayfalama yoluyla erişilir. Yanıt başına okuma sayısı sınırlıdır, bu nedenle eksik bir örnek açıklanmalıdır. API anahtarları, webhook sırları, kart bilgileri ve oturumlar araca sağlanmaz. Araç ücret talep edemez, ödeme yapamaz, geri ödeme yapamaz veya ayarları değiştiremez.\n\nÇalışma alanında veya Telegram'da bir destek talebi oluşturmak, kalıcı bir kuyruğa ayrı bir yönetici uyarısı yerleştirir. /admin/tickets?ticket=<id> bağlantısına bağlanır; geçici Telegram arızaları yeniden denenir. Kurtarma ayrıca uyarısı olmayan daha eski açık talepleri de alır. Yöneticiler talep sayfasında yanıt verir; yanıt kullanıcı çalışma alanına kaydedilir ve destek bildirimleri etkinleştirildiğinde Telegram üzerinden gönderilir.\n\nBot ana menü, mağazalar, bildirimler, destek, güvenlik ve dil için satır içi düğmeler kullanır. Gezinme geçerli mesajı düzenler; kullanılamayan eski bir menü değiştirilir. Ödeme ve güvenlik bildirimleri tek kullanımlık gezinme olarak ele alınmaz. Menüden çıkış yapmak onay gerektirir. Açık /logout komutu yine de her hesap oturumunu sonlandırır.\n\n/admin/project paneli, sunucu tarafı MODERATOR_TELEGRAM_IDS izin listesindeki Telegram kimlikleriyle sınırlıdır. Kullanıcıları, mağazaları, işlemleri, anahtar iptalini, webhook devre dışı bırakmayı, fatura duraklatmayı, kabul kontrollerini ve bir denetim günlüğünü içerir. Değişiklikler CSRF ve bir gerekçe gerektirir. Panel bir yöneticiyi kısıtlayamaz veya bir ödemeyi manuel olarak başarılı ilan edemez. Bir sahibi kısıtlamak oturumları sonlandırır ve API anahtarı erişimini engeller; bir mağazayı kısıtlamak yeni işlemleri durdurur. Geçmiş korunur.\n\nKamu teklifi etkinleştirilmiş her dilde /public-offer adresinde, gizlilik politikası ise /privacy-policy adresinde mevcuttur. Madeni paraları ada veya kısaltmaya göre arayın. Birden fazla canlı ağ mevcut olduğunda yalnızca bir ağ seçici görünür. Tek bir ağ otomatik olarak seçilir ve onayda adlandırılmış olarak kalır. Canlı ağ geçidi kullanılabilirliği seçilebilir çiftleri belirler; referans kataloğu bir hizmeti etkinleştirmez.\n\nRutin web uygulaması sürümleri için update.sh kullanın: adayı derleyin, geçiş geçmişini kontrol edin, SQLite'ı çevrimiçi yedekleyin, ikinci bir kapsayıcı başlatın, doğrulayın ve Caddy'yi sorunsuz şekilde değiştirin. Ağ geçidi, PostgreSQL ve posta yeniden başlatılmaz. Önceki statik varlıklar açık sekmeler için kullanılabilir durumda kalır. Yeni bir geçiş açıkça gözden geçirilmiş yetkilendirme gerektirir; uyumsuz bir şema değişikliği sorunsuz bir dağıtım değildir.\n\nKamu teklifi\n\nGizlilik politikası",
      "readMinutes": 6
    },
    {
      "id": "api-reference",
      "title": "API referansı",
      "summary": "Sunucu API'si hesapları, faturaları, güvenli ödemeyi, durumları ve webhook'ları destekler. OpenAPI, yolları, alanları ve hataları tanımlar. Bir ödeme başlatmak, yapılandırılmış bir ağ geçidi, onaylanmış bir satıcı ve desteklenen fatura koşulları gerektirir.",
      "group": "developers",
      "url": "/docs/api-reference",
      "tags": [
        "API",
        "OpenAPI",
        "uç noktası",
        "referans",
        "JSON"
      ],
      "sections": [
        {
          "id": "base",
          "title": "Temel URL ve biçim",
          "paragraphs": [
            "Temel URL https://kevmi.one şeklindedir. İstek ve yanıt gövdeleri JSON kullanır. Para değerleri tam sayı alt birimlerdir. Hesap ve destek tarihleri milisaniye cinsinden Unix zaman damgalarıdır.",
            "API yanıtları Cache-Control: no-store kullanır. Genel /openapi.json beş dakika önbelleğe alınabilir. Bir URL'ye çerez veya gizli anahtar yerleştirmeyin."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "cURL",
            "code": "curl 'https://kevmi.one/api/config'\n\ncurl 'https://kevmi.one/openapi.json'"
          },
          "note": "",
          "links": []
        },
        {
          "id": "session",
          "title": "İstek yetkilendirmesi",
          "paragraphs": [
            "Web hesabı bir HttpOnly oturum çerezi kullanır. GET /api/auth/me geçerli kullanıcıyı ve csrfToken değerini döndürür. Değişiklikler X-CSRF-Token ve aynı kaynaklı bir istek gerektirir.",
            "Kapsamlı Kevmi satıcı anahtarları, /api/v1/payments, /api/v1/payment-links ve /api/v1/events yollarını yetkilendirir. Hesap ayarları veya yönetim yolları için oturum çerezini değiştirmezler."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "JavaScript · website browser",
            "code": "const me = await fetch('/api/auth/me').then(r => r.json());\nif (!me.authenticated) throw new Error('Sign in required');\nconst response = await fetch('/api/account/settings', {\n  method: 'PATCH',\n  headers: { 'Content-Type': 'application/json', 'X-CSRF-Token': me.csrfToken },\n  body: JSON.stringify({ vatPayer: 'merchant' })\n});\nif (!response.ok) throw new Error('Settings were not saved');\nconst updated = await response.json();"
          },
          "note": "",
          "links": []
        },
        {
          "id": "groups",
          "title": "Uç noktası grupları",
          "paragraphs": [
            "GET /api/config, sunucu yapılandırmasının varlığını bildirir. GET /api/checkout/{token}, seçilen yöntem için fatura kullanılabilirliğini döndürür; satıcı onayı ve kaydedilmiş koşullar dahildir. Bu kontroller sağlayıcı bağlantısı veya ödeme başarısı kurmaz: sonuç, doğrulanmış ağ geçidi işleminden gelir."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Grup",
              "Amaç"
            ],
            "rows": [
              [
                "Yapılandırma ve sağlık",
                "Genel hizmet ve depolama hazırlığı"
              ],
              [
                "Kimlik doğrulama",
                "Telegram zorlukları ve oturumları"
              ],
              [
                "Hesap",
                "Ayarlar ve özel satıcı uygulaması"
              ],
              [
                "/api/v1/odemerler",
                "Kapsamlı sunucu fatura oluşturma ve okuma; bir ödeme başlatmaz"
              ],
              [
                "/api/v1/olaylar",
                "events:read ile sunucu olay günlüğü"
              ],
              [
                "Entegrasyonlar",
                "Oturumla doğrulanmış anahtar ve webhook uç noktası yönetimi"
              ],
              [
                "Uygulamalar ve moderasyon",
                "Sahip olunan gönderimler, durum takibi ve ayrı moderatör izinleri"
              ],
              [
                "Ödeme Sayfası",
                "Genel fatura, şifrelenmiş kart isteği, somut işlem, banka kodu, durum ve mutabakat"
              ],
              [
                "Ağ geçidi girişi",
                "İmzalı v3 bildirimleri ve doğrulanmış işlem doğrulaması"
              ],
              [
                "Destek ve bildirimler",
                "Sorular, özel talepler, olaylar ve okuma durumu"
              ],
              [
                "Telegram",
                "Doğrulanmış bot webhook'u"
              ],
              [
                "Desteklenmeyen para yolları",
                "Eski doğrudan /api/payments ve /api/payouts yolları bir ödeme veya ödeme çıkışı oluşturmaz"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "support-example",
          "title": "Genel bir bilgi isteği",
          "paragraphs": [
            "Yanıt mode, answer, sources, knowledgeVersion ve needsHuman içerir. Sağlanan bir Origin, uygulama kaynağıyla eşleşmelidir. Sunucu tarafı dokümantasyon aracısı Origin'i atlayabilir."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "cURL",
            "code": "curl 'https://kevmi.one/api/support/ask' \\\n  -H 'Content-Type: application/json' \\\n  --data '{\"question\":\"Who pays VAT?\",\"locale\":\"en\"}'"
          },
          "note": "",
          "links": []
        },
        {
          "id": "errors",
          "title": "Hatalar ve sınırlar",
          "paragraphs": [
            "Bir hata, makine tarafından okunabilir bir kod ve bir mesaj içerir. Bilinmeyen istek alanları reddedilir. Standart JSON gövdeleri 16.384 bayt kabul eder; /api/support/ask ve Telegram webhook'u 65.536 bayt kabul eder.",
            "429 bir hız sınırını gösterir. 503, kullanılamayan bir entegrasyonu gösterebilir; reddedilen bir ödemeyi değil. error.code değerini okuyun ve bir finansal durumu yalnızca HTTP durumuna göre değiştirmeyin."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Hata kodları",
              "href": "/docs/errors"
            },
            {
              "label": "Tam OpenAPI belirtimi",
              "href": "/openapi.json"
            }
          ]
        },
        {
          "id": "stores-usd",
          "title": "Birden fazla mağaza ve tek USD taban fiyat",
          "paragraphs": [
            "Toplu analiz ve işlemler için Tüm mağazaları seçin veya kendi kayıtları için bir mağaza seçin. Her mağazanın ayrı bir storeId'si, adı, varsayılan KDV'si, faturaları, API anahtarları, webhook uç noktaları, olay geçmişi ve web sitesi uygulaması vardır. Bildirimler ve destek talepleri hesaba aittir. Bir hesap en fazla 100 mağaza oluşturabilir. Mevcut kayıtlar ilk mağazasında kalır.",
            "Yeni çalışma alanı faturaları pricingMode=\"universal\" ve USD taban fiyat kullanır. Any, kart, alipay, sbp ve kriptoyu içerir; bir satıcı bir alt küme seçebilir. Kartlar ve Alipay USD tahsil eder. SBP, Rusya Merkez Bankası USD/RUB referans kurunu kullanarak RUB tahsil eder. Kripto, açık fatura kuralı 1 USD = 1 USDT kapsamında USDT tahsil eder. Bu bir fatura dönüştürme kuralıdır, piyasa USDT kotasyonu değildir. Ağ geçidi, transferden önce seçilen coin'in kurunu, tam transfer tutarını ve talimatlarını sağlar.",
            "Referans kuru ve her iki tutar oluşturma sırasında dondurulur. RUB dönüştürmesi içeren faturalar 24 saat içinde sona erer. Referans kuru alınamazsa, oluşturma FX_UNAVAILABLE ile başarısız olur; uydurulmuş veya bayat yedek kur kullanılmaz. Sahip yanıt tutarı ve kotasyonlar USD muhasebe para birimini kullanır. quotes[method].settlement, yerel tahsil kotasyonunu içerir. Genel ödeme sayfası, seçilen tahsil para birimini currency içinde, orijinal fiyatı baseAmountMinor/baseCurrency içinde ve referans kurunu fx içinde gösterir. Bir ödeme gönderildikten sonra yöntemi değiştirilemez; bir faturanın tek ağ geçidi işlemi vardır.",
            "Amaçlanan mağaza içinde bir API anahtarı oluşturun ve sunucunuzdan Authorization: Bearer <key> gönderin. Mağaza bağlaması değişmezdir; X-Kevmi-Store, anahtara başka bir mağazaya erişim izni veremez. Tarayıcı oturumları X-Kevmi-Store: <storeId> seçer; atlanırsa ilk mağaza seçilir. all değeri yalnızca GET /api/account/dashboard ve GET /api/payment-links tarafından kabul edilir. Değişiklikler seçili bir mağaza, Origin ve X-CSRF-Token gerektirir. Hesap kimlikleri ve mağaza kimlikleri farklı tanımlayıcılardır.",
            "Uyumluluk için, pricingMode=\"universal\" içermeyen API istekleri yerel fiyatlandırmayı ve orijinal para birimi kısıtlamalarını korur. Mevcut faturalar asla yeniden hesaplanmaz. Analizlerdeki onaylanmış tahsilatlar, doğrulanmış ödemelerden kaydedilmiş fatura giderlerinin düşülmesiyle elde edilir; bunlar çekilebilir bakiye değildir. Eski fatura para birimleri ayrı kalır ve ödemeler destek ile düzenlenir. Bir siparişi yalnızca sunucu API'si, olay geçmişi veya imzalı bir webhook üzerinden payment.fulfillmentReady=true ve payment.status=\"succeeded\" durumunu kontrol ettikten sonra yerine getirin."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "json",
            "code": "{\n  \"pricingMode\": \"universal\",\n  \"title\": \"Order 1042\",\n  \"amountMinor\": 1000,\n  \"currency\": \"USD\",\n  \"methods\": [\n    \"card\",\n    \"alipay\",\n    \"sbp\",\n    \"crypto\"\n  ],\n  \"vatCustomerPercent\": 100,\n  \"feeCustomerPercent\": 0\n}"
          },
          "note": "",
          "links": []
        },
        {
          "id": "assistant-admin-v16",
          "title": "Asistan, destek ve proje yönetimi",
          "paragraphs": [
            "İlk Telegram girişi, onaylanmış bir satıcı değil, not_submitted durumuna sahip bir hesap ve bir taslak mağaza oluşturur. Hesap, başvuru formunu veya mevcut incelemeyi açar; ödeme kabul etmek uzman onayı gerektirir. Her yeni mağazanın kendi incelemesi vardır. GET /api/stores, reviewStatus ve applicationId değerlerini döndürür. Bağlı mağazalar toplu erişimi korur ve destek ile dokümantasyon inceleme sırasında kullanılabilir kalır.",
            "Özel işlemlerde yardıma ihtiyacınız olduğunda sohbette verilerime erişimi etkinleştirin. includeAccount=true içeren bir web isteği geçerli bir oturum, Origin ve X-CSRF-Token gerektirir; X-Kevmi-Store sahip olunan bir mağazayı veya tüm sahip olunan mağazaları seçer. İzin olmadan asistan yalnızca genel belgeleri kullanır. Telegram'da, gönderen kimliği doğrulandıktan sonra ayrı bir düğme erişimi etkinleştirir.",
            "read_account aracı sahip olunan mağazaları, doğrulanmış ödeme durumuna sahip faturaları, etkinlikleri, başvuruları ve uzman yanıtlarını içeren destek taleplerini okur. 30 kayıt ve nextPage döndürür; daha eski kayıtlara sayfalama yoluyla erişilir. Yanıt başına okuma sayısı sınırlıdır, bu nedenle eksik bir örnek açıklanmalıdır. API anahtarları, webhook sırları, kart bilgileri ve oturumlar araca sağlanmaz. Araç ücret talep edemez, ödeme yapamaz, geri ödeme yapamaz veya ayarları değiştiremez.",
            "Çalışma alanında veya Telegram'da bir destek talebi oluşturmak, kalıcı bir kuyruğa ayrı bir yönetici uyarısı yerleştirir. /admin/tickets?ticket=<id> bağlantısına bağlanır; geçici Telegram arızaları yeniden denenir. Kurtarma ayrıca uyarısı olmayan daha eski açık talepleri de alır. Yöneticiler talep sayfasında yanıt verir; yanıt kullanıcı çalışma alanına kaydedilir ve destek bildirimleri etkinleştirildiğinde Telegram üzerinden gönderilir.",
            "Bot ana menü, mağazalar, bildirimler, destek, güvenlik ve dil için satır içi düğmeler kullanır. Gezinme geçerli mesajı düzenler; kullanılamayan eski bir menü değiştirilir. Ödeme ve güvenlik bildirimleri tek kullanımlık gezinme olarak ele alınmaz. Menüden çıkış yapmak onay gerektirir. Açık /logout komutu yine de her hesap oturumunu sonlandırır.",
            "/admin/project paneli, sunucu tarafı MODERATOR_TELEGRAM_IDS izin listesindeki Telegram kimlikleriyle sınırlıdır. Kullanıcıları, mağazaları, işlemleri, anahtar iptalini, webhook devre dışı bırakmayı, fatura duraklatmayı, kabul kontrollerini ve bir denetim günlüğünü içerir. Değişiklikler CSRF ve bir gerekçe gerektirir. Panel bir yöneticiyi kısıtlayamaz veya bir ödemeyi manuel olarak başarılı ilan edemez. Bir sahibi kısıtlamak oturumları sonlandırır ve API anahtarı erişimini engeller; bir mağazayı kısıtlamak yeni işlemleri durdurur. Geçmiş korunur.",
            "Kamu teklifi etkinleştirilmiş her dilde /public-offer adresinde, gizlilik politikası ise /privacy-policy adresinde mevcuttur. Madeni paraları ada veya kısaltmaya göre arayın. Birden fazla canlı ağ mevcut olduğunda yalnızca bir ağ seçici görünür. Tek bir ağ otomatik olarak seçilir ve onayda adlandırılmış olarak kalır. Canlı ağ geçidi kullanılabilirliği seçilebilir çiftleri belirler; referans kataloğu bir hizmeti etkinleştirmez.",
            "Rutin web uygulaması sürümleri için update.sh kullanın: adayı derleyin, geçiş geçmişini kontrol edin, SQLite'ı çevrimiçi yedekleyin, ikinci bir kapsayıcı başlatın, doğrulayın ve Caddy'yi sorunsuz şekilde değiştirin. Ağ geçidi, PostgreSQL ve posta yeniden başlatılmaz. Önceki statik varlıklar açık sekmeler için kullanılabilir durumda kalır. Yeni bir geçiş açıkça gözden geçirilmiş yetkilendirme gerektirir; uyumsuz bir şema değişikliği sorunsuz bir dağıtım değildir."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Kamu teklifi",
              "href": "/public-offer"
            },
            {
              "label": "Gizlilik politikası",
              "href": "/privacy-policy"
            }
          ]
        }
      ],
      "body": "Temel URL ve biçim\n\nTemel URL https://kevmi.one şeklindedir. İstek ve yanıt gövdeleri JSON kullanır. Para değerleri tam sayı alt birimlerdir. Hesap ve destek tarihleri milisaniye cinsinden Unix zaman damgalarıdır.\n\nAPI yanıtları Cache-Control: no-store kullanır. Genel /openapi.json beş dakika önbelleğe alınabilir. Bir URL'ye çerez veya gizli anahtar yerleştirmeyin.\n\ncurl 'https://kevmi.one/api/config'\n\ncurl 'https://kevmi.one/openapi.json'\n\nİstek yetkilendirmesi\n\nWeb hesabı bir HttpOnly oturum çerezi kullanır. GET /api/auth/me geçerli kullanıcıyı ve csrfToken değerini döndürür. Değişiklikler X-CSRF-Token ve aynı kaynaklı bir istek gerektirir.\n\nKapsamlı Kevmi satıcı anahtarları, /api/v1/payments, /api/v1/payment-links ve /api/v1/events yollarını yetkilendirir. Hesap ayarları veya yönetim yolları için oturum çerezini değiştirmezler.\n\nconst me = await fetch('/api/auth/me').then(r => r.json());\nif (!me.authenticated) throw new Error('Sign in required');\nconst response = await fetch('/api/account/settings', {\n  method: 'PATCH',\n  headers: { 'Content-Type': 'application/json', 'X-CSRF-Token': me.csrfToken },\n  body: JSON.stringify({ vatPayer: 'merchant' })\n});\nif (!response.ok) throw new Error('Settings were not saved');\nconst updated = await response.json();\n\nUç noktası grupları\n\nGET /api/config, sunucu yapılandırmasının varlığını bildirir. GET /api/checkout/{token}, seçilen yöntem için fatura kullanılabilirliğini döndürür; satıcı onayı ve kaydedilmiş koşullar dahildir. Bu kontroller sağlayıcı bağlantısı veya ödeme başarısı kurmaz: sonuç, doğrulanmış ağ geçidi işleminden gelir.\n\nGrup · Amaç\nYapılandırma ve sağlık · Genel hizmet ve depolama hazırlığı\nKimlik doğrulama · Telegram zorlukları ve oturumları\nHesap · Ayarlar ve özel satıcı uygulaması\n/api/v1/odemerler · Kapsamlı sunucu fatura oluşturma ve okuma; bir ödeme başlatmaz\n/api/v1/olaylar · events:read ile sunucu olay günlüğü\nEntegrasyonlar · Oturumla doğrulanmış anahtar ve webhook uç noktası yönetimi\nUygulamalar ve moderasyon · Sahip olunan gönderimler, durum takibi ve ayrı moderatör izinleri\nÖdeme Sayfası · Genel fatura, şifrelenmiş kart isteği, somut işlem, banka kodu, durum ve mutabakat\nAğ geçidi girişi · İmzalı v3 bildirimleri ve doğrulanmış işlem doğrulaması\nDestek ve bildirimler · Sorular, özel talepler, olaylar ve okuma durumu\nTelegram · Doğrulanmış bot webhook'u\nDesteklenmeyen para yolları · Eski doğrudan /api/payments ve /api/payouts yolları bir ödeme veya ödeme çıkışı oluşturmaz\n\nGenel bir bilgi isteği\n\nYanıt mode, answer, sources, knowledgeVersion ve needsHuman içerir. Sağlanan bir Origin, uygulama kaynağıyla eşleşmelidir. Sunucu tarafı dokümantasyon aracısı Origin'i atlayabilir.\n\ncurl 'https://kevmi.one/api/support/ask' \\\n  -H 'Content-Type: application/json' \\\n  --data '{\"question\":\"Who pays VAT?\",\"locale\":\"en\"}'\n\nHatalar ve sınırlar\n\nBir hata, makine tarafından okunabilir bir kod ve bir mesaj içerir. Bilinmeyen istek alanları reddedilir. Standart JSON gövdeleri 16.384 bayt kabul eder; /api/support/ask ve Telegram webhook'u 65.536 bayt kabul eder.\n\n429 bir hız sınırını gösterir. 503, kullanılamayan bir entegrasyonu gösterebilir; reddedilen bir ödemeyi değil. error.code değerini okuyun ve bir finansal durumu yalnızca HTTP durumuna göre değiştirmeyin.\n\nHata kodları\n\nTam OpenAPI belirtimi\n\nBirden fazla mağaza ve tek USD taban fiyat\n\nToplu analiz ve işlemler için Tüm mağazaları seçin veya kendi kayıtları için bir mağaza seçin. Her mağazanın ayrı bir storeId'si, adı, varsayılan KDV'si, faturaları, API anahtarları, webhook uç noktaları, olay geçmişi ve web sitesi uygulaması vardır. Bildirimler ve destek talepleri hesaba aittir. Bir hesap en fazla 100 mağaza oluşturabilir. Mevcut kayıtlar ilk mağazasında kalır.\n\nYeni çalışma alanı faturaları pricingMode=\"universal\" ve USD taban fiyat kullanır. Any, kart, alipay, sbp ve kriptoyu içerir; bir satıcı bir alt küme seçebilir. Kartlar ve Alipay USD tahsil eder. SBP, Rusya Merkez Bankası USD/RUB referans kurunu kullanarak RUB tahsil eder. Kripto, açık fatura kuralı 1 USD = 1 USDT kapsamında USDT tahsil eder. Bu bir fatura dönüştürme kuralıdır, piyasa USDT kotasyonu değildir. Ağ geçidi, transferden önce seçilen coin'in kurunu, tam transfer tutarını ve talimatlarını sağlar.\n\nReferans kuru ve her iki tutar oluşturma sırasında dondurulur. RUB dönüştürmesi içeren faturalar 24 saat içinde sona erer. Referans kuru alınamazsa, oluşturma FX_UNAVAILABLE ile başarısız olur; uydurulmuş veya bayat yedek kur kullanılmaz. Sahip yanıt tutarı ve kotasyonlar USD muhasebe para birimini kullanır. quotes[method].settlement, yerel tahsil kotasyonunu içerir. Genel ödeme sayfası, seçilen tahsil para birimini currency içinde, orijinal fiyatı baseAmountMinor/baseCurrency içinde ve referans kurunu fx içinde gösterir. Bir ödeme gönderildikten sonra yöntemi değiştirilemez; bir faturanın tek ağ geçidi işlemi vardır.\n\nAmaçlanan mağaza içinde bir API anahtarı oluşturun ve sunucunuzdan Authorization: Bearer <key> gönderin. Mağaza bağlaması değişmezdir; X-Kevmi-Store, anahtara başka bir mağazaya erişim izni veremez. Tarayıcı oturumları X-Kevmi-Store: <storeId> seçer; atlanırsa ilk mağaza seçilir. all değeri yalnızca GET /api/account/dashboard ve GET /api/payment-links tarafından kabul edilir. Değişiklikler seçili bir mağaza, Origin ve X-CSRF-Token gerektirir. Hesap kimlikleri ve mağaza kimlikleri farklı tanımlayıcılardır.\n\nUyumluluk için, pricingMode=\"universal\" içermeyen API istekleri yerel fiyatlandırmayı ve orijinal para birimi kısıtlamalarını korur. Mevcut faturalar asla yeniden hesaplanmaz. Analizlerdeki onaylanmış tahsilatlar, doğrulanmış ödemelerden kaydedilmiş fatura giderlerinin düşülmesiyle elde edilir; bunlar çekilebilir bakiye değildir. Eski fatura para birimleri ayrı kalır ve ödemeler destek ile düzenlenir. Bir siparişi yalnızca sunucu API'si, olay geçmişi veya imzalı bir webhook üzerinden payment.fulfillmentReady=true ve payment.status=\"succeeded\" durumunu kontrol ettikten sonra yerine getirin.\n\n{\n  \"pricingMode\": \"universal\",\n  \"title\": \"Order 1042\",\n  \"amountMinor\": 1000,\n  \"currency\": \"USD\",\n  \"methods\": [\n    \"card\",\n    \"alipay\",\n    \"sbp\",\n    \"crypto\"\n  ],\n  \"vatCustomerPercent\": 100,\n  \"feeCustomerPercent\": 0\n}\n\nAsistan, destek ve proje yönetimi\n\nİlk Telegram girişi, onaylanmış bir satıcı değil, not_submitted durumuna sahip bir hesap ve bir taslak mağaza oluşturur. Hesap, başvuru formunu veya mevcut incelemeyi açar; ödeme kabul etmek uzman onayı gerektirir. Her yeni mağazanın kendi incelemesi vardır. GET /api/stores, reviewStatus ve applicationId değerlerini döndürür. Bağlı mağazalar toplu erişimi korur ve destek ile dokümantasyon inceleme sırasında kullanılabilir kalır.\n\nÖzel işlemlerde yardıma ihtiyacınız olduğunda sohbette verilerime erişimi etkinleştirin. includeAccount=true içeren bir web isteği geçerli bir oturum, Origin ve X-CSRF-Token gerektirir; X-Kevmi-Store sahip olunan bir mağazayı veya tüm sahip olunan mağazaları seçer. İzin olmadan asistan yalnızca genel belgeleri kullanır. Telegram'da, gönderen kimliği doğrulandıktan sonra ayrı bir düğme erişimi etkinleştirir.\n\nread_account aracı sahip olunan mağazaları, doğrulanmış ödeme durumuna sahip faturaları, etkinlikleri, başvuruları ve uzman yanıtlarını içeren destek taleplerini okur. 30 kayıt ve nextPage döndürür; daha eski kayıtlara sayfalama yoluyla erişilir. Yanıt başına okuma sayısı sınırlıdır, bu nedenle eksik bir örnek açıklanmalıdır. API anahtarları, webhook sırları, kart bilgileri ve oturumlar araca sağlanmaz. Araç ücret talep edemez, ödeme yapamaz, geri ödeme yapamaz veya ayarları değiştiremez.\n\nÇalışma alanında veya Telegram'da bir destek talebi oluşturmak, kalıcı bir kuyruğa ayrı bir yönetici uyarısı yerleştirir. /admin/tickets?ticket=<id> bağlantısına bağlanır; geçici Telegram arızaları yeniden denenir. Kurtarma ayrıca uyarısı olmayan daha eski açık talepleri de alır. Yöneticiler talep sayfasında yanıt verir; yanıt kullanıcı çalışma alanına kaydedilir ve destek bildirimleri etkinleştirildiğinde Telegram üzerinden gönderilir.\n\nBot ana menü, mağazalar, bildirimler, destek, güvenlik ve dil için satır içi düğmeler kullanır. Gezinme geçerli mesajı düzenler; kullanılamayan eski bir menü değiştirilir. Ödeme ve güvenlik bildirimleri tek kullanımlık gezinme olarak ele alınmaz. Menüden çıkış yapmak onay gerektirir. Açık /logout komutu yine de her hesap oturumunu sonlandırır.\n\n/admin/project paneli, sunucu tarafı MODERATOR_TELEGRAM_IDS izin listesindeki Telegram kimlikleriyle sınırlıdır. Kullanıcıları, mağazaları, işlemleri, anahtar iptalini, webhook devre dışı bırakmayı, fatura duraklatmayı, kabul kontrollerini ve bir denetim günlüğünü içerir. Değişiklikler CSRF ve bir gerekçe gerektirir. Panel bir yöneticiyi kısıtlayamaz veya bir ödemeyi manuel olarak başarılı ilan edemez. Bir sahibi kısıtlamak oturumları sonlandırır ve API anahtarı erişimini engeller; bir mağazayı kısıtlamak yeni işlemleri durdurur. Geçmiş korunur.\n\nKamu teklifi etkinleştirilmiş her dilde /public-offer adresinde, gizlilik politikası ise /privacy-policy adresinde mevcuttur. Madeni paraları ada veya kısaltmaya göre arayın. Birden fazla canlı ağ mevcut olduğunda yalnızca bir ağ seçici görünür. Tek bir ağ otomatik olarak seçilir ve onayda adlandırılmış olarak kalır. Canlı ağ geçidi kullanılabilirliği seçilebilir çiftleri belirler; referans kataloğu bir hizmeti etkinleştirmez.\n\nRutin web uygulaması sürümleri için update.sh kullanın: adayı derleyin, geçiş geçmişini kontrol edin, SQLite'ı çevrimiçi yedekleyin, ikinci bir kapsayıcı başlatın, doğrulayın ve Caddy'yi sorunsuz şekilde değiştirin. Ağ geçidi, PostgreSQL ve posta yeniden başlatılmaz. Önceki statik varlıklar açık sekmeler için kullanılabilir durumda kalır. Yeni bir geçiş açıkça gözden geçirilmiş yetkilendirme gerektirir; uyumsuz bir şema değişikliği sorunsuz bir dağıtım değildir.\n\nKamu teklifi\n\nGizlilik politikası",
      "readMinutes": 4
    },
    {
      "id": "payment-links-api",
      "title": "Ödeme bağlantıları API'si ve API anahtarları",
      "summary": "Arka uçunuzdan bir fatura oluşturun ve checkoutUrl değerini hemen alın. API, kapsamlı anahtarları, idempotent yeniden denemeleri, bağımsız ücret ve KDV paylarını, bir sipariş referansını ve özel meta verileri destekler.",
      "tags": [
        "API",
        "ödeme bağlantısı",
        "idempotency",
        "ödeme sayfası",
        "sayfalandırma",
        "API anahtarı",
        "kapsam",
        "üst veri"
      ],
      "sections": [
        {
          "id": "create",
          "title": "Sunucu isteği hazır bir bağlantı döndürür",
          "paragraphs": [
            "POST /api/v1/payments ve /api/v1/payment-links aynı fatura türünü oluşturur. Payments rotasının adı bir tahsilat anlamına gelmez: sonuç, kalıcı fatura koşulları ve müşteri için bir checkoutUrl'dir.",
            "Authorization: Bearer <key>, Content-Type: application/json ve Idempotency-Key gönderin. Idempotency anahtarları 16–100 harf, rakam, tire veya alt çizgi içerir. Her mantıksal sipariş oluşturma için bir anahtar saklayın."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "cURL · server only",
            "code": "curl 'https://kevmi.one/api/v1/payments' \\\n  -H \"Authorization: Bearer $KEVMI_API_KEY\" \\\n  -H 'Content-Type: application/json' \\\n  -H 'Idempotency-Key: order-1042-create-v1' \\\n  --data '{\"pricingMode\":\"universal\",\"title\":\"Design project · order 1042\",\"description\":\"One-time payment for the agreed design work\",\"amountMinor\":500,\"currency\":\"USD\",\"methods\":[\"card\",\"alipay\",\"sbp\",\"crypto\"],\"vatCustomerPercent\":100,\"feeCustomerPercent\":0,\"orderId\":\"order-1042\",\"metadata\":{\"campaign\":\"autumn\"}}'"
          },
          "note": "Yanıt link, checkoutUrl ve replayed alanlarını içerir. checkoutUrl'yi müşteriye veya widget'a iletin; API anahtarını sunucunuzda tutun.",
          "links": []
        },
        {
          "id": "keys",
          "title": "API anahtarı kapsamları ve süresi",
          "paragraphs": [
            "Doğrulanmış satıcı hesabınızda /account#keys adresinde bir anahtar oluşturun. Tam değeri yalnızca bir kez görünür; yalnızca bir karması saklanır. Anahtarlar varsayılan olarak 90 gün geçerlidir; izin verilen ömür 1–365 gündür ve hesap başına en fazla on aktif anahtar bulunabilir.",
            "Yalnızca gerekli kapsamları verin. İptal veya süre dolumu erişimi durdurur. Bir anahtar, hesap ayarları, uç nokta yönetimi, uygulamalar veya moderasyon için tarayıcı oturumunun yerini tutmaz. Widget'larda, URL'lerde, genel depolar ve destek mesajlarında bulundurmayın.",
            "Web sitesi, oturum çerezi, tam Origin ve X-CSRF-Token ile /api/payment-links kullanır. Bu rotalar aynı sahipli faturalar üzerinde çalışır."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Kapsam",
              "Amaç"
            ],
            "rows": [
              [
                "invoices:read",
                "Sahip olunan faturaları ve listelerini okuyun"
              ],
              [
                "invoices:write",
                "Fatura oluşturun ve bağlantı kullanılabilirliğini değiştirin"
              ],
              [
                "events:read",
                "Sunucu olay günlüğünü okuyun"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Hesabınızdaki API anahtarları",
              "href": "/account#keys"
            }
          ]
        },
        {
          "id": "methods",
          "title": "Herhangi biri ve somut API yöntemleri",
          "paragraphs": [
            "For legacy native pricing, invoices accept methods: [\"card\", \"alipay\"] or a nonempty subset for USD; [\"sbp\"] for RUB; [\"crypto\"] for USDT. The value any is not an API payment method.",
            "Yeni çalışma alanı faturaları pricingMode=\"universal\" ve USD taban fiyat kullanır. Any, kart, alipay, sbp ve kriptoyu içerir; bir satıcı bir alt küme seçebilir. Kartlar ve Alipay USD tahsil eder. SBP, Rusya Merkez Bankası USD/RUB referans kurunu kullanarak RUB tahsil eder. Kripto, açık fatura kuralı 1 USD = 1 USDT kapsamında USDT tahsil eder. Bu bir fatura dönüştürme kuralıdır, piyasa USDT kotasyonu değildir. Ağ geçidi, transferden önce seçilen coin'in kurunu, tam transfer tutarını ve talimatlarını sağlar.",
            "Yeni bir canlı kart veya Alipay ödemesi için mevcut ağ geçidi yalnızca feeCustomerPercent=0 ve vatCustomerPercent=100'ü destekler: satıcı tüm işlem ücretini karşılar ve KDV müşteri için tam olarak eklenir. Diğer paylar bir faturada kaydedilip hesaplanabilir, ancak yürütme unsupported_allocation ile engellenir. Sunucu kaydedilmiş koşulları sessizce asla değiştirmez. SBP ve USDT kripto ödemeleri tüm işlem ücreti paylarını destekler ve KDV içermez."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Hesap arayüzünde herhangi biri",
              "href": "/docs/payment-links#any"
            },
            {
              "label": "Ödeme Sayfası",
              "href": "/docs/checkout"
            }
          ]
        },
        {
          "id": "snapshot",
          "title": "Alanlar ve kalıcı koşullar",
          "paragraphs": [
            "Fatura satıcı adını, fiyatı, para birimini, yöntemleri, her iki maliyet payını ve hesaplanan teklifleri kaydeder. Üst veri sahibine ve sunucu olaylarında döndürülür, ancak genel ödeme sayfası üzerinden döndürülmez. İçinde ödeme sırları saklamayın.",
            "Paylar atlanırsa, satıcı ücreti karşılar; KDV vatPayer veya hesap ayarından miras alır. Kısmi bir dağıtım vatPayer=shared döndürebilir. Başlık, orderId ve açıklama geneldir."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Alan",
              "Kural"
            ],
            "rows": [
              [
                "başlık / açıklama",
                "1–120 / 0–500 karakter"
              ],
              [
                "amountMinor",
                "1–10.000.000.000 tam sayısı; 500, USD'de 5,00 ABD doları anlamına gelir"
              ],
              [
                "para birimi / yöntemler",
                "USD: card, alipay; RUB: sbp; USDT: crypto. Boş olmayan benzersiz liste."
              ],
              [
                "vatCustomerPercent / feeCustomerPercent",
                "0'dan 100'e kadar bağımsız tam sayı müşteri payları"
              ],
              [
                "vatPayer",
                "Eski müşteri veya satıcı; KDV payıyla çelişemez"
              ],
              [
                "orderId",
                "İsteğe bağlı, en fazla 100 karakter; müşteriye görünür"
              ],
              [
                "üst veri",
                "En fazla on dize girdisi; anahtar 1–40 harf/rakam/_/-; değer en fazla 500 karakter; toplam en fazla 3000 UTF-8 bayt"
              ],
              [
                "expiresAt",
                "90 gün içinde gelecekteki Unix ms; varsayılan olarak yedi gün"
              ]
            ]
          },
          "code": null,
          "note": "Yeni çalışma alanı faturaları pricingMode=\"universal\" ve USD taban fiyat kullanır. Any, kart, alipay, sbp ve kriptoyu içerir; bir satıcı bir alt küme seçebilir. Kartlar ve Alipay USD tahsil eder. SBP, Rusya Merkez Bankası USD/RUB referans kurunu kullanarak RUB tahsil eder. Kripto, açık fatura kuralı 1 USD = 1 USDT kapsamında USDT tahsil eder. Bu bir fatura dönüştürme kuralıdır, piyasa USDT kotasyonu değildir. Ağ geçidi, transferden önce seçilen coin'in kurunu, tam transfer tutarını ve talimatlarını sağlar.",
          "links": [
            {
              "label": "Maliyet dağıtım formülleri",
              "href": "/docs/cost-sharing"
            }
          ]
        },
        {
          "id": "idempotency",
          "title": "Ağ hatasından sonra yeniden deneyin",
          "paragraphs": [
            "İlk oluşturma 201 ve replayed=false döndürür. Aynı anahtar ve kurallı gövde 200, orijinal checkoutUrl ve replayed=true döndürür. Bu anahtar altında farklı bir istek 409 IDEMPOTENCY_CONFLICT döndürür.",
            "Zaman aşımından sonra başka bir anahtar üretmeyin. Orijinal isteği aynı alanlarla tekrarlayın. Atlanan değerler değiştirilmiş ayarları yeniden miras almaz. orderId bir siparişi ilişkilendirmeye yardımcı olur ancak Idempotency-Key'in yerini tutmaz ve depolamada benzersiz olması gerekmez."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "read",
          "title": "Okuma ve sayfalandırma",
          "paragraphs": [
            "GET /api/v1/payments linkler ve nextCursor döndürür; GET /api/v1/payments/{id} sahip olunan bir bağlantı döndürür. invoices:read gereklidir. Varsayılan sayfa boyutu 30'dur; limit 1–100 kabul eder.",
            "GET listesi ve ayrıntı yanıtları link.payment içerir: ilgili işlemin bir özeti veya işlem yoksa null. POST/PATCH yanıtları bunu atlayabilir; özete ihtiyacınız olduğunda faturayı yeniden okuyun. Bağlantı durumu ayrıca yeni bir ödemenin başlayıp başlayamayacağını açıklar. Kart alanları ve özel anahtarlar asla dahil edilmez.",
            "nextCursor'ı URLSearchParams üzerinden değiştirmeden iletin. null sonu işaretler; bilinmeyen ve diğer satıcıların kimlikleri 404 döndürür."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "HTTP",
            "code": "GET /api/v1/payments?limit=30\nAuthorization: Bearer <server-side key>"
          },
          "note": "",
          "links": []
        },
        {
          "id": "status",
          "title": "Duraklat, sürdür ve iptal et",
          "paragraphs": [
            "PATCH /api/v1/payments/{id} invoices:write ile yalnızca {\"status\":\"active\"}, {\"status\":\"paused\"} veya {\"status\":\"cancelled\"} kabul eder. İptal kesindir. expired süre bitiş zamanından türetilir; süresi dolmuş bir fatura uzatılamaz.",
            "Fiyat, maliyet payları, açıklama, orderId, üst veri ve süre değişmezdir. Farklı koşullar için başka bir fatura oluşturun. Kullanılabilirliği değiştirmek invoice.updated olayını yayınlar, başarılı ödeme olayını değil."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "buyer",
          "title": "Müşteri yanıtı",
          "paragraphs": [
            "GET /api/checkout/{token}?method=card genel faturayı, teklifi, yöntem kullanılabilirliğini ve mevcut işlemi döndürür. Sahip üst verisi, sırlar ve bakiyeler açığa çıkarılmaz.",
            "POST /api/checkout/{token}/pay Site Origin ve somut bir yöntem gerektirir. Kart verileri yalnızca mühürlü olarak kabul edilir: {intent,jwe}, tarayıcı /card-intent aldıktan sonra. Banka kodları şifrelenir ve /code üzerinden gönderilir. Kripto, kayıtlı bir USDT faturası ve kullanılabilir bir coin/ağ çifti kullanır.",
            "Yeni bir ödeme ve kart niyeti, satıcının en son web sitesi inceleme başvurusunun onaylanmasını gerektirir. Onay tek başına ödeme ağ geçidini bağlamaz. İnceleme gönderimden sonra değişirse, mevcut işlem durum okumaları, mutabakat ve talep edilen banka kodu için kullanılabilir kalır.",
            "Eksik canlı bağlantı GATEWAY_NOT_CONNECTED döndürür; uyumsuz bir dağıtım asla başka bir hesaplamayla değiştirilmez. Durum ve mutabakat, yinelenen bir tahsilat olmadan orijinal işlemi okur."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Ödeme widget'ı",
              "href": "/docs/widgets"
            },
            {
              "label": "Webhook ile ödemeyi onayla",
              "href": "/docs/webhooks"
            }
          ]
        },
        {
          "id": "stores-usd",
          "title": "Birden fazla mağaza ve tek USD taban fiyat",
          "paragraphs": [
            "Toplu analiz ve işlemler için Tüm mağazaları seçin veya kendi kayıtları için bir mağaza seçin. Her mağazanın ayrı bir storeId'si, adı, varsayılan KDV'si, faturaları, API anahtarları, webhook uç noktaları, olay geçmişi ve web sitesi uygulaması vardır. Bildirimler ve destek talepleri hesaba aittir. Bir hesap en fazla 100 mağaza oluşturabilir. Mevcut kayıtlar ilk mağazasında kalır.",
            "Yeni çalışma alanı faturaları pricingMode=\"universal\" ve USD taban fiyat kullanır. Any, kart, alipay, sbp ve kriptoyu içerir; bir satıcı bir alt küme seçebilir. Kartlar ve Alipay USD tahsil eder. SBP, Rusya Merkez Bankası USD/RUB referans kurunu kullanarak RUB tahsil eder. Kripto, açık fatura kuralı 1 USD = 1 USDT kapsamında USDT tahsil eder. Bu bir fatura dönüştürme kuralıdır, piyasa USDT kotasyonu değildir. Ağ geçidi, transferden önce seçilen coin'in kurunu, tam transfer tutarını ve talimatlarını sağlar.",
            "Referans kuru ve her iki tutar oluşturma sırasında dondurulur. RUB dönüştürmesi içeren faturalar 24 saat içinde sona erer. Referans kuru alınamazsa, oluşturma FX_UNAVAILABLE ile başarısız olur; uydurulmuş veya bayat yedek kur kullanılmaz. Sahip yanıt tutarı ve kotasyonlar USD muhasebe para birimini kullanır. quotes[method].settlement, yerel tahsil kotasyonunu içerir. Genel ödeme sayfası, seçilen tahsil para birimini currency içinde, orijinal fiyatı baseAmountMinor/baseCurrency içinde ve referans kurunu fx içinde gösterir. Bir ödeme gönderildikten sonra yöntemi değiştirilemez; bir faturanın tek ağ geçidi işlemi vardır.",
            "Amaçlanan mağaza içinde bir API anahtarı oluşturun ve sunucunuzdan Authorization: Bearer <key> gönderin. Mağaza bağlaması değişmezdir; X-Kevmi-Store, anahtara başka bir mağazaya erişim izni veremez. Tarayıcı oturumları X-Kevmi-Store: <storeId> seçer; atlanırsa ilk mağaza seçilir. all değeri yalnızca GET /api/account/dashboard ve GET /api/payment-links tarafından kabul edilir. Değişiklikler seçili bir mağaza, Origin ve X-CSRF-Token gerektirir. Hesap kimlikleri ve mağaza kimlikleri farklı tanımlayıcılardır.",
            "Uyumluluk için, pricingMode=\"universal\" içermeyen API istekleri yerel fiyatlandırmayı ve orijinal para birimi kısıtlamalarını korur. Mevcut faturalar asla yeniden hesaplanmaz. Analizlerdeki onaylanmış tahsilatlar, doğrulanmış ödemelerden kaydedilmiş fatura giderlerinin düşülmesiyle elde edilir; bunlar çekilebilir bakiye değildir. Eski fatura para birimleri ayrı kalır ve ödemeler destek ile düzenlenir. Bir siparişi yalnızca sunucu API'si, olay geçmişi veya imzalı bir webhook üzerinden payment.fulfillmentReady=true ve payment.status=\"succeeded\" durumunu kontrol ettikten sonra yerine getirin."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        }
      ],
      "group": "developers",
      "url": "/docs/payment-links-api",
      "body": "Sunucu isteği hazır bir bağlantı döndürür\n\nPOST /api/v1/payments ve /api/v1/payment-links aynı fatura türünü oluşturur. Payments rotasının adı bir tahsilat anlamına gelmez: sonuç, kalıcı fatura koşulları ve müşteri için bir checkoutUrl'dir.\n\nAuthorization: Bearer <key>, Content-Type: application/json ve Idempotency-Key gönderin. Idempotency anahtarları 16–100 harf, rakam, tire veya alt çizgi içerir. Her mantıksal sipariş oluşturma için bir anahtar saklayın.\n\ncurl 'https://kevmi.one/api/v1/payments' \\\n  -H \"Authorization: Bearer $KEVMI_API_KEY\" \\\n  -H 'Content-Type: application/json' \\\n  -H 'Idempotency-Key: order-1042-create-v1' \\\n  --data '{\"pricingMode\":\"universal\",\"title\":\"Design project · order 1042\",\"description\":\"One-time payment for the agreed design work\",\"amountMinor\":500,\"currency\":\"USD\",\"methods\":[\"card\",\"alipay\",\"sbp\",\"crypto\"],\"vatCustomerPercent\":100,\"feeCustomerPercent\":0,\"orderId\":\"order-1042\",\"metadata\":{\"campaign\":\"autumn\"}}'\n\nYanıt link, checkoutUrl ve replayed alanlarını içerir. checkoutUrl'yi müşteriye veya widget'a iletin; API anahtarını sunucunuzda tutun.\n\nAPI anahtarı kapsamları ve süresi\n\nDoğrulanmış satıcı hesabınızda /account#keys adresinde bir anahtar oluşturun. Tam değeri yalnızca bir kez görünür; yalnızca bir karması saklanır. Anahtarlar varsayılan olarak 90 gün geçerlidir; izin verilen ömür 1–365 gündür ve hesap başına en fazla on aktif anahtar bulunabilir.\n\nYalnızca gerekli kapsamları verin. İptal veya süre dolumu erişimi durdurur. Bir anahtar, hesap ayarları, uç nokta yönetimi, uygulamalar veya moderasyon için tarayıcı oturumunun yerini tutmaz. Widget'larda, URL'lerde, genel depolar ve destek mesajlarında bulundurmayın.\n\nWeb sitesi, oturum çerezi, tam Origin ve X-CSRF-Token ile /api/payment-links kullanır. Bu rotalar aynı sahipli faturalar üzerinde çalışır.\n\nKapsam · Amaç\ninvoices:read · Sahip olunan faturaları ve listelerini okuyun\ninvoices:write · Fatura oluşturun ve bağlantı kullanılabilirliğini değiştirin\nevents:read · Sunucu olay günlüğünü okuyun\n\nHesabınızdaki API anahtarları\n\nHerhangi biri ve somut API yöntemleri\n\nFor legacy native pricing, invoices accept methods: [\"card\", \"alipay\"] or a nonempty subset for USD; [\"sbp\"] for RUB; [\"crypto\"] for USDT. The value any is not an API payment method.\n\nYeni çalışma alanı faturaları pricingMode=\"universal\" ve USD taban fiyat kullanır. Any, kart, alipay, sbp ve kriptoyu içerir; bir satıcı bir alt küme seçebilir. Kartlar ve Alipay USD tahsil eder. SBP, Rusya Merkez Bankası USD/RUB referans kurunu kullanarak RUB tahsil eder. Kripto, açık fatura kuralı 1 USD = 1 USDT kapsamında USDT tahsil eder. Bu bir fatura dönüştürme kuralıdır, piyasa USDT kotasyonu değildir. Ağ geçidi, transferden önce seçilen coin'in kurunu, tam transfer tutarını ve talimatlarını sağlar.\n\nYeni bir canlı kart veya Alipay ödemesi için mevcut ağ geçidi yalnızca feeCustomerPercent=0 ve vatCustomerPercent=100'ü destekler: satıcı tüm işlem ücretini karşılar ve KDV müşteri için tam olarak eklenir. Diğer paylar bir faturada kaydedilip hesaplanabilir, ancak yürütme unsupported_allocation ile engellenir. Sunucu kaydedilmiş koşulları sessizce asla değiştirmez. SBP ve USDT kripto ödemeleri tüm işlem ücreti paylarını destekler ve KDV içermez.\n\nHesap arayüzünde herhangi biri\n\nÖdeme Sayfası\n\nAlanlar ve kalıcı koşullar\n\nFatura satıcı adını, fiyatı, para birimini, yöntemleri, her iki maliyet payını ve hesaplanan teklifleri kaydeder. Üst veri sahibine ve sunucu olaylarında döndürülür, ancak genel ödeme sayfası üzerinden döndürülmez. İçinde ödeme sırları saklamayın.\n\nPaylar atlanırsa, satıcı ücreti karşılar; KDV vatPayer veya hesap ayarından miras alır. Kısmi bir dağıtım vatPayer=shared döndürebilir. Başlık, orderId ve açıklama geneldir.\n\nAlan · Kural\nbaşlık / açıklama · 1–120 / 0–500 karakter\namountMinor · 1–10.000.000.000 tam sayısı; 500, USD'de 5,00 ABD doları anlamına gelir\npara birimi / yöntemler · USD: card, alipay; RUB: sbp; USDT: crypto. Boş olmayan benzersiz liste.\nvatCustomerPercent / feeCustomerPercent · 0'dan 100'e kadar bağımsız tam sayı müşteri payları\nvatPayer · Eski müşteri veya satıcı; KDV payıyla çelişemez\norderId · İsteğe bağlı, en fazla 100 karakter; müşteriye görünür\nüst veri · En fazla on dize girdisi; anahtar 1–40 harf/rakam/_/-; değer en fazla 500 karakter; toplam en fazla 3000 UTF-8 bayt\nexpiresAt · 90 gün içinde gelecekteki Unix ms; varsayılan olarak yedi gün\n\nYeni çalışma alanı faturaları pricingMode=\"universal\" ve USD taban fiyat kullanır. Any, kart, alipay, sbp ve kriptoyu içerir; bir satıcı bir alt küme seçebilir. Kartlar ve Alipay USD tahsil eder. SBP, Rusya Merkez Bankası USD/RUB referans kurunu kullanarak RUB tahsil eder. Kripto, açık fatura kuralı 1 USD = 1 USDT kapsamında USDT tahsil eder. Bu bir fatura dönüştürme kuralıdır, piyasa USDT kotasyonu değildir. Ağ geçidi, transferden önce seçilen coin'in kurunu, tam transfer tutarını ve talimatlarını sağlar.\n\nMaliyet dağıtım formülleri\n\nAğ hatasından sonra yeniden deneyin\n\nİlk oluşturma 201 ve replayed=false döndürür. Aynı anahtar ve kurallı gövde 200, orijinal checkoutUrl ve replayed=true döndürür. Bu anahtar altında farklı bir istek 409 IDEMPOTENCY_CONFLICT döndürür.\n\nZaman aşımından sonra başka bir anahtar üretmeyin. Orijinal isteği aynı alanlarla tekrarlayın. Atlanan değerler değiştirilmiş ayarları yeniden miras almaz. orderId bir siparişi ilişkilendirmeye yardımcı olur ancak Idempotency-Key'in yerini tutmaz ve depolamada benzersiz olması gerekmez.\n\nOkuma ve sayfalandırma\n\nGET /api/v1/payments linkler ve nextCursor döndürür; GET /api/v1/payments/{id} sahip olunan bir bağlantı döndürür. invoices:read gereklidir. Varsayılan sayfa boyutu 30'dur; limit 1–100 kabul eder.\n\nGET listesi ve ayrıntı yanıtları link.payment içerir: ilgili işlemin bir özeti veya işlem yoksa null. POST/PATCH yanıtları bunu atlayabilir; özete ihtiyacınız olduğunda faturayı yeniden okuyun. Bağlantı durumu ayrıca yeni bir ödemenin başlayıp başlayamayacağını açıklar. Kart alanları ve özel anahtarlar asla dahil edilmez.\n\nnextCursor'ı URLSearchParams üzerinden değiştirmeden iletin. null sonu işaretler; bilinmeyen ve diğer satıcıların kimlikleri 404 döndürür.\n\nGET /api/v1/payments?limit=30\nAuthorization: Bearer <server-side key>\n\nDuraklat, sürdür ve iptal et\n\nPATCH /api/v1/payments/{id} invoices:write ile yalnızca {\"status\":\"active\"}, {\"status\":\"paused\"} veya {\"status\":\"cancelled\"} kabul eder. İptal kesindir. expired süre bitiş zamanından türetilir; süresi dolmuş bir fatura uzatılamaz.\n\nFiyat, maliyet payları, açıklama, orderId, üst veri ve süre değişmezdir. Farklı koşullar için başka bir fatura oluşturun. Kullanılabilirliği değiştirmek invoice.updated olayını yayınlar, başarılı ödeme olayını değil.\n\nMüşteri yanıtı\n\nGET /api/checkout/{token}?method=card genel faturayı, teklifi, yöntem kullanılabilirliğini ve mevcut işlemi döndürür. Sahip üst verisi, sırlar ve bakiyeler açığa çıkarılmaz.\n\nPOST /api/checkout/{token}/pay Site Origin ve somut bir yöntem gerektirir. Kart verileri yalnızca mühürlü olarak kabul edilir: {intent,jwe}, tarayıcı /card-intent aldıktan sonra. Banka kodları şifrelenir ve /code üzerinden gönderilir. Kripto, kayıtlı bir USDT faturası ve kullanılabilir bir coin/ağ çifti kullanır.\n\nYeni bir ödeme ve kart niyeti, satıcının en son web sitesi inceleme başvurusunun onaylanmasını gerektirir. Onay tek başına ödeme ağ geçidini bağlamaz. İnceleme gönderimden sonra değişirse, mevcut işlem durum okumaları, mutabakat ve talep edilen banka kodu için kullanılabilir kalır.\n\nEksik canlı bağlantı GATEWAY_NOT_CONNECTED döndürür; uyumsuz bir dağıtım asla başka bir hesaplamayla değiştirilmez. Durum ve mutabakat, yinelenen bir tahsilat olmadan orijinal işlemi okur.\n\nÖdeme widget'ı\n\nWebhook ile ödemeyi onayla\n\nBirden fazla mağaza ve tek USD taban fiyat\n\nToplu analiz ve işlemler için Tüm mağazaları seçin veya kendi kayıtları için bir mağaza seçin. Her mağazanın ayrı bir storeId'si, adı, varsayılan KDV'si, faturaları, API anahtarları, webhook uç noktaları, olay geçmişi ve web sitesi uygulaması vardır. Bildirimler ve destek talepleri hesaba aittir. Bir hesap en fazla 100 mağaza oluşturabilir. Mevcut kayıtlar ilk mağazasında kalır.\n\nYeni çalışma alanı faturaları pricingMode=\"universal\" ve USD taban fiyat kullanır. Any, kart, alipay, sbp ve kriptoyu içerir; bir satıcı bir alt küme seçebilir. Kartlar ve Alipay USD tahsil eder. SBP, Rusya Merkez Bankası USD/RUB referans kurunu kullanarak RUB tahsil eder. Kripto, açık fatura kuralı 1 USD = 1 USDT kapsamında USDT tahsil eder. Bu bir fatura dönüştürme kuralıdır, piyasa USDT kotasyonu değildir. Ağ geçidi, transferden önce seçilen coin'in kurunu, tam transfer tutarını ve talimatlarını sağlar.\n\nReferans kuru ve her iki tutar oluşturma sırasında dondurulur. RUB dönüştürmesi içeren faturalar 24 saat içinde sona erer. Referans kuru alınamazsa, oluşturma FX_UNAVAILABLE ile başarısız olur; uydurulmuş veya bayat yedek kur kullanılmaz. Sahip yanıt tutarı ve kotasyonlar USD muhasebe para birimini kullanır. quotes[method].settlement, yerel tahsil kotasyonunu içerir. Genel ödeme sayfası, seçilen tahsil para birimini currency içinde, orijinal fiyatı baseAmountMinor/baseCurrency içinde ve referans kurunu fx içinde gösterir. Bir ödeme gönderildikten sonra yöntemi değiştirilemez; bir faturanın tek ağ geçidi işlemi vardır.\n\nAmaçlanan mağaza içinde bir API anahtarı oluşturun ve sunucunuzdan Authorization: Bearer <key> gönderin. Mağaza bağlaması değişmezdir; X-Kevmi-Store, anahtara başka bir mağazaya erişim izni veremez. Tarayıcı oturumları X-Kevmi-Store: <storeId> seçer; atlanırsa ilk mağaza seçilir. all değeri yalnızca GET /api/account/dashboard ve GET /api/payment-links tarafından kabul edilir. Değişiklikler seçili bir mağaza, Origin ve X-CSRF-Token gerektirir. Hesap kimlikleri ve mağaza kimlikleri farklı tanımlayıcılardır.\n\nUyumluluk için, pricingMode=\"universal\" içermeyen API istekleri yerel fiyatlandırmayı ve orijinal para birimi kısıtlamalarını korur. Mevcut faturalar asla yeniden hesaplanmaz. Analizlerdeki onaylanmış tahsilatlar, doğrulanmış ödemelerden kaydedilmiş fatura giderlerinin düşülmesiyle elde edilir; bunlar çekilebilir bakiye değildir. Eski fatura para birimleri ayrı kalır ve ödemeler destek ile düzenlenir. Bir siparişi yalnızca sunucu API'si, olay geçmişi veya imzalı bir webhook üzerinden payment.fulfillmentReady=true ve payment.status=\"succeeded\" durumunu kontrol ettikten sonra yerine getirin.",
      "readMinutes": 8
    },
    {
      "id": "auth-api",
      "title": "Kimlik doğrulama ve oturum API'si",
      "summary": "Oturum açma, kısa ömürlü bir challenge, Telegram onayı ve orijinal tarayıcı üzerindeki kontrol kanıtı kullanır. İstemci tarafından sağlanan bir Telegram kimliği kimlik kanıtı değildir.",
      "group": "developers",
      "url": "/docs/auth-api",
      "tags": [
        "kimlik doğrulama",
        "oturum",
        "CSRF",
        "challenge",
        "API"
      ],
      "sections": [
        {
          "id": "start",
          "title": "Oturum açmayı başlat",
          "paragraphs": [
            "POST /api/auth/telegram/start boş bir JSON nesnesi {} kabul eder. Tam uygulama Origin'i ve kullanılabilir bir bot gerektirir. Sunucu 300 saniye süren bir challenge ve korumalı bir tarayıcı kanıtı çerezi oluşturur.",
            "201 yanıtı challengeId, code, expiresAt ve telegramUrl içerir. Kanıt çerezi derin bağlantıya dahil edilmez ve JavaScript için erişilemezdir. Sınır, hash'lenmiş adres başına dakikada altı başlatmadır."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "JavaScript",
            "code": "const response = await fetch('/api/auth/telegram/start', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: '{}'\n});\nconst challenge = await response.json();\n// Show code and telegramUrl to the user."
          },
          "note": "",
          "links": []
        },
        {
          "id": "complete",
          "title": "Onay bekleniyor",
          "paragraphs": [
            "POST /api/auth/telegram/complete {challengeId} kabul eder. Origin ve orijinal tarayıcı kanıtı çerezi gerektirir. Onaya kadar yanıt 202 {status: \"pending\"} şeklindedir.",
            "Onaydan sonra 200, status=authenticated, user, csrfToken ve expiresAt döndürür. Oturum yalnızca bir kez düzenlenir. Süresi dolmuş challengelar 410 döndürür; kullanılmış veya iptal edilmiş challengelar 409 döndürür."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "JavaScript",
            "code": "const response = await fetch('/api/auth/telegram/complete', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({ challengeId: challenge.challengeId })\n});\nif (response.status === 202) {\n  // Poll again after a delay; do not create a new challenge.\n}"
          },
          "note": "",
          "links": []
        },
        {
          "id": "me",
          "title": "Oturumu okuma",
          "paragraphs": [
            "GET /api/auth/me, geçerli bir oturum yokken 200 {authenticated:false} döndürür. Oturum açılmış bir yanıt user, CSRF token ve süre sonu içerir.",
            "__Host-kevmi-session çerezi Secure, HttpOnly, SameSite=Lax ve Path=/ ile 24 saate kadar sürer. Veritabanı token'ının SHA-256 hash'ini saklar. Bir profil formu çerezi okuyamaz veya değiştiremez."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "write",
          "title": "Hesap değişiklikleri",
          "paragraphs": [
            "Mutation'lar oturum, tam Origin ve güncel X-CSRF-Token gerektirir. Sec-Fetch-Site: cross-site reddedilir. Sunucu keyfi CORS erişimi sunmaz.",
            "Hesap kimliği istek girdisinden değil oturumdan gelir. Eksik veya başka bir kullanıcıya ait kayıtlar, sahiplik ayrıntılarını ifşa etmez."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "logout",
          "title": "Oturumu kapatma",
          "paragraphs": [
            "POST /api/auth/logout mevcut oturumu sonlandırır ve çerezi temizler. Origin ve CSRF gereklidir; gövde okunmaz. Telegram /logout ayrıca tüm hesap oturumlarını sonlandırır.",
            "Çerezler otomatik olarak başka bir alan adına taşınmaz. Hizmet alan adı değiştirilirken APP_ORIGIN ve bot webhook'u güncelleyin, ardından tekrar oturum açın."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "assistant-admin-v16",
          "title": "Asistan, destek ve proje yönetimi",
          "paragraphs": [
            "İlk Telegram girişi, onaylanmış bir satıcı değil, not_submitted durumuna sahip bir hesap ve bir taslak mağaza oluşturur. Hesap, başvuru formunu veya mevcut incelemeyi açar; ödeme kabul etmek uzman onayı gerektirir. Her yeni mağazanın kendi incelemesi vardır. GET /api/stores, reviewStatus ve applicationId değerlerini döndürür. Bağlı mağazalar toplu erişimi korur ve destek ile dokümantasyon inceleme sırasında kullanılabilir kalır.",
            "Özel işlemlerde yardıma ihtiyacınız olduğunda sohbette verilerime erişimi etkinleştirin. includeAccount=true içeren bir web isteği geçerli bir oturum, Origin ve X-CSRF-Token gerektirir; X-Kevmi-Store sahip olunan bir mağazayı veya tüm sahip olunan mağazaları seçer. İzin olmadan asistan yalnızca genel belgeleri kullanır. Telegram'da, gönderen kimliği doğrulandıktan sonra ayrı bir düğme erişimi etkinleştirir.",
            "read_account aracı sahip olunan mağazaları, doğrulanmış ödeme durumuna sahip faturaları, etkinlikleri, başvuruları ve uzman yanıtlarını içeren destek taleplerini okur. 30 kayıt ve nextPage döndürür; daha eski kayıtlara sayfalama yoluyla erişilir. Yanıt başına okuma sayısı sınırlıdır, bu nedenle eksik bir örnek açıklanmalıdır. API anahtarları, webhook sırları, kart bilgileri ve oturumlar araca sağlanmaz. Araç ücret talep edemez, ödeme yapamaz, geri ödeme yapamaz veya ayarları değiştiremez.",
            "Çalışma alanında veya Telegram'da bir destek talebi oluşturmak, kalıcı bir kuyruğa ayrı bir yönetici uyarısı yerleştirir. /admin/tickets?ticket=<id> bağlantısına bağlanır; geçici Telegram arızaları yeniden denenir. Kurtarma ayrıca uyarısı olmayan daha eski açık talepleri de alır. Yöneticiler talep sayfasında yanıt verir; yanıt kullanıcı çalışma alanına kaydedilir ve destek bildirimleri etkinleştirildiğinde Telegram üzerinden gönderilir.",
            "Bot ana menü, mağazalar, bildirimler, destek, güvenlik ve dil için satır içi düğmeler kullanır. Gezinme geçerli mesajı düzenler; kullanılamayan eski bir menü değiştirilir. Ödeme ve güvenlik bildirimleri tek kullanımlık gezinme olarak ele alınmaz. Menüden çıkış yapmak onay gerektirir. Açık /logout komutu yine de her hesap oturumunu sonlandırır.",
            "/admin/project paneli, sunucu tarafı MODERATOR_TELEGRAM_IDS izin listesindeki Telegram kimlikleriyle sınırlıdır. Kullanıcıları, mağazaları, işlemleri, anahtar iptalini, webhook devre dışı bırakmayı, fatura duraklatmayı, kabul kontrollerini ve bir denetim günlüğünü içerir. Değişiklikler CSRF ve bir gerekçe gerektirir. Panel bir yöneticiyi kısıtlayamaz veya bir ödemeyi manuel olarak başarılı ilan edemez. Bir sahibi kısıtlamak oturumları sonlandırır ve API anahtarı erişimini engeller; bir mağazayı kısıtlamak yeni işlemleri durdurur. Geçmiş korunur.",
            "Kamu teklifi etkinleştirilmiş her dilde /public-offer adresinde, gizlilik politikası ise /privacy-policy adresinde mevcuttur. Madeni paraları ada veya kısaltmaya göre arayın. Birden fazla canlı ağ mevcut olduğunda yalnızca bir ağ seçici görünür. Tek bir ağ otomatik olarak seçilir ve onayda adlandırılmış olarak kalır. Canlı ağ geçidi kullanılabilirliği seçilebilir çiftleri belirler; referans kataloğu bir hizmeti etkinleştirmez.",
            "Rutin web uygulaması sürümleri için update.sh kullanın: adayı derleyin, geçiş geçmişini kontrol edin, SQLite'ı çevrimiçi yedekleyin, ikinci bir kapsayıcı başlatın, doğrulayın ve Caddy'yi sorunsuz şekilde değiştirin. Ağ geçidi, PostgreSQL ve posta yeniden başlatılmaz. Önceki statik varlıklar açık sekmeler için kullanılabilir durumda kalır. Yeni bir geçiş açıkça gözden geçirilmiş yetkilendirme gerektirir; uyumsuz bir şema değişikliği sorunsuz bir dağıtım değildir."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Kamu teklifi",
              "href": "/public-offer"
            },
            {
              "label": "Gizlilik politikası",
              "href": "/privacy-policy"
            }
          ]
        }
      ],
      "body": "Oturum açmayı başlat\n\nPOST /api/auth/telegram/start boş bir JSON nesnesi {} kabul eder. Tam uygulama Origin'i ve kullanılabilir bir bot gerektirir. Sunucu 300 saniye süren bir challenge ve korumalı bir tarayıcı kanıtı çerezi oluşturur.\n\n201 yanıtı challengeId, code, expiresAt ve telegramUrl içerir. Kanıt çerezi derin bağlantıya dahil edilmez ve JavaScript için erişilemezdir. Sınır, hash'lenmiş adres başına dakikada altı başlatmadır.\n\nconst response = await fetch('/api/auth/telegram/start', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: '{}'\n});\nconst challenge = await response.json();\n// Show code and telegramUrl to the user.\n\nOnay bekleniyor\n\nPOST /api/auth/telegram/complete {challengeId} kabul eder. Origin ve orijinal tarayıcı kanıtı çerezi gerektirir. Onaya kadar yanıt 202 {status: \"pending\"} şeklindedir.\n\nOnaydan sonra 200, status=authenticated, user, csrfToken ve expiresAt döndürür. Oturum yalnızca bir kez düzenlenir. Süresi dolmuş challengelar 410 döndürür; kullanılmış veya iptal edilmiş challengelar 409 döndürür.\n\nconst response = await fetch('/api/auth/telegram/complete', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({ challengeId: challenge.challengeId })\n});\nif (response.status === 202) {\n  // Poll again after a delay; do not create a new challenge.\n}\n\nOturumu okuma\n\nGET /api/auth/me, geçerli bir oturum yokken 200 {authenticated:false} döndürür. Oturum açılmış bir yanıt user, CSRF token ve süre sonu içerir.\n\n__Host-kevmi-session çerezi Secure, HttpOnly, SameSite=Lax ve Path=/ ile 24 saate kadar sürer. Veritabanı token'ının SHA-256 hash'ini saklar. Bir profil formu çerezi okuyamaz veya değiştiremez.\n\nHesap değişiklikleri\n\nMutation'lar oturum, tam Origin ve güncel X-CSRF-Token gerektirir. Sec-Fetch-Site: cross-site reddedilir. Sunucu keyfi CORS erişimi sunmaz.\n\nHesap kimliği istek girdisinden değil oturumdan gelir. Eksik veya başka bir kullanıcıya ait kayıtlar, sahiplik ayrıntılarını ifşa etmez.\n\nOturumu kapatma\n\nPOST /api/auth/logout mevcut oturumu sonlandırır ve çerezi temizler. Origin ve CSRF gereklidir; gövde okunmaz. Telegram /logout ayrıca tüm hesap oturumlarını sonlandırır.\n\nÇerezler otomatik olarak başka bir alan adına taşınmaz. Hizmet alan adı değiştirilirken APP_ORIGIN ve bot webhook'u güncelleyin, ardından tekrar oturum açın.\n\nAsistan, destek ve proje yönetimi\n\nİlk Telegram girişi, onaylanmış bir satıcı değil, not_submitted durumuna sahip bir hesap ve bir taslak mağaza oluşturur. Hesap, başvuru formunu veya mevcut incelemeyi açar; ödeme kabul etmek uzman onayı gerektirir. Her yeni mağazanın kendi incelemesi vardır. GET /api/stores, reviewStatus ve applicationId değerlerini döndürür. Bağlı mağazalar toplu erişimi korur ve destek ile dokümantasyon inceleme sırasında kullanılabilir kalır.\n\nÖzel işlemlerde yardıma ihtiyacınız olduğunda sohbette verilerime erişimi etkinleştirin. includeAccount=true içeren bir web isteği geçerli bir oturum, Origin ve X-CSRF-Token gerektirir; X-Kevmi-Store sahip olunan bir mağazayı veya tüm sahip olunan mağazaları seçer. İzin olmadan asistan yalnızca genel belgeleri kullanır. Telegram'da, gönderen kimliği doğrulandıktan sonra ayrı bir düğme erişimi etkinleştirir.\n\nread_account aracı sahip olunan mağazaları, doğrulanmış ödeme durumuna sahip faturaları, etkinlikleri, başvuruları ve uzman yanıtlarını içeren destek taleplerini okur. 30 kayıt ve nextPage döndürür; daha eski kayıtlara sayfalama yoluyla erişilir. Yanıt başına okuma sayısı sınırlıdır, bu nedenle eksik bir örnek açıklanmalıdır. API anahtarları, webhook sırları, kart bilgileri ve oturumlar araca sağlanmaz. Araç ücret talep edemez, ödeme yapamaz, geri ödeme yapamaz veya ayarları değiştiremez.\n\nÇalışma alanında veya Telegram'da bir destek talebi oluşturmak, kalıcı bir kuyruğa ayrı bir yönetici uyarısı yerleştirir. /admin/tickets?ticket=<id> bağlantısına bağlanır; geçici Telegram arızaları yeniden denenir. Kurtarma ayrıca uyarısı olmayan daha eski açık talepleri de alır. Yöneticiler talep sayfasında yanıt verir; yanıt kullanıcı çalışma alanına kaydedilir ve destek bildirimleri etkinleştirildiğinde Telegram üzerinden gönderilir.\n\nBot ana menü, mağazalar, bildirimler, destek, güvenlik ve dil için satır içi düğmeler kullanır. Gezinme geçerli mesajı düzenler; kullanılamayan eski bir menü değiştirilir. Ödeme ve güvenlik bildirimleri tek kullanımlık gezinme olarak ele alınmaz. Menüden çıkış yapmak onay gerektirir. Açık /logout komutu yine de her hesap oturumunu sonlandırır.\n\n/admin/project paneli, sunucu tarafı MODERATOR_TELEGRAM_IDS izin listesindeki Telegram kimlikleriyle sınırlıdır. Kullanıcıları, mağazaları, işlemleri, anahtar iptalini, webhook devre dışı bırakmayı, fatura duraklatmayı, kabul kontrollerini ve bir denetim günlüğünü içerir. Değişiklikler CSRF ve bir gerekçe gerektirir. Panel bir yöneticiyi kısıtlayamaz veya bir ödemeyi manuel olarak başarılı ilan edemez. Bir sahibi kısıtlamak oturumları sonlandırır ve API anahtarı erişimini engeller; bir mağazayı kısıtlamak yeni işlemleri durdurur. Geçmiş korunur.\n\nKamu teklifi etkinleştirilmiş her dilde /public-offer adresinde, gizlilik politikası ise /privacy-policy adresinde mevcuttur. Madeni paraları ada veya kısaltmaya göre arayın. Birden fazla canlı ağ mevcut olduğunda yalnızca bir ağ seçici görünür. Tek bir ağ otomatik olarak seçilir ve onayda adlandırılmış olarak kalır. Canlı ağ geçidi kullanılabilirliği seçilebilir çiftleri belirler; referans kataloğu bir hizmeti etkinleştirmez.\n\nRutin web uygulaması sürümleri için update.sh kullanın: adayı derleyin, geçiş geçmişini kontrol edin, SQLite'ı çevrimiçi yedekleyin, ikinci bir kapsayıcı başlatın, doğrulayın ve Caddy'yi sorunsuz şekilde değiştirin. Ağ geçidi, PostgreSQL ve posta yeniden başlatılmaz. Önceki statik varlıklar açık sekmeler için kullanılabilir durumda kalır. Yeni bir geçiş açıkça gözden geçirilmiş yetkilendirme gerektirir; uyumsuz bir şema değişikliği sorunsuz bir dağıtım değildir.\n\nKamu teklifi\n\nGizlilik politikası",
      "readMinutes": 3
    },
    {
      "id": "errors",
      "title": "Hatalar ve yeniden denemeler",
      "summary": "API hataları tutarlı bir biçim kullanır. Kod uygulama mantığı içindir; mesaj sorunu açıklar. Kullanıcı girdisini koruyun ve net bir sonraki adım sunun.",
      "group": "developers",
      "url": "/docs/errors",
      "tags": [
        "hata",
        "429",
        "503",
        "yeniden dene",
        "durum"
      ],
      "sections": [
        {
          "id": "format",
          "title": "Tek hata biçimi",
          "paragraphs": [
            "Yanıtlar yığın izi, SQL, token veya tam bir harici sağlayıcı yanıtı içermez. Ham iç günlükleri müşteriye göstermeyin."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "JSON",
            "code": "{\n  \"error\": {\n    \"code\": \"GATEWAY_NOT_CONNECTED\",\n    \"message\": \"Financial operations are temporarily unavailable. Try later or contact support.\"\n  }\n}"
          },
          "note": "",
          "links": []
        },
        {
          "id": "codes",
          "title": "Yaygın hata grupları",
          "paragraphs": [],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "HTTP",
              "Örnekler",
              "Sonraki adım"
            ],
            "rows": [
              [
                "400",
                "INVALID_JSON, UNKNOWN_FIELD, INVALID_INPUT",
                "Girdiyi ve izin verilen alanları kontrol edin"
              ],
              [
                "401",
                "AUTH_REQUIRED, SESSION_EXPIRED",
                "Tekrar oturum açın"
              ],
              [
                "403",
                "INVALID_ORIGIN, CSRF_REQUIRED",
                "Origin'i ve güncel oturumu kontrol edin"
              ],
              [
                "404",
                "NOT_FOUND, TICKET_NOT_FOUND",
                "Adresi ve sahipliği kontrol edin"
              ],
              [
                "409",
                "CHALLENGE_UNAVAILABLE",
                "Yeni bir oturum açma başlatın"
              ],
              [
                "410",
                "CHALLENGE_EXPIRED",
                "Yeni bir oturum açma bağlantısı oluşturun"
              ],
              [
                "413",
                "REQUEST_TOO_LARGE",
                "İstek gövdesini küçültün"
              ],
              [
                "415",
                "JSON_REQUIRED",
                "application/json gönderin"
              ],
              [
                "429",
                "RATE_LIMITED",
                "Sıklığı azaltın ve bekleyin"
              ],
              [
                "503",
                "GATEWAY_NOT_CONNECTED, SERVICE_UNAVAILABLE",
                "Kullanılabilirliği kontrol edin veya daha sonra deneyin"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "rate",
          "title": "Oran sınırları",
          "paragraphs": [],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Eylem",
              "Sınır"
            ],
            "rows": [
              [
                "Oturum açmayı başlat",
                "Hash'lenmiş adres başına dakikada 6"
              ],
              [
                "Bir challeng'ı kontrol et",
                "Challenge başına dakikada 90"
              ],
              [
                "Bilgi sorusu",
                "D1 ile hash'lenmiş adres başına dakikada 12"
              ],
              [
                "Sunucu bağlantısı oluştur",
                "Kullanıcı başına dakikada 20"
              ],
              [
                "Satıcı API'si",
                "Anahtar başına dakikada 90 istek"
              ],
              [
                "Yeni uygulama",
                "Kullanıcı başına günde beş"
              ],
              [
                "Uygulamayı sürdür / moderatör kararı",
                "Her işlem için kullanıcı başına dakikada 30"
              ],
              [
                "AI web sitesi incelemesi",
                "Saatte 30, hizmet genelinde"
              ],
              [
                "Ödemeyi oku veya ödeme girişiminde bulun",
                "Karma adres başına dakikada 90"
              ],
              [
                "Destek talebi oluştur",
                "Kullanıcı başına saatte 6"
              ],
              [
                "Bir bildirimi test et",
                "Kullanıcı başına saatte 3"
              ],
              [
                "AI üretimi",
                "Varsayılan olarak hizmet genelinde saatte 60"
              ]
            ]
          },
          "code": null,
          "note": "Retry-After: 60 bir gecikme belirtir, saatlik kotanın sıfırlandığının garantisi değildir.",
          "links": []
        },
        {
          "id": "retry",
          "title": "Neler yeniden denenebilir",
          "paragraphs": [
            "Geçici bir ağ hatasında, bir gecikme sonrası bir okuma yeniden denenebilir. Bir değişikliği yeniden denemeden önce, orijinal işlemin tamamlanıp tamamlanmadığını kontrol edin; kaybolmuş bir yanıt başarısızlık kanıtı değildir.",
            "Finansal işlemler idempotans ve sunucu durum kontrolü gerektirir. İstemcinin sonuç sayfasına yönlendirilmesi, onayın yerine geçmez."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "report",
          "title": "Bir talebe neler dahil edilmeli",
          "paragraphs": [],
          "bullets": [
            "Hatadan hemen önceki sayfa ve işlem.",
            "Zaman, saat dilimi ve görünür hata kodu.",
            "Varsa, faturanız veya destek talebi referansınız.",
            "Beklediğiniz sonucun kısa bir açıklaması."
          ],
          "steps": [],
          "table": null,
          "code": null,
          "note": "Çerezler, belirteçler, yetkilendirme başlıkları, CVV veya bankacılık kodları eklemeyin.",
          "links": []
        }
      ],
      "body": "Tek hata biçimi\n\nYanıtlar yığın izi, SQL, token veya tam bir harici sağlayıcı yanıtı içermez. Ham iç günlükleri müşteriye göstermeyin.\n\n{\n  \"error\": {\n    \"code\": \"GATEWAY_NOT_CONNECTED\",\n    \"message\": \"Financial operations are temporarily unavailable. Try later or contact support.\"\n  }\n}\n\nYaygın hata grupları\n\nHTTP · Örnekler · Sonraki adım\n400 · INVALID_JSON, UNKNOWN_FIELD, INVALID_INPUT · Girdiyi ve izin verilen alanları kontrol edin\n401 · AUTH_REQUIRED, SESSION_EXPIRED · Tekrar oturum açın\n403 · INVALID_ORIGIN, CSRF_REQUIRED · Origin'i ve güncel oturumu kontrol edin\n404 · NOT_FOUND, TICKET_NOT_FOUND · Adresi ve sahipliği kontrol edin\n409 · CHALLENGE_UNAVAILABLE · Yeni bir oturum açma başlatın\n410 · CHALLENGE_EXPIRED · Yeni bir oturum açma bağlantısı oluşturun\n413 · REQUEST_TOO_LARGE · İstek gövdesini küçültün\n415 · JSON_REQUIRED · application/json gönderin\n429 · RATE_LIMITED · Sıklığı azaltın ve bekleyin\n503 · GATEWAY_NOT_CONNECTED, SERVICE_UNAVAILABLE · Kullanılabilirliği kontrol edin veya daha sonra deneyin\n\nOran sınırları\n\nEylem · Sınır\nOturum açmayı başlat · Hash'lenmiş adres başına dakikada 6\nBir challeng'ı kontrol et · Challenge başına dakikada 90\nBilgi sorusu · D1 ile hash'lenmiş adres başına dakikada 12\nSunucu bağlantısı oluştur · Kullanıcı başına dakikada 20\nSatıcı API'si · Anahtar başına dakikada 90 istek\nYeni uygulama · Kullanıcı başına günde beş\nUygulamayı sürdür / moderatör kararı · Her işlem için kullanıcı başına dakikada 30\nAI web sitesi incelemesi · Saatte 30, hizmet genelinde\nÖdemeyi oku veya ödeme girişiminde bulun · Karma adres başına dakikada 90\nDestek talebi oluştur · Kullanıcı başına saatte 6\nBir bildirimi test et · Kullanıcı başına saatte 3\nAI üretimi · Varsayılan olarak hizmet genelinde saatte 60\n\nRetry-After: 60 bir gecikme belirtir, saatlik kotanın sıfırlandığının garantisi değildir.\n\nNeler yeniden denenebilir\n\nGeçici bir ağ hatasında, bir gecikme sonrası bir okuma yeniden denenebilir. Bir değişikliği yeniden denemeden önce, orijinal işlemin tamamlanıp tamamlanmadığını kontrol edin; kaybolmuş bir yanıt başarısızlık kanıtı değildir.\n\nFinansal işlemler idempotans ve sunucu durum kontrolü gerektirir. İstemcinin sonuç sayfasına yönlendirilmesi, onayın yerine geçmez.\n\nBir talebe neler dahil edilmeli\n\nHatadan hemen önceki sayfa ve işlem.\n\nZaman, saat dilimi ve görünür hata kodu.\n\nVarsa, faturanız veya destek talebi referansınız.\n\nBeklediğiniz sonucun kısa bir açıklaması.\n\nÇerezler, belirteçler, yetkilendirme başlıkları, CVV veya bankacılık kodları eklemeyin.",
      "readMinutes": 3
    },
    {
      "id": "security",
      "title": "Entegrasyon güvenliği",
      "summary": "Güvenilir kontroller sunucuda çalışır. Tarayıcı arayüzü kontrol eder, ancak kimliği, finansal durumu veya nihai tutarları belirleyemez.",
      "group": "developers",
      "url": "/docs/security",
      "tags": [
        "güvenlik",
        "CSRF",
        "çerez",
        "sahiplik",
        "sır",
        "idempotency"
      ],
      "sections": [
        {
          "id": "identity",
          "title": "Oturumlar ve sahiplik",
          "paragraphs": [
            "Geçerli bir sunucu oturumu hesabı tanımlar. Ayarlar, talepler, bildirimler ve bağlantılar sahibine göre filtrelenir. Bir formdan gönderilen userId bu filtrenin yerini alamaz.",
            "Değişiklikler ayrıca Origin ve CSRF'yi kontrol eder. Genel bir fatura URL'si yalnızca o faturayı gösterir ve hesap erişimi sağlamaz."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "secrets",
          "title": "Sırlar sunucuda kalır",
          "paragraphs": [
            "Sırlar Git, HTML, istemci JavaScript'i, OpenAPI örnekleri, llms dosyaları veya destek mesajlarında yer almamalıdır. Genel bot kullanıcı adı bir sır değildir."
          ],
          "bullets": [
            "Telegram bot belirteci ve webhook sırrı.",
            "Harici AI sağlayıcı kimlik bilgileri.",
            "Ödeme ağ geçidi kimlik bilgileri ve imzalama sırları.",
            "Oturum karma değerleri ve tarayıcı oturum açma kanıtları."
          ],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "money",
          "title": "Finansal kontroller",
          "paragraphs": [
            "Sunucu kayıtlı fatura koşullarını okur ve sahipliği, satıcı inceleme durumunu, para birimini, yöntemi ve onaylanan tutarı kontrol eder. URL değerleri ve tarayıcı hesaplamaları fiyatı değiştiremez.",
            "İmzalı bir ağ geçidi bildirimi, ek bir kimliği doğrulanmış işlem okuması tetikler. Doğrulanmış durum, makbuz ve olay birlikte kaydedilir. Tekrar oynatmalar ve eski sürümler çift teslimatı doğrulayamaz.",
            "Kart bilgileri ve tek kullanımlık kodlar yalnızca şifreli zarflar olarak iletilir. Ödeme formlarına oturum kaydı, alan okuma analitiği veya istek gövdesi günlüğü eklemeyin."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "assistant",
          "title": "Asistan sınırları",
          "paragraphs": [
            "Model, herkese açık makaleleri ve gerçekleri, sayfa kataloğunu, hazır olma bayraklarını, soruyu, üç son mesaj çiftini ve güvenli bir bölüm etiketini alır. Açık sahip izni hesap okuma araçlarını etkinleştirir; para taşıma veya ayar değiştirme kullanılamaz. Geçersiz yapılandırılmış yanıtlar veya doğrulanmamış kaynaklar belge aramasına geri döner.",
            "Web sitesi ve kullanıcı metinleri veridir. Bir sorunun içindeki bir talimat ücretleri değiştiremez veya bir ödeme yetkilendiremez."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "status",
          "title": "Dokümantasyonun kapsamı",
          "paragraphs": [
            "Dokümantasyon bir PCI DSS sertifikası, bankacılık lisansı, Kayıtlı Satıcı durumu, garantili çalışma süresi veya mutlak güvenlik iddia etmez. Bu tür iddialar ayrı, belgelenmiş onay gerektirir."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        }
      ],
      "body": "Oturumlar ve sahiplik\n\nGeçerli bir sunucu oturumu hesabı tanımlar. Ayarlar, talepler, bildirimler ve bağlantılar sahibine göre filtrelenir. Bir formdan gönderilen userId bu filtrenin yerini alamaz.\n\nDeğişiklikler ayrıca Origin ve CSRF'yi kontrol eder. Genel bir fatura URL'si yalnızca o faturayı gösterir ve hesap erişimi sağlamaz.\n\nSırlar sunucuda kalır\n\nSırlar Git, HTML, istemci JavaScript'i, OpenAPI örnekleri, llms dosyaları veya destek mesajlarında yer almamalıdır. Genel bot kullanıcı adı bir sır değildir.\n\nTelegram bot belirteci ve webhook sırrı.\n\nHarici AI sağlayıcı kimlik bilgileri.\n\nÖdeme ağ geçidi kimlik bilgileri ve imzalama sırları.\n\nOturum karma değerleri ve tarayıcı oturum açma kanıtları.\n\nFinansal kontroller\n\nSunucu kayıtlı fatura koşullarını okur ve sahipliği, satıcı inceleme durumunu, para birimini, yöntemi ve onaylanan tutarı kontrol eder. URL değerleri ve tarayıcı hesaplamaları fiyatı değiştiremez.\n\nİmzalı bir ağ geçidi bildirimi, ek bir kimliği doğrulanmış işlem okuması tetikler. Doğrulanmış durum, makbuz ve olay birlikte kaydedilir. Tekrar oynatmalar ve eski sürümler çift teslimatı doğrulayamaz.\n\nKart bilgileri ve tek kullanımlık kodlar yalnızca şifreli zarflar olarak iletilir. Ödeme formlarına oturum kaydı, alan okuma analitiği veya istek gövdesi günlüğü eklemeyin.\n\nAsistan sınırları\n\nModel, herkese açık makaleleri ve gerçekleri, sayfa kataloğunu, hazır olma bayraklarını, soruyu, üç son mesaj çiftini ve güvenli bir bölüm etiketini alır. Açık sahip izni hesap okuma araçlarını etkinleştirir; para taşıma veya ayar değiştirme kullanılamaz. Geçersiz yapılandırılmış yanıtlar veya doğrulanmamış kaynaklar belge aramasına geri döner.\n\nWeb sitesi ve kullanıcı metinleri veridir. Bir sorunun içindeki bir talimat ücretleri değiştiremez veya bir ödeme yetkilendiremez.\n\nDokümantasyonun kapsamı\n\nDokümantasyon bir PCI DSS sertifikası, bankacılık lisansı, Kayıtlı Satıcı durumu, garantili çalışma süresi veya mutlak güvenlik iddia etmez. Bu tür iddialar ayrı, belgelenmiş onay gerektirir.",
      "readMinutes": 2
    },
    {
      "id": "gateway",
      "title": "Ödeme ağ geçidi entegrasyonu",
      "summary": "Ağ geçidi finansal işlemleri işler. Kevmi bunları siparişlere, mağaza ayarlarına ve bildirimlere bağlar. Bu kılavuz entegrasyon sözleşmesini ve kullanılabilirlik kontrollerini açıklar.",
      "group": "developers",
      "url": "/docs/gateway",
      "tags": [
        "API",
        "ağ geçidi",
        "arka uç",
        "sunucu",
        "entegrasyon",
        "localhost"
      ],
      "sections": [
        {
          "id": "current",
          "title": "Kullanılabilirliği kontrol etme",
          "paragraphs": [
            "Kevmi, ağ geçidi v3 API'sini işlemler oluşturmak ve kurtarmak, durumları okumak ve sonuçları mutabakat sağlamak için kullanır. Entegrasyon, şifreli kart ve banka kodu iletimini, Alipay ve SBP QR ödemelerini, bir kripto para/şebeke kataloğunu ve gelen finansal olayları destekler.",
            "gateway.configured GET /api/config içinde gerekli bağlantı ayarlarının mevcut olup olmadığını bildirir. Bu uç nokta ağ geçidini yoklamaz; gateway.connected=false burada bağlantının doğrulanmadığı anlamına gelir. Belirli bir fatura için, GET /api/checkout/{token} içinde invoice.availability okuyun: yöntemi, tutarı, koşulları ve satıcı onayını kontrol eder. invoice.gatewayConnected uyumluluk alanı availability.available'ı yansıtır ve ne bir sağlık kontrolü ne de ödeme onayının garantisidir.",
            "Yeni bir ödeme ve kart niyeti, satıcının en son web sitesi inceleme başvurusunun onaylanmasını gerektirir. Onay tek başına ödeme ağ geçidini bağlamaz. İnceleme gönderimden sonra değişirse, mevcut işlem durum okumaları, mutabakat ve talep edilen banka kodu için kullanılabilir kalır."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "required",
          "title": "Müşteri ödeme sözleşmesi",
          "paragraphs": [
            "Hassas veriler tarayıcıda RSA-OAEP-256 ve A256GCM ile şifrelenir. Özel anahtar ağ geçidinde kalır. Kevmi niyetin bu faturaya ve amaca ait olduğunu doğrular, zarfı iletir ve düz metin kart numaralarını, CVV'yi, alıcı adını, e-postayı, banka kodlarını veya zarfın kendisini saklamaz.",
            "Kartları etkinleştirmeden önce şifreli iletim uzantısını ağ geçidi ana bilgisayarına kurun. Niyet imzasını, süre sonunu, tekrar oynatmayı, siparişi ve tutarları kontrol eder. Düz metin geri dönüşü yoktur. Bu koruma mekanizmasını açıklar, PCI sertifikasını değil."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Kevmi yolu",
              "Amaç"
            ],
            "rows": [
              [
                "GET /api/checkout/{token}",
                "Fatura, teklif, yöntem kullanılabilirliği ve mevcut ödeme"
              ],
              [
                "POST /api/checkout/{token}/card-intent",
                "Tek seferlik niyet ve kart veya kod ödemesi için genel anahtar"
              ],
              [
                "POST /api/checkout/{token}/pay",
                "Bir işlem başlatın; kart kapalı biçimde gönderilir: {intent,jwe}"
              ],
              [
                "POST /api/checkout/{token}/code",
                "Geçerli banka doğrulaması için şifrelenmiş tek seferlik kod"
              ],
              [
                "GET /api/checkout/{token}/status",
                "Ekstra ücret olmadan orijinal işlemi okuyun"
              ],
              [
                "POST /api/checkout/{token}/reconcile",
                "Orijinal işlemi açıkça mutabakat sağlayın"
              ],
              [
                "GET /api/checkout/{token}/crypto-services",
                "USDT faturası için mevcut coinler, ağlar ve limitler"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "network",
          "title": "Barındırma ve ağ geçidi bağlantısı",
          "paragraphs": [
            "Kevmi, Cloudflare Workers üzerinde D1 ile Sites barındırma ve Node.js üzerinde SQLite ile kendi kendine barındırmayı destekler. SQLite kalıcı bir birim ve yedekleme gerektirir. Ödeme ağ geçidi, kendi kalıcı depolama alanıyla ayrı bir hizmet olarak çalışır.",
            "Harici bir ağ geçidi, sunucunun erişebileceği bir HTTPS kaynağı gerektirir. Kendi kendine barındırılan pakette, sunucu özel konteyner ağında sabit bir ağ geçidi hizmetine bağlanır; ağ geçidi hizmet API'si internete açık değildir. Genel site ve geri çağrılar HTTPS kullanır. Tarayıcı ayrıca kart ayrıntılarını ve banka kodlarını Kevmi'ye ulaşmadan önce şifreler.",
            "localhost geçerli sunucu veya konteyneri ifade eder; ağ geçidi sahibinin bilgisayarını açığa çıkarmaz. Bağlantı anahtarları ve sırlar yalnızca sunucu yapılandırmasında bulunur.",
            "Özel bir alan adı için, derlemeden önce NEXT_PUBLIC_SITE_URL içinde genel bir HTTPS kaynağı ayarlayın. Dokümantasyon, kanonik bağlantılar ve dizinleme kaynakları bu değeri kullanır. Yalnızca şema ve isteğe bağlı bağlantı noktası olan bir ana bilgisayar kabul eder; yol, sorgu, parça veya kimlik bilgileri olmadan. Bunu sunucu yapılandırmasındaki APP_ORIGIN ile eşleştirin."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "adapter",
          "title": "Hesaplama ve desteklenen koşullar",
          "paragraphs": [
            "Yeni çalışma alanı faturaları USD taban fiyat kullanır ve Any dört yöntemin tümünü sunar. SBP, donmuş Rusya Merkez Bankası referans kuru üzerinden RUB'a çevrilir; kripto, açık 1:1 USD/USDT fatura kuralını kullanır. Eski yerel fiyatlandırma, eski faturalar ve pricingMode=universal olmayan API istekleri için kullanılabilir durumda kalır. Aşağıdaki çoklu mağaza ve USD fiyatlandırma bölümüne bakın.",
            "Yeni bir canlı kart veya Alipay ödemesi için mevcut ağ geçidi yalnızca feeCustomerPercent=0 ve vatCustomerPercent=100'ü destekler: satıcı tüm işlem ücretini karşılar ve KDV müşteri için tam olarak eklenir. Diğer paylar bir faturada kaydedilip hesaplanabilir, ancak yürütme unsupported_allocation ile engellenir. Sunucu kaydedilmiş koşulları sessizce asla değiştirmez. SBP ve USDT kripto ödemeleri tüm işlem ücreti paylarını destekler ve KDV içermez.",
            "Rastgele bir total_cents göndermek sağlayıcının vergi hesaplamasını değiştirmez. Kaydedilen toplamdan farklı olan gerçek bir tutar incelemeye girer ve yerine getirmeyi onaylayamaz. Ağ geçidi business_balance alanları, Kevmi tüccar bakiyesi olarak değil, uzlaşma kanıtı olarak saklanır."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "activation",
          "title": "Canlı bir ağ geçidi bağlama",
          "paragraphs": [
            "Ağ geçidini bağlamak sunucu yapılandırması, seçilen kanallar için kontroller ve doğrulanmış finansal olayların işlenmesini içerir. Yapılandırma hazırlığı, sağlayıcı bağlantısından ayrı olarak kontrol edilir. Başarılı bir ödeme, işlem durumu ve tutarı doğrulandıktan sonra kabul edilir. Dağıtım talimatları ops/gateway-integration.md içindedir."
          ],
          "bullets": [],
          "steps": [
            "Kevmi sunucusunu ve ağ geçidini ayrı hizmetler olarak dağıtın. Kalıcı depolama, yedeklemeler ve gerekli arka plan işlemlerini yapılandırın.",
            "Harici bir bağlantı için GATEWAY_BASE_URL içinde bir HTTPS kaynağı ayarlayın. Kendi kendine barındırılan paket, yapılandırılmış dahili hizmetini kullanır. Her ikisi de yalnızca sunucuya özel bir GATEWAY_API_KEY ve ayrı bir GATEWAY_WEBHOOK_SECRET gerektirir; sırlar asla tarayıcıya ulaşmaz.",
            "Ağ geçidi BACKEND_WEBHOOK_URL'yi Kevmi'de /api/gateway/webhook olarak ve eşleşen bir BACKEND_WEBHOOK_SECRET ayarlayın.",
            "Şifrelenmiş kart taşımacılığını etkinleştirin ve özel anahtarını yalnızca ağ geçidi ana bilgisayarında tutun. Genel anahtar kullanılabilirliğini ve eşleşen niyet imzalama ayarlarını kontrol edin.",
            "Başlatmadan önce kanal hazırlığını, kısıtlamaları ve tüccar web sitesi onayını kontrol edin."
          ],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Webhooklar ve tekrarlanan olaylar",
              "href": "/docs/webhooks"
            },
            {
              "label": "Güvenlik",
              "href": "/docs/security"
            }
          ]
        },
        {
          "id": "stores-usd",
          "title": "Birden fazla mağaza ve tek USD taban fiyat",
          "paragraphs": [
            "Toplu analiz ve işlemler için Tüm mağazaları seçin veya kendi kayıtları için bir mağaza seçin. Her mağazanın ayrı bir storeId'si, adı, varsayılan KDV'si, faturaları, API anahtarları, webhook uç noktaları, olay geçmişi ve web sitesi uygulaması vardır. Bildirimler ve destek talepleri hesaba aittir. Bir hesap en fazla 100 mağaza oluşturabilir. Mevcut kayıtlar ilk mağazasında kalır.",
            "Yeni çalışma alanı faturaları pricingMode=\"universal\" ve USD taban fiyat kullanır. Any, kart, alipay, sbp ve kriptoyu içerir; bir satıcı bir alt küme seçebilir. Kartlar ve Alipay USD tahsil eder. SBP, Rusya Merkez Bankası USD/RUB referans kurunu kullanarak RUB tahsil eder. Kripto, açık fatura kuralı 1 USD = 1 USDT kapsamında USDT tahsil eder. Bu bir fatura dönüştürme kuralıdır, piyasa USDT kotasyonu değildir. Ağ geçidi, transferden önce seçilen coin'in kurunu, tam transfer tutarını ve talimatlarını sağlar.",
            "Referans kuru ve her iki tutar oluşturma sırasında dondurulur. RUB dönüştürmesi içeren faturalar 24 saat içinde sona erer. Referans kuru alınamazsa, oluşturma FX_UNAVAILABLE ile başarısız olur; uydurulmuş veya bayat yedek kur kullanılmaz. Sahip yanıt tutarı ve kotasyonlar USD muhasebe para birimini kullanır. quotes[method].settlement, yerel tahsil kotasyonunu içerir. Genel ödeme sayfası, seçilen tahsil para birimini currency içinde, orijinal fiyatı baseAmountMinor/baseCurrency içinde ve referans kurunu fx içinde gösterir. Bir ödeme gönderildikten sonra yöntemi değiştirilemez; bir faturanın tek ağ geçidi işlemi vardır.",
            "Amaçlanan mağaza içinde bir API anahtarı oluşturun ve sunucunuzdan Authorization: Bearer <key> gönderin. Mağaza bağlaması değişmezdir; X-Kevmi-Store, anahtara başka bir mağazaya erişim izni veremez. Tarayıcı oturumları X-Kevmi-Store: <storeId> seçer; atlanırsa ilk mağaza seçilir. all değeri yalnızca GET /api/account/dashboard ve GET /api/payment-links tarafından kabul edilir. Değişiklikler seçili bir mağaza, Origin ve X-CSRF-Token gerektirir. Hesap kimlikleri ve mağaza kimlikleri farklı tanımlayıcılardır.",
            "Uyumluluk için, pricingMode=\"universal\" içermeyen API istekleri yerel fiyatlandırmayı ve orijinal para birimi kısıtlamalarını korur. Mevcut faturalar asla yeniden hesaplanmaz. Analizlerdeki onaylanmış tahsilatlar, doğrulanmış ödemelerden kaydedilmiş fatura giderlerinin düşülmesiyle elde edilir; bunlar çekilebilir bakiye değildir. Eski fatura para birimleri ayrı kalır ve ödemeler destek ile düzenlenir. Bir siparişi yalnızca sunucu API'si, olay geçmişi veya imzalı bir webhook üzerinden payment.fulfillmentReady=true ve payment.status=\"succeeded\" durumunu kontrol ettikten sonra yerine getirin."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "assistant-admin-v16",
          "title": "Asistan, destek ve proje yönetimi",
          "paragraphs": [
            "İlk Telegram girişi, onaylanmış bir satıcı değil, not_submitted durumuna sahip bir hesap ve bir taslak mağaza oluşturur. Hesap, başvuru formunu veya mevcut incelemeyi açar; ödeme kabul etmek uzman onayı gerektirir. Her yeni mağazanın kendi incelemesi vardır. GET /api/stores, reviewStatus ve applicationId değerlerini döndürür. Bağlı mağazalar toplu erişimi korur ve destek ile dokümantasyon inceleme sırasında kullanılabilir kalır.",
            "Özel işlemlerde yardıma ihtiyacınız olduğunda sohbette verilerime erişimi etkinleştirin. includeAccount=true içeren bir web isteği geçerli bir oturum, Origin ve X-CSRF-Token gerektirir; X-Kevmi-Store sahip olunan bir mağazayı veya tüm sahip olunan mağazaları seçer. İzin olmadan asistan yalnızca genel belgeleri kullanır. Telegram'da, gönderen kimliği doğrulandıktan sonra ayrı bir düğme erişimi etkinleştirir.",
            "read_account aracı sahip olunan mağazaları, doğrulanmış ödeme durumuna sahip faturaları, etkinlikleri, başvuruları ve uzman yanıtlarını içeren destek taleplerini okur. 30 kayıt ve nextPage döndürür; daha eski kayıtlara sayfalama yoluyla erişilir. Yanıt başına okuma sayısı sınırlıdır, bu nedenle eksik bir örnek açıklanmalıdır. API anahtarları, webhook sırları, kart bilgileri ve oturumlar araca sağlanmaz. Araç ücret talep edemez, ödeme yapamaz, geri ödeme yapamaz veya ayarları değiştiremez.",
            "Çalışma alanında veya Telegram'da bir destek talebi oluşturmak, kalıcı bir kuyruğa ayrı bir yönetici uyarısı yerleştirir. /admin/tickets?ticket=<id> bağlantısına bağlanır; geçici Telegram arızaları yeniden denenir. Kurtarma ayrıca uyarısı olmayan daha eski açık talepleri de alır. Yöneticiler talep sayfasında yanıt verir; yanıt kullanıcı çalışma alanına kaydedilir ve destek bildirimleri etkinleştirildiğinde Telegram üzerinden gönderilir.",
            "Bot ana menü, mağazalar, bildirimler, destek, güvenlik ve dil için satır içi düğmeler kullanır. Gezinme geçerli mesajı düzenler; kullanılamayan eski bir menü değiştirilir. Ödeme ve güvenlik bildirimleri tek kullanımlık gezinme olarak ele alınmaz. Menüden çıkış yapmak onay gerektirir. Açık /logout komutu yine de her hesap oturumunu sonlandırır.",
            "/admin/project paneli, sunucu tarafı MODERATOR_TELEGRAM_IDS izin listesindeki Telegram kimlikleriyle sınırlıdır. Kullanıcıları, mağazaları, işlemleri, anahtar iptalini, webhook devre dışı bırakmayı, fatura duraklatmayı, kabul kontrollerini ve bir denetim günlüğünü içerir. Değişiklikler CSRF ve bir gerekçe gerektirir. Panel bir yöneticiyi kısıtlayamaz veya bir ödemeyi manuel olarak başarılı ilan edemez. Bir sahibi kısıtlamak oturumları sonlandırır ve API anahtarı erişimini engeller; bir mağazayı kısıtlamak yeni işlemleri durdurur. Geçmiş korunur.",
            "Kamu teklifi etkinleştirilmiş her dilde /public-offer adresinde, gizlilik politikası ise /privacy-policy adresinde mevcuttur. Madeni paraları ada veya kısaltmaya göre arayın. Birden fazla canlı ağ mevcut olduğunda yalnızca bir ağ seçici görünür. Tek bir ağ otomatik olarak seçilir ve onayda adlandırılmış olarak kalır. Canlı ağ geçidi kullanılabilirliği seçilebilir çiftleri belirler; referans kataloğu bir hizmeti etkinleştirmez.",
            "Rutin web uygulaması sürümleri için update.sh kullanın: adayı derleyin, geçiş geçmişini kontrol edin, SQLite'ı çevrimiçi yedekleyin, ikinci bir kapsayıcı başlatın, doğrulayın ve Caddy'yi sorunsuz şekilde değiştirin. Ağ geçidi, PostgreSQL ve posta yeniden başlatılmaz. Önceki statik varlıklar açık sekmeler için kullanılabilir durumda kalır. Yeni bir geçiş açıkça gözden geçirilmiş yetkilendirme gerektirir; uyumsuz bir şema değişikliği sorunsuz bir dağıtım değildir."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Kamu teklifi",
              "href": "/public-offer"
            },
            {
              "label": "Gizlilik politikası",
              "href": "/privacy-policy"
            }
          ]
        }
      ],
      "body": "Kullanılabilirliği kontrol etme\n\nKevmi, ağ geçidi v3 API'sini işlemler oluşturmak ve kurtarmak, durumları okumak ve sonuçları mutabakat sağlamak için kullanır. Entegrasyon, şifreli kart ve banka kodu iletimini, Alipay ve SBP QR ödemelerini, bir kripto para/şebeke kataloğunu ve gelen finansal olayları destekler.\n\ngateway.configured GET /api/config içinde gerekli bağlantı ayarlarının mevcut olup olmadığını bildirir. Bu uç nokta ağ geçidini yoklamaz; gateway.connected=false burada bağlantının doğrulanmadığı anlamına gelir. Belirli bir fatura için, GET /api/checkout/{token} içinde invoice.availability okuyun: yöntemi, tutarı, koşulları ve satıcı onayını kontrol eder. invoice.gatewayConnected uyumluluk alanı availability.available'ı yansıtır ve ne bir sağlık kontrolü ne de ödeme onayının garantisidir.\n\nYeni bir ödeme ve kart niyeti, satıcının en son web sitesi inceleme başvurusunun onaylanmasını gerektirir. Onay tek başına ödeme ağ geçidini bağlamaz. İnceleme gönderimden sonra değişirse, mevcut işlem durum okumaları, mutabakat ve talep edilen banka kodu için kullanılabilir kalır.\n\nMüşteri ödeme sözleşmesi\n\nHassas veriler tarayıcıda RSA-OAEP-256 ve A256GCM ile şifrelenir. Özel anahtar ağ geçidinde kalır. Kevmi niyetin bu faturaya ve amaca ait olduğunu doğrular, zarfı iletir ve düz metin kart numaralarını, CVV'yi, alıcı adını, e-postayı, banka kodlarını veya zarfın kendisini saklamaz.\n\nKartları etkinleştirmeden önce şifreli iletim uzantısını ağ geçidi ana bilgisayarına kurun. Niyet imzasını, süre sonunu, tekrar oynatmayı, siparişi ve tutarları kontrol eder. Düz metin geri dönüşü yoktur. Bu koruma mekanizmasını açıklar, PCI sertifikasını değil.\n\nKevmi yolu · Amaç\nGET /api/checkout/{token} · Fatura, teklif, yöntem kullanılabilirliği ve mevcut ödeme\nPOST /api/checkout/{token}/card-intent · Tek seferlik niyet ve kart veya kod ödemesi için genel anahtar\nPOST /api/checkout/{token}/pay · Bir işlem başlatın; kart kapalı biçimde gönderilir: {intent,jwe}\nPOST /api/checkout/{token}/code · Geçerli banka doğrulaması için şifrelenmiş tek seferlik kod\nGET /api/checkout/{token}/status · Ekstra ücret olmadan orijinal işlemi okuyun\nPOST /api/checkout/{token}/reconcile · Orijinal işlemi açıkça mutabakat sağlayın\nGET /api/checkout/{token}/crypto-services · USDT faturası için mevcut coinler, ağlar ve limitler\n\nBarındırma ve ağ geçidi bağlantısı\n\nKevmi, Cloudflare Workers üzerinde D1 ile Sites barındırma ve Node.js üzerinde SQLite ile kendi kendine barındırmayı destekler. SQLite kalıcı bir birim ve yedekleme gerektirir. Ödeme ağ geçidi, kendi kalıcı depolama alanıyla ayrı bir hizmet olarak çalışır.\n\nHarici bir ağ geçidi, sunucunun erişebileceği bir HTTPS kaynağı gerektirir. Kendi kendine barındırılan pakette, sunucu özel konteyner ağında sabit bir ağ geçidi hizmetine bağlanır; ağ geçidi hizmet API'si internete açık değildir. Genel site ve geri çağrılar HTTPS kullanır. Tarayıcı ayrıca kart ayrıntılarını ve banka kodlarını Kevmi'ye ulaşmadan önce şifreler.\n\nlocalhost geçerli sunucu veya konteyneri ifade eder; ağ geçidi sahibinin bilgisayarını açığa çıkarmaz. Bağlantı anahtarları ve sırlar yalnızca sunucu yapılandırmasında bulunur.\n\nÖzel bir alan adı için, derlemeden önce NEXT_PUBLIC_SITE_URL içinde genel bir HTTPS kaynağı ayarlayın. Dokümantasyon, kanonik bağlantılar ve dizinleme kaynakları bu değeri kullanır. Yalnızca şema ve isteğe bağlı bağlantı noktası olan bir ana bilgisayar kabul eder; yol, sorgu, parça veya kimlik bilgileri olmadan. Bunu sunucu yapılandırmasındaki APP_ORIGIN ile eşleştirin.\n\nHesaplama ve desteklenen koşullar\n\nYeni çalışma alanı faturaları USD taban fiyat kullanır ve Any dört yöntemin tümünü sunar. SBP, donmuş Rusya Merkez Bankası referans kuru üzerinden RUB'a çevrilir; kripto, açık 1:1 USD/USDT fatura kuralını kullanır. Eski yerel fiyatlandırma, eski faturalar ve pricingMode=universal olmayan API istekleri için kullanılabilir durumda kalır. Aşağıdaki çoklu mağaza ve USD fiyatlandırma bölümüne bakın.\n\nYeni bir canlı kart veya Alipay ödemesi için mevcut ağ geçidi yalnızca feeCustomerPercent=0 ve vatCustomerPercent=100'ü destekler: satıcı tüm işlem ücretini karşılar ve KDV müşteri için tam olarak eklenir. Diğer paylar bir faturada kaydedilip hesaplanabilir, ancak yürütme unsupported_allocation ile engellenir. Sunucu kaydedilmiş koşulları sessizce asla değiştirmez. SBP ve USDT kripto ödemeleri tüm işlem ücreti paylarını destekler ve KDV içermez.\n\nRastgele bir total_cents göndermek sağlayıcının vergi hesaplamasını değiştirmez. Kaydedilen toplamdan farklı olan gerçek bir tutar incelemeye girer ve yerine getirmeyi onaylayamaz. Ağ geçidi business_balance alanları, Kevmi tüccar bakiyesi olarak değil, uzlaşma kanıtı olarak saklanır.\n\nCanlı bir ağ geçidi bağlama\n\nAğ geçidini bağlamak sunucu yapılandırması, seçilen kanallar için kontroller ve doğrulanmış finansal olayların işlenmesini içerir. Yapılandırma hazırlığı, sağlayıcı bağlantısından ayrı olarak kontrol edilir. Başarılı bir ödeme, işlem durumu ve tutarı doğrulandıktan sonra kabul edilir. Dağıtım talimatları ops/gateway-integration.md içindedir.\n\nKevmi sunucusunu ve ağ geçidini ayrı hizmetler olarak dağıtın. Kalıcı depolama, yedeklemeler ve gerekli arka plan işlemlerini yapılandırın.\n\nHarici bir bağlantı için GATEWAY_BASE_URL içinde bir HTTPS kaynağı ayarlayın. Kendi kendine barındırılan paket, yapılandırılmış dahili hizmetini kullanır. Her ikisi de yalnızca sunucuya özel bir GATEWAY_API_KEY ve ayrı bir GATEWAY_WEBHOOK_SECRET gerektirir; sırlar asla tarayıcıya ulaşmaz.\n\nAğ geçidi BACKEND_WEBHOOK_URL'yi Kevmi'de /api/gateway/webhook olarak ve eşleşen bir BACKEND_WEBHOOK_SECRET ayarlayın.\n\nŞifrelenmiş kart taşımacılığını etkinleştirin ve özel anahtarını yalnızca ağ geçidi ana bilgisayarında tutun. Genel anahtar kullanılabilirliğini ve eşleşen niyet imzalama ayarlarını kontrol edin.\n\nBaşlatmadan önce kanal hazırlığını, kısıtlamaları ve tüccar web sitesi onayını kontrol edin.\n\nWebhooklar ve tekrarlanan olaylar\n\nGüvenlik\n\nBirden fazla mağaza ve tek USD taban fiyat\n\nToplu analiz ve işlemler için Tüm mağazaları seçin veya kendi kayıtları için bir mağaza seçin. Her mağazanın ayrı bir storeId'si, adı, varsayılan KDV'si, faturaları, API anahtarları, webhook uç noktaları, olay geçmişi ve web sitesi uygulaması vardır. Bildirimler ve destek talepleri hesaba aittir. Bir hesap en fazla 100 mağaza oluşturabilir. Mevcut kayıtlar ilk mağazasında kalır.\n\nYeni çalışma alanı faturaları pricingMode=\"universal\" ve USD taban fiyat kullanır. Any, kart, alipay, sbp ve kriptoyu içerir; bir satıcı bir alt küme seçebilir. Kartlar ve Alipay USD tahsil eder. SBP, Rusya Merkez Bankası USD/RUB referans kurunu kullanarak RUB tahsil eder. Kripto, açık fatura kuralı 1 USD = 1 USDT kapsamında USDT tahsil eder. Bu bir fatura dönüştürme kuralıdır, piyasa USDT kotasyonu değildir. Ağ geçidi, transferden önce seçilen coin'in kurunu, tam transfer tutarını ve talimatlarını sağlar.\n\nReferans kuru ve her iki tutar oluşturma sırasında dondurulur. RUB dönüştürmesi içeren faturalar 24 saat içinde sona erer. Referans kuru alınamazsa, oluşturma FX_UNAVAILABLE ile başarısız olur; uydurulmuş veya bayat yedek kur kullanılmaz. Sahip yanıt tutarı ve kotasyonlar USD muhasebe para birimini kullanır. quotes[method].settlement, yerel tahsil kotasyonunu içerir. Genel ödeme sayfası, seçilen tahsil para birimini currency içinde, orijinal fiyatı baseAmountMinor/baseCurrency içinde ve referans kurunu fx içinde gösterir. Bir ödeme gönderildikten sonra yöntemi değiştirilemez; bir faturanın tek ağ geçidi işlemi vardır.\n\nAmaçlanan mağaza içinde bir API anahtarı oluşturun ve sunucunuzdan Authorization: Bearer <key> gönderin. Mağaza bağlaması değişmezdir; X-Kevmi-Store, anahtara başka bir mağazaya erişim izni veremez. Tarayıcı oturumları X-Kevmi-Store: <storeId> seçer; atlanırsa ilk mağaza seçilir. all değeri yalnızca GET /api/account/dashboard ve GET /api/payment-links tarafından kabul edilir. Değişiklikler seçili bir mağaza, Origin ve X-CSRF-Token gerektirir. Hesap kimlikleri ve mağaza kimlikleri farklı tanımlayıcılardır.\n\nUyumluluk için, pricingMode=\"universal\" içermeyen API istekleri yerel fiyatlandırmayı ve orijinal para birimi kısıtlamalarını korur. Mevcut faturalar asla yeniden hesaplanmaz. Analizlerdeki onaylanmış tahsilatlar, doğrulanmış ödemelerden kaydedilmiş fatura giderlerinin düşülmesiyle elde edilir; bunlar çekilebilir bakiye değildir. Eski fatura para birimleri ayrı kalır ve ödemeler destek ile düzenlenir. Bir siparişi yalnızca sunucu API'si, olay geçmişi veya imzalı bir webhook üzerinden payment.fulfillmentReady=true ve payment.status=\"succeeded\" durumunu kontrol ettikten sonra yerine getirin.\n\nAsistan, destek ve proje yönetimi\n\nİlk Telegram girişi, onaylanmış bir satıcı değil, not_submitted durumuna sahip bir hesap ve bir taslak mağaza oluşturur. Hesap, başvuru formunu veya mevcut incelemeyi açar; ödeme kabul etmek uzman onayı gerektirir. Her yeni mağazanın kendi incelemesi vardır. GET /api/stores, reviewStatus ve applicationId değerlerini döndürür. Bağlı mağazalar toplu erişimi korur ve destek ile dokümantasyon inceleme sırasında kullanılabilir kalır.\n\nÖzel işlemlerde yardıma ihtiyacınız olduğunda sohbette verilerime erişimi etkinleştirin. includeAccount=true içeren bir web isteği geçerli bir oturum, Origin ve X-CSRF-Token gerektirir; X-Kevmi-Store sahip olunan bir mağazayı veya tüm sahip olunan mağazaları seçer. İzin olmadan asistan yalnızca genel belgeleri kullanır. Telegram'da, gönderen kimliği doğrulandıktan sonra ayrı bir düğme erişimi etkinleştirir.\n\nread_account aracı sahip olunan mağazaları, doğrulanmış ödeme durumuna sahip faturaları, etkinlikleri, başvuruları ve uzman yanıtlarını içeren destek taleplerini okur. 30 kayıt ve nextPage döndürür; daha eski kayıtlara sayfalama yoluyla erişilir. Yanıt başına okuma sayısı sınırlıdır, bu nedenle eksik bir örnek açıklanmalıdır. API anahtarları, webhook sırları, kart bilgileri ve oturumlar araca sağlanmaz. Araç ücret talep edemez, ödeme yapamaz, geri ödeme yapamaz veya ayarları değiştiremez.\n\nÇalışma alanında veya Telegram'da bir destek talebi oluşturmak, kalıcı bir kuyruğa ayrı bir yönetici uyarısı yerleştirir. /admin/tickets?ticket=<id> bağlantısına bağlanır; geçici Telegram arızaları yeniden denenir. Kurtarma ayrıca uyarısı olmayan daha eski açık talepleri de alır. Yöneticiler talep sayfasında yanıt verir; yanıt kullanıcı çalışma alanına kaydedilir ve destek bildirimleri etkinleştirildiğinde Telegram üzerinden gönderilir.\n\nBot ana menü, mağazalar, bildirimler, destek, güvenlik ve dil için satır içi düğmeler kullanır. Gezinme geçerli mesajı düzenler; kullanılamayan eski bir menü değiştirilir. Ödeme ve güvenlik bildirimleri tek kullanımlık gezinme olarak ele alınmaz. Menüden çıkış yapmak onay gerektirir. Açık /logout komutu yine de her hesap oturumunu sonlandırır.\n\n/admin/project paneli, sunucu tarafı MODERATOR_TELEGRAM_IDS izin listesindeki Telegram kimlikleriyle sınırlıdır. Kullanıcıları, mağazaları, işlemleri, anahtar iptalini, webhook devre dışı bırakmayı, fatura duraklatmayı, kabul kontrollerini ve bir denetim günlüğünü içerir. Değişiklikler CSRF ve bir gerekçe gerektirir. Panel bir yöneticiyi kısıtlayamaz veya bir ödemeyi manuel olarak başarılı ilan edemez. Bir sahibi kısıtlamak oturumları sonlandırır ve API anahtarı erişimini engeller; bir mağazayı kısıtlamak yeni işlemleri durdurur. Geçmiş korunur.\n\nKamu teklifi etkinleştirilmiş her dilde /public-offer adresinde, gizlilik politikası ise /privacy-policy adresinde mevcuttur. Madeni paraları ada veya kısaltmaya göre arayın. Birden fazla canlı ağ mevcut olduğunda yalnızca bir ağ seçici görünür. Tek bir ağ otomatik olarak seçilir ve onayda adlandırılmış olarak kalır. Canlı ağ geçidi kullanılabilirliği seçilebilir çiftleri belirler; referans kataloğu bir hizmeti etkinleştirmez.\n\nRutin web uygulaması sürümleri için update.sh kullanın: adayı derleyin, geçiş geçmişini kontrol edin, SQLite'ı çevrimiçi yedekleyin, ikinci bir kapsayıcı başlatın, doğrulayın ve Caddy'yi sorunsuz şekilde değiştirin. Ağ geçidi, PostgreSQL ve posta yeniden başlatılmaz. Önceki statik varlıklar açık sekmeler için kullanılabilir durumda kalır. Yeni bir geçiş açıkça gözden geçirilmiş yetkilendirme gerektirir; uyumsuz bir şema değişikliği sorunsuz bir dağıtım değildir.\n\nKamu teklifi\n\nGizlilik politikası",
      "readMinutes": 6
    },
    {
      "id": "webhooks",
      "title": "Webhooklar: olaylar, imzalar ve teslimat",
      "summary": "Genel bir HTTPS uç noktası kaydedin, kontrolü kanıtlayın ve imzalı fatura ve ödeme olaylarını alın. Teslimat kalıcı olarak kuyruğa alınır; aynı olayı tekrar işlemek siparişiniz için güvenli olmalıdır.",
      "tags": [
        "webhook",
        "imza",
        "HMAC",
        "idempotency",
        "olay",
        "yeniden dene"
      ],
      "sections": [
        {
          "id": "sources",
          "title": "Olaylar nereden gelir",
          "paragraphs": [
            "invoice.created ödendiği anlamına gelmez. Ödeme olayları, geçerli bir ağ geçidi okumasından sonra doğrulanmış bir sunucu işleminden gelir; yalnızca gelen bir olay adı yetersizdir.",
            "Ağ geçidi → Kevmi girişi ve Kevmi → tüccar teslimatı, ayrı sırlara sahip farklı bacaklardır. Tarayıcı, geri dönüş navigasyonu ve araç pencere öğesi mesajları finansal durum belirlemez."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Olay",
              "Kaynak"
            ],
            "rows": [
              [
                "invoice.created",
                "Fatura kaydedildi"
              ],
              [
                "invoice.updated",
                "Bağlantı kullanılabilirliği değişti"
              ],
              [
                "payment.succeeded",
                "Sunucu tarafından doğrulanmış kesin ödeme"
              ],
              [
                "payment.failed",
                "Başarısız işlem doğrulandı"
              ],
              [
                "payment.refunded",
                "Tam iade doğrulandı"
              ],
              [
                "payment.partially_refunded",
                "Kısmi iade doğrulandı"
              ],
              [
                "payment.disputed",
                "İtiraz doğrulandı"
              ],
              [
                "payment.review_required",
                "İşlem ek inceleme gerektirir"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "setup",
          "title": "Bir uç nokta kaydedin ve doğrulayın",
          "paragraphs": [
            "URL'ler IP adreslerini, localhost'u, özel ağları, standart dışı bağlantı noktalarını hedefleyemez veya kimlik bilgileri içeremez. DNS teslimattan önce kontrol edilir; giden POST istekleri yönlendirmeleri takip etmez. Bir hesap en fazla beş uç nokta kaydedebilir.",
            "Doğrulama olayı livemode=false değerine sahiptir. Yalnızca başarılı bir HTTP durumu yetersizdir: meydan okuma tam olarak eşleşmelidir. Sırrı döndürmek yeniden doğrulama gerektirir."
          ],
          "bullets": [],
          "steps": [
            "Tüccar hesabınızda /account#webhooks adresinde genel bir HTTPS URL, açıklama ve ihtiyacınız olan olay türlerini girin.",
            "Verilen sırrı sunucu tarafı depolamada saklayın. Tam değeri yalnızca bir kez gösterilir.",
            "İmzaları orijinal istek baytları üzerinde doğrulayın.",
            "Uç nokta doğrulamasını çalıştırın. endpoint.verification için, data.challenge değerini yansıtan JSON döndürün: {\"challenge\":\"alınan değer\"}.",
            "Doğrulanmış uç noktayı etkinleştirin ve teslimat geçmişini inceleyin."
          ],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Hesabınızdaki webhook'lar",
              "href": "/account#webhooks"
            }
          ]
        },
        {
          "id": "envelope",
          "title": "Olay zarfı",
          "paragraphs": [
            "id, bir olayın her teslimat denemesinde aynı kalır. createdAt, milisaniye cinsinden bir Unix zaman damgasıdır ve apiVersion sözleşme sürümünü tanımlar. data, kalıcı sunucu nesnesini içerir; örnek kısaltılmıştır.",
            "livemode=true, gerçek bir sunucu olayını uç nokta doğrulamasından ayırır. Bir faturanın ödendiği anlamına gelmez: type ve ödeme verilerini kontrol edin. Bilinen olay türlerini işleyin ve şemayı doğrulayın."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "JSON · shortened example",
            "code": "{\n  \"id\": \"evt_example\",\n  \"type\": \"invoice.created\",\n  \"apiVersion\": \"2026-10-21\",\n  \"createdAt\": 1792540800000,\n  \"livemode\": true,\n  \"data\": {\n    \"invoice\": {\n      \"id\": \"lnk_example\",\n      \"orderId\": \"order-1042\",\n      \"currency\": \"USD\",\n      \"amountMinor\": 500,\n      \"vatCustomerPercent\": 100,\n      \"feeCustomerPercent\": 0\n    }\n  }\n}"
          },
          "note": "",
          "links": []
        },
        {
          "id": "signature",
          "title": "HMAC-SHA256 doğrulayın",
          "paragraphs": [
            "Kevmi-Signature, t=saniye,v1=hex içerir. İmza, zaman damgası dizesi, bir nokta ve orijinal gövde üzerinde HMAC-SHA256'dır: timestamp + \".\" + rawBody. Belirli uç nokta sırrını ve sabit zamanlı bir karşılaştırmayı kullanın.",
            "Zaman damgası sunucu saatinden her iki yönde de 300 saniyeden fazla farklı olan imzaları reddedin. Saatleri senkronize edin. Doğrulamadan önce JSON'u ayrıştırıp yeniden serileştirmeyin: boşluk ve özellik sırası imzalanan baytları etkiler."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "Node.js · verification core",
            "code": "import { createHmac, timingSafeEqual } from 'node:crypto';\n\nfunction verifyKevmi(rawBody, header, secret, nowSeconds) {\n  const match = /^t=(\\d{10}),v1=([a-f0-9]{64})$/.exec(header || '');\n  if (!match || Math.abs(nowSeconds - Number(match[1])) > 300) {\n    return false;\n  }\n  const expected = createHmac('sha256', secret)\n    .update(match[1] + '.')\n    .update(rawBody)\n    .digest();\n  const received = Buffer.from(match[2], 'hex');\n  return expected.length === received.length\n    && timingSafeEqual(expected, received);\n}\n\n// Read bytes before JSON parsing; cap the request body.\n// secret comes from your server secret store.\nconst valid = verifyKevmi(rawBody, signature, secret,\n  Math.floor(Date.now() / 1000));\nif (!valid) throw new Error('Invalid webhook signature');\nconst event = JSON.parse(rawBody.toString('utf8'));\n// Validate the event schema and persist its ID together\n// with your order update in one database transaction.\n// Return a 2xx response after durable acceptance."
          },
          "note": "Bu örnek imza doğrulamasını kapsar. HTTP sunucunuz ayrıca bir gövde boyutu sınırı, şema doğrulaması ve işlemsel olay kalıcılığı gerektirir.",
          "links": []
        },
        {
          "id": "delivery",
          "title": "Yeniden denemeler ve onay",
          "paragraphs": [
            "Herhangi bir 2xx yanıtı, sıradan bir olayı onaylar. Yanıt vermeden önce olayı kalıcı olarak saklayın; pahalı işler kendi kuyruğunuz üzerinden devam edebilir. Yanıt zaman aşımı sekiz saniyedir. Bir ağ hatası veya 2xx olmayan yanıt, yeniden deneme planlar.",
            "En fazla altı deneme vardır: ilk teslimat artı ardışık başarısızlıklardan sonra bir dakika, beş dakika, 30 dakika, iki saat ve 12 saatlik gecikmeler. Bunlar kuyruk programlarıdır, kesin teslimat süresi garantisi değildir. Denemelerin tükenmesi teslimatı başarısız olarak işaretler.",
            "Teslimat en az bir kezdir ve kesin sıralama vaat etmez. Benzersiz olay kimliğini sipariş güncellemenizle aynı işlemde saklayın. Zaten uygulanmış bir kopya, siparişi yeniden yerine getirmeden 2xx almalıdır.",
            "Manuel bir yeniden deneme, orijinal olay kimliğini, teslimat kimliğini ve birebir gövdeyi koruyarak teslimat denemelerini yeniden başlatır. Her deneme yeni bir imza zaman damgası alır. Bir uç noktayı duraklatmak kuyruğunu korur; silmek bekleyen ve başarısız teslimatları iptal eder."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "reconcile",
          "title": "Teslimat geçmişi ve mutabakat",
          "paragraphs": [
            "Arayüz, uç nokta durumunu, son teslimatları, deneme sayılarını, son HTTP yanıtını, hatayı ve sonraki deneme zamanını gösterir. Bu tanılamalar kendi sipariş kayıtlarınızı tamamlar.",
            "GET /api/v1/events, events:read ile en fazla 50 olay ve nextCursor döndürür. Opak nextCursor'u değiştirmeden cursor olarak iletin; null sonu işaretler. Sıralama hem createdAt hem de id kullanır. Eski before Unix-milisaniye sınırı ayrı olarak kullanılabilir ve cursor ile birleştirilemez. Doğrulanmış uç noktalar, kayıtlarından daha önce abone olunan olayları almaz; duraklatılmış uç noktalar, devam ettirildikten sonra teslimat için kuyruğa alınmış olayları biriktirmeye devam eder. Bu, uç nokta oluşturulmadan önceki geçmişi vaat etmez."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "API anahtarları ve fatura oluşturma",
              "href": "/docs/payment-links-api"
            }
          ]
        },
        {
          "id": "gateway",
          "title": "Gelen ağ geçidi makbuz kontrolleri",
          "paragraphs": [
            "Gateway v3, /api/gateway/webhook adresine X-Gateway-Event-Id, X-Gateway-Timestamp ve X-Gateway-Signature: v1=<hex> ile gönderim yapar. HMAC-SHA256, timestamp + \".\" + rawBody'yi GATEWAY_WEBHOOK_SECRET ile imzalar; saat penceresi 300 saniyedir. Başlık/gövde kimlik eşitliği, API sürümü, canlı mod ve gövde karması kontrol edilir.",
            "Farklı gövde baytlarıyla yeniden kullanılan bir olay kimliği reddedilir. İmzalı bir bildirim, tam işlemin kimliği doğrulanmış bir GET isteğini tetikler. Sipariş, yöntem, para birimi, taban, onaylanan toplam ve sürüm kontrol edilir. Başarı için fulfillment_ready=true, verification=provider_confirmed, tam ödenen tutar ve anlaşmazlık olmaması gerekir; kripto ayrıca doğrulanmış mutabakat kanıtı gerektirir.",
            "Giriş işleme, makbuzlar ve tüccar olayları kopyalara karşı korunur. Eski tarayıcı tabanlı bildirim biçimleri başarılı ödeme sağlayamaz. Tüccar webhook'ları asla kart alanları, banka kodları, QR verileri, sağlayıcı kimlik bilgileri veya ağ geçidi sırrını içermez."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "telegram",
          "title": "Telegram'ın ayrı bir sözleşmesi vardır",
          "paragraphs": [
            "POST /api/telegram/webhook, X-Telegram-Bot-Api-Secret-Token'ı, güncelleme yapısını ve göndereni doğrular. update_id, yinelenen işlemeye karşı korur. Bu rota oturum açma, komutlar, destek ve moderasyon eylemlerini işler; mali makbuzları kabul etmez.",
            "Dağıtım sahibi, bot jetonunu, webhook sırrını, setWebhook kaydını ve erişilebilir HTTPS adresini yapılandırır. Bunlar, tüccar uç noktası imza sırrından ayrıdır."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "stores-usd",
          "title": "Birden fazla mağaza ve tek USD taban fiyat",
          "paragraphs": [
            "Toplu analiz ve işlemler için Tüm mağazaları seçin veya kendi kayıtları için bir mağaza seçin. Her mağazanın ayrı bir storeId'si, adı, varsayılan KDV'si, faturaları, API anahtarları, webhook uç noktaları, olay geçmişi ve web sitesi uygulaması vardır. Bildirimler ve destek talepleri hesaba aittir. Bir hesap en fazla 100 mağaza oluşturabilir. Mevcut kayıtlar ilk mağazasında kalır.",
            "Yeni çalışma alanı faturaları pricingMode=\"universal\" ve USD taban fiyat kullanır. Any, kart, alipay, sbp ve kriptoyu içerir; bir satıcı bir alt küme seçebilir. Kartlar ve Alipay USD tahsil eder. SBP, Rusya Merkez Bankası USD/RUB referans kurunu kullanarak RUB tahsil eder. Kripto, açık fatura kuralı 1 USD = 1 USDT kapsamında USDT tahsil eder. Bu bir fatura dönüştürme kuralıdır, piyasa USDT kotasyonu değildir. Ağ geçidi, transferden önce seçilen coin'in kurunu, tam transfer tutarını ve talimatlarını sağlar.",
            "Referans kuru ve her iki tutar oluşturma sırasında dondurulur. RUB dönüştürmesi içeren faturalar 24 saat içinde sona erer. Referans kuru alınamazsa, oluşturma FX_UNAVAILABLE ile başarısız olur; uydurulmuş veya bayat yedek kur kullanılmaz. Sahip yanıt tutarı ve kotasyonlar USD muhasebe para birimini kullanır. quotes[method].settlement, yerel tahsil kotasyonunu içerir. Genel ödeme sayfası, seçilen tahsil para birimini currency içinde, orijinal fiyatı baseAmountMinor/baseCurrency içinde ve referans kurunu fx içinde gösterir. Bir ödeme gönderildikten sonra yöntemi değiştirilemez; bir faturanın tek ağ geçidi işlemi vardır.",
            "Amaçlanan mağaza içinde bir API anahtarı oluşturun ve sunucunuzdan Authorization: Bearer <key> gönderin. Mağaza bağlaması değişmezdir; X-Kevmi-Store, anahtara başka bir mağazaya erişim izni veremez. Tarayıcı oturumları X-Kevmi-Store: <storeId> seçer; atlanırsa ilk mağaza seçilir. all değeri yalnızca GET /api/account/dashboard ve GET /api/payment-links tarafından kabul edilir. Değişiklikler seçili bir mağaza, Origin ve X-CSRF-Token gerektirir. Hesap kimlikleri ve mağaza kimlikleri farklı tanımlayıcılardır.",
            "Uyumluluk için, pricingMode=\"universal\" içermeyen API istekleri yerel fiyatlandırmayı ve orijinal para birimi kısıtlamalarını korur. Mevcut faturalar asla yeniden hesaplanmaz. Analizlerdeki onaylanmış tahsilatlar, doğrulanmış ödemelerden kaydedilmiş fatura giderlerinin düşülmesiyle elde edilir; bunlar çekilebilir bakiye değildir. Eski fatura para birimleri ayrı kalır ve ödemeler destek ile düzenlenir. Bir siparişi yalnızca sunucu API'si, olay geçmişi veya imzalı bir webhook üzerinden payment.fulfillmentReady=true ve payment.status=\"succeeded\" durumunu kontrol ettikten sonra yerine getirin."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        }
      ],
      "group": "developers",
      "url": "/docs/webhooks",
      "body": "Olaylar nereden gelir\n\ninvoice.created ödendiği anlamına gelmez. Ödeme olayları, geçerli bir ağ geçidi okumasından sonra doğrulanmış bir sunucu işleminden gelir; yalnızca gelen bir olay adı yetersizdir.\n\nAğ geçidi → Kevmi girişi ve Kevmi → tüccar teslimatı, ayrı sırlara sahip farklı bacaklardır. Tarayıcı, geri dönüş navigasyonu ve araç pencere öğesi mesajları finansal durum belirlemez.\n\nOlay · Kaynak\ninvoice.created · Fatura kaydedildi\ninvoice.updated · Bağlantı kullanılabilirliği değişti\npayment.succeeded · Sunucu tarafından doğrulanmış kesin ödeme\npayment.failed · Başarısız işlem doğrulandı\npayment.refunded · Tam iade doğrulandı\npayment.partially_refunded · Kısmi iade doğrulandı\npayment.disputed · İtiraz doğrulandı\npayment.review_required · İşlem ek inceleme gerektirir\n\nBir uç nokta kaydedin ve doğrulayın\n\nURL'ler IP adreslerini, localhost'u, özel ağları, standart dışı bağlantı noktalarını hedefleyemez veya kimlik bilgileri içeremez. DNS teslimattan önce kontrol edilir; giden POST istekleri yönlendirmeleri takip etmez. Bir hesap en fazla beş uç nokta kaydedebilir.\n\nDoğrulama olayı livemode=false değerine sahiptir. Yalnızca başarılı bir HTTP durumu yetersizdir: meydan okuma tam olarak eşleşmelidir. Sırrı döndürmek yeniden doğrulama gerektirir.\n\nTüccar hesabınızda /account#webhooks adresinde genel bir HTTPS URL, açıklama ve ihtiyacınız olan olay türlerini girin.\n\nVerilen sırrı sunucu tarafı depolamada saklayın. Tam değeri yalnızca bir kez gösterilir.\n\nİmzaları orijinal istek baytları üzerinde doğrulayın.\n\nUç nokta doğrulamasını çalıştırın. endpoint.verification için, data.challenge değerini yansıtan JSON döndürün: {\"challenge\":\"alınan değer\"}.\n\nDoğrulanmış uç noktayı etkinleştirin ve teslimat geçmişini inceleyin.\n\nHesabınızdaki webhook'lar\n\nOlay zarfı\n\nid, bir olayın her teslimat denemesinde aynı kalır. createdAt, milisaniye cinsinden bir Unix zaman damgasıdır ve apiVersion sözleşme sürümünü tanımlar. data, kalıcı sunucu nesnesini içerir; örnek kısaltılmıştır.\n\nlivemode=true, gerçek bir sunucu olayını uç nokta doğrulamasından ayırır. Bir faturanın ödendiği anlamına gelmez: type ve ödeme verilerini kontrol edin. Bilinen olay türlerini işleyin ve şemayı doğrulayın.\n\n{\n  \"id\": \"evt_example\",\n  \"type\": \"invoice.created\",\n  \"apiVersion\": \"2026-10-21\",\n  \"createdAt\": 1792540800000,\n  \"livemode\": true,\n  \"data\": {\n    \"invoice\": {\n      \"id\": \"lnk_example\",\n      \"orderId\": \"order-1042\",\n      \"currency\": \"USD\",\n      \"amountMinor\": 500,\n      \"vatCustomerPercent\": 100,\n      \"feeCustomerPercent\": 0\n    }\n  }\n}\n\nHMAC-SHA256 doğrulayın\n\nKevmi-Signature, t=saniye,v1=hex içerir. İmza, zaman damgası dizesi, bir nokta ve orijinal gövde üzerinde HMAC-SHA256'dır: timestamp + \".\" + rawBody. Belirli uç nokta sırrını ve sabit zamanlı bir karşılaştırmayı kullanın.\n\nZaman damgası sunucu saatinden her iki yönde de 300 saniyeden fazla farklı olan imzaları reddedin. Saatleri senkronize edin. Doğrulamadan önce JSON'u ayrıştırıp yeniden serileştirmeyin: boşluk ve özellik sırası imzalanan baytları etkiler.\n\nimport { createHmac, timingSafeEqual } from 'node:crypto';\n\nfunction verifyKevmi(rawBody, header, secret, nowSeconds) {\n  const match = /^t=(\\d{10}),v1=([a-f0-9]{64})$/.exec(header || '');\n  if (!match || Math.abs(nowSeconds - Number(match[1])) > 300) {\n    return false;\n  }\n  const expected = createHmac('sha256', secret)\n    .update(match[1] + '.')\n    .update(rawBody)\n    .digest();\n  const received = Buffer.from(match[2], 'hex');\n  return expected.length === received.length\n    && timingSafeEqual(expected, received);\n}\n\n// Read bytes before JSON parsing; cap the request body.\n// secret comes from your server secret store.\nconst valid = verifyKevmi(rawBody, signature, secret,\n  Math.floor(Date.now() / 1000));\nif (!valid) throw new Error('Invalid webhook signature');\nconst event = JSON.parse(rawBody.toString('utf8'));\n// Validate the event schema and persist its ID together\n// with your order update in one database transaction.\n// Return a 2xx response after durable acceptance.\n\nBu örnek imza doğrulamasını kapsar. HTTP sunucunuz ayrıca bir gövde boyutu sınırı, şema doğrulaması ve işlemsel olay kalıcılığı gerektirir.\n\nYeniden denemeler ve onay\n\nHerhangi bir 2xx yanıtı, sıradan bir olayı onaylar. Yanıt vermeden önce olayı kalıcı olarak saklayın; pahalı işler kendi kuyruğunuz üzerinden devam edebilir. Yanıt zaman aşımı sekiz saniyedir. Bir ağ hatası veya 2xx olmayan yanıt, yeniden deneme planlar.\n\nEn fazla altı deneme vardır: ilk teslimat artı ardışık başarısızlıklardan sonra bir dakika, beş dakika, 30 dakika, iki saat ve 12 saatlik gecikmeler. Bunlar kuyruk programlarıdır, kesin teslimat süresi garantisi değildir. Denemelerin tükenmesi teslimatı başarısız olarak işaretler.\n\nTeslimat en az bir kezdir ve kesin sıralama vaat etmez. Benzersiz olay kimliğini sipariş güncellemenizle aynı işlemde saklayın. Zaten uygulanmış bir kopya, siparişi yeniden yerine getirmeden 2xx almalıdır.\n\nManuel bir yeniden deneme, orijinal olay kimliğini, teslimat kimliğini ve birebir gövdeyi koruyarak teslimat denemelerini yeniden başlatır. Her deneme yeni bir imza zaman damgası alır. Bir uç noktayı duraklatmak kuyruğunu korur; silmek bekleyen ve başarısız teslimatları iptal eder.\n\nTeslimat geçmişi ve mutabakat\n\nArayüz, uç nokta durumunu, son teslimatları, deneme sayılarını, son HTTP yanıtını, hatayı ve sonraki deneme zamanını gösterir. Bu tanılamalar kendi sipariş kayıtlarınızı tamamlar.\n\nGET /api/v1/events, events:read ile en fazla 50 olay ve nextCursor döndürür. Opak nextCursor'u değiştirmeden cursor olarak iletin; null sonu işaretler. Sıralama hem createdAt hem de id kullanır. Eski before Unix-milisaniye sınırı ayrı olarak kullanılabilir ve cursor ile birleştirilemez. Doğrulanmış uç noktalar, kayıtlarından daha önce abone olunan olayları almaz; duraklatılmış uç noktalar, devam ettirildikten sonra teslimat için kuyruğa alınmış olayları biriktirmeye devam eder. Bu, uç nokta oluşturulmadan önceki geçmişi vaat etmez.\n\nAPI anahtarları ve fatura oluşturma\n\nGelen ağ geçidi makbuz kontrolleri\n\nGateway v3, /api/gateway/webhook adresine X-Gateway-Event-Id, X-Gateway-Timestamp ve X-Gateway-Signature: v1=<hex> ile gönderim yapar. HMAC-SHA256, timestamp + \".\" + rawBody'yi GATEWAY_WEBHOOK_SECRET ile imzalar; saat penceresi 300 saniyedir. Başlık/gövde kimlik eşitliği, API sürümü, canlı mod ve gövde karması kontrol edilir.\n\nFarklı gövde baytlarıyla yeniden kullanılan bir olay kimliği reddedilir. İmzalı bir bildirim, tam işlemin kimliği doğrulanmış bir GET isteğini tetikler. Sipariş, yöntem, para birimi, taban, onaylanan toplam ve sürüm kontrol edilir. Başarı için fulfillment_ready=true, verification=provider_confirmed, tam ödenen tutar ve anlaşmazlık olmaması gerekir; kripto ayrıca doğrulanmış mutabakat kanıtı gerektirir.\n\nGiriş işleme, makbuzlar ve tüccar olayları kopyalara karşı korunur. Eski tarayıcı tabanlı bildirim biçimleri başarılı ödeme sağlayamaz. Tüccar webhook'ları asla kart alanları, banka kodları, QR verileri, sağlayıcı kimlik bilgileri veya ağ geçidi sırrını içermez.\n\nTelegram'ın ayrı bir sözleşmesi vardır\n\nPOST /api/telegram/webhook, X-Telegram-Bot-Api-Secret-Token'ı, güncelleme yapısını ve göndereni doğrular. update_id, yinelenen işlemeye karşı korur. Bu rota oturum açma, komutlar, destek ve moderasyon eylemlerini işler; mali makbuzları kabul etmez.\n\nDağıtım sahibi, bot jetonunu, webhook sırrını, setWebhook kaydını ve erişilebilir HTTPS adresini yapılandırır. Bunlar, tüccar uç noktası imza sırrından ayrıdır.\n\nBirden fazla mağaza ve tek USD taban fiyat\n\nToplu analiz ve işlemler için Tüm mağazaları seçin veya kendi kayıtları için bir mağaza seçin. Her mağazanın ayrı bir storeId'si, adı, varsayılan KDV'si, faturaları, API anahtarları, webhook uç noktaları, olay geçmişi ve web sitesi uygulaması vardır. Bildirimler ve destek talepleri hesaba aittir. Bir hesap en fazla 100 mağaza oluşturabilir. Mevcut kayıtlar ilk mağazasında kalır.\n\nYeni çalışma alanı faturaları pricingMode=\"universal\" ve USD taban fiyat kullanır. Any, kart, alipay, sbp ve kriptoyu içerir; bir satıcı bir alt küme seçebilir. Kartlar ve Alipay USD tahsil eder. SBP, Rusya Merkez Bankası USD/RUB referans kurunu kullanarak RUB tahsil eder. Kripto, açık fatura kuralı 1 USD = 1 USDT kapsamında USDT tahsil eder. Bu bir fatura dönüştürme kuralıdır, piyasa USDT kotasyonu değildir. Ağ geçidi, transferden önce seçilen coin'in kurunu, tam transfer tutarını ve talimatlarını sağlar.\n\nReferans kuru ve her iki tutar oluşturma sırasında dondurulur. RUB dönüştürmesi içeren faturalar 24 saat içinde sona erer. Referans kuru alınamazsa, oluşturma FX_UNAVAILABLE ile başarısız olur; uydurulmuş veya bayat yedek kur kullanılmaz. Sahip yanıt tutarı ve kotasyonlar USD muhasebe para birimini kullanır. quotes[method].settlement, yerel tahsil kotasyonunu içerir. Genel ödeme sayfası, seçilen tahsil para birimini currency içinde, orijinal fiyatı baseAmountMinor/baseCurrency içinde ve referans kurunu fx içinde gösterir. Bir ödeme gönderildikten sonra yöntemi değiştirilemez; bir faturanın tek ağ geçidi işlemi vardır.\n\nAmaçlanan mağaza içinde bir API anahtarı oluşturun ve sunucunuzdan Authorization: Bearer <key> gönderin. Mağaza bağlaması değişmezdir; X-Kevmi-Store, anahtara başka bir mağazaya erişim izni veremez. Tarayıcı oturumları X-Kevmi-Store: <storeId> seçer; atlanırsa ilk mağaza seçilir. all değeri yalnızca GET /api/account/dashboard ve GET /api/payment-links tarafından kabul edilir. Değişiklikler seçili bir mağaza, Origin ve X-CSRF-Token gerektirir. Hesap kimlikleri ve mağaza kimlikleri farklı tanımlayıcılardır.\n\nUyumluluk için, pricingMode=\"universal\" içermeyen API istekleri yerel fiyatlandırmayı ve orijinal para birimi kısıtlamalarını korur. Mevcut faturalar asla yeniden hesaplanmaz. Analizlerdeki onaylanmış tahsilatlar, doğrulanmış ödemelerden kaydedilmiş fatura giderlerinin düşülmesiyle elde edilir; bunlar çekilebilir bakiye değildir. Eski fatura para birimleri ayrı kalır ve ödemeler destek ile düzenlenir. Bir siparişi yalnızca sunucu API'si, olay geçmişi veya imzalı bir webhook üzerinden payment.fulfillmentReady=true ve payment.status=\"succeeded\" durumunu kontrol ettikten sonra yerine getirin.",
      "readMinutes": 7
    },
    {
      "id": "limits",
      "title": "Limitler ve kullanılabilirlik",
      "summary": "Ödeme kullanılabilirliği yönteme, tutara, ülkeye ve belirli bir faturanın koşullarına bağlıdır. Onaydan önce toplamı, kısıtlamaları ve geçerli işlem süresini kontrol edin.",
      "group": "payments",
      "url": "/docs/limits",
      "tags": [
        "limit",
        "işlem süresi",
        "bloke",
        "iade",
        "geri ödeme talebi",
        "kısıtlama"
      ],
      "sections": [
        {
          "id": "pending",
          "title": "Adaptör ve kanal limitleri",
          "paragraphs": [
            "Kevmi, bir işlem oluşturmadan önce aşağıdaki aralıkları kontrol eder. Bir ödeme kanalı ek kısıtlamalar uygulayabilir; aralık içindeki bir tutar onayı garanti etmez. Ağ geçidi yapılandırmasını değiştirmek, Kevmi limitlerini otomatik olarak değiştirmez.",
            "Yeni bir ödeme ve kart niyeti, satıcının en son web sitesi inceleme başvurusunun onaylanmasını gerektirir. Onay tek başına ödeme ağ geçidini bağlamaz. İnceleme gönderimden sonra değişirse, mevcut işlem durum okumaları, mutabakat ve talep edilen banka kodu için kullanılabilir kalır."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Yöntem",
              "Kontrol edilen tutar",
              "Kevmi aralığı"
            ],
            "rows": [
              [
                "Kart / Alipay",
                "USD taban fiyat",
                "$1–$1.000"
              ],
              [
                "SBP",
                "RUB müşteri toplamı",
                "₽1–₽100.000"
              ],
              [
                "Kripto",
                "USDT müşteri toplamı",
                "1–1.000.000 USDT + seçili ağ limitleri"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "validation",
          "title": "Doğrulama ticari bir limit değildir",
          "paragraphs": [
            "Hesaplayıcı ve API, negatif tutarları, geçersiz para birimlerini ve tüccarın ayrılan ücreti ile KDV'nin taban tutarı aştığı hesaplamaları reddeder. Bu kontroller veri doğruluğunu korur.",
            "Aritmetik doğrulamayı geçmek, bir sağlayıcının ödemeyi kabul edebileceğini garanti etmez. Ticari ve risk limitleri ödeme kanalı tarafından ayrıca kontrol edilir."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "refunds",
          "title": "İadeler ve ihtilaflı işlemler",
          "paragraphs": [
            "Doğrulanmış iadeler, kısmi iadeler, ihtilaflar ve inceleme durumları işlemde ve tüccar olaylarında görünür. Bu, hesapta bir iade veya ödeme oluşturmanın uygulandığı anlamına gelmez.",
            "payment.partially_refunded, payment.refunded, payment.disputed veya payment.review_required için yeniden yerine getirme yapmayın. Orijinal sipariş/ödeme ilişkisini koruyun ve ihtilaflı durumları yetkili bir operatöre yönlendirin."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "subscriptions",
          "title": "Yinelenen tahsilatlar",
          "paragraphs": [
            "Kevmi'de abonelik veya yinelenen ödeme yoktur. Bir sipariş bağlantısını kaydetmek, otomatik gelecekteki bir tahsilatı yetkilendirmez. Her yeni sipariş ayrıca ödenir."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "ready",
          "title": "Hazır olma kontrolleri",
          "paragraphs": [
            "/api/config içindeki gateway.configured, gerekli ağ geçidi ayarlarını bildirirken /api/health sunucu depolamasını kontrol eder. Hiçbiri bir ödeme sağlayıcısına bağlantı kurmaz. Belirli bir faturanın koşulları için GET /api/checkout/{token} içindeki invoice.availability kullanın; ödeme başarısı ağ geçidi işlemine karşı ayrıca doğrulanır."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Entegrasyon gereksinimleri",
              "href": "/docs/gateway"
            },
            {
              "label": "Kullanım durumunuz hakkında sorun",
              "href": "/?support=open"
            }
          ]
        }
      ],
      "body": "Adaptör ve kanal limitleri\n\nKevmi, bir işlem oluşturmadan önce aşağıdaki aralıkları kontrol eder. Bir ödeme kanalı ek kısıtlamalar uygulayabilir; aralık içindeki bir tutar onayı garanti etmez. Ağ geçidi yapılandırmasını değiştirmek, Kevmi limitlerini otomatik olarak değiştirmez.\n\nYeni bir ödeme ve kart niyeti, satıcının en son web sitesi inceleme başvurusunun onaylanmasını gerektirir. Onay tek başına ödeme ağ geçidini bağlamaz. İnceleme gönderimden sonra değişirse, mevcut işlem durum okumaları, mutabakat ve talep edilen banka kodu için kullanılabilir kalır.\n\nYöntem · Kontrol edilen tutar · Kevmi aralığı\nKart / Alipay · USD taban fiyat · $1–$1.000\nSBP · RUB müşteri toplamı · ₽1–₽100.000\nKripto · USDT müşteri toplamı · 1–1.000.000 USDT + seçili ağ limitleri\n\nDoğrulama ticari bir limit değildir\n\nHesaplayıcı ve API, negatif tutarları, geçersiz para birimlerini ve tüccarın ayrılan ücreti ile KDV'nin taban tutarı aştığı hesaplamaları reddeder. Bu kontroller veri doğruluğunu korur.\n\nAritmetik doğrulamayı geçmek, bir sağlayıcının ödemeyi kabul edebileceğini garanti etmez. Ticari ve risk limitleri ödeme kanalı tarafından ayrıca kontrol edilir.\n\nİadeler ve ihtilaflı işlemler\n\nDoğrulanmış iadeler, kısmi iadeler, ihtilaflar ve inceleme durumları işlemde ve tüccar olaylarında görünür. Bu, hesapta bir iade veya ödeme oluşturmanın uygulandığı anlamına gelmez.\n\npayment.partially_refunded, payment.refunded, payment.disputed veya payment.review_required için yeniden yerine getirme yapmayın. Orijinal sipariş/ödeme ilişkisini koruyun ve ihtilaflı durumları yetkili bir operatöre yönlendirin.\n\nYinelenen tahsilatlar\n\nKevmi'de abonelik veya yinelenen ödeme yoktur. Bir sipariş bağlantısını kaydetmek, otomatik gelecekteki bir tahsilatı yetkilendirmez. Her yeni sipariş ayrıca ödenir.\n\nHazır olma kontrolleri\n\n/api/config içindeki gateway.configured, gerekli ağ geçidi ayarlarını bildirirken /api/health sunucu depolamasını kontrol eder. Hiçbiri bir ödeme sağlayıcısına bağlantı kurmaz. Belirli bir faturanın koşulları için GET /api/checkout/{token} içindeki invoice.availability kullanın; ödeme başarısı ağ geçidi işlemine karşı ayrıca doğrulanır.\n\nEntegrasyon gereksinimleri\n\nKullanım durumunuz hakkında sorun",
      "readMinutes": 3
    },
    {
      "id": "agent-access",
      "title": "Arama motorları ve yapay zeka için kaynaklar",
      "summary": "Kamuya açık Kevmi bilgileri, sunucu tarafından oluşturulan HTML, düz metin ve yapılandırılmış biçimlerde mevcuttur. Bu biçimler tek bir bilgi sürümünü ve aynı ticari gerçekleri paylaşır.",
      "group": "developers",
      "url": "/docs/agent-access",
      "tags": [
        "SEO",
        "indexing",
        "llms",
        "robots",
        "sitemap",
        "temsilci",
        "JSON"
      ],
      "sections": [
        {
          "id": "files",
          "title": "Kamu kaynakları",
          "paragraphs": [],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Adres",
              "İçerik"
            ],
            "rows": [
              [
                "/docs ve /en/docs",
                "Tam Rusça ve İngilizce rehber sürümleri"
              ],
              [
                "/llms.txt",
                "İngilizce dizin ve temel gerçekler"
              ],
              [
                "/llms-full.txt",
                "Eksiksiz İngilizce bilgi metni"
              ],
              [
                "/knowledge.json",
                "Gerçekler, ücretler, makaleler ve sürüm"
              ],
              [
                "/openapi.json",
                "Uygulanan sunucu API sözleşmesi"
              ],
              [
                "/sitemap.xml",
                "Yayınlanmış genel sayfalar"
              ],
              [
                "/robots.txt",
                "Tarayıcı yönergeleri"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "facts",
          "title": "Yapılandırılmış gerçekleri okuma",
          "paragraphs": [
            "knowledge.facts.countries.card, açık kısıtlamalarla dünya çapında kapsamı açıklar. countryCount dizin girişlerini sayar, coverageLabel 190+ şeklindedir ve exactList desteklenen ISO girişlerini içerir. restrictions, sağlayıcı hariç tutma listesini korur.",
            "source=owner_provided ve status=owner_list_received listenin kökenini kaydeder. independentlyVerified=false ve verifiedCountryCount=null, listenin canlı bir ağ geçidine karşı bağımsız olarak kontrol edilmediği anlamına gelir; bu yine de alınmış ve yayınlanmış bir listedir.",
            "partialCoverage, eksik konum kapsamına sahip ülkeleri içerir. unresolvedFootnotes, Çin için ayrı * işaretini korur. coverage=listed listeye dahil edilme anlamına gelir; partial_locations konum kısıtlamalarını belirtir; footnote_pending bir işaretin ayrı, doğrulanmamış anlamını belirtir. None her kartın onaylanacağını garanti etmez.",
            "gatewayConnected=null ve gatewayIntegration.liveConfigurationProvided=null, statik bilgi tabanının bir dağıtımın güncel durumunu içermediği anlamına gelir. gatewayIntegration.availability güncel kontroller için uç noktaları tanımlar. gateway.configured, /api/config içinde ayarları bildirir, sağlayıcı bağlantısını değil. invoice.availability, ödeme sonrası yanıtında uygun fatura koşullarını açıklar; uyumluluk alanı invoice.gatewayConnected, availability.available değerini yansıtır. Hiçbiri işlem onayının yerini almaz. gatewayIntegration.adapterImplemented=true v3 protokol desteğini açıklar; subscriptionsSupported=false yinelenen ücretleri hariç tutar."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "JSON · fact excerpt",
            "code": "{\n  \"subscriptionsSupported\": false,\n  \"gatewayConnected\": null,\n  \"countries\": {\n    \"card\": {\n      \"coverageLabel\": \"190+\",\n      \"policy\": \"worldwide_except_restrictions\",\n      \"restrictions\": [\n        {\n          \"code\": \"AF\",\n          \"name\": \"Afghanistan\"\n        },\n        {\n          \"code\": \"AQ\",\n          \"name\": \"Antarctica\"\n        },\n        {\n          \"code\": \"BY\",\n          \"name\": \"Belarus\"\n        },\n        {\n          \"code\": \"MM\",\n          \"name\": \"Burma (Myanmar)\"\n        },\n        {\n          \"code\": \"BI\",\n          \"name\": \"Burundi\"\n        },\n        {\n          \"code\": \"CF\",\n          \"name\": \"Central African Republic\"\n        },\n        {\n          \"code\": \"TD\",\n          \"name\": \"Chad\"\n        },\n        {\n          \"code\": \"CU\",\n          \"name\": \"Cuba\"\n        },\n        {\n          \"code\": \"CD\",\n          \"name\": \"Democratic Republic of Congo\"\n        },\n        {\n          \"code\": \"CG\",\n          \"name\": \"Republic of Congo\"\n        },\n        {\n          \"code\": \"ER\",\n          \"name\": \"Eritrea\"\n        },\n        {\n          \"code\": \"HT\",\n          \"name\": \"Haiti\"\n        },\n        {\n          \"code\": \"IR\",\n          \"name\": \"Iran\"\n        },\n        {\n          \"code\": \"IQ\",\n          \"name\": \"Iraq\"\n        },\n        {\n          \"code\": \"LY\",\n          \"name\": \"Libya\"\n        },\n        {\n          \"code\": \"ML\",\n          \"name\": \"Mali\"\n        },\n        {\n          \"code\": \"NI\",\n          \"name\": \"Nicaragua\"\n        },\n        {\n          \"code\": \"KP\",\n          \"name\": \"North Korea\"\n        },\n        {\n          \"code\": \"RU\",\n          \"name\": \"Russia\"\n        },\n        {\n          \"code\": \"SO\",\n          \"name\": \"Somalia\"\n        },\n        {\n          \"code\": \"SS\",\n          \"name\": \"South Sudan\"\n        },\n        {\n          \"code\": \"SD\",\n          \"name\": \"Sudan\"\n        },\n        {\n          \"code\": \"SY\",\n          \"name\": \"Syria\"\n        },\n        {\n          \"code\": \"VE\",\n          \"name\": \"Venezuela\"\n        },\n        {\n          \"code\": \"YE\",\n          \"name\": \"Yemen\"\n        },\n        {\n          \"code\": \"ZW\",\n          \"name\": \"Zimbabwe\"\n        },\n        {\n          \"code\": \"UA-43\",\n          \"name\": \"Crimea (Region of Ukraine)\"\n        },\n        {\n          \"code\": \"UA-14\",\n          \"name\": \"Donetsk (Region of Ukraine)\"\n        },\n        {\n          \"code\": \"UA-65\",\n          \"name\": \"Kherson (Region of Ukraine)\"\n        },\n        {\n          \"code\": \"UA-09\",\n          \"name\": \"Luhansk (Region of Ukraine)\"\n        },\n        {\n          \"code\": \"UA-23\",\n          \"name\": \"Zaporizhzhia (Region of Ukraine)\"\n        },\n        {\n          \"code\": \"AN\",\n          \"name\": \"Netherlands Antilles\"\n        }\n      ],\n      \"independentlyVerified\": false,\n      \"approvalGuaranteed\": false\n    }\n  },\n  \"gatewayIntegration\": {\n    \"adapterImplemented\": true,\n    \"contract\": \"v3\",\n    \"liveConfigurationProvided\": null,\n    \"availability\": {\n      \"source\": \"runtime\",\n      \"configurationEndpoint\": \"/api/config\",\n      \"configurationIncludesHealthCheck\": false,\n      \"checkoutEndpoint\": \"/api/checkout/{token}\",\n      \"checkoutIncludesProviderApproval\": false\n    }\n  }\n}"
          },
          "note": "",
          "links": []
        },
        {
          "id": "privacy",
          "title": "Kamu bilgisi sınırları",
          "paragraphs": [
            "Düz metin ve JSON, oturumları, belirteçleri, özel destek taleplerini, kullanıcı ödeme kayıtlarını veya entegrasyon sırlarını içermez. Oturum açma, hesap ve ödeme sayfaları arama dizinlemesinden hariç tutulur.",
            "Kamu belgelerini okumak mağaza yönetimi izinleri vermez. Kişisel kayıtlar geçerli bir oturum gerektirir ve değişiklikler ek sunucu kontrolleri gerektirir."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "updates",
          "title": "Güncellemeler ve alıntılar",
          "paragraphs": [
            "Makalelerin sabit kimlikleri, URL'leri, başlıkları ve bir güncelleme tarihi vardır. Bir yanıtı alıntılarken ilgili rehbere bağlantı verin ve işlem koşullarıyla ilgili nitelikleri koruyun.",
            "Sitemap'ler, llms kaynakları ve sunucu tarafından render edilen HTML, içeriğin çıkarılmasını kolaylaştırır. Bunlar dizinleme, arama konumu veya harici bir yapay zekâ sistemi tarafından kullanımı garanti etmez.",
            "Yalnızca yayınlanmış çevirilerin kurallı URL'leri, hreflang alternatifleri ve sitemap girişleri vardır. Gelecekteki çeviri için yapılandırılmış bir yerel ayar, yayınlanmış bir dil sürümü değildir."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "assistant-admin-v16",
          "title": "Asistan, destek ve proje yönetimi",
          "paragraphs": [
            "İlk Telegram girişi, onaylanmış bir satıcı değil, not_submitted durumuna sahip bir hesap ve bir taslak mağaza oluşturur. Hesap, başvuru formunu veya mevcut incelemeyi açar; ödeme kabul etmek uzman onayı gerektirir. Her yeni mağazanın kendi incelemesi vardır. GET /api/stores, reviewStatus ve applicationId değerlerini döndürür. Bağlı mağazalar toplu erişimi korur ve destek ile dokümantasyon inceleme sırasında kullanılabilir kalır.",
            "Özel işlemlerde yardıma ihtiyacınız olduğunda sohbette verilerime erişimi etkinleştirin. includeAccount=true içeren bir web isteği geçerli bir oturum, Origin ve X-CSRF-Token gerektirir; X-Kevmi-Store sahip olunan bir mağazayı veya tüm sahip olunan mağazaları seçer. İzin olmadan asistan yalnızca genel belgeleri kullanır. Telegram'da, gönderen kimliği doğrulandıktan sonra ayrı bir düğme erişimi etkinleştirir.",
            "read_account aracı sahip olunan mağazaları, doğrulanmış ödeme durumuna sahip faturaları, etkinlikleri, başvuruları ve uzman yanıtlarını içeren destek taleplerini okur. 30 kayıt ve nextPage döndürür; daha eski kayıtlara sayfalama yoluyla erişilir. Yanıt başına okuma sayısı sınırlıdır, bu nedenle eksik bir örnek açıklanmalıdır. API anahtarları, webhook sırları, kart bilgileri ve oturumlar araca sağlanmaz. Araç ücret talep edemez, ödeme yapamaz, geri ödeme yapamaz veya ayarları değiştiremez.",
            "Çalışma alanında veya Telegram'da bir destek talebi oluşturmak, kalıcı bir kuyruğa ayrı bir yönetici uyarısı yerleştirir. /admin/tickets?ticket=<id> bağlantısına bağlanır; geçici Telegram arızaları yeniden denenir. Kurtarma ayrıca uyarısı olmayan daha eski açık talepleri de alır. Yöneticiler talep sayfasında yanıt verir; yanıt kullanıcı çalışma alanına kaydedilir ve destek bildirimleri etkinleştirildiğinde Telegram üzerinden gönderilir.",
            "Bot ana menü, mağazalar, bildirimler, destek, güvenlik ve dil için satır içi düğmeler kullanır. Gezinme geçerli mesajı düzenler; kullanılamayan eski bir menü değiştirilir. Ödeme ve güvenlik bildirimleri tek kullanımlık gezinme olarak ele alınmaz. Menüden çıkış yapmak onay gerektirir. Açık /logout komutu yine de her hesap oturumunu sonlandırır.",
            "/admin/project paneli, sunucu tarafı MODERATOR_TELEGRAM_IDS izin listesindeki Telegram kimlikleriyle sınırlıdır. Kullanıcıları, mağazaları, işlemleri, anahtar iptalini, webhook devre dışı bırakmayı, fatura duraklatmayı, kabul kontrollerini ve bir denetim günlüğünü içerir. Değişiklikler CSRF ve bir gerekçe gerektirir. Panel bir yöneticiyi kısıtlayamaz veya bir ödemeyi manuel olarak başarılı ilan edemez. Bir sahibi kısıtlamak oturumları sonlandırır ve API anahtarı erişimini engeller; bir mağazayı kısıtlamak yeni işlemleri durdurur. Geçmiş korunur.",
            "Kamu teklifi etkinleştirilmiş her dilde /public-offer adresinde, gizlilik politikası ise /privacy-policy adresinde mevcuttur. Madeni paraları ada veya kısaltmaya göre arayın. Birden fazla canlı ağ mevcut olduğunda yalnızca bir ağ seçici görünür. Tek bir ağ otomatik olarak seçilir ve onayda adlandırılmış olarak kalır. Canlı ağ geçidi kullanılabilirliği seçilebilir çiftleri belirler; referans kataloğu bir hizmeti etkinleştirmez.",
            "Rutin web uygulaması sürümleri için update.sh kullanın: adayı derleyin, geçiş geçmişini kontrol edin, SQLite'ı çevrimiçi yedekleyin, ikinci bir kapsayıcı başlatın, doğrulayın ve Caddy'yi sorunsuz şekilde değiştirin. Ağ geçidi, PostgreSQL ve posta yeniden başlatılmaz. Önceki statik varlıklar açık sekmeler için kullanılabilir durumda kalır. Yeni bir geçiş açıkça gözden geçirilmiş yetkilendirme gerektirir; uyumsuz bir şema değişikliği sorunsuz bir dağıtım değildir."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Kamu teklifi",
              "href": "/public-offer"
            },
            {
              "label": "Gizlilik politikası",
              "href": "/privacy-policy"
            }
          ]
        }
      ],
      "body": "Kamu kaynakları\n\nAdres · İçerik\n/docs ve /en/docs · Tam Rusça ve İngilizce rehber sürümleri\n/llms.txt · İngilizce dizin ve temel gerçekler\n/llms-full.txt · Eksiksiz İngilizce bilgi metni\n/knowledge.json · Gerçekler, ücretler, makaleler ve sürüm\n/openapi.json · Uygulanan sunucu API sözleşmesi\n/sitemap.xml · Yayınlanmış genel sayfalar\n/robots.txt · Tarayıcı yönergeleri\n\nYapılandırılmış gerçekleri okuma\n\nknowledge.facts.countries.card, açık kısıtlamalarla dünya çapında kapsamı açıklar. countryCount dizin girişlerini sayar, coverageLabel 190+ şeklindedir ve exactList desteklenen ISO girişlerini içerir. restrictions, sağlayıcı hariç tutma listesini korur.\n\nsource=owner_provided ve status=owner_list_received listenin kökenini kaydeder. independentlyVerified=false ve verifiedCountryCount=null, listenin canlı bir ağ geçidine karşı bağımsız olarak kontrol edilmediği anlamına gelir; bu yine de alınmış ve yayınlanmış bir listedir.\n\npartialCoverage, eksik konum kapsamına sahip ülkeleri içerir. unresolvedFootnotes, Çin için ayrı * işaretini korur. coverage=listed listeye dahil edilme anlamına gelir; partial_locations konum kısıtlamalarını belirtir; footnote_pending bir işaretin ayrı, doğrulanmamış anlamını belirtir. None her kartın onaylanacağını garanti etmez.\n\ngatewayConnected=null ve gatewayIntegration.liveConfigurationProvided=null, statik bilgi tabanının bir dağıtımın güncel durumunu içermediği anlamına gelir. gatewayIntegration.availability güncel kontroller için uç noktaları tanımlar. gateway.configured, /api/config içinde ayarları bildirir, sağlayıcı bağlantısını değil. invoice.availability, ödeme sonrası yanıtında uygun fatura koşullarını açıklar; uyumluluk alanı invoice.gatewayConnected, availability.available değerini yansıtır. Hiçbiri işlem onayının yerini almaz. gatewayIntegration.adapterImplemented=true v3 protokol desteğini açıklar; subscriptionsSupported=false yinelenen ücretleri hariç tutar.\n\n{\n  \"subscriptionsSupported\": false,\n  \"gatewayConnected\": null,\n  \"countries\": {\n    \"card\": {\n      \"coverageLabel\": \"190+\",\n      \"policy\": \"worldwide_except_restrictions\",\n      \"restrictions\": [\n        {\n          \"code\": \"AF\",\n          \"name\": \"Afghanistan\"\n        },\n        {\n          \"code\": \"AQ\",\n          \"name\": \"Antarctica\"\n        },\n        {\n          \"code\": \"BY\",\n          \"name\": \"Belarus\"\n        },\n        {\n          \"code\": \"MM\",\n          \"name\": \"Burma (Myanmar)\"\n        },\n        {\n          \"code\": \"BI\",\n          \"name\": \"Burundi\"\n        },\n        {\n          \"code\": \"CF\",\n          \"name\": \"Central African Republic\"\n        },\n        {\n          \"code\": \"TD\",\n          \"name\": \"Chad\"\n        },\n        {\n          \"code\": \"CU\",\n          \"name\": \"Cuba\"\n        },\n        {\n          \"code\": \"CD\",\n          \"name\": \"Democratic Republic of Congo\"\n        },\n        {\n          \"code\": \"CG\",\n          \"name\": \"Republic of Congo\"\n        },\n        {\n          \"code\": \"ER\",\n          \"name\": \"Eritrea\"\n        },\n        {\n          \"code\": \"HT\",\n          \"name\": \"Haiti\"\n        },\n        {\n          \"code\": \"IR\",\n          \"name\": \"Iran\"\n        },\n        {\n          \"code\": \"IQ\",\n          \"name\": \"Iraq\"\n        },\n        {\n          \"code\": \"LY\",\n          \"name\": \"Libya\"\n        },\n        {\n          \"code\": \"ML\",\n          \"name\": \"Mali\"\n        },\n        {\n          \"code\": \"NI\",\n          \"name\": \"Nicaragua\"\n        },\n        {\n          \"code\": \"KP\",\n          \"name\": \"North Korea\"\n        },\n        {\n          \"code\": \"RU\",\n          \"name\": \"Russia\"\n        },\n        {\n          \"code\": \"SO\",\n          \"name\": \"Somalia\"\n        },\n        {\n          \"code\": \"SS\",\n          \"name\": \"South Sudan\"\n        },\n        {\n          \"code\": \"SD\",\n          \"name\": \"Sudan\"\n        },\n        {\n          \"code\": \"SY\",\n          \"name\": \"Syria\"\n        },\n        {\n          \"code\": \"VE\",\n          \"name\": \"Venezuela\"\n        },\n        {\n          \"code\": \"YE\",\n          \"name\": \"Yemen\"\n        },\n        {\n          \"code\": \"ZW\",\n          \"name\": \"Zimbabwe\"\n        },\n        {\n          \"code\": \"UA-43\",\n          \"name\": \"Crimea (Region of Ukraine)\"\n        },\n        {\n          \"code\": \"UA-14\",\n          \"name\": \"Donetsk (Region of Ukraine)\"\n        },\n        {\n          \"code\": \"UA-65\",\n          \"name\": \"Kherson (Region of Ukraine)\"\n        },\n        {\n          \"code\": \"UA-09\",\n          \"name\": \"Luhansk (Region of Ukraine)\"\n        },\n        {\n          \"code\": \"UA-23\",\n          \"name\": \"Zaporizhzhia (Region of Ukraine)\"\n        },\n        {\n          \"code\": \"AN\",\n          \"name\": \"Netherlands Antilles\"\n        }\n      ],\n      \"independentlyVerified\": false,\n      \"approvalGuaranteed\": false\n    }\n  },\n  \"gatewayIntegration\": {\n    \"adapterImplemented\": true,\n    \"contract\": \"v3\",\n    \"liveConfigurationProvided\": null,\n    \"availability\": {\n      \"source\": \"runtime\",\n      \"configurationEndpoint\": \"/api/config\",\n      \"configurationIncludesHealthCheck\": false,\n      \"checkoutEndpoint\": \"/api/checkout/{token}\",\n      \"checkoutIncludesProviderApproval\": false\n    }\n  }\n}\n\nKamu bilgisi sınırları\n\nDüz metin ve JSON, oturumları, belirteçleri, özel destek taleplerini, kullanıcı ödeme kayıtlarını veya entegrasyon sırlarını içermez. Oturum açma, hesap ve ödeme sayfaları arama dizinlemesinden hariç tutulur.\n\nKamu belgelerini okumak mağaza yönetimi izinleri vermez. Kişisel kayıtlar geçerli bir oturum gerektirir ve değişiklikler ek sunucu kontrolleri gerektirir.\n\nGüncellemeler ve alıntılar\n\nMakalelerin sabit kimlikleri, URL'leri, başlıkları ve bir güncelleme tarihi vardır. Bir yanıtı alıntılarken ilgili rehbere bağlantı verin ve işlem koşullarıyla ilgili nitelikleri koruyun.\n\nSitemap'ler, llms kaynakları ve sunucu tarafından render edilen HTML, içeriğin çıkarılmasını kolaylaştırır. Bunlar dizinleme, arama konumu veya harici bir yapay zekâ sistemi tarafından kullanımı garanti etmez.\n\nYalnızca yayınlanmış çevirilerin kurallı URL'leri, hreflang alternatifleri ve sitemap girişleri vardır. Gelecekteki çeviri için yapılandırılmış bir yerel ayar, yayınlanmış bir dil sürümü değildir.\n\nAsistan, destek ve proje yönetimi\n\nİlk Telegram girişi, onaylanmış bir satıcı değil, not_submitted durumuna sahip bir hesap ve bir taslak mağaza oluşturur. Hesap, başvuru formunu veya mevcut incelemeyi açar; ödeme kabul etmek uzman onayı gerektirir. Her yeni mağazanın kendi incelemesi vardır. GET /api/stores, reviewStatus ve applicationId değerlerini döndürür. Bağlı mağazalar toplu erişimi korur ve destek ile dokümantasyon inceleme sırasında kullanılabilir kalır.\n\nÖzel işlemlerde yardıma ihtiyacınız olduğunda sohbette verilerime erişimi etkinleştirin. includeAccount=true içeren bir web isteği geçerli bir oturum, Origin ve X-CSRF-Token gerektirir; X-Kevmi-Store sahip olunan bir mağazayı veya tüm sahip olunan mağazaları seçer. İzin olmadan asistan yalnızca genel belgeleri kullanır. Telegram'da, gönderen kimliği doğrulandıktan sonra ayrı bir düğme erişimi etkinleştirir.\n\nread_account aracı sahip olunan mağazaları, doğrulanmış ödeme durumuna sahip faturaları, etkinlikleri, başvuruları ve uzman yanıtlarını içeren destek taleplerini okur. 30 kayıt ve nextPage döndürür; daha eski kayıtlara sayfalama yoluyla erişilir. Yanıt başına okuma sayısı sınırlıdır, bu nedenle eksik bir örnek açıklanmalıdır. API anahtarları, webhook sırları, kart bilgileri ve oturumlar araca sağlanmaz. Araç ücret talep edemez, ödeme yapamaz, geri ödeme yapamaz veya ayarları değiştiremez.\n\nÇalışma alanında veya Telegram'da bir destek talebi oluşturmak, kalıcı bir kuyruğa ayrı bir yönetici uyarısı yerleştirir. /admin/tickets?ticket=<id> bağlantısına bağlanır; geçici Telegram arızaları yeniden denenir. Kurtarma ayrıca uyarısı olmayan daha eski açık talepleri de alır. Yöneticiler talep sayfasında yanıt verir; yanıt kullanıcı çalışma alanına kaydedilir ve destek bildirimleri etkinleştirildiğinde Telegram üzerinden gönderilir.\n\nBot ana menü, mağazalar, bildirimler, destek, güvenlik ve dil için satır içi düğmeler kullanır. Gezinme geçerli mesajı düzenler; kullanılamayan eski bir menü değiştirilir. Ödeme ve güvenlik bildirimleri tek kullanımlık gezinme olarak ele alınmaz. Menüden çıkış yapmak onay gerektirir. Açık /logout komutu yine de her hesap oturumunu sonlandırır.\n\n/admin/project paneli, sunucu tarafı MODERATOR_TELEGRAM_IDS izin listesindeki Telegram kimlikleriyle sınırlıdır. Kullanıcıları, mağazaları, işlemleri, anahtar iptalini, webhook devre dışı bırakmayı, fatura duraklatmayı, kabul kontrollerini ve bir denetim günlüğünü içerir. Değişiklikler CSRF ve bir gerekçe gerektirir. Panel bir yöneticiyi kısıtlayamaz veya bir ödemeyi manuel olarak başarılı ilan edemez. Bir sahibi kısıtlamak oturumları sonlandırır ve API anahtarı erişimini engeller; bir mağazayı kısıtlamak yeni işlemleri durdurur. Geçmiş korunur.\n\nKamu teklifi etkinleştirilmiş her dilde /public-offer adresinde, gizlilik politikası ise /privacy-policy adresinde mevcuttur. Madeni paraları ada veya kısaltmaya göre arayın. Birden fazla canlı ağ mevcut olduğunda yalnızca bir ağ seçici görünür. Tek bir ağ otomatik olarak seçilir ve onayda adlandırılmış olarak kalır. Canlı ağ geçidi kullanılabilirliği seçilebilir çiftleri belirler; referans kataloğu bir hizmeti etkinleştirmez.\n\nRutin web uygulaması sürümleri için update.sh kullanın: adayı derleyin, geçiş geçmişini kontrol edin, SQLite'ı çevrimiçi yedekleyin, ikinci bir kapsayıcı başlatın, doğrulayın ve Caddy'yi sorunsuz şekilde değiştirin. Ağ geçidi, PostgreSQL ve posta yeniden başlatılmaz. Önceki statik varlıklar açık sekmeler için kullanılabilir durumda kalır. Yeni bir geçiş açıkça gözden geçirilmiş yetkilendirme gerektirir; uyumsuz bir şema değişikliği sorunsuz bir dağıtım değildir.\n\nKamu teklifi\n\nGizlilik politikası",
      "readMinutes": 5
    },
    {
      "id": "cost-sharing",
      "title": "İşlem ücretlerini ve KDV'yi bölün",
      "summary": "Her faturanızda müşterinizin işlem ücretinin ve KDV'nin ne kadarını ödeyeceğine bağımsız olarak karar verin. İki kaydırıcı, her maliyeti %0'dan %100'e kadar yüzde birlik adımlarla dağıtır; sonuç, bağlantıyı oluşturmadan önce görünür.",
      "tags": [
        "maliyet paylaşımı",
        "işlem ücreti",
        "KDV",
        "yüzde",
        "kaydırıcı",
        "feeCustomerPercent",
        "vatCustomerPercent"
      ],
      "sections": [
        {
          "id": "controls",
          "title": "Bir sipariş için iki denetim",
          "paragraphs": [
            "İşlem ücreti denetimi, yüzdelik ve sabit bileşenlerinin ikisi de dahil olmak üzere tüm kabul ücretini dağıtır. KDV denetimi yalnızca vergiyi dağıtır. Hiçbir denetim tarifeyi, vergi oranını veya temel ürün fiyatını değiştirmez.",
            "Tamamen solda, maliyet müşteriye atanır; tamamen sağda, satıcıya atanır. Etiketler her iki tarafın tam yüzdelerini ve parasal tutarlarını gösterir. Müşteri, Eşit böl ve Satıcı hazır ayarları hızlı bir seçim sağlar."
          ],
          "bullets": [
            "Müşteri payı ödeme toplamına eklenir.",
            "Satıcı payı temel sipariş fiyatından düşülür.",
            "SBP ve kripto para biriminde KDV sıfırdır, bu nedenle KDV denetimi bunların toplamını etkilemez.",
            "Düğmeler ve kaydırıcılar klavyeyle çalışır; sonucu anlamak için animasyon gerekmez."
          ],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Hesaplayıcıyı aç",
              "href": "/pricing"
            }
          ]
        },
        {
          "id": "base",
          "title": "Bir temel fiyat, iki ayrı maliyet",
          "paragraphs": [
            "Uluslararası kartlar ve Alipay, temel fiyatın %10'u artı 0,50 $ tutarındadır ve KDV temel fiyatın %16'sıdır. SBP %8, kripto para birimi %4 tutarındadır; yayınlanmış fiyatlandırma modeline göre hiçbirinde KDV yoktur.",
            "KDV, 16/116 kullanılarak çıkarılmaz, temel fiyattan eklenir. Ücret, KDV'yi veya müşteri ücret payını içeren bir toplam üzerinden yeniden hesaplanmaz. Kevmi'nin komisyonu zaten yayınlanmış tarifeye dahildir; ayrıca %5 eklenmez."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "Formula · integer minor units",
            "code": "fee = roundHalfUp(base × rate / 100) + fixed\nvat = vatApplies ? roundHalfUp(base × 16 / 100) : 0\ncustomerFee = roundHalfUp(fee × feeCustomerPercent / 100)\ncustomerVat = roundHalfUp(vat × vatCustomerPercent / 100)\nmerchantFee = fee − customerFee\nmerchantVat = vat − customerVat\ncustomerTotal = base + customerFee + customerVat\nmerchantNet = base − merchantFee − merchantVat"
          },
          "note": "",
          "links": []
        },
        {
          "id": "example",
          "title": "5 $ tutarında bir kart siparişinin dağıtımı",
          "paragraphs": [
            "Aşağıdaki her örnek 5,00 $ temel fiyat, 1,00 $ toplam kart ücreti ve 0,80 $ KDV kullanır. Yüzdeler yalnızca bu maliyetleri kimin karşıladığını değiştirir."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Müşteri payları: KDV / ücret",
              "Müşteri öder",
              "Kesintiler sonrası satıcı"
            ],
            "rows": [
              [
                "%100 / %0 · özgün varsayılan",
                "$5.80",
                "$4.00"
              ],
              [
                "%0 / %0 · satıcı hepsini karşılar",
                "$5.00",
                "$3.20"
              ],
              [
                "%100 / %100 · müşteri hepsini karşılar",
                "$6,80",
                "$5.00"
              ],
              [
                "%50 / %23 · özel bölüşüm",
                "$5,63",
                "$3,83"
              ]
            ]
          },
          "code": null,
          "note": "Tablo bölüşüm aritmetiğini gösterir. Bu kart yapılandırmalarından mevcut ağ geçidi yalnızca %100 müşteri KDV'si / %0 müşteri ücretini yürütebilir. Bu hesaplama bir ödeme başlatmaz; otomatik USD'den USDT'ye dönüştürme yoktur.",
          "links": []
        },
        {
          "id": "rounding",
          "title": "Bir kuruş kaybetmeden yuvarlama",
          "paragraphs": [
            "Tutarlar tamsayı küçük para birimi birimleridir. Toplam ücret ve toplam KDV önce ayrı ayrı yuvarlanır. Ardından her müşteri payı yarı yukarı yuvarlama kullanır ve satıcı bu maliyetin tam kalanını alır. Bu nedenle iki pay her zaman özgün tutara eklenir.",
            "Bir kuruşluk bir maliyet 50/50 bölüşüldüğünde, müşteriye bir kuruş ve satıcıya sıfır atanır. Yüzde %50 olarak kalırken, parasal tutarlar para biriminin mevcut hassasiyetini yansıtır. Sunucu, negatif satıcı geliri olan hesaplamaları reddeder."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "api",
          "title": "Bölüşümü API aracılığıyla ayarlayın",
          "paragraphs": [
            "vatCustomerPercent ve feeCustomerPercent değerlerini 0 ile 100 arasında tamsayılar olarak gönderin. Her biri oluşturulan faturaya uygulanır. Boş dizeler, kesirli yüzdeler ve aralık dışı sayılar reddedilir.",
            "feeCustomerPercent alanının atlanması tüm ücreti satıcıya atar. vatCustomerPercent alanının atlanması eski vatPayer alanını veya hesap varsayılanını kullanır. Eski müşteri ve satıcı değerleri %100 ve %0 müşteri KDV'sine karşılık gelir. Çelişen vatPayer ve vatCustomerPercent değerleri göndermeyin.",
            "Yanıtlar bir ara KDV payını vatPayer=shared olarak açıklar. Yeni istekler için sayısal yüzdeyi kullanın; shared, eski vatPayer girdi değeri olarak kabul edilmez."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "JSON",
            "code": "{\n  \"title\": \"Design project · order 1042\",\n  \"description\": \"One-time payment for the agreed design work\",\n  \"amountMinor\": 500,\n  \"currency\": \"USD\",\n  \"methods\": [\n    \"card\",\n    \"alipay\"\n  ],\n  \"vatCustomerPercent\": 100,\n  \"feeCustomerPercent\": 0,\n  \"orderId\": \"order-1042\",\n  \"metadata\": {\n    \"campaign\": \"autumn\"\n  }\n}"
          },
          "note": "Örnek, kart kanalının desteklenen bölüşümünü kullanır: KDV'nin tamamı müşteriye ve işlem ücretinin tamamı satıcıya. Diğer yüzdeleri kaydetmek bunları yürütülebilir yapmaz.",
          "links": [
            {
              "label": "API aracılığıyla bir fatura oluşturun",
              "href": "/docs/payment-links-api"
            }
          ]
        },
        {
          "id": "snapshot",
          "title": "Koşullar faturada kalır",
          "paragraphs": [
            "Fatura tutarı, para birimini, yöntemleri ve her iki payı dondurur. Mağaza tercihlerini değiştirmek yayınlanmış bağlantıları değiştirmez. Kaydırıcılar bölüşümü hesaplar; canlı yürütme, bağlı kanalın yeteneklerine bağlıdır.",
            "Yeni bir canlı kart veya Alipay ödemesi için mevcut ağ geçidi yalnızca feeCustomerPercent=0 ve vatCustomerPercent=100'ü destekler: satıcı tüm işlem ücretini karşılar ve KDV müşteri için tam olarak eklenir. Diğer paylar bir faturada kaydedilip hesaplanabilir, ancak yürütme unsupported_allocation ile engellenir. Sunucu kaydedilmiş koşulları sessizce asla değiştirmez. SBP ve USDT kripto ödemeleri tüm işlem ücreti paylarını destekler ve KDV içermez."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        }
      ],
      "group": "payments",
      "url": "/docs/cost-sharing",
      "body": "Bir sipariş için iki denetim\n\nİşlem ücreti denetimi, yüzdelik ve sabit bileşenlerinin ikisi de dahil olmak üzere tüm kabul ücretini dağıtır. KDV denetimi yalnızca vergiyi dağıtır. Hiçbir denetim tarifeyi, vergi oranını veya temel ürün fiyatını değiştirmez.\n\nTamamen solda, maliyet müşteriye atanır; tamamen sağda, satıcıya atanır. Etiketler her iki tarafın tam yüzdelerini ve parasal tutarlarını gösterir. Müşteri, Eşit böl ve Satıcı hazır ayarları hızlı bir seçim sağlar.\n\nMüşteri payı ödeme toplamına eklenir.\n\nSatıcı payı temel sipariş fiyatından düşülür.\n\nSBP ve kripto para biriminde KDV sıfırdır, bu nedenle KDV denetimi bunların toplamını etkilemez.\n\nDüğmeler ve kaydırıcılar klavyeyle çalışır; sonucu anlamak için animasyon gerekmez.\n\nHesaplayıcıyı aç\n\nBir temel fiyat, iki ayrı maliyet\n\nUluslararası kartlar ve Alipay, temel fiyatın %10'u artı 0,50 $ tutarındadır ve KDV temel fiyatın %16'sıdır. SBP %8, kripto para birimi %4 tutarındadır; yayınlanmış fiyatlandırma modeline göre hiçbirinde KDV yoktur.\n\nKDV, 16/116 kullanılarak çıkarılmaz, temel fiyattan eklenir. Ücret, KDV'yi veya müşteri ücret payını içeren bir toplam üzerinden yeniden hesaplanmaz. Kevmi'nin komisyonu zaten yayınlanmış tarifeye dahildir; ayrıca %5 eklenmez.\n\nfee = roundHalfUp(base × rate / 100) + fixed\nvat = vatApplies ? roundHalfUp(base × 16 / 100) : 0\ncustomerFee = roundHalfUp(fee × feeCustomerPercent / 100)\ncustomerVat = roundHalfUp(vat × vatCustomerPercent / 100)\nmerchantFee = fee − customerFee\nmerchantVat = vat − customerVat\ncustomerTotal = base + customerFee + customerVat\nmerchantNet = base − merchantFee − merchantVat\n\n5 $ tutarında bir kart siparişinin dağıtımı\n\nAşağıdaki her örnek 5,00 $ temel fiyat, 1,00 $ toplam kart ücreti ve 0,80 $ KDV kullanır. Yüzdeler yalnızca bu maliyetleri kimin karşıladığını değiştirir.\n\nMüşteri payları: KDV / ücret · Müşteri öder · Kesintiler sonrası satıcı\n%100 / %0 · özgün varsayılan · $5.80 · $4.00\n%0 / %0 · satıcı hepsini karşılar · $5.00 · $3.20\n%100 / %100 · müşteri hepsini karşılar · $6,80 · $5.00\n%50 / %23 · özel bölüşüm · $5,63 · $3,83\n\nTablo bölüşüm aritmetiğini gösterir. Bu kart yapılandırmalarından mevcut ağ geçidi yalnızca %100 müşteri KDV'si / %0 müşteri ücretini yürütebilir. Bu hesaplama bir ödeme başlatmaz; otomatik USD'den USDT'ye dönüştürme yoktur.\n\nBir kuruş kaybetmeden yuvarlama\n\nTutarlar tamsayı küçük para birimi birimleridir. Toplam ücret ve toplam KDV önce ayrı ayrı yuvarlanır. Ardından her müşteri payı yarı yukarı yuvarlama kullanır ve satıcı bu maliyetin tam kalanını alır. Bu nedenle iki pay her zaman özgün tutara eklenir.\n\nBir kuruşluk bir maliyet 50/50 bölüşüldüğünde, müşteriye bir kuruş ve satıcıya sıfır atanır. Yüzde %50 olarak kalırken, parasal tutarlar para biriminin mevcut hassasiyetini yansıtır. Sunucu, negatif satıcı geliri olan hesaplamaları reddeder.\n\nBölüşümü API aracılığıyla ayarlayın\n\nvatCustomerPercent ve feeCustomerPercent değerlerini 0 ile 100 arasında tamsayılar olarak gönderin. Her biri oluşturulan faturaya uygulanır. Boş dizeler, kesirli yüzdeler ve aralık dışı sayılar reddedilir.\n\nfeeCustomerPercent alanının atlanması tüm ücreti satıcıya atar. vatCustomerPercent alanının atlanması eski vatPayer alanını veya hesap varsayılanını kullanır. Eski müşteri ve satıcı değerleri %100 ve %0 müşteri KDV'sine karşılık gelir. Çelişen vatPayer ve vatCustomerPercent değerleri göndermeyin.\n\nYanıtlar bir ara KDV payını vatPayer=shared olarak açıklar. Yeni istekler için sayısal yüzdeyi kullanın; shared, eski vatPayer girdi değeri olarak kabul edilmez.\n\n{\n  \"title\": \"Design project · order 1042\",\n  \"description\": \"One-time payment for the agreed design work\",\n  \"amountMinor\": 500,\n  \"currency\": \"USD\",\n  \"methods\": [\n    \"card\",\n    \"alipay\"\n  ],\n  \"vatCustomerPercent\": 100,\n  \"feeCustomerPercent\": 0,\n  \"orderId\": \"order-1042\",\n  \"metadata\": {\n    \"campaign\": \"autumn\"\n  }\n}\n\nÖrnek, kart kanalının desteklenen bölüşümünü kullanır: KDV'nin tamamı müşteriye ve işlem ücretinin tamamı satıcıya. Diğer yüzdeleri kaydetmek bunları yürütülebilir yapmaz.\n\nAPI aracılığıyla bir fatura oluşturun\n\nKoşullar faturada kalır\n\nFatura tutarı, para birimini, yöntemleri ve her iki payı dondurur. Mağaza tercihlerini değiştirmek yayınlanmış bağlantıları değiştirmez. Kaydırıcılar bölüşümü hesaplar; canlı yürütme, bağlı kanalın yeteneklerine bağlıdır.\n\nYeni bir canlı kart veya Alipay ödemesi için mevcut ağ geçidi yalnızca feeCustomerPercent=0 ve vatCustomerPercent=100'ü destekler: satıcı tüm işlem ücretini karşılar ve KDV müşteri için tam olarak eklenir. Diğer paylar bir faturada kaydedilip hesaplanabilir, ancak yürütme unsupported_allocation ile engellenir. Sunucu kaydedilmiş koşulları sessizce asla değiştirmez. SBP ve USDT kripto ödemeleri tüm işlem ücreti paylarını destekler ve KDV içermez.",
      "readMinutes": 6
    },
    {
      "id": "widgets",
      "title": "Web sitenize ödemeyi gömün",
      "summary": "Ödemeyi bir modal içinde açın, bir sayfaya gömün veya müşteriyi özel bir ödeme sayfasına yönlendirin. Widget, herkese açık bir ödeme URL'si kullanır ve tarayıcıda asla bir tüccar API anahtarı gerektirmez.",
      "tags": [
        "widget",
        "iframe",
        "göm",
        "HTML",
        "entegrasyon",
        "modal",
        "ödeme sayfası"
      ],
      "sections": [
        {
          "id": "flow",
          "title": "Faturadan ödemeye",
          "paragraphs": [
            "/account#links içinde bir fatura oluşturun ve anında checkoutUrl alın. /account#widget adresini açın, bağlantıyı yapıştırın ve modal, satır içi blok veya yönlendirme seçin. Anahtarlar ve webhook'lar komşu hesap bölümlerinde mevcuttur.",
            "Oluşturucu önizlemesi her zaman ücret talep etmeden bir demo siparişi kullanır. Oluşturulan widget kodu, canlı bağlantınızı korur; koşulları kayıtlı sunucu faturasından gelir.",
            "Yeni çalışma alanı faturaları pricingMode=\"universal\" ve USD taban fiyat kullanır. Any, kart, alipay, sbp ve kriptoyu içerir; bir satıcı bir alt küme seçebilir. Kartlar ve Alipay USD tahsil eder. SBP, Rusya Merkez Bankası USD/RUB referans kurunu kullanarak RUB tahsil eder. Kripto, açık fatura kuralı 1 USD = 1 USDT kapsamında USDT tahsil eder. Bu bir fatura dönüştürme kuralıdır, piyasa USDT kotasyonu değildir. Ağ geçidi, transferden önce seçilen coin'in kurunu, tam transfer tutarını ve talimatlarını sağlar."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Entegrasyon oluşturucu",
              "href": "/account#widget"
            },
            {
              "label": "Ödeme bağlantıları API'si",
              "href": "/docs/payment-links-api"
            }
          ]
        },
        {
          "id": "markup",
          "title": "Normal bağlantı yedeği olan bir düğme",
          "paragraphs": [
            "Bu örnek, para talep etmeden bir demo açar. Her iki URL değerini, fatura yanıtınızdaki checkoutUrl ile değiştirin. Betiği ödeme URL'siyle aynı Kevmi kaynağından yükleyin.",
            "href, JavaScript kullanılamadığında ödemeyi açar. data-kevmi-label, iframe'e erişilebilir bir ad verir. Betiği sayfa başına bir kez ekleyin."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "HTML",
            "code": "<script src=\"https://kevmi.one/widgets/kevmi.js\" defer></script>\n<a href=\"https://kevmi.one/en/pay/demo\"\n   data-kevmi-checkout=\"https://kevmi.one/en/pay/demo\"\n   data-kevmi-mode=\"modal\"\n   data-kevmi-label=\"Order checkout\">Pay securely</a>"
          },
          "note": "",
          "links": []
        },
        {
          "id": "modes",
          "title": "Ödemeyi açmanın üç yolu",
          "paragraphs": [
            "Satır içi mod için div gibi bir kapsayıcı kullanın ve CHECKOUT_URL_FROM_API değerini gerçek bir URL ile değiştirin. Çerçeve, kapsayıcı genişliğine uyum sağlar; ödeme mesajları yüksekliğini sınırlı bir aralık içinde yeniden boyutlandırabilir.",
            "Modal, düğmesi, Escape veya arka plan tıklamasıyla kapanır. Kapanıştan sonra odak orijinal tetikleyiciye döner. Azaltılmış hareket ayarları geçişi kısaltır."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "data-kevmi-mode",
              "Davranış",
              "Şunlar için yararlı"
            ],
            "rows": [
              [
                "modal",
                "Bir kaplama iletişim kutusu; varsayılan mod",
                "Sipariş düzeyinde bir ödeme düğmesi"
              ],
              [
                "satır içi",
                "Seçili kapsayıcı içinde bir iframe",
                "Sitenizde bir ödeme adımı"
              ],
              [
                "yönlendirme",
                "Geçerli sekmede Kevmi'ye gezinme",
                "Tam bir ödeme sayfası"
              ]
            ]
          },
          "code": {
            "language": "HTML",
            "code": "<div data-kevmi-checkout=\"CHECKOUT_URL_FROM_API\"\n     data-kevmi-mode=\"inline\"\n     data-kevmi-label=\"Order checkout\"></div>"
          },
          "note": "",
          "links": []
        },
        {
          "id": "javascript",
          "title": "Arayüzünüzden ödemeyi açın",
          "paragraphs": [
            "kevmi:opened ve kevmi:closed belge olayları, arayüzünüzün açılma ve kapanmaya tepki vermesini sağlar. Tetikleyici üzerindeki bir kevmi:error olayı, geçersiz bir ödeme URL'si bildirir. Hiçbiri ödemeyi kanıtlamaz. Widget betiği yüklendikten sonra JavaScript API'sini çağırın."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "JavaScript",
            "code": "window.Kevmi.open(checkoutUrl, {\n  mode: 'modal',\n  label: 'Order checkout',\n  closeLabel: 'Close checkout'\n});\n\n// Inline blocks added after page load are detected automatically.\n// You may also request mounting explicitly:\nwindow.Kevmi.mount(document);"
          },
          "note": "",
          "links": []
        },
        {
          "id": "security",
          "title": "Başarılı bir ödemeyi ne kanıtlar",
          "paragraphs": [
            "HTML içine API anahtarları veya imzalama sırları koymayın. Widget yalnızca bir faturaya giden herkese açık bir bağlantı alır. Checkout, kart ayrıntılarını ve banka kodlarını ağ geçidi anahtarıyla şifreler; Kevmi sunucusu bunları düz metin olarak kabul etmez.",
            "postMessage arayüz durumunu günceller, sipariş yerine getirmeyi değil. İşlemeden önce mesaj kaynağını ve kaynak pencereyi kontrol edin. Nihai sonuç için doğrulanmış bir payment.succeeded olayı veya sunucunun GET link.payment özetindeki succeeded durumunu kullanın."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "Ödemeyi açmak, bir widget'ı kapatmak veya tüccar sitesine dönmek, paranın alındığını kanıtlamaz.",
          "links": [
            {
              "label": "Webhook imzaları ve teslimatı",
              "href": "/docs/webhooks"
            }
          ]
        },
        {
          "id": "deployment",
          "title": "Widget'ı üretime eklemeden önce",
          "paragraphs": [],
          "bullets": [
            "İçerik Güvenliği Politikanızın script-src ve frame-src yönergelerinde Kevmi kaynağına izin verin; ilgisiz politikaları genişletmeden.",
            "Dar ekranları, klavye erişimini ve açık ile koyu temaları kontrol edin.",
            "Faturanın etkin, süresi dolmamış ve doğru fiyat ile maliyet paylarına sahip olduğunu doğrulayın.",
            "Yedek olarak sıradan bir ödeme bağlantısı bulundurun.",
            "Başarısız teslimatları ve yinelenen webhook olaylarını, bir siparişi iki kez vermeden test edin."
          ],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "stores-usd",
          "title": "Birden fazla mağaza ve tek USD taban fiyat",
          "paragraphs": [
            "Toplu analiz ve işlemler için Tüm mağazaları seçin veya kendi kayıtları için bir mağaza seçin. Her mağazanın ayrı bir storeId'si, adı, varsayılan KDV'si, faturaları, API anahtarları, webhook uç noktaları, olay geçmişi ve web sitesi uygulaması vardır. Bildirimler ve destek talepleri hesaba aittir. Bir hesap en fazla 100 mağaza oluşturabilir. Mevcut kayıtlar ilk mağazasında kalır.",
            "Yeni çalışma alanı faturaları pricingMode=\"universal\" ve USD taban fiyat kullanır. Any, kart, alipay, sbp ve kriptoyu içerir; bir satıcı bir alt küme seçebilir. Kartlar ve Alipay USD tahsil eder. SBP, Rusya Merkez Bankası USD/RUB referans kurunu kullanarak RUB tahsil eder. Kripto, açık fatura kuralı 1 USD = 1 USDT kapsamında USDT tahsil eder. Bu bir fatura dönüştürme kuralıdır, piyasa USDT kotasyonu değildir. Ağ geçidi, transferden önce seçilen coin'in kurunu, tam transfer tutarını ve talimatlarını sağlar.",
            "Referans kuru ve her iki tutar oluşturma sırasında dondurulur. RUB dönüştürmesi içeren faturalar 24 saat içinde sona erer. Referans kuru alınamazsa, oluşturma FX_UNAVAILABLE ile başarısız olur; uydurulmuş veya bayat yedek kur kullanılmaz. Sahip yanıt tutarı ve kotasyonlar USD muhasebe para birimini kullanır. quotes[method].settlement, yerel tahsil kotasyonunu içerir. Genel ödeme sayfası, seçilen tahsil para birimini currency içinde, orijinal fiyatı baseAmountMinor/baseCurrency içinde ve referans kurunu fx içinde gösterir. Bir ödeme gönderildikten sonra yöntemi değiştirilemez; bir faturanın tek ağ geçidi işlemi vardır.",
            "Amaçlanan mağaza içinde bir API anahtarı oluşturun ve sunucunuzdan Authorization: Bearer <key> gönderin. Mağaza bağlaması değişmezdir; X-Kevmi-Store, anahtara başka bir mağazaya erişim izni veremez. Tarayıcı oturumları X-Kevmi-Store: <storeId> seçer; atlanırsa ilk mağaza seçilir. all değeri yalnızca GET /api/account/dashboard ve GET /api/payment-links tarafından kabul edilir. Değişiklikler seçili bir mağaza, Origin ve X-CSRF-Token gerektirir. Hesap kimlikleri ve mağaza kimlikleri farklı tanımlayıcılardır.",
            "Uyumluluk için, pricingMode=\"universal\" içermeyen API istekleri yerel fiyatlandırmayı ve orijinal para birimi kısıtlamalarını korur. Mevcut faturalar asla yeniden hesaplanmaz. Analizlerdeki onaylanmış tahsilatlar, doğrulanmış ödemelerden kaydedilmiş fatura giderlerinin düşülmesiyle elde edilir; bunlar çekilebilir bakiye değildir. Eski fatura para birimleri ayrı kalır ve ödemeler destek ile düzenlenir. Bir siparişi yalnızca sunucu API'si, olay geçmişi veya imzalı bir webhook üzerinden payment.fulfillmentReady=true ve payment.status=\"succeeded\" durumunu kontrol ettikten sonra yerine getirin."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        }
      ],
      "group": "developers",
      "url": "/docs/widgets",
      "body": "Faturadan ödemeye\n\n/account#links içinde bir fatura oluşturun ve anında checkoutUrl alın. /account#widget adresini açın, bağlantıyı yapıştırın ve modal, satır içi blok veya yönlendirme seçin. Anahtarlar ve webhook'lar komşu hesap bölümlerinde mevcuttur.\n\nOluşturucu önizlemesi her zaman ücret talep etmeden bir demo siparişi kullanır. Oluşturulan widget kodu, canlı bağlantınızı korur; koşulları kayıtlı sunucu faturasından gelir.\n\nYeni çalışma alanı faturaları pricingMode=\"universal\" ve USD taban fiyat kullanır. Any, kart, alipay, sbp ve kriptoyu içerir; bir satıcı bir alt küme seçebilir. Kartlar ve Alipay USD tahsil eder. SBP, Rusya Merkez Bankası USD/RUB referans kurunu kullanarak RUB tahsil eder. Kripto, açık fatura kuralı 1 USD = 1 USDT kapsamında USDT tahsil eder. Bu bir fatura dönüştürme kuralıdır, piyasa USDT kotasyonu değildir. Ağ geçidi, transferden önce seçilen coin'in kurunu, tam transfer tutarını ve talimatlarını sağlar.\n\nEntegrasyon oluşturucu\n\nÖdeme bağlantıları API'si\n\nNormal bağlantı yedeği olan bir düğme\n\nBu örnek, para talep etmeden bir demo açar. Her iki URL değerini, fatura yanıtınızdaki checkoutUrl ile değiştirin. Betiği ödeme URL'siyle aynı Kevmi kaynağından yükleyin.\n\nhref, JavaScript kullanılamadığında ödemeyi açar. data-kevmi-label, iframe'e erişilebilir bir ad verir. Betiği sayfa başına bir kez ekleyin.\n\n<script src=\"https://kevmi.one/widgets/kevmi.js\" defer></script>\n<a href=\"https://kevmi.one/en/pay/demo\"\n   data-kevmi-checkout=\"https://kevmi.one/en/pay/demo\"\n   data-kevmi-mode=\"modal\"\n   data-kevmi-label=\"Order checkout\">Pay securely</a>\n\nÖdemeyi açmanın üç yolu\n\nSatır içi mod için div gibi bir kapsayıcı kullanın ve CHECKOUT_URL_FROM_API değerini gerçek bir URL ile değiştirin. Çerçeve, kapsayıcı genişliğine uyum sağlar; ödeme mesajları yüksekliğini sınırlı bir aralık içinde yeniden boyutlandırabilir.\n\nModal, düğmesi, Escape veya arka plan tıklamasıyla kapanır. Kapanıştan sonra odak orijinal tetikleyiciye döner. Azaltılmış hareket ayarları geçişi kısaltır.\n\ndata-kevmi-mode · Davranış · Şunlar için yararlı\nmodal · Bir kaplama iletişim kutusu; varsayılan mod · Sipariş düzeyinde bir ödeme düğmesi\nsatır içi · Seçili kapsayıcı içinde bir iframe · Sitenizde bir ödeme adımı\nyönlendirme · Geçerli sekmede Kevmi'ye gezinme · Tam bir ödeme sayfası\n\n<div data-kevmi-checkout=\"CHECKOUT_URL_FROM_API\"\n     data-kevmi-mode=\"inline\"\n     data-kevmi-label=\"Order checkout\"></div>\n\nArayüzünüzden ödemeyi açın\n\nkevmi:opened ve kevmi:closed belge olayları, arayüzünüzün açılma ve kapanmaya tepki vermesini sağlar. Tetikleyici üzerindeki bir kevmi:error olayı, geçersiz bir ödeme URL'si bildirir. Hiçbiri ödemeyi kanıtlamaz. Widget betiği yüklendikten sonra JavaScript API'sini çağırın.\n\nwindow.Kevmi.open(checkoutUrl, {\n  mode: 'modal',\n  label: 'Order checkout',\n  closeLabel: 'Close checkout'\n});\n\n// Inline blocks added after page load are detected automatically.\n// You may also request mounting explicitly:\nwindow.Kevmi.mount(document);\n\nBaşarılı bir ödemeyi ne kanıtlar\n\nHTML içine API anahtarları veya imzalama sırları koymayın. Widget yalnızca bir faturaya giden herkese açık bir bağlantı alır. Checkout, kart ayrıntılarını ve banka kodlarını ağ geçidi anahtarıyla şifreler; Kevmi sunucusu bunları düz metin olarak kabul etmez.\n\npostMessage arayüz durumunu günceller, sipariş yerine getirmeyi değil. İşlemeden önce mesaj kaynağını ve kaynak pencereyi kontrol edin. Nihai sonuç için doğrulanmış bir payment.succeeded olayı veya sunucunun GET link.payment özetindeki succeeded durumunu kullanın.\n\nÖdemeyi açmak, bir widget'ı kapatmak veya tüccar sitesine dönmek, paranın alındığını kanıtlamaz.\n\nWebhook imzaları ve teslimatı\n\nWidget'ı üretime eklemeden önce\n\nİçerik Güvenliği Politikanızın script-src ve frame-src yönergelerinde Kevmi kaynağına izin verin; ilgisiz politikaları genişletmeden.\n\nDar ekranları, klavye erişimini ve açık ile koyu temaları kontrol edin.\n\nFaturanın etkin, süresi dolmamış ve doğru fiyat ile maliyet paylarına sahip olduğunu doğrulayın.\n\nYedek olarak sıradan bir ödeme bağlantısı bulundurun.\n\nBaşarısız teslimatları ve yinelenen webhook olaylarını, bir siparişi iki kez vermeden test edin.\n\nBirden fazla mağaza ve tek USD taban fiyat\n\nToplu analiz ve işlemler için Tüm mağazaları seçin veya kendi kayıtları için bir mağaza seçin. Her mağazanın ayrı bir storeId'si, adı, varsayılan KDV'si, faturaları, API anahtarları, webhook uç noktaları, olay geçmişi ve web sitesi uygulaması vardır. Bildirimler ve destek talepleri hesaba aittir. Bir hesap en fazla 100 mağaza oluşturabilir. Mevcut kayıtlar ilk mağazasında kalır.\n\nYeni çalışma alanı faturaları pricingMode=\"universal\" ve USD taban fiyat kullanır. Any, kart, alipay, sbp ve kriptoyu içerir; bir satıcı bir alt küme seçebilir. Kartlar ve Alipay USD tahsil eder. SBP, Rusya Merkez Bankası USD/RUB referans kurunu kullanarak RUB tahsil eder. Kripto, açık fatura kuralı 1 USD = 1 USDT kapsamında USDT tahsil eder. Bu bir fatura dönüştürme kuralıdır, piyasa USDT kotasyonu değildir. Ağ geçidi, transferden önce seçilen coin'in kurunu, tam transfer tutarını ve talimatlarını sağlar.\n\nReferans kuru ve her iki tutar oluşturma sırasında dondurulur. RUB dönüştürmesi içeren faturalar 24 saat içinde sona erer. Referans kuru alınamazsa, oluşturma FX_UNAVAILABLE ile başarısız olur; uydurulmuş veya bayat yedek kur kullanılmaz. Sahip yanıt tutarı ve kotasyonlar USD muhasebe para birimini kullanır. quotes[method].settlement, yerel tahsil kotasyonunu içerir. Genel ödeme sayfası, seçilen tahsil para birimini currency içinde, orijinal fiyatı baseAmountMinor/baseCurrency içinde ve referans kurunu fx içinde gösterir. Bir ödeme gönderildikten sonra yöntemi değiştirilemez; bir faturanın tek ağ geçidi işlemi vardır.\n\nAmaçlanan mağaza içinde bir API anahtarı oluşturun ve sunucunuzdan Authorization: Bearer <key> gönderin. Mağaza bağlaması değişmezdir; X-Kevmi-Store, anahtara başka bir mağazaya erişim izni veremez. Tarayıcı oturumları X-Kevmi-Store: <storeId> seçer; atlanırsa ilk mağaza seçilir. all değeri yalnızca GET /api/account/dashboard ve GET /api/payment-links tarafından kabul edilir. Değişiklikler seçili bir mağaza, Origin ve X-CSRF-Token gerektirir. Hesap kimlikleri ve mağaza kimlikleri farklı tanımlayıcılardır.\n\nUyumluluk için, pricingMode=\"universal\" içermeyen API istekleri yerel fiyatlandırmayı ve orijinal para birimi kısıtlamalarını korur. Mevcut faturalar asla yeniden hesaplanmaz. Analizlerdeki onaylanmış tahsilatlar, doğrulanmış ödemelerden kaydedilmiş fatura giderlerinin düşülmesiyle elde edilir; bunlar çekilebilir bakiye değildir. Eski fatura para birimleri ayrı kalır ve ödemeler destek ile düzenlenir. Bir siparişi yalnızca sunucu API'si, olay geçmişi veya imzalı bir webhook üzerinden payment.fulfillmentReady=true ve payment.status=\"succeeded\" durumunu kontrol ettikten sonra yerine getirin.",
      "readMinutes": 5
    },
    {
      "id": "applications",
      "title": "Mağazanızı bağlamak için başvurun",
      "summary": "Telegram ile giriş yaptıktan sonra web sitenizi gönderin ve her inceleme aşamasını özel bir URL'de takip edin. Otomatik kontroller incelemeyi destekler; bir moderatör her zaman nihai kararı verir.",
      "tags": [
        "başvuru",
        "kayıt",
        "moderasyon",
        "web sitesi incelemesi",
        "durum",
        "Telegram",
        "AI"
      ],
      "sections": [
        {
          "id": "submit",
          "title": "Başvuru gönderin",
          "paragraphs": [
            "Açıklamalar 40–3000 karakter gerektirir; proje adları en fazla 100 karaktere izin verir. Web sitesi giriş yapmadan erişilebilir olmalıdır. Kimlik bilgileri, özel ana bilgisayarlar, standart olmayan bağlantı noktaları veya sorgu parametreleri içeren URL'ler kabul edilmez.",
            "Doğrulanmış hesap başvurunun sahibidir. Girilen Telegram iletişimi iletişim içindir ve sahipliği değiştirmez. Takip URL'sini iletmek başka bir hesaba erişim vermez."
          ],
          "bullets": [],
          "steps": [
            "Telegram ile giriş yapın veya kaydolun, ardından /account#applications adresini açın.",
            "Herkese açık bir HTTPS web sitesi adresi, proje adı, kategori ve ürünlerinizin veya hizmetlerinizin bir açıklamasını girin.",
            "Bir Telegram iletişimi ekleyin. Müşterilerin ne aldığını ve siparişlerin nasıl yerine getirildiğini açıklayın.",
            "Siteyi gönderme yetkinizi doğrulayın ve formu gönderin.",
            "Gönderimden hemen sonra açılan /account#applications/{id} adresini saklayın."
          ],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Web sitenizi gönderin",
              "href": "/account#applications"
            }
          ]
        },
        {
          "id": "stages",
          "title": "Dört inceleme aşaması",
          "paragraphs": [
            "Bağlantı çizgisi ve aşama işaretçileri, kalıcı sunucu durumlarını yansıtır. Sayfayı yeniden açmak aynı sürece devam eder. Sekmeyi kapatmak başvurunuzu iptal etmez; arka plan işleri çalışmaya devam eder ve kesintiye uğrayan aşamaları kurtarır."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Aşama",
              "Ne olur",
              "Gösterilen durum"
            ],
            "rows": [
              [
                "Başvuru alındı",
                "Gönderim ayrıntıları ve özel URL kaydedildi",
                "İlk aşama tamamlandı"
              ],
              [
                "İçerik incelemesi",
                "Yapay zeka açıklamayı genel web sitesi içeriğiyle karşılaştırır",
                "Çalışıyor, tamamlandı veya uzman bekleniyor"
              ],
              [
                "Teknik kontroller",
                "Kullanılabilirlik ve sınırlı bir bağlantı kümesi incelenir",
                "Ayrı bir sonuç ve aşama zaman damgası"
              ],
              [
                "Uzman incelemesi",
                "Bir moderatör gönderimi ve bulguları inceler",
                "Karar bekleniyor, onaylandı veya ret nedeni"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "attention",
          "title": "Sarı aşama bir uzman gerektirir",
          "paragraphs": [
            "Sarı işaret, bir aşamanın ilgi gerektirdiği anlamına gelir; örneğin bilgiler yetersiz, bir bağlantı kullanılamıyor veya otomatik bir sonuç güvenle kabul edilemiyor. Bu nihai bir ret değildir. Durum sayfası sonraki adımı açıklar.",
            "Bir moderatör mevcut aşamayı temizleyebilir, böylece bir sonraki kontrol devam eder. Ret edilen bir aşama bir çarpı işareti ve moderatörün göndermeden önce düzenleyebileceği kullanıcıya yönelik bir neden gösterir. Ara aşamanın temizlenmesi nihai manuel incelemeyi asla kaldırmaz."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "scope",
          "title": "Otomatik kontroller neleri kapsar",
          "paragraphs": [
            "Kontroller genel ana sayfayı inceler: HTTPS, HTTP yanıtı, başlık, metin ve şüpheli bağlantı desenleri. Ayrıca aynı web sitesinde en fazla üç bağlantı için başlıklar isterler. Yönlendirme sayısı, yanıt boyutu ve istek süresi sınırlıdır.",
            "Kontroller oturum açılmış alanlara erişmez, indirilen dosyaları çalıştırmaz veya bir güvenlik denetimi ya da kötü amaçlı yazılım tarayıcısının yerini almaz. Bir aşamayı tamamlamak, her sayfanın kötü amaçlı içerikten arınmış olduğunu garanti etmez.",
            "Web sitesi içeriği güvenilmeyen veridir. Bir web sitesindeki talimatlar bir yönetici atayamaz, Kevmi koşullarını değiştiremez veya bir başvuruyu onaylayamaz. Kullanılamayan yapay zeka ve hatalı biçimlendirilmiş model çıktısı, aşamayı sessizce geçirmek yerine uzman incelemesi gerektirir."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "updates",
          "title": "Telegram güncellemeleri",
          "paragraphs": [
            "Bir başvuru almak, bir aşamayı tamamlamak, uzman ilgisi istemek ve nihai bir karar vermek, özel bir takip bağlantısı içeren bildirimler oluşturur. Bunlar hesap bildirim ayarlarında Destek kategorisini kullanır. Bu kategoriyi devre dışı bırakmak mesajları durdurur.",
            "Başvuru olayı ve bildirim çıkış kutusu girişi birlikte kaydedilir. Telegram teslimatı bir yeniden deneme kuyruğu kullanır ve bağlı bir bot gerektirir. Takip sayfası, Telegram kullanılamıyorsa veya bot engellenmişse güncel durumun kaynağı olarak kalır.",
            "Moderasyon ayrı uyarılar alır. Yalnızca sunucu moderatör izin listesindeki kullanıcılar Telegram'dan bir aşamayı temizleyebilir; eski bir düğme tekrarlanan bir karar uygulayamaz. Ret nedenleri moderasyon çalışma alanında düzenlenir."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Bildirim ayarları",
              "href": "/docs/notifications"
            }
          ]
        },
        {
          "id": "api",
          "title": "Başvuru ve karar sözleşmesi",
          "paragraphs": [
            "Sahiplik oturumdan gelir. Başvuru sahipleri userId, durum, roller veya inceleme sonuçları gönderemez. Aynı Idempotency-Key ve gövdeyle oluşturmanın tekrarlanması mevcut başvuruyu döndürür; gövdeyi bu anahtarla değiştirmek bir çakışma üretir.",
            "Bir moderatör kararı yalnızca beklenen başvuru sürümüne uygulanır. Eşzamanlı kararlar bir kez kaydedilir; diğer istek 409 alır. Bir ret nedeni 10–1500 karakterlik düz metindir. Dahili inceleme kanıtı yalnızca moderatörlerle sınırlıdır."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Rota",
              "Erişim ve davranış"
            ],
            "rows": [
              [
                "POST /api/applications",
                "Oturum + CSRF + Idempotency-Key; özel bir URL ile 202"
              ],
              [
                "GET /api/applications",
                "Geçerli hesap başvuruları"
              ],
              [
                "GET /api/applications/{id}",
                "Sahip olunan gönderim, aşamalar ve genel geçmiş"
              ],
              [
                "POST /api/applications/{id}/resume",
                "Oturum + CSRF; yalnızca işleme aşamasındaki başvuruları sürdürür"
              ],
              [
                "GET /api/moderation/applications",
                "Yalnızca doğrulanmış moderatörler"
              ],
              [
                "POST /api/moderation/applications/{id}/decision",
                "approve_step veya reject, expectedVersion ve bir ret nedeni"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "outcome",
          "title": "Karardan sonra",
          "paragraphs": [
            "Yeni bir ödeme ve kart niyeti, satıcının en son web sitesi inceleme başvurusunun onaylanmasını gerektirir. Onay tek başına ödeme ağ geçidini bağlamaz. İnceleme gönderimden sonra değişirse, mevcut işlem durum okumaları, mutabakat ve talep edilen banka kodu için kullanılabilir kalır.",
            "Ret edilirse, satıcı nedeni görür ve tekrar başvurmadan önce materyalleri düzeltebilir. Sarı bir aşama, bir uzmanın hâlâ karar vermesi gerektiği anlamına gelir; bu otomatik onay değildir."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Destek",
              "href": "/?support=open"
            },
            {
              "label": "Ağ geçidi kullanılabilirliği",
              "href": "/docs/gateway"
            }
          ]
        },
        {
          "id": "stores-usd",
          "title": "Birden fazla mağaza ve tek USD taban fiyat",
          "paragraphs": [
            "Toplu analiz ve işlemler için Tüm mağazaları seçin veya kendi kayıtları için bir mağaza seçin. Her mağazanın ayrı bir storeId'si, adı, varsayılan KDV'si, faturaları, API anahtarları, webhook uç noktaları, olay geçmişi ve web sitesi uygulaması vardır. Bildirimler ve destek talepleri hesaba aittir. Bir hesap en fazla 100 mağaza oluşturabilir. Mevcut kayıtlar ilk mağazasında kalır.",
            "Yeni çalışma alanı faturaları pricingMode=\"universal\" ve USD taban fiyat kullanır. Any, kart, alipay, sbp ve kriptoyu içerir; bir satıcı bir alt küme seçebilir. Kartlar ve Alipay USD tahsil eder. SBP, Rusya Merkez Bankası USD/RUB referans kurunu kullanarak RUB tahsil eder. Kripto, açık fatura kuralı 1 USD = 1 USDT kapsamında USDT tahsil eder. Bu bir fatura dönüştürme kuralıdır, piyasa USDT kotasyonu değildir. Ağ geçidi, transferden önce seçilen coin'in kurunu, tam transfer tutarını ve talimatlarını sağlar.",
            "Referans kuru ve her iki tutar oluşturma sırasında dondurulur. RUB dönüştürmesi içeren faturalar 24 saat içinde sona erer. Referans kuru alınamazsa, oluşturma FX_UNAVAILABLE ile başarısız olur; uydurulmuş veya bayat yedek kur kullanılmaz. Sahip yanıt tutarı ve kotasyonlar USD muhasebe para birimini kullanır. quotes[method].settlement, yerel tahsil kotasyonunu içerir. Genel ödeme sayfası, seçilen tahsil para birimini currency içinde, orijinal fiyatı baseAmountMinor/baseCurrency içinde ve referans kurunu fx içinde gösterir. Bir ödeme gönderildikten sonra yöntemi değiştirilemez; bir faturanın tek ağ geçidi işlemi vardır.",
            "Amaçlanan mağaza içinde bir API anahtarı oluşturun ve sunucunuzdan Authorization: Bearer <key> gönderin. Mağaza bağlaması değişmezdir; X-Kevmi-Store, anahtara başka bir mağazaya erişim izni veremez. Tarayıcı oturumları X-Kevmi-Store: <storeId> seçer; atlanırsa ilk mağaza seçilir. all değeri yalnızca GET /api/account/dashboard ve GET /api/payment-links tarafından kabul edilir. Değişiklikler seçili bir mağaza, Origin ve X-CSRF-Token gerektirir. Hesap kimlikleri ve mağaza kimlikleri farklı tanımlayıcılardır.",
            "Uyumluluk için, pricingMode=\"universal\" içermeyen API istekleri yerel fiyatlandırmayı ve orijinal para birimi kısıtlamalarını korur. Mevcut faturalar asla yeniden hesaplanmaz. Analizlerdeki onaylanmış tahsilatlar, doğrulanmış ödemelerden kaydedilmiş fatura giderlerinin düşülmesiyle elde edilir; bunlar çekilebilir bakiye değildir. Eski fatura para birimleri ayrı kalır ve ödemeler destek ile düzenlenir. Bir siparişi yalnızca sunucu API'si, olay geçmişi veya imzalı bir webhook üzerinden payment.fulfillmentReady=true ve payment.status=\"succeeded\" durumunu kontrol ettikten sonra yerine getirin."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        }
      ],
      "group": "start",
      "url": "/docs/applications",
      "body": "Başvuru gönderin\n\nAçıklamalar 40–3000 karakter gerektirir; proje adları en fazla 100 karaktere izin verir. Web sitesi giriş yapmadan erişilebilir olmalıdır. Kimlik bilgileri, özel ana bilgisayarlar, standart olmayan bağlantı noktaları veya sorgu parametreleri içeren URL'ler kabul edilmez.\n\nDoğrulanmış hesap başvurunun sahibidir. Girilen Telegram iletişimi iletişim içindir ve sahipliği değiştirmez. Takip URL'sini iletmek başka bir hesaba erişim vermez.\n\nTelegram ile giriş yapın veya kaydolun, ardından /account#applications adresini açın.\n\nHerkese açık bir HTTPS web sitesi adresi, proje adı, kategori ve ürünlerinizin veya hizmetlerinizin bir açıklamasını girin.\n\nBir Telegram iletişimi ekleyin. Müşterilerin ne aldığını ve siparişlerin nasıl yerine getirildiğini açıklayın.\n\nSiteyi gönderme yetkinizi doğrulayın ve formu gönderin.\n\nGönderimden hemen sonra açılan /account#applications/{id} adresini saklayın.\n\nWeb sitenizi gönderin\n\nDört inceleme aşaması\n\nBağlantı çizgisi ve aşama işaretçileri, kalıcı sunucu durumlarını yansıtır. Sayfayı yeniden açmak aynı sürece devam eder. Sekmeyi kapatmak başvurunuzu iptal etmez; arka plan işleri çalışmaya devam eder ve kesintiye uğrayan aşamaları kurtarır.\n\nAşama · Ne olur · Gösterilen durum\nBaşvuru alındı · Gönderim ayrıntıları ve özel URL kaydedildi · İlk aşama tamamlandı\nİçerik incelemesi · Yapay zeka açıklamayı genel web sitesi içeriğiyle karşılaştırır · Çalışıyor, tamamlandı veya uzman bekleniyor\nTeknik kontroller · Kullanılabilirlik ve sınırlı bir bağlantı kümesi incelenir · Ayrı bir sonuç ve aşama zaman damgası\nUzman incelemesi · Bir moderatör gönderimi ve bulguları inceler · Karar bekleniyor, onaylandı veya ret nedeni\n\nSarı aşama bir uzman gerektirir\n\nSarı işaret, bir aşamanın ilgi gerektirdiği anlamına gelir; örneğin bilgiler yetersiz, bir bağlantı kullanılamıyor veya otomatik bir sonuç güvenle kabul edilemiyor. Bu nihai bir ret değildir. Durum sayfası sonraki adımı açıklar.\n\nBir moderatör mevcut aşamayı temizleyebilir, böylece bir sonraki kontrol devam eder. Ret edilen bir aşama bir çarpı işareti ve moderatörün göndermeden önce düzenleyebileceği kullanıcıya yönelik bir neden gösterir. Ara aşamanın temizlenmesi nihai manuel incelemeyi asla kaldırmaz.\n\nOtomatik kontroller neleri kapsar\n\nKontroller genel ana sayfayı inceler: HTTPS, HTTP yanıtı, başlık, metin ve şüpheli bağlantı desenleri. Ayrıca aynı web sitesinde en fazla üç bağlantı için başlıklar isterler. Yönlendirme sayısı, yanıt boyutu ve istek süresi sınırlıdır.\n\nKontroller oturum açılmış alanlara erişmez, indirilen dosyaları çalıştırmaz veya bir güvenlik denetimi ya da kötü amaçlı yazılım tarayıcısının yerini almaz. Bir aşamayı tamamlamak, her sayfanın kötü amaçlı içerikten arınmış olduğunu garanti etmez.\n\nWeb sitesi içeriği güvenilmeyen veridir. Bir web sitesindeki talimatlar bir yönetici atayamaz, Kevmi koşullarını değiştiremez veya bir başvuruyu onaylayamaz. Kullanılamayan yapay zeka ve hatalı biçimlendirilmiş model çıktısı, aşamayı sessizce geçirmek yerine uzman incelemesi gerektirir.\n\nTelegram güncellemeleri\n\nBir başvuru almak, bir aşamayı tamamlamak, uzman ilgisi istemek ve nihai bir karar vermek, özel bir takip bağlantısı içeren bildirimler oluşturur. Bunlar hesap bildirim ayarlarında Destek kategorisini kullanır. Bu kategoriyi devre dışı bırakmak mesajları durdurur.\n\nBaşvuru olayı ve bildirim çıkış kutusu girişi birlikte kaydedilir. Telegram teslimatı bir yeniden deneme kuyruğu kullanır ve bağlı bir bot gerektirir. Takip sayfası, Telegram kullanılamıyorsa veya bot engellenmişse güncel durumun kaynağı olarak kalır.\n\nModerasyon ayrı uyarılar alır. Yalnızca sunucu moderatör izin listesindeki kullanıcılar Telegram'dan bir aşamayı temizleyebilir; eski bir düğme tekrarlanan bir karar uygulayamaz. Ret nedenleri moderasyon çalışma alanında düzenlenir.\n\nBildirim ayarları\n\nBaşvuru ve karar sözleşmesi\n\nSahiplik oturumdan gelir. Başvuru sahipleri userId, durum, roller veya inceleme sonuçları gönderemez. Aynı Idempotency-Key ve gövdeyle oluşturmanın tekrarlanması mevcut başvuruyu döndürür; gövdeyi bu anahtarla değiştirmek bir çakışma üretir.\n\nBir moderatör kararı yalnızca beklenen başvuru sürümüne uygulanır. Eşzamanlı kararlar bir kez kaydedilir; diğer istek 409 alır. Bir ret nedeni 10–1500 karakterlik düz metindir. Dahili inceleme kanıtı yalnızca moderatörlerle sınırlıdır.\n\nRota · Erişim ve davranış\nPOST /api/applications · Oturum + CSRF + Idempotency-Key; özel bir URL ile 202\nGET /api/applications · Geçerli hesap başvuruları\nGET /api/applications/{id} · Sahip olunan gönderim, aşamalar ve genel geçmiş\nPOST /api/applications/{id}/resume · Oturum + CSRF; yalnızca işleme aşamasındaki başvuruları sürdürür\nGET /api/moderation/applications · Yalnızca doğrulanmış moderatörler\nPOST /api/moderation/applications/{id}/decision · approve_step veya reject, expectedVersion ve bir ret nedeni\n\nKarardan sonra\n\nYeni bir ödeme ve kart niyeti, satıcının en son web sitesi inceleme başvurusunun onaylanmasını gerektirir. Onay tek başına ödeme ağ geçidini bağlamaz. İnceleme gönderimden sonra değişirse, mevcut işlem durum okumaları, mutabakat ve talep edilen banka kodu için kullanılabilir kalır.\n\nRet edilirse, satıcı nedeni görür ve tekrar başvurmadan önce materyalleri düzeltebilir. Sarı bir aşama, bir uzmanın hâlâ karar vermesi gerektiği anlamına gelir; bu otomatik onay değildir.\n\nDestek\n\nAğ geçidi kullanılabilirliği\n\nBirden fazla mağaza ve tek USD taban fiyat\n\nToplu analiz ve işlemler için Tüm mağazaları seçin veya kendi kayıtları için bir mağaza seçin. Her mağazanın ayrı bir storeId'si, adı, varsayılan KDV'si, faturaları, API anahtarları, webhook uç noktaları, olay geçmişi ve web sitesi uygulaması vardır. Bildirimler ve destek talepleri hesaba aittir. Bir hesap en fazla 100 mağaza oluşturabilir. Mevcut kayıtlar ilk mağazasında kalır.\n\nYeni çalışma alanı faturaları pricingMode=\"universal\" ve USD taban fiyat kullanır. Any, kart, alipay, sbp ve kriptoyu içerir; bir satıcı bir alt küme seçebilir. Kartlar ve Alipay USD tahsil eder. SBP, Rusya Merkez Bankası USD/RUB referans kurunu kullanarak RUB tahsil eder. Kripto, açık fatura kuralı 1 USD = 1 USDT kapsamında USDT tahsil eder. Bu bir fatura dönüştürme kuralıdır, piyasa USDT kotasyonu değildir. Ağ geçidi, transferden önce seçilen coin'in kurunu, tam transfer tutarını ve talimatlarını sağlar.\n\nReferans kuru ve her iki tutar oluşturma sırasında dondurulur. RUB dönüştürmesi içeren faturalar 24 saat içinde sona erer. Referans kuru alınamazsa, oluşturma FX_UNAVAILABLE ile başarısız olur; uydurulmuş veya bayat yedek kur kullanılmaz. Sahip yanıt tutarı ve kotasyonlar USD muhasebe para birimini kullanır. quotes[method].settlement, yerel tahsil kotasyonunu içerir. Genel ödeme sayfası, seçilen tahsil para birimini currency içinde, orijinal fiyatı baseAmountMinor/baseCurrency içinde ve referans kurunu fx içinde gösterir. Bir ödeme gönderildikten sonra yöntemi değiştirilemez; bir faturanın tek ağ geçidi işlemi vardır.\n\nAmaçlanan mağaza içinde bir API anahtarı oluşturun ve sunucunuzdan Authorization: Bearer <key> gönderin. Mağaza bağlaması değişmezdir; X-Kevmi-Store, anahtara başka bir mağazaya erişim izni veremez. Tarayıcı oturumları X-Kevmi-Store: <storeId> seçer; atlanırsa ilk mağaza seçilir. all değeri yalnızca GET /api/account/dashboard ve GET /api/payment-links tarafından kabul edilir. Değişiklikler seçili bir mağaza, Origin ve X-CSRF-Token gerektirir. Hesap kimlikleri ve mağaza kimlikleri farklı tanımlayıcılardır.\n\nUyumluluk için, pricingMode=\"universal\" içermeyen API istekleri yerel fiyatlandırmayı ve orijinal para birimi kısıtlamalarını korur. Mevcut faturalar asla yeniden hesaplanmaz. Analizlerdeki onaylanmış tahsilatlar, doğrulanmış ödemelerden kaydedilmiş fatura giderlerinin düşülmesiyle elde edilir; bunlar çekilebilir bakiye değildir. Eski fatura para birimleri ayrı kalır ve ödemeler destek ile düzenlenir. Bir siparişi yalnızca sunucu API'si, olay geçmişi veya imzalı bir webhook üzerinden payment.fulfillmentReady=true ve payment.status=\"succeeded\" durumunu kontrol ettikten sonra yerine getirin.",
      "readMinutes": 6
    }
  ],
  "facts": {
    "paymentType": "one_time",
    "subscriptionsSupported": false,
    "incomingFees": {
      "card": {
        "percent": 10,
        "fixedUsdMinor": 50,
        "vatApplies": true
      },
      "alipay": {
        "percent": 10,
        "fixedUsdMinor": 50,
        "vatApplies": true
      },
      "sbp": {
        "percent": 8,
        "fixedUsdMinor": 0,
        "vatApplies": false
      },
      "crypto": {
        "percent": 4,
        "fixedUsdMinor": 0,
        "vatApplies": false
      }
    },
    "vat": {
      "ratePercent": 16,
      "base": "order_base_amount",
      "defaultPayer": "customer",
      "payerOptions": [
        "customer",
        "merchant",
        "shared"
      ],
      "customerPercentRange": [
        0,
        100
      ],
      "customerPercentStep": 1,
      "feeBase": "order_base_amount",
      "source": "owner_confirmed",
      "example": {
        "baseUsdMinor": 500,
        "feeUsdMinor": 100,
        "vatUsdMinor": 80,
        "customerPayer": {
          "chargedUsdMinor": 580,
          "merchantNetUsdMinor": 400
        },
        "merchantPayer": {
          "chargedUsdMinor": 500,
          "merchantNetUsdMinor": 320
        }
      }
    },
    "payout": {
      "asset": "USDT",
      "network": "TRC20",
      "sourceFees": {
        "card": "4%",
        "alipay": "4%",
        "sbp": "5% + RUB 400",
        "crypto": "0% + $3"
      },
      "creationImplemented": false,
      "requestImplemented": true,
      "requestPath": "/api/account/payout-requests",
      "scheduledMethods": [
        "card",
        "alipay"
      ],
      "scheduledDays": [
        1,
        15
      ],
      "timeZone": "Asia/Qyzylorda",
      "requestAnyDay": true,
      "gatewayBalanceIsMerchantLedger": false,
      "fixedCryptoFeeCurrency": "USD"
    },
    "costSharing": {
      "pricingVersion": 2,
      "independent": [
        "vatCustomerPercent",
        "feeCustomerPercent"
      ],
      "range": [
        0,
        100
      ],
      "step": 1,
      "defaultVatCustomerPercent": 100,
      "defaultFeeCustomerPercent": 0,
      "customerSharesAddedToCharge": true,
      "merchantSharesDeductedFromBase": true,
      "rounding": "half_up_customer_share_then_exact_merchant_remainder",
      "invoiceTermsImmutable": true,
      "liveGatewayAllocation": {
        "card": {
          "vatCustomerPercent": 100,
          "feeCustomerPercent": 0
        },
        "alipay": {
          "vatCustomerPercent": 100,
          "feeCustomerPercent": 0
        },
        "sbp": {
          "feeCustomerPercent": [
            0,
            100
          ],
          "vatApplies": false
        },
        "crypto": {
          "feeCustomerPercent": [
            0,
            100
          ],
          "vatApplies": false
        },
        "otherSavedCardSplitsExecutable": false
      },
      "example": {
        "baseUsdMinor": 500,
        "vatCustomerPercent": 50,
        "feeCustomerPercent": 23,
        "customerVatMinor": 40,
        "customerFeeMinor": 23,
        "customerTotalMinor": 563,
        "merchantNetMinor": 383
      }
    },
    "paymentLinks": {
      "methodSelection": "customer_from_invoice_methods",
      "interfaceAnyMode": "all_four_methods_in_universal_pricing",
      "allowedMethodsByCurrency": {
        "USD": [
          "card",
          "alipay",
          "sbp",
          "crypto"
        ],
        "RUB": [
          "card",
          "alipay",
          "sbp",
          "crypto"
        ],
        "USDT": [
          "card",
          "alipay",
          "sbp",
          "crypto"
        ]
      },
      "nativeAllowedMethodsByCurrency": {
        "USD": [
          "card",
          "alipay"
        ],
        "RUB": [
          "sbp"
        ],
        "USDT": [
          "crypto"
        ]
      },
      "apiCreateField": "methods",
      "legacyUsdCryptoApiSaveAccepted": true,
      "legacyUsdCryptoExecutable": false,
      "nativeCryptoRequiresExplicitUsdt": true,
      "ownerGetPaymentField": "payment",
      "ownerGetPaymentNullable": true,
      "createAndPatchPaymentSummaryOptional": true,
      "apiAnyValueSupported": false,
      "quotesPerMethod": true,
      "automaticCurrencyConversion": true,
      "conversionMode": "frozen_universal_quotes"
    },
    "merchantAPI": {
      "basePath": "/api/v1",
      "createInvoicePath": "/api/v1/payments",
      "createsCharge": false,
      "returnsCheckoutUrl": true,
      "scopes": [
        "invoices:read",
        "invoices:write",
        "events:read"
      ],
      "defaultKeyLifetimeDays": 90,
      "maximumActiveKeys": 10,
      "keysStoredAsHashes": true
    },
    "widgets": {
      "script": "/widgets/kevmi.js",
      "modes": [
        "modal",
        "inline",
        "redirect"
      ],
      "publicCheckoutUrlOnly": true,
      "browserMessagesConfirmPayment": false
    },
    "webhooks": {
      "events": [
        "invoice.created",
        "invoice.updated",
        "payment.succeeded",
        "payment.failed",
        "payment.refunded",
        "payment.partially_refunded",
        "payment.disputed",
        "payment.review_required"
      ],
      "signatureHeader": "Kevmi-Signature",
      "signatureAlgorithm": "HMAC-SHA256",
      "signatureInput": "timestamp.rawBody",
      "timestampToleranceSeconds": 300,
      "delivery": "at_least_once",
      "maximumAttempts": 6,
      "retryDelaySeconds": [
        60,
        300,
        1800,
        7200,
        43200
      ],
      "endpointVerificationRequired": true,
      "paymentSource": "validated_gateway_receipt",
      "financialStatusFromBrowser": false
    },
    "applications": {
      "path": "/account#applications",
      "trackingPath": "/account#applications/{id}",
      "authentication": "telegram_session",
      "visibility": "owner_and_moderators",
      "stages": [
        "received",
        "ai_review",
        "technical_review",
        "manual_review"
      ],
      "manualFinalDecisionRequired": true,
      "businessTypes": [
        "digital_goods",
        "software",
        "services",
        "physical_goods",
        "education",
        "other"
      ],
      "submissionLimitPerDay": 5,
      "resumeLimitPerMinute": 30,
      "moderationLimitPerMinute": 30,
      "aiReviewsPerHour": 30,
      "unknownAutomatedResults": "needs_review",
      "checks": "bounded_public_content_and_same_origin_links",
      "safetyGuarantee": false,
      "notificationCategory": "support",
      "approvalActivatesGateway": false,
      "latestApprovalRequiredForNewPayment": true,
      "invoiceCreationBeforeApproval": true,
      "existingOperationReadableAfterApprovalChange": true
    },
    "countries": {
      "card": {
        "countryCount": 223,
        "ownerReportedCountryCount": null,
        "coverageLabel": "190+",
        "restrictions": [
          {
            "code": "AF",
            "name": "Afghanistan",
            "nameEn": "Afghanistan"
          },
          {
            "code": "AQ",
            "name": "Antarctica",
            "nameEn": "Antarctica"
          },
          {
            "code": "BY",
            "name": "Belarus",
            "nameEn": "Belarus"
          },
          {
            "code": "MM",
            "name": "Burma (Myanmar)",
            "nameEn": "Burma (Myanmar)"
          },
          {
            "code": "BI",
            "name": "Burundi",
            "nameEn": "Burundi"
          },
          {
            "code": "CF",
            "name": "Central African Republic",
            "nameEn": "Central African Republic"
          },
          {
            "code": "TD",
            "name": "Chad",
            "nameEn": "Chad"
          },
          {
            "code": "CU",
            "name": "Cuba",
            "nameEn": "Cuba"
          },
          {
            "code": "CD",
            "name": "Democratic Republic of Congo",
            "nameEn": "Democratic Republic of Congo"
          },
          {
            "code": "CG",
            "name": "Republic of Congo",
            "nameEn": "Republic of Congo"
          },
          {
            "code": "ER",
            "name": "Eritrea",
            "nameEn": "Eritrea"
          },
          {
            "code": "HT",
            "name": "Haiti",
            "nameEn": "Haiti"
          },
          {
            "code": "IR",
            "name": "Iran",
            "nameEn": "Iran"
          },
          {
            "code": "IQ",
            "name": "Iraq",
            "nameEn": "Iraq"
          },
          {
            "code": "LY",
            "name": "Libya",
            "nameEn": "Libya"
          },
          {
            "code": "ML",
            "name": "Mali",
            "nameEn": "Mali"
          },
          {
            "code": "NI",
            "name": "Nicaragua",
            "nameEn": "Nicaragua"
          },
          {
            "code": "KP",
            "name": "North Korea",
            "nameEn": "North Korea"
          },
          {
            "code": "RU",
            "name": "Russia",
            "nameEn": "Russia"
          },
          {
            "code": "SO",
            "name": "Somalia",
            "nameEn": "Somalia"
          },
          {
            "code": "SS",
            "name": "South Sudan",
            "nameEn": "South Sudan"
          },
          {
            "code": "SD",
            "name": "Sudan",
            "nameEn": "Sudan"
          },
          {
            "code": "SY",
            "name": "Syria",
            "nameEn": "Syria"
          },
          {
            "code": "VE",
            "name": "Venezuela",
            "nameEn": "Venezuela"
          },
          {
            "code": "YE",
            "name": "Yemen",
            "nameEn": "Yemen"
          },
          {
            "code": "ZW",
            "name": "Zimbabwe",
            "nameEn": "Zimbabwe"
          },
          {
            "code": "UA-43",
            "countryCode": "UA",
            "name": "Crimea (Region of Ukraine)",
            "nameEn": "Crimea (Region of Ukraine)"
          },
          {
            "code": "UA-14",
            "countryCode": "UA",
            "name": "Donetsk (Region of Ukraine)",
            "nameEn": "Donetsk (Region of Ukraine)"
          },
          {
            "code": "UA-65",
            "countryCode": "UA",
            "name": "Kherson (Region of Ukraine)",
            "nameEn": "Kherson (Region of Ukraine)"
          },
          {
            "code": "UA-09",
            "countryCode": "UA",
            "name": "Luhansk (Region of Ukraine)",
            "nameEn": "Luhansk (Region of Ukraine)"
          },
          {
            "code": "UA-23",
            "countryCode": "UA",
            "name": "Zaporizhzhia (Region of Ukraine)",
            "nameEn": "Zaporizhzhia (Region of Ukraine)"
          },
          {
            "code": "AN",
            "name": "Netherlands Antilles",
            "nameEn": "Netherlands Antilles"
          }
        ],
        "verifiedCountryCount": null,
        "exactList": [
          "AX",
          "AL",
          "DZ",
          "AS",
          "AD",
          "AO",
          "AI",
          "AG",
          "AR",
          "AM",
          "AW",
          "AU",
          "AT",
          "AZ",
          "BS",
          "BH",
          "BD",
          "BB",
          "BE",
          "BZ",
          "BJ",
          "BM",
          "BT",
          "BO",
          "BQ",
          "BA",
          "BW",
          "BV",
          "BR",
          "IO",
          "BN",
          "BG",
          "BF",
          "CV",
          "KH",
          "CM",
          "CA",
          "KY",
          "CL",
          "CN",
          "CX",
          "CC",
          "CO",
          "KM",
          "CK",
          "CR",
          "HR",
          "CW",
          "CY",
          "CZ",
          "CI",
          "DK",
          "DJ",
          "DM",
          "DO",
          "EC",
          "EG",
          "SV",
          "GQ",
          "EE",
          "SZ",
          "ET",
          "FK",
          "FO",
          "FM",
          "FJ",
          "FI",
          "FR",
          "GF",
          "PF",
          "TF",
          "GA",
          "GM",
          "GE",
          "DE",
          "GH",
          "GI",
          "GR",
          "GL",
          "GD",
          "GP",
          "GU",
          "GT",
          "GG",
          "GN",
          "GW",
          "GY",
          "HM",
          "VA",
          "HN",
          "HK",
          "HU",
          "IS",
          "IN",
          "ID",
          "IE",
          "IM",
          "IL",
          "IT",
          "JM",
          "JP",
          "JE",
          "JO",
          "KZ",
          "KE",
          "KI",
          "KW",
          "KG",
          "LA",
          "LV",
          "LB",
          "LS",
          "LR",
          "LI",
          "LT",
          "LU",
          "MO",
          "MG",
          "MW",
          "MY",
          "MV",
          "MT",
          "MH",
          "MQ",
          "MR",
          "MU",
          "YT",
          "MX",
          "MD",
          "MC",
          "MN",
          "ME",
          "MS",
          "MA",
          "MZ",
          "NA",
          "NR",
          "NP",
          "NL",
          "NC",
          "NZ",
          "NE",
          "NG",
          "NU",
          "NF",
          "MK",
          "MP",
          "NO",
          "OM",
          "PK",
          "PW",
          "PA",
          "PG",
          "PY",
          "PE",
          "PH",
          "PN",
          "PL",
          "PT",
          "PR",
          "QA",
          "RO",
          "RW",
          "RE",
          "BL",
          "SH",
          "KN",
          "LC",
          "MF",
          "PM",
          "VC",
          "WS",
          "SM",
          "ST",
          "SA",
          "SN",
          "RS",
          "SC",
          "SL",
          "SG",
          "SX",
          "SK",
          "SI",
          "SB",
          "ZA",
          "GS",
          "KR",
          "ES",
          "LK",
          "PS",
          "SR",
          "SJ",
          "SE",
          "CH",
          "TW",
          "TJ",
          "TZ",
          "TH",
          "TL",
          "TG",
          "TK",
          "TO",
          "TT",
          "TN",
          "TM",
          "TC",
          "TV",
          "TR",
          "UG",
          "UA",
          "AE",
          "GB",
          "UM",
          "US",
          "UY",
          "UZ",
          "VU",
          "VN",
          "VG",
          "VI",
          "WF",
          "EH",
          "ZM"
        ],
        "records": [
          {
            "code": "AX",
            "name": "Åland Adaları",
            "nameEn": "Åland Islands",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "AL",
            "name": "Arnavutluk",
            "nameEn": "Albania",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "DZ",
            "name": "Cezayir",
            "nameEn": "Algeria",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "AS",
            "name": "Amerikan Samoası",
            "nameEn": "American Samoa",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "AD",
            "name": "Andorra",
            "nameEn": "Andorra",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "AO",
            "name": "Angola",
            "nameEn": "Angola",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "AI",
            "name": "Anguilla",
            "nameEn": "Anguilla",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "AG",
            "name": "Antigua ve Barbuda",
            "nameEn": "Antigua & Barbuda",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "AR",
            "name": "Arjantin",
            "nameEn": "Argentina",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "AM",
            "name": "Ermenistan",
            "nameEn": "Armenia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "AW",
            "name": "Aruba",
            "nameEn": "Aruba",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "AU",
            "name": "Avustralya",
            "nameEn": "Australia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "AT",
            "name": "Avusturya",
            "nameEn": "Austria",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "AZ",
            "name": "Azerbaycan",
            "nameEn": "Azerbaijan",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BS",
            "name": "Bahamalar",
            "nameEn": "Bahamas",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BH",
            "name": "Bahreyn",
            "nameEn": "Bahrain",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BD",
            "name": "Bangladeş",
            "nameEn": "Bangladesh",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BB",
            "name": "Barbados",
            "nameEn": "Barbados",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BE",
            "name": "Belçika",
            "nameEn": "Belgium",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BZ",
            "name": "Belize",
            "nameEn": "Belize",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BJ",
            "name": "Benin",
            "nameEn": "Benin",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BM",
            "name": "Bermuda",
            "nameEn": "Bermuda",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BT",
            "name": "Butan",
            "nameEn": "Bhutan",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BO",
            "name": "Bolivya",
            "nameEn": "Bolivia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BQ",
            "name": "Karayip Hollandası",
            "nameEn": "Caribbean Netherlands",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BA",
            "name": "Bosna-Hersek",
            "nameEn": "Bosnia & Herzegovina",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BW",
            "name": "Botsvana",
            "nameEn": "Botswana",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BV",
            "name": "Bouvet Adası",
            "nameEn": "Bouvet Island",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BR",
            "name": "Brezilya",
            "nameEn": "Brazil",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "IO",
            "name": "Britanya Hint Okyanusu Toprakları",
            "nameEn": "British Indian Ocean Territory",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BN",
            "name": "Brunei",
            "nameEn": "Brunei",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BG",
            "name": "Bulgaristan",
            "nameEn": "Bulgaria",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BF",
            "name": "Burkina Faso",
            "nameEn": "Burkina Faso",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "CV",
            "name": "Cabo Verde",
            "nameEn": "Cape Verde",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "KH",
            "name": "Kamboçya",
            "nameEn": "Cambodia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "CM",
            "name": "Kamerun",
            "nameEn": "Cameroon",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "CA",
            "name": "Kanada",
            "nameEn": "Canada",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "KY",
            "name": "Cayman Adaları",
            "nameEn": "Cayman Islands",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "CL",
            "name": "Şili",
            "nameEn": "Chile",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "CN",
            "name": "Çin",
            "nameEn": "China",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "CX",
            "name": "Christmas Adası",
            "nameEn": "Christmas Island",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "CC",
            "name": "Cocos (Keeling) Adaları",
            "nameEn": "Cocos (Keeling) Islands",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "CO",
            "name": "Kolombiya",
            "nameEn": "Colombia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "KM",
            "name": "Komorlar",
            "nameEn": "Comoros",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "CK",
            "name": "Cook Adaları",
            "nameEn": "Cook Islands",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "CR",
            "name": "Kosta Rika",
            "nameEn": "Costa Rica",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "HR",
            "name": "Hırvatistan",
            "nameEn": "Croatia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "CW",
            "name": "Curaçao",
            "nameEn": "Curaçao",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "CY",
            "name": "Kıbrıs",
            "nameEn": "Cyprus",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "CZ",
            "name": "Çekya",
            "nameEn": "Czechia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "CI",
            "name": "Côte d’Ivoire",
            "nameEn": "Côte d’Ivoire",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "DK",
            "name": "Danimarka",
            "nameEn": "Denmark",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "DJ",
            "name": "Cibuti",
            "nameEn": "Djibouti",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "DM",
            "name": "Dominika",
            "nameEn": "Dominica",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "DO",
            "name": "Dominik Cumhuriyeti",
            "nameEn": "Dominican Republic",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "EC",
            "name": "Ekvador",
            "nameEn": "Ecuador",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "EG",
            "name": "Mısır",
            "nameEn": "Egypt",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "SV",
            "name": "El Salvador",
            "nameEn": "El Salvador",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GQ",
            "name": "Ekvator Ginesi",
            "nameEn": "Equatorial Guinea",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "EE",
            "name": "Estonya",
            "nameEn": "Estonia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "SZ",
            "name": "Esvatini",
            "nameEn": "Eswatini",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "ET",
            "name": "Etiyopya",
            "nameEn": "Ethiopia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "FK",
            "name": "Falkland Adaları",
            "nameEn": "Falkland Islands",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "FO",
            "name": "Faroe Adaları",
            "nameEn": "Faroe Islands",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "FM",
            "name": "Mikronezya",
            "nameEn": "Micronesia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "FJ",
            "name": "Fiji",
            "nameEn": "Fiji",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "FI",
            "name": "Finlandiya",
            "nameEn": "Finland",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "FR",
            "name": "Fransa",
            "nameEn": "France",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GF",
            "name": "Fransız Guyanası",
            "nameEn": "French Guiana",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "PF",
            "name": "Fransız Polinezyası",
            "nameEn": "French Polynesia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "TF",
            "name": "Fransız Güney Toprakları",
            "nameEn": "French Southern Territories",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GA",
            "name": "Gabon",
            "nameEn": "Gabon",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GM",
            "name": "Gambiya",
            "nameEn": "Gambia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GE",
            "name": "Gürcistan",
            "nameEn": "Georgia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "DE",
            "name": "Almanya",
            "nameEn": "Germany",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GH",
            "name": "Gana",
            "nameEn": "Ghana",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GI",
            "name": "Cebelitarık",
            "nameEn": "Gibraltar",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GR",
            "name": "Yunanistan",
            "nameEn": "Greece",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GL",
            "name": "Grönland",
            "nameEn": "Greenland",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GD",
            "name": "Grenada",
            "nameEn": "Grenada",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GP",
            "name": "Guadeloupe",
            "nameEn": "Guadeloupe",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GU",
            "name": "Guam",
            "nameEn": "Guam",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GT",
            "name": "Guatemala",
            "nameEn": "Guatemala",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GG",
            "name": "Guernsey",
            "nameEn": "Guernsey",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GN",
            "name": "Gine",
            "nameEn": "Guinea",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GW",
            "name": "Gine-Bissau",
            "nameEn": "Guinea-Bissau",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GY",
            "name": "Guyana",
            "nameEn": "Guyana",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "HM",
            "name": "Heard Adası ve McDonald Adaları",
            "nameEn": "Heard & McDonald Islands",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "VA",
            "name": "Vatikan",
            "nameEn": "Vatican City",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "HN",
            "name": "Honduras",
            "nameEn": "Honduras",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "HK",
            "name": "Çin Hong Kong ÖİB",
            "nameEn": "Hong Kong SAR China",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "HU",
            "name": "Macaristan",
            "nameEn": "Hungary",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "IS",
            "name": "İzlanda",
            "nameEn": "Iceland",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "IN",
            "name": "Hindistan",
            "nameEn": "India",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "ID",
            "name": "Endonezya",
            "nameEn": "Indonesia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "IE",
            "name": "İrlanda",
            "nameEn": "Ireland",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "IM",
            "name": "Man Adası",
            "nameEn": "Isle of Man",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "IL",
            "name": "İsrail",
            "nameEn": "Israel",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "IT",
            "name": "İtalya",
            "nameEn": "Italy",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "JM",
            "name": "Jamaika",
            "nameEn": "Jamaica",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "JP",
            "name": "Japonya",
            "nameEn": "Japan",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "JE",
            "name": "Jersey",
            "nameEn": "Jersey",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "JO",
            "name": "Ürdün",
            "nameEn": "Jordan",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "KZ",
            "name": "Kazakistan",
            "nameEn": "Kazakhstan",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "KE",
            "name": "Kenya",
            "nameEn": "Kenya",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "KI",
            "name": "Kiribati",
            "nameEn": "Kiribati",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "KW",
            "name": "Kuveyt",
            "nameEn": "Kuwait",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "KG",
            "name": "Kırgızistan",
            "nameEn": "Kyrgyzstan",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "LA",
            "name": "Laos",
            "nameEn": "Laos",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "LV",
            "name": "Letonya",
            "nameEn": "Latvia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "LB",
            "name": "Lübnan",
            "nameEn": "Lebanon",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "LS",
            "name": "Lesotho",
            "nameEn": "Lesotho",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "LR",
            "name": "Liberya",
            "nameEn": "Liberia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "LI",
            "name": "Liechtenstein",
            "nameEn": "Liechtenstein",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "LT",
            "name": "Litvanya",
            "nameEn": "Lithuania",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "LU",
            "name": "Lüksemburg",
            "nameEn": "Luxembourg",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MO",
            "name": "Çin Makao ÖİB",
            "nameEn": "Macao SAR China",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MG",
            "name": "Madagaskar",
            "nameEn": "Madagascar",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MW",
            "name": "Malavi",
            "nameEn": "Malawi",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MY",
            "name": "Malezya",
            "nameEn": "Malaysia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MV",
            "name": "Maldivler",
            "nameEn": "Maldives",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MT",
            "name": "Malta",
            "nameEn": "Malta",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MH",
            "name": "Marshall Adaları",
            "nameEn": "Marshall Islands",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MQ",
            "name": "Martinik",
            "nameEn": "Martinique",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MR",
            "name": "Moritanya",
            "nameEn": "Mauritania",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MU",
            "name": "Mauritius",
            "nameEn": "Mauritius",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "YT",
            "name": "Mayotte",
            "nameEn": "Mayotte",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MX",
            "name": "Meksika",
            "nameEn": "Mexico",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MD",
            "name": "Moldova",
            "nameEn": "Moldova",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MC",
            "name": "Monako",
            "nameEn": "Monaco",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MN",
            "name": "Moğolistan",
            "nameEn": "Mongolia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "ME",
            "name": "Karadağ",
            "nameEn": "Montenegro",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MS",
            "name": "Montserrat",
            "nameEn": "Montserrat",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MA",
            "name": "Fas",
            "nameEn": "Morocco",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MZ",
            "name": "Mozambik",
            "nameEn": "Mozambique",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "NA",
            "name": "Namibya",
            "nameEn": "Namibia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "NR",
            "name": "Nauru",
            "nameEn": "Nauru",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "NP",
            "name": "Nepal",
            "nameEn": "Nepal",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "NL",
            "name": "Hollanda",
            "nameEn": "Netherlands",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "NC",
            "name": "Yeni Kaledonya",
            "nameEn": "New Caledonia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "NZ",
            "name": "Yeni Zelanda",
            "nameEn": "New Zealand",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "NE",
            "name": "Nijer",
            "nameEn": "Niger",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "NG",
            "name": "Nijerya",
            "nameEn": "Nigeria",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "NU",
            "name": "Niue",
            "nameEn": "Niue",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "NF",
            "name": "Norfolk Adası",
            "nameEn": "Norfolk Island",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MK",
            "name": "Kuzey Makedonya",
            "nameEn": "North Macedonia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MP",
            "name": "Kuzey Mariana Adaları",
            "nameEn": "Northern Mariana Islands",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "NO",
            "name": "Norveç",
            "nameEn": "Norway",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "OM",
            "name": "Umman",
            "nameEn": "Oman",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "PK",
            "name": "Pakistan",
            "nameEn": "Pakistan",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "PW",
            "name": "Palau",
            "nameEn": "Palau",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "PA",
            "name": "Panama",
            "nameEn": "Panama",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "PG",
            "name": "Papua Yeni Gine",
            "nameEn": "Papua New Guinea",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "PY",
            "name": "Paraguay",
            "nameEn": "Paraguay",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "PE",
            "name": "Peru",
            "nameEn": "Peru",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "PH",
            "name": "Filipinler",
            "nameEn": "Philippines",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "PN",
            "name": "Pitcairn Adaları",
            "nameEn": "Pitcairn Islands",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "PL",
            "name": "Polonya",
            "nameEn": "Poland",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "PT",
            "name": "Portekiz",
            "nameEn": "Portugal",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "PR",
            "name": "Porto Riko",
            "nameEn": "Puerto Rico",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "QA",
            "name": "Katar",
            "nameEn": "Qatar",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "RO",
            "name": "Romanya",
            "nameEn": "Romania",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "RW",
            "name": "Ruanda",
            "nameEn": "Rwanda",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "RE",
            "name": "Reunion",
            "nameEn": "Réunion",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BL",
            "name": "Saint Barthelemy",
            "nameEn": "St. Barthélemy",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "SH",
            "name": "Saint Helena",
            "nameEn": "St. Helena",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "KN",
            "name": "Saint Kitts ve Nevis",
            "nameEn": "St. Kitts & Nevis",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "LC",
            "name": "Saint Lucia",
            "nameEn": "St. Lucia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MF",
            "name": "Saint Martin",
            "nameEn": "St. Martin",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "PM",
            "name": "Saint Pierre ve Miquelon",
            "nameEn": "St. Pierre & Miquelon",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "VC",
            "name": "Saint Vincent ve Grenadinler",
            "nameEn": "St. Vincent & Grenadines",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "WS",
            "name": "Samoa",
            "nameEn": "Samoa",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "SM",
            "name": "San Marino",
            "nameEn": "San Marino",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "ST",
            "name": "Sao Tome ve Principe",
            "nameEn": "São Tomé & Príncipe",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "SA",
            "name": "Suudi Arabistan",
            "nameEn": "Saudi Arabia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "SN",
            "name": "Senegal",
            "nameEn": "Senegal",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "RS",
            "name": "Sırbistan",
            "nameEn": "Serbia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "SC",
            "name": "Seyşeller",
            "nameEn": "Seychelles",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "SL",
            "name": "Sierra Leone",
            "nameEn": "Sierra Leone",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "SG",
            "name": "Singapur",
            "nameEn": "Singapore",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "SX",
            "name": "Sint Maarten",
            "nameEn": "Sint Maarten",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "SK",
            "name": "Slovakya",
            "nameEn": "Slovakia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "SI",
            "name": "Slovenya",
            "nameEn": "Slovenia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "SB",
            "name": "Solomon Adaları",
            "nameEn": "Solomon Islands",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "ZA",
            "name": "Güney Afrika",
            "nameEn": "South Africa",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GS",
            "name": "Güney Georgia ve Güney Sandwich Adaları",
            "nameEn": "South Georgia & South Sandwich Islands",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "KR",
            "name": "Güney Kore",
            "nameEn": "South Korea",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "ES",
            "name": "İspanya",
            "nameEn": "Spain",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "LK",
            "name": "Sri Lanka",
            "nameEn": "Sri Lanka",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "PS",
            "name": "Filistin Bölgeleri",
            "nameEn": "Palestinian Territories",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "SR",
            "name": "Surinam",
            "nameEn": "Suriname",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "SJ",
            "name": "Svalbard ve Jan Mayen",
            "nameEn": "Svalbard & Jan Mayen",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "SE",
            "name": "İsveç",
            "nameEn": "Sweden",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "CH",
            "name": "İsviçre",
            "nameEn": "Switzerland",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "TW",
            "name": "Tayvan",
            "nameEn": "Taiwan",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "TJ",
            "name": "Tacikistan",
            "nameEn": "Tajikistan",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "TZ",
            "name": "Tanzanya",
            "nameEn": "Tanzania",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "TH",
            "name": "Tayland",
            "nameEn": "Thailand",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "TL",
            "name": "Timor-Leste",
            "nameEn": "Timor-Leste",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "TG",
            "name": "Togo",
            "nameEn": "Togo",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "TK",
            "name": "Tokelau",
            "nameEn": "Tokelau",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "TO",
            "name": "Tonga",
            "nameEn": "Tonga",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "TT",
            "name": "Trinidad ve Tobago",
            "nameEn": "Trinidad & Tobago",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "TN",
            "name": "Tunus",
            "nameEn": "Tunisia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "TM",
            "name": "Türkmenistan",
            "nameEn": "Turkmenistan",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "TC",
            "name": "Turks ve Caicos Adaları",
            "nameEn": "Turks & Caicos Islands",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "TV",
            "name": "Tuvalu",
            "nameEn": "Tuvalu",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "TR",
            "name": "Türkiye",
            "nameEn": "Türkiye",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "UG",
            "name": "Uganda",
            "nameEn": "Uganda",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "UA",
            "name": "Ukrayna",
            "nameEn": "Ukraine",
            "marker": "**",
            "coverage": "partial_locations",
            "note": "Kartlar Kırım, Donetsk, Luhansk, Herson ve Zaporijya'da kullanılamaz. Ukrayna'nın geri kalanı kullanılabilir."
          },
          {
            "code": "AE",
            "name": "Birleşik Arap Emirlikleri",
            "nameEn": "United Arab Emirates",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GB",
            "name": "Birleşik Krallık",
            "nameEn": "United Kingdom",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "UM",
            "name": "ABD Küçük Harici Adaları",
            "nameEn": "U.S. Outlying Islands",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "US",
            "name": "Amerika Birleşik Devletleri",
            "nameEn": "United States",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "UY",
            "name": "Uruguay",
            "nameEn": "Uruguay",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "UZ",
            "name": "Özbekistan",
            "nameEn": "Uzbekistan",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "VU",
            "name": "Vanuatu",
            "nameEn": "Vanuatu",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "VN",
            "name": "Vietnam",
            "nameEn": "Vietnam",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "VG",
            "name": "Britanya Virjin Adaları",
            "nameEn": "British Virgin Islands",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "VI",
            "name": "ABD Virjin Adaları",
            "nameEn": "U.S. Virgin Islands",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "WF",
            "name": "Wallis ve Futuna",
            "nameEn": "Wallis & Futuna",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "EH",
            "name": "Batı Sahra",
            "nameEn": "Western Sahara",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "ZM",
            "name": "Zambiya",
            "nameEn": "Zambia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          }
        ],
        "source": "owner_provided",
        "status": "owner_list_received",
        "policy": "worldwide_except_restrictions",
        "independentlyVerified": false,
        "partialCoverage": {
          "marker": "**",
          "countryCodes": [
            "UA"
          ],
          "note": "Kartlar Kırım, Donetsk, Luhansk, Herson ve Zaporijya'da kullanılamaz. Ukrayna'nın geri kalanı kullanılabilir."
        },
        "unresolvedFootnotes": [],
        "approvalGuaranteed": false
      },
      "sbp": [
        "RU"
      ],
      "alipay": [
        "CN"
      ],
      "crypto": {
        "exactList": null,
        "status": "live_catalog_required",
        "invoiceCurrency": "USDT",
        "cataloguePath": "/api/checkout/{token}/crypto-services"
      }
    },
    "cryptoAcceptance": {
      "invoiceCurrency": "USDT",
      "coinCount": 16,
      "pairCount": 31,
      "pairs": [
        {
          "currency": "AVAX",
          "network": "avalanche",
          "networkLabel": "Avalanche C-Chain"
        },
        {
          "currency": "BCH",
          "network": "bch",
          "networkLabel": "Bitcoin Cash"
        },
        {
          "currency": "BNB",
          "network": "bsc",
          "networkLabel": "BNB Smart Chain"
        },
        {
          "currency": "BTC",
          "network": "btc",
          "networkLabel": "Bitcoin"
        },
        {
          "currency": "DAI",
          "network": "bsc",
          "networkLabel": "BNB Smart Chain"
        },
        {
          "currency": "DAI",
          "network": "eth",
          "networkLabel": "Ethereum"
        },
        {
          "currency": "DAI",
          "network": "polygon",
          "networkLabel": "Polygon PoS"
        },
        {
          "currency": "DASH",
          "network": "dash",
          "networkLabel": "Dash"
        },
        {
          "currency": "DOGE",
          "network": "doge",
          "networkLabel": "Dogecoin"
        },
        {
          "currency": "ETH",
          "network": "eth",
          "networkLabel": "Ethereum"
        },
        {
          "currency": "ETH",
          "network": "arbitrum",
          "networkLabel": "Arbitrum One"
        },
        {
          "currency": "ETH",
          "network": "bsc",
          "networkLabel": "BNB Smart Chain"
        },
        {
          "currency": "GRAM",
          "network": "ton",
          "networkLabel": "TON"
        },
        {
          "currency": "LTC",
          "network": "ltc",
          "networkLabel": "Litecoin"
        },
        {
          "currency": "POL",
          "network": "eth",
          "networkLabel": "Ethereum"
        },
        {
          "currency": "POL",
          "network": "polygon",
          "networkLabel": "Polygon PoS"
        },
        {
          "currency": "SHIB",
          "network": "eth",
          "networkLabel": "Ethereum"
        },
        {
          "currency": "TRX",
          "network": "tron",
          "networkLabel": "TRON"
        },
        {
          "currency": "USDC",
          "network": "arbitrum",
          "networkLabel": "Arbitrum One"
        },
        {
          "currency": "USDC",
          "network": "bsc",
          "networkLabel": "BNB Smart Chain"
        },
        {
          "currency": "USDC",
          "network": "polygon",
          "networkLabel": "Polygon PoS"
        },
        {
          "currency": "USDC",
          "network": "eth",
          "networkLabel": "Ethereum"
        },
        {
          "currency": "USDC",
          "network": "avalanche",
          "networkLabel": "Avalanche C-Chain"
        },
        {
          "currency": "USDT",
          "network": "tron",
          "networkLabel": "TRON"
        },
        {
          "currency": "USDT",
          "network": "avalanche",
          "networkLabel": "Avalanche C-Chain"
        },
        {
          "currency": "USDT",
          "network": "bsc",
          "networkLabel": "BNB Smart Chain"
        },
        {
          "currency": "USDT",
          "network": "ton",
          "networkLabel": "TON"
        },
        {
          "currency": "USDT",
          "network": "polygon",
          "networkLabel": "Polygon PoS"
        },
        {
          "currency": "USDT",
          "network": "arbitrum",
          "networkLabel": "Arbitrum One"
        },
        {
          "currency": "USDT",
          "network": "eth",
          "networkLabel": "Ethereum"
        },
        {
          "currency": "XMR",
          "network": "xmr",
          "networkLabel": "Monero"
        }
      ],
      "catalogueSource": "owner_provided",
      "liveAvailabilitySource": "/api/checkout/{token}/crypto-services",
      "referenceCatalogueConfirmsAvailability": false,
      "transferInstructionsSource": "created_gateway_operation",
      "invoiceFixesOtherCoinExchangeRate": false,
      "exactTransferAmountRequired": true,
      "merchantPayout": {
        "asset": "USDT",
        "network": "TRC20",
        "distinctFromAcceptanceNetworks": true,
        "creationImplemented": false
      }
    },
    "support": {
      "knowledgeScope": "all_published_articles_and_facts",
      "articleCount": 25,
      "historyMessagesPerRequest": 6,
      "historyStorage": "browser_local_storage",
      "historySync": "device_only",
      "separateConversations": true,
      "perConversationDrafts": true,
      "pageContext": "safe_section_label_only",
      "privateAccountAccess": true,
      "privateAccountConsentRequired": true,
      "financialActions": false,
      "fallback": "documentation_search",
      "readinessEndpoint": "/api/config"
    },
    "notifications": {
      "pageSize": 30,
      "readStateStorage": "server",
      "readStateAffectsTelegramDelivery": false,
      "readEndpoint": "/api/notifications/read"
    },
    "gatewayIntegration": {
      "adapterImplemented": true,
      "contract": "v3",
      "liveConfigurationProvided": null,
      "requiredEnvironment": [
        "GATEWAY_API_KEY",
        "GATEWAY_WEBHOOK_SECRET"
      ],
      "connectionModes": {
        "externalHttps": {
          "originEnvironment": "GATEWAY_BASE_URL"
        },
        "selfHostedService": {
          "capability": "GATEWAY_SERVICE",
          "fixedDestination": true,
          "publicGatewayApi": false
        }
      },
      "availability": {
        "source": "runtime",
        "configurationEndpoint": "/api/config",
        "configurationField": "gateway.configured",
        "configurationIncludesHealthCheck": false,
        "checkoutEndpoint": "/api/checkout/{token}",
        "checkoutField": "invoice.availability",
        "checkoutCompatibilityAlias": "invoice.gatewayConnected",
        "checkoutIncludesProviderApproval": false
      },
      "cardTransport": "browser_JWE_to_gateway",
      "cardPlaintextAcceptedByKevmi": false,
      "hostedCardApi": false,
      "sealedAlgorithms": [
        "RSA-OAEP-256",
        "A256GCM"
      ],
      "ingress": {
        "path": "/api/gateway/webhook",
        "signatureHeader": "X-Gateway-Signature",
        "timestampHeader": "X-Gateway-Timestamp",
        "eventIdHeader": "X-Gateway-Event-Id",
        "signatureAlgorithm": "HMAC-SHA256",
        "signatureInput": "timestamp.rawBody",
        "timestampToleranceSeconds": 300,
        "authenticatedOperationReadRequired": true
      },
      "successRequires": [
        "fulfillment_ready",
        "provider_confirmed",
        "exact_paid_amount",
        "no_dispute",
        "crypto_settlement_evidence_if_crypto"
      ],
      "statusDoesNotCharge": true,
      "reconciliationDoesNotCharge": true,
      "oneDispatchedOperationPerInvoice": true,
      "ledgerNotImplemented": true
    },
    "merchantWorkspace": {
      "multipleStores": true,
      "storeLimit": 100,
      "storeEndpoint": "/api/stores",
      "storeHeader": "X-Kevmi-Store",
      "aggregateReadOnly": true,
      "pricingMode": "universal",
      "baseCurrency": "USD",
      "sbpChargeCurrency": "RUB",
      "cryptoChargeCurrency": "USDT",
      "usdUsdtInvoiceRatio": "1:1",
      "referenceRateSource": "https://www.cbr.ru/scripts/XML_daily.asp",
      "fxInvoiceMaxHours": 24,
      "path": "/account",
      "sections": [
        "overview",
        "payments",
        "payouts",
        "pricing",
        "stores",
        "links",
        "applications",
        "keys",
        "webhooks",
        "widget",
        "events",
        "knowledge",
        "store",
        "notifications",
        "support"
      ]
    },
    "gatewayConnected": null,
    "limitsConfirmed": false,
    "scope": "Public product documentation only. No user records or secrets."
  },
  "locale": "tr",
  "docGroups": [
    {
      "id": "start",
      "title": "Başlarken",
      "description": "İlk ziyaretinizden yapılandırılmış bir mağazaya kadar.",
      "icon": "bolt"
    },
    {
      "id": "payments",
      "title": "Ödemeler ve koşullar",
      "description": "Bağlantılar, tutarlar, KDV, ödeme yöntemleri ve ödemeler.",
      "icon": "card"
    },
    {
      "id": "account",
      "title": "Hesap ve destek",
      "description": "Telegram, bildirimler ve sorunuzla ilgili yardım.",
      "icon": "settings"
    },
    {
      "id": "developers",
      "title": "Geliştiriciler",
      "description": "API, güvenlik, webhook'lar ve ağ geçidi entegrasyonu.",
      "icon": "book"
    }
  ],
  "navPages": [
    {
      "href": "/",
      "title": "Genel Bakış",
      "icon": "grid"
    },
    {
      "href": "/payment-methods",
      "title": "Ödeme yöntemleri",
      "icon": "card"
    },
    {
      "href": "/pricing",
      "title": "Fiyatlandırma",
      "icon": "percent"
    },
    {
      "href": "/payment-links",
      "title": "Ödeme bağlantıları",
      "icon": "link"
    },
    {
      "href": "/countries",
      "title": "Kapsam",
      "icon": "globe"
    },
    {
      "href": "/docs",
      "title": "Dokümantasyon",
      "icon": "book"
    },
    {
      "href": "/?support=open",
      "title": "Destek",
      "icon": "chat"
    },
    {
      "href": "/integrations",
      "title": "Entegrasyonlar",
      "icon": "code"
    }
  ],
  "paymentMethods": [
    {
      "id": "card",
      "name": "Uluslararası kartlar",
      "shortName": "Uluslararası kartlar",
      "description": "Uluslararası müşteriler için kart ödemeleri.",
      "incomingPercent": 10,
      "incomingFixedMinor": 50,
      "incomingFixedCurrency": "USD",
      "payoutPercent": 4,
      "payoutFixedMinor": 0,
      "payoutFixedCurrency": "USD",
      "vatApplies": true,
      "region": "Uluslararası ödemeler",
      "symbol": "card",
      "geography": "190'dan fazla ülkeden Visa ve Mastercard; kısıtlama listesi ve Ukrayna'nın beş bölgesi hariç.",
      "countryCount": 223,
      "ownerReportedCountryCount": null,
      "coverageLabel": "190+"
    },
    {
      "id": "sbp",
      "name": "SBP",
      "shortName": "SBP",
      "description": "Rusya'nın Hızlı Ödeme Sistemi aracılığıyla bir banka üzerinden ödeme yapın.",
      "incomingPercent": 8,
      "incomingFixedMinor": 0,
      "incomingFixedCurrency": "RUB",
      "payoutPercent": 5,
      "payoutFixedMinor": 40000,
      "payoutFixedCurrency": "RUB",
      "vatApplies": false,
      "region": "Rusya",
      "symbol": "sbp",
      "geography": "Rusya. Kullanılabilirlik bankaya ve işleme bağlıdır.",
      "countryCount": 1
    },
    {
      "id": "alipay",
      "name": "Alipay",
      "shortName": "Alipay",
      "description": "Çin'deki müşteriler için Alipay ödemeleri.",
      "incomingPercent": 10,
      "incomingFixedMinor": 50,
      "incomingFixedCurrency": "USD",
      "payoutPercent": 4,
      "payoutFixedMinor": 0,
      "payoutFixedCurrency": "USD",
      "vatApplies": true,
      "region": "Çin",
      "symbol": "alipay",
      "geography": "Çin. Kullanılabilirlik hesaba ve işleme bağlıdır.",
      "countryCount": 1
    },
    {
      "id": "crypto",
      "name": "Kripto para",
      "shortName": "Kripto",
      "description": "%4 ücret ve KDV'siz tek seferlik kripto ödemeleri.",
      "incomingPercent": 4,
      "incomingFixedMinor": 0,
      "incomingFixedCurrency": "USD",
      "payoutPercent": 0,
      "payoutFixedMinor": 300,
      "payoutFixedCurrency": "USD",
      "vatApplies": false,
      "region": "Dijital varlıklar",
      "symbol": "crypto",
      "geography": "Dünya genelindeki tüm ülkeler. Desteklenen bir coin ve ağ seçin. Ödemeler USDT TRC20 kullanır.",
      "countryCount": null
    }
  ],
  "payoutFees": {
    "card": "4%",
    "alipay": "4%",
    "sbp": "5% + RUB 400",
    "crypto": "0% + $3"
  },
  "documentationLocale": "tr"
}
