Tüm yazılar
Ürün8 Tem 2026 · 7 dk

İade API Entegrasyonu: Mühendislik Ekipleri için Rehber

DA
Defne Aksoy
Ürün Direktörü

Bir iade platformunu mühendislik ekibi olarak değerlendiriyorsanız satış sunumundaki güzel portalı bir kenara bırakın; asıl bakmanız gereken şey altındaki API yüzeyi: RMA'lar nasıl oluşturuluyor, durum değiştiğinde hangi olaylar tetikleniyor, etiketler nasıl üretiliyor ve sistem iade ile değişim işlemini birbirinden nasıl ayırıyor. Bu sorulara net yanıt alamazsanız entegrasyon bittikten çok sonra sürprizlerle karşılaşırsınız. Bunu gözden kaçırırsanız önümüzdeki iki yılı verileri elle mutabakatlaştırarak ve 'param nerede' diye yazan müşterilere tek tek cevap yazarak geçirirsiniz.

Bir iade API'sinin gerçekte sunması gerekenler

Kullanıcı arayüzünün altında bir iade platformu aslında bir durum makinesidir. Müşteri iade talep eder, mağaza onaylar ya da otomatik onaylanır, bir etiket kesilir, paket kargoya verilir, depoya ulaşır, incelenir ve sonunda para ya da ürün el değiştirir. Bu geçişlerin her biri sisteminize gerçek zamanlıya yakın bir şekilde yansımalı; müşteri üç gün sonra 'param nerede' diye destek ekibine yazınca değil. Aradaki her adım için ayrı bir olay yoksa, aslında elinizde bir entegrasyon değil, düzenli aralıklarla veri çekmeniz gereken bir tahmin oyunu vardır.

  • RMA oluşturma: sadece barındırılan bir formdan değil; kendi uygulamanızdan, bir pazaryeri entegrasyonundan ya da destek aracınızdan programatik olarak iade veya değişim talebi açabileceğiniz bir uç nokta.
  • Durum değişikliği webhook'ları: return_created, label_generated, package_received, inspection_completed, refund_issued, exchange_shipped gibi olaylar — her biri sipariş ve stok sistemlerinizi ek bir API çağrısına gerek kalmadan güncelleyecek kadar zengin bir gövdeyle gelmeli.
  • Etiket üretimi: kargo firmasından bağımsız, hem ön ödemeli hem müşteri ödemeli akışları destekleyen ve bölgeye göre kargo firması değiştirirken kod yeniden deploy etmenizi gerektirmeyen bir yapı.
  • İade ile değişimi ayrı işlemler olarak yürütme: iade işlemi tahsilatı kapatır; değişim ise yeni bir sipariş veya mağaza kredisi oluşturur ve kendi durum döngüsüne ihtiyaç duyar — bir nota iliştirilmiş iade olayı bu ayrımı karşılamaz.
  • Her mutasyon uç noktasında idempotency anahtarı: böylece kararsız bir ağ bağlantısından, tekrar gönderilen bir webhook'tan ya da telaşla iki kez tıklayan bir destek temsilcisinden gelen tekrar eden istek aynı RMA için ikinci bir iade oluşturamaz.

Bunlara ek olarak reason code yapınız da isabetli olmalı. İyi kurgulanmış bir taksonomi, garanti talepleriyle iadeler arasındaki farkı API seviyesinde ayırt edebilmeli; aksi halde ikisi aynı rapor kovasına düşer, kök neden analiziniz anlamsızlaşır ve garanti maliyetleri iade maliyetleriymiş gibi görünür.

Idempotency: çift iadeyi önleyen detay

Bu, demoda değil production'da ortaya çıkan bir sorundur. Webhook teslimatı doğası gereği 'en az bir kez' modeliyle çalışır: gönderen taraf zaman aşımında, 5xx hatasında ya da kopan bağlantıda tekrar dener ve sizin handler'ınızın ilk denemeyi başarıyla bitirip bitirmediğini bilemez. Refund uç noktanız idempotent değilse, tekrar gönderilen tek bir webhook aynı sipariş için iki ayrı iade tetikleyebilir. Stripe'ın mühendislik ekibi ödemeler bağlamında tam olarak bu hata modunu uzun uzun yazmıştır ve Stripe'ın idempotent istekler için tasarımı iade süreçlerine de sorunsuz uygulanır: her mutasyon isteği istemci tarafında üretilmiş bir idempotency anahtarı taşır, sunucu sonucu bu anahtara göre saklar ve aynı anahtarla gelen tekrar eden istek yeniden çalışmak yerine orijinal sonucu döner.

İdempotency anahtarı bir iade API'si için lüks değildir. Bir ağ kesintisiyle bir müşterinin iki kez para iadesi alması arasındaki tek fark odur.

Yol haritasını tıkamayan aşamalı bir entegrasyon planı

Çoğu ekip ilk aşamayı gereğinden fazla büyütür. API referansının tamamını okur, her adım için özel arayüz gerektiğine karar verir ve proje, checkout ile lojistik işleriyle mühendislik zamanı için yarıştığı bir çeyrek boyunca askıda kalır. Aşamalı bir yol, sizi daha hızlı canlıya çıkarır ve ne kadar özel geliştirme yapacağınıza hırs değil hacim karar verir.

  1. 1Kod yazmadan başlamak için barındırılan ya da gömülebilir self-servis iade portalıyla başlayın; müşteriler iade akışı için tek satır kod yazmadan talep açıp takip edebilir, siz de ilk günden gerçek politika uygulaması — iade süresi, ürün durumu kuralları, değişim önceliği — elde edersiniz.
  2. 2Destek hacmi ya da raporlama ihtiyacı portalın kendi panelini yetersiz kılmaya başladığında, RMA durumunu kendi sistemlerinize — sipariş yönetimi, CRM, stok — yansıtmak için webhook ekleyin.
  3. 3İade hacmi mühendislik yatırımını gerçekten haklı çıkardığında tam REST API kontrolüne geçin: RMA'ları programatik olarak oluşturun, kendi depo ya da 3PL mantığınıza özel yönlendirme kuralları bağlayın, ihtiyacınıza göre özel akışlar kurun.

Üçüncü adımı 'gerçek entegrasyon' gibi hissettiği için önce yapmak yaygın bir hatadır. Hacim bunu kanıtlayana kadar nadiren öyledir; çoğu zaman elinizde sadece bakımı sizin üzerinizde kalan fazladan bir kod tabanı olur.

YaklaşımKurulum süresiMühendislik eforuEsneklikEn uygun ekip büyüklüğü
Kodsuz gömmeBirkaç saat ile birkaç gün arasıNeredeyse sıfır — kod değil konfigürasyonDüşük-orta — marka ve politika kontrolü var, özel mantık yokKüçük ekipler veya boş mühendislik kapasitesi olmayan mağazalar
Webhook senkronizasyonu1-2 haftaOrta — event handler'lar ve senkron tutulması gereken bir veri modeliOrta — durum değişikliklerine tepki verirsiniz ama akışın kendisini kontrol etmezsinizKendi sipariş yönetimi ya da destek altyapısını senkron tutması gereken büyüyen ekipler
Tam REST API4-8+ haftaYüksek — akışın, tekrar denemelerin ve mutabakatın sahibi sizsinizYüksek — ihtiyacınız olan her iade, değişim ya da yönlendirme mantığını kendiniz kurarsınızİade hacmi ve mühendislik kadrosu bu sahipliği haklı çıkaran ekipler

Sık yapılan entegrasyon hataları

Canlıya çıktıktan sonra gördüğümüz acil müdahalelerin büyük kısmı üç hatadan kaynaklanıyor.

  • Webhook işlemeyi idempotent değil, 'gönder ve unut' gibi ele almak. Handler'ınız aynı olayı iki kez çalıştırmaya güvenli değilse, bir deploy sırasında ya da ağ aksaklığında gelen tekrar deneme bir iadeyi ya da değişimi iki kez işler.
  • Kısmi iadeleri ve değişimleri mutabakatlamamak. Tek bir RMA kısmi iade artı kısmi değişim olarak sonuçlanabilir ya da iki farklı SKU'ya bölünebilir. Veri modelinizde iade başına tek bir refund_amount alanı varsa, müşteri iki üründen birini iade edip diğerini tuttuğu ilk anda bu bölünmeyi kaybedersiniz.
  • İade süresini API'den okumak yerine kodun içine gömmek. Frontend'e gömülü 30 günlük bir pencere, pazarlama tatil döneminde süreyi uzattığında ya da AB'deki cayma hakkı uyumluluğu için bölgesel bir politika değiştiğinde bozulur. Politika deploy ettiğiniz bir sabit değil, çektiğiniz bir değer olmalıdır.

Aynı reason code ve yönlendirme altyapısı, chargeback ile iade önleme arasındaki ayrımı kurallara dökebilmenizi de sağlamalı; müşterinin bankasından ters ibraz açmadan önce iade sürecini tamamlamayı tercih etmesi hem sizin hem onun için daha ucuzdur.

ResReturn'de bu nasıl işliyor

ResReturn'ün kendi entegrasyonu tam olarak bu merdiveni izliyor. Mağazalar, anında kredi ve değişim öncelikli varsayılanları zaten yapılandırılmış barındırılan portalla canlıya çıkıyor; RMA durumunu Shopify ya da Ticimax sipariş kayıtlarına ve kendi BI araçlarına senkronlamak için webhook ekliyor; yönlendirme kurallarını, özel iade mantığını ya da fit-graph iade-nedeni verisini kendi sistemlerine taşımak istediklerinde tam API'ye geçiyorlar. API ve webhook katmanı, portalın çalıştığı aynı durum makinesini dışa açar; böylece daha sonra kurduğunuz hiçbir şey sadece arayüzde var olmuş bir davranışı tersine mühendislikle çözmek zorunda kalmaz.

Bir iade API webhook'u tipik olarak ne gönderir?

İyi tasarlanmış bir iade webhook'u; olay türünü (return_created, label_generated, refund_issued gibi), RMA ve sipariş kimliklerini, bir zaman damgasını ve sisteminizin detay almak için ekstra bir API çağrısı yapmasına gerek kalmayacak kadar zengin bir gövdeyi — ürün, sebep kodu, iade ya da değişim tutarı — içerir.

Kendi iade etiketi mantığımı kurmam gerekir mi?

Hayır — kargo firması seçimi ile ön ödemeli ya da müşteri ödemeli akışlar dahil bunu tam olarak barındırılan portal veya etiket üretim uç noktası halletmeli. Kendi mantığınızı yalnızca platformun konfigürasyon seçeneği olarak sunmadığı bir yönlendirme ihtiyacınız — bölgeye ya da iade sebebine göre kargo firması gibi — varsa kurun.

İade ve refund uç noktalarında idempotency neden önemlidir?

Çünkü webhook teslimatı ve ağ tekrar denemeleri tasarım gereği 'tam olarak bir kez' değil 'en az bir kez' çalışır. Her mutasyon isteğinde idempotency anahtarı olmadan, tekrar eden bir iade ya da değişim çağrısı aynı RMA üzerinde iki kez çalışabilir; bu da tek bir iade için gerçek paranın iki kez hareket etmesi demektir.

Tipik bir iade API entegrasyonu ne kadar sürer?

Kodsuz bir portal entegrasyonu günler içinde canlıya alınabilir. Kendi sistemlerinizi güncel tutmak için webhook senkronizasyonu eklemek genelde bir-iki mühendislik haftası sürer. Tam API kontrolü — özel RMA oluşturma, yönlendirme kuralları ve mutabakat mantığı — iade hacminin yatırımı haklı çıkardığı noktada başlatılması gereken, birkaç haftalık bir projedir.

Kendi iadelerinizde görün.

Ücretsiz başlayın