Türkiye’de taksit, kart programının (bonus, world, maximum, axess, paraf…) ve POS anlaşmasının kesişimidir: aynı kart, farklı POS’larda farklı taksit ve farklı vade farkı görebilir. Poyra bu kesişimi üç parçayla modeller:

BIN kataloğu

Kartın ilk 6–8 hanesi (BIN), platform genelinde tutulan bir katalogla banka, program, marka ve kart tipine (kredi / banka kartı / ön ödemeli) çevrilir. Katalog kiracıya özgü değildir; platform işletmecisi POST /v1/bins ile toplu yükler, kiracılar GET /v1/bins/{bin} ile sorgular. Arama en uzun eşleşmeyi kazandırır: 8 haneli kayıt varsa 6 haneliyi ezer.

Taksit şemaları

Şema, “hangi POS hesabı, hangi kart programına, kaç taksiti, yüzde kaç vade farkıyla sunuyor” sorusunun kaydıdır:
  • program yerine "*" yazmak şemayı tüm programlara uygular; programa özel şema her zaman "*" şemasını ezer.
  • customerRateBps on binde birdir: 350 = %3,50 vade farkı, 0 = vade farksız.
  • Taksit sayısı 2–12’dir; tek çekim şema gerektirmez.
  • Şemalar silinmez, pasife çekilir.

Vade farkı hesabı

Yüzdesel hesap ondalık hassasiyetle yapılır, sonuç her zaman kuruşa döner ve bankacı yuvarlaması (yarım kuruş çift haneye) kullanılır — milyonlarca işlemde tek yönlü yuvarlama sapması birikmesin diye:
149,90 ₺‘lik bir işlem 6 taksit ve %3,50 vade farkıyla: toplam 155,15 ₺, 5 × 25,85 ₺ + son ay 25,90 ₺.

Teklif: POST /v1/installments/quote

Checkout’un taksit tablosu bu uçtan gelir; kendi arayüzünüzde de aynı ucu kullanırsınız:
Teklifin kuralları:
  1. BIN’i gönderin, kart numarasını değil. Doğrulama 6–8 haneyle sınırlıdır; tam PAN göndermek hem gereksiz hem PCI kapsamını genişletir.
  2. Tek çekim her hesapta her zaman listelenir — vade farksız, tutar aynen.
  3. Taksit yalnızca katalogda tanınan kredi kartlarına önerilir; banka kartı ve ön ödemeli karta taksit çıkmaz.
  4. Aynı hesap ve taksit için programa özel şema "*" şemasını ezer.
  5. Her seçenekte toplam, aylık tutar ve son ay tutarı ayrı döner.
Yanıttaki program alanını ödeme oluştururken geri gönderin — confirm aşamasında şema seçimine girer.

Fiyatın ödemeye bağlanışı

Taksit fiyatı hesap bazında bağlanır. Confirm sırasında rota motoru bir aday seçtiğinde o hesabın şeması sorulur:
  • Şema varsa karttan çekilecek tutar (chargedAmountMinor) vade farkı dahil hesaplanır ve bankaya bu tutar gider. Mal bedeli (amountMinor) intent’te değişmeden kalır; iade tavanı çekilen tutardır.
  • Şema yoksa o hesap “bu taksidi sunmuyor” demektir — deneme açılmadan sıradaki adaya geçilir.
  • Hesap taksidi hiç desteklemiyorsa (ör. Stripe/Adyen’de TR banka taksidi yoktur) aday tümüyle atlanır; aksi hâlde sağlayıcı tutarı tek çekim alır ve fark sessizce kaybolurdu.
Hiçbir aday istenen taksidi sunmuyorsa yanıt 409 installments.not_offered olur ve ödeme created durumunda kalır: bu bir banka reddi değil yapılandırma eksiğidir — şema tanımlayın ya da taksit sayısını değiştirin.