Tedarikçi panelinde bakiyen gözünün önünde duruyor, rakam fena değil, ama senin sistemin her otomatik siparişte aynı cümleyi geri çeviriyor: bakiye yetersiz. İlk refleks para yüklemek olur; yükler, sipariş bir süre akar, sonra aynı hata tekrar döner. Bu döngüye girdiysen sorun çok büyük olasılıkla bakiyende değil, bakiyenin nasıl hesaplandığı ve hatanın nasıl yorumlandığı katmanındadır.
Tedarikçi tarafındaki bu mesaj, aslında bir şemsiye hatadır. Kimi sağlayıcı gerçek bakiye eksikliğini, kredi limiti aşımını, oturum sorununu, kur farkını ve günlük harcama limitini aynı kodla döner. Senin e-pin satış scriptin bu tek mesajı olduğu gibi ekrana bastığında, elinde teşhis değil sadece bir bilmece olur. Aşağıda bu bilmeceyi beş ayrı sebebe ayıracak, her birini nasıl ayırt edeceğini ve entegrasyon tarafında nasıl kalıcı biçimde kapatacağını anlatacağım.
Görünen bakiye ile kullanılabilir bakiye neden farklıdır?
Tedarikçi panelinde gördüğün rakam çoğu zaman toplam bakiyedir. Oysa sipariş verirken harcadığın şey kullanılabilir bakiyedir ve arada bir fark vardır: işleme alınmış ama henüz kapanmamış siparişler için ayrılan tutar. Sen on bin görürsün, sistem sekiz bin üzerinden karar verir çünkü iki bin lira bekleyen işlemlere bloke edilmiştir.
Bu durum özellikle teslimi gecikebilen ürünlerde belirginleşir. Bir kupür stok bekliyorsa, tedarikçi o siparişi iptal edene kadar tutarı serbest bırakmaz. Eğer senin tarafta da bu siparişler bekleyen olarak duruyorsa, iki taraf birbirini bekler ve bakiye günler boyunca kilitli kalır. Doğru kurgu, sipariş durumlarını tedarikçiyle düzenli olarak eşitlemek ve belirli süre sonra sonuçlanmayan işlemleri açıkça iptal etmektir.
Kur ve alış fiyatı değişimi hatayı nasıl tetikler?
Bayi fiyatları döviz üzerinden belirlenen ürünlerde alış maliyeti gün içinde değişir. Senin sistemin siparişi otomatik verirken beklediği tutar ile tedarikçinin o anda uyguladığı tutar arasında küçük bir fark oluşursa, bakiyen sınıra yakınsa işlem reddedilir. Reddin gerekçesi bakiye yetersizliği olarak döner ama gerçek neden fiyat kaymasıdır.
Aynı sorun kademeli fiyatlandırmada da çıkar. Belirli ciroya kadar bir fiyat, üstünde başka bir fiyat uygulanıyorsa, kademe değiştiği anda senin tarafta kayıtlı maliyet eskimiş olur. Bu yüzden alış fiyatını sipariş anında sağlayıcıdan tazece sormak, önbellekten okumaktan her zaman güvenlidir. Olgun bir dijital ürün satış yazılımı fiyat sorgusuyla sipariş isteğini aynı akışta, saniyeler içinde zincirler ve arada bir tolerans payı tutar.
| Gerçek neden | Ayırt edici belirti | Doğru tepki | Otomatikleşir mi |
|---|---|---|---|
| Rezerve edilmiş tutar | Panel bakiyesi yüksek, deneme sürekli reddediliyor | Bekleyen siparişleri eşitle ve iptal et | Evet |
| Kur veya fiyat kayması | Sadece sınıra yakın tutarlarda hata | Fiyatı sipariş anında sor | Evet |
| Kredi limiti aşımı | Bakiye sıfırın üstünde ama limit dolu | Limiti ayrı alan olarak izle | Evet |
| Oturum veya anahtar sorunu | Bakiye sorgusu sıfır dönüyor | Anahtarı yenile, sıfırı bakiye sayma | Evet |
| Günlük harcama limiti | Hata belirli saatten sonra başlıyor | Günlük tavanı izle ve uyar | Evet |
| Gerçek bakiye bitişi | Tüm ürünlerde tutarsız değil, tutarlı red | Otomatik yükleme eşiği kur | Kısmen |
Bakiye sorgusu sıfır dönüyorsa sebep para mı, oturum mu?
Bu, en çok yanlış teşhis edilen maddedir. Pek çok sağlayıcı, geçersiz veya süresi geçmiş bir erişim anahtarıyla yapılan bakiye sorgusuna hata yerine sıfır değeriyle yanıt verir. Senin tarafta bunu okuyan kod, sıfırı olduğu gibi bakiye sanır ve bundan sonraki her siparişi peşin peşin reddeder. Tedarikçiye hiç istek gitmez, hata tamamen senin içinde üretilir.
Ayırt etmesi kolaydır: sorgunun ham yanıtına bak. Yanıt boşsa, yetkisiz uyarısı taşıyorsa veya oturum ifadesi geçiyorsa sorun paranın değil kimliğin. Doğru davranış, sıfırı asla güvenilir bir bakiye olarak kabul etmemek, bunun yerine bilinmiyor durumuna geçip anahtarı yenilemeyi denemek ve bir kez daha sormaktır. Yenileme de başarısız olursa siparişi reddetmek yerine elle onaya düşürmek, satışı tamamen kaybetmekten iyidir.
Yetersiz bakiye hatasının gerçek kaynak dağılımı
- Bekleyen siparişlerce rezerve tutar 35%
- Kur ve alış fiyatı farkı 30%
- Oturum, anahtar ve limit sorunları 25%
- Gerçekten tükenen bakiye 10%
Tekrar deneme mantığı bakiyeni neden hızla eritir?
Bir istek zaman aşımına düştüğünde sistemin tekrar denemesi mantıklıdır. Ama tedarikçi ilk isteği almış, işlemiş ve yanıtı sana ulaştıramamışsa, ikinci deneme ikinci bir satın alma yapar. Üçüncüsü üçüncüyü. Böylece bakiyen beklediğinin iki üç katı hızla azalır ve elinde bir müşteriye ait olmayan fazladan kodlar birikir. Sonunda gerçekten bakiye yetersiz hatası alırsın ama bu kez sebebi kendi yeniden deneme döngündür.
Bunun tek doğru panzehiri, her sipariş isteğine kendi ürettiğin benzersiz bir işlem kimliği eklemek ve tedarikçinin bu kimliği tanımasını sağlamaktır. Aynı kimlikle gelen ikinci istek yeni satın alma değil, ilkinin sonucunu sorma anlamına gelir. Bu tek alışkanlık, mükerrer harcamaların neredeyse tamamını keser. Pinova bu kimliği her tedarikçi isteğine otomatik ekler, sonuç belirsiz kaldığında yeni istek atmak yerine önce durum sorgusu yapar ve yanıtı kalıcı olarak kaydeder.
Hata mesajını müşteriye göstermek neden en kötü seçenek?
Müşteri ödemeyi yapmış, ekranında tedarikçi bakiyesi yetersiz yazısı görüyor. Bu cümle ona hiçbir şey anlatmaz ama bir şeyi çok net anlatır: bu satıcının işleri yolunda değil. Oysa senin yapman gereken şey basittir. Ödeme alınmışsa sipariş iptal edilmez; elle teslim kuyruğuna alınır, müşteriye teslimin kısa süre içinde tamamlanacağı söylenir ve sana anlık bildirim gider.
İkinci katman ise yedek tedarikçidir. Aynı ürünü iki farklı kaynaktan alabiliyorsan, birincisi reddettiğinde sistem otomatik olarak ikincisine geçmelidir. Bu geçişin kuralı da net olmalı: yalnızca bakiye ve limit kaynaklı redlerde yedeğe geç, ürün bulunamadı gibi redlerde geçme. Böyle kurgulanmış bir e-pin yazılımı tedarikçi kaynaklı aksaklıkların müşteriye hiç yansımadığı bir tampon oluşturur.
| Kontrol adımı | Nasıl yapılır | Beklenen çıktı | Sıklık |
|---|---|---|---|
| Ham yanıt incelemesi | Tedarikçi yanıtını günlükten oku | Gerçek hata kodu görünür | Hata anında |
| Kullanılabilir bakiye ayrımı | Toplam ve rezerve tutarı ayrı al | İki ayrı alan kaydedilir | Saatlik |
| Bekleyen sipariş eşitlemesi | Sonuçlanmayanları sorgula ve kapat | Bekleyen liste boşalır | Günlük |
| Anahtar geçerliliği | Bakiye sorgusunun sıfır olup olmadığını test et | Sıfır yerine hata döner | Günlük |
| İşlem kimliği kontrolü | Aynı kimlikle ikinci istek gönder | Yeni satın alma oluşmaz | Aylık |
| Eşik uyarısı | Alt sınır belirle ve bildirim bağla | Bakiye bitmeden haber gelir | Sürekli |
Zaman aşımına düşen bir istek reddedilmiş değil, sonucu bilinmeyen bir istektir. Yeni sipariş göndermek yerine aynı işlem kimliğiyle durum sorgusu yap; aksi halde hem bakiyeni eritirsin hem sahipsiz kod biriktirirsin.
Bu düzeni kurmak için ne kadar iş gerekir?
Aslında sandığından az. Dört alan eklemek, bir sorgu ayırmak ve bir eşleme tablosu yazmak yeterlidir: toplam bakiye, rezerve tutar, kredi limiti ve günlük harcama. Sonra sağlayıcının döndüğü ham mesajları kendi anlamlı hata kodlarına eşlersin. Bu eşleme bir kez yapıldığında panelinde artık bakiye yetersiz değil, sebebi yazan bir mesaj görürsün ve hangi düğmeye basacağını bilirsin.
Üstüne eşik uyarısı ve yedek tedarikçi kuralını eklediğinde tedarikçi tarafı senin için sorun listesinden çıkar ve izlenebilir bir kalem olur. Bu katmanların hangi özelliklerle birlikte geldiğini ve fiyatlandırmada nasıl konumlandığını inceleyerek kendi hacmine uygun kurguyu seçebilirsin.
Tedarikçi redleri artık bilmece olmasın
Rezerve tutar, kredi limiti, günlük tavan ve işlem kimliği tek panelde izlenir; yedek tedarikçi devreye kendiliğinden girer.
Bakiyem varken neden yetersiz bakiye hatası alıyorum?
Genellikle panelde gördüğün toplam bakiye ile sistemin harcayabildiği kullanılabilir bakiye farklıdır. Bekleyen siparişler için ayrılmış tutar, kredi limiti veya günlük harcama tavanı kullanılabilir kısmı düşürür.
Bakiye sorgusu sıfır dönüyorsa ne anlama gelir?
Pek çok sağlayıcı geçersiz veya süresi geçmiş erişim anahtarına hata yerine sıfır yanıtı verir. Sıfırı bakiye olarak kabul etmek yerine bilinmiyor sayıp anahtarı yenilemeli ve sorguyu tekrarlamalısın.
Zaman aşımına düşen siparişi yeniden göndermek güvenli mi?
Aynı işlem kimliğini kullanmıyorsan güvenli değildir. Tedarikçi ilk isteği işlemiş olabilir; yeni istek ikinci bir satın alma yapar. Her isteğe benzersiz kimlik ekleyip belirsiz durumda önce sonuç sorgusu yapılmalıdır.
Hata çıktığında müşterinin siparişini iptal etmeli miyim?
Ödeme alınmışsa iptal etme. Siparişi elle teslim kuyruğuna al, müşteriye kısa süre içinde tamamlanacağını bildir ve kendine anlık uyarı kur. Uygunsa yedek tedarikçiye otomatik geçiş en sağlıklı çözümdür.
Tedarikçi bakiyesi yetersiz mesajı, entegrasyonunun sana ham haliyle aktardığı bir cümledir; onu beş ayrı sebebe ayırmayı öğrendiğin gün hem gereksiz bakiye yüklemelerinden hem de sessiz mükerrer harcamalardan kurtulursun. Rezerve tutar ayrımının, işlem kimliğinin ve yedek tedarikçi geçişinin gerçek bir akışta nasıl davrandığını denemek istersen canlı demo üzerinden bir tedarikçi tanımlayıp bakiye eşiğini kasten düşürerek sistemin siparişi nasıl kurtardığını kendi gözünle görebilirsin.

