Skip to Content

Payment TR Kullanım Kılavuzu

Türkiye'deki tüm bankalar için ödeme entegrasyonu modülünün kapsamlı kullanım ve eğitim kılavuzu.

Odoo 18.0 v18.0.1.7.0 Python 3.10+

Modül Hakkında

Payment TR, Türkiye'deki 30+ banka ve ödeme kuruluşu için kapsamlı bir ödeme entegrasyon modülüdür. Odoo'nun standart ödeme akışını korurken, Türkiye'ye özel özellikler ekler.

Temel Özellikler

30+ Banka Desteği

Garanti, Akbank, Yapı Kredi, İş Bankası, Kuveyt Türk ve daha fazlası

3D Secure

Tüm bankalar için 3D Secure ödeme akışı

Taksit Yönetimi

Banka bazlı faizli/faizsiz taksit seçenekleri

Müşteri Özel Faiz

Belirli müşterilere veya gruplara özel taksit oranları

Ödeme Linki

Müşteriye e-posta/SMS ile gönderilebilir ödeme linki

Bağımsız Form

Sale order'a bağlı olmayan açık ödeme formu

İade Yönetimi

Tam veya kısmi iade işlemleri

Dashboard

Banka performansı, başarı oranları, taksit dağılımı

Kurulum

  1. Modülü kopyala: payment_tr klasörünü Odoo'nun addons dizinine kopyalayın.
  2. Odoo'yu yeniden başlat: --update=payment_tr parametresi ile başlatın veya servisi restart edip Apps menüsünden upgrade yapın.
  3. Apps menüsünden yükle: "Apps" menüsüne gidin, "payment_tr" araması yapın ve Install butonuna tıklayın.

İlk Yapılandırma

Önemli sıra: Yapılandırma adımlarının aşağıdaki sırada yapılması gerekir.
  1. Ödeme Sağlayıcı üzerinde API token ve endpoint'i ayarla
  2. Bankalar'ı aktif et
  3. Taksit Seçenekleri'ni tanımla
  4. Genel Ayarlar'ı kontrol et
  5. (Opsiyonel) Müşteri Özel Kuralları ekle

Ödeme Sağlayıcı

Modül kurulumdan sonra otomatik olarak Payment TR isminde bir payment.provider kaydı oluşturur.

Erişim Yolu

Muhasebe → Yapılandırma → Ödeme Sağlayıcıları → Payment TR

Önemli Alanlar

AlanAçıklama
state"test" veya "enabled". Üretimde enabled olmalı.
payment_tr_api_endpointPHP middleware URL'i (örn: https://payment.odo.tr)
payment_tr_api_tokenPHP middleware ile paylaşılan API anahtarı
company_idBu sağlayıcının ait olduğu şirket

Banka Tanımları

Her banka için POS bilgilerini ve özelliklerini tanımlayın.

Erişim Yolu

Payment TR → Bankalar ve Taksitler → Banka Tanımları

Banka Eklerken Dikkat Edilecekler

  • code: Benzersiz olmalı (örn: GARANTI, AKBANK)
  • merchant_id, terminal_id, store_key: Bankadan alınan POS bilgileri
  • supports_3d: 3D Secure desteklenip desteklenmeyeceği
  • supports_installment: Taksit desteği
  • bin_ranges: Hangi BIN kodlarının bu bankayı çağıracağı (kart tanıma için)
  • state: enabled olmalı (yoksa kart akışında görünmez)

Taksit Seçenekleri

Her banka için standart taksit seçenekleri tanımlayın. Müşteri özel kuralları bu standart taksitleri override eder.

Erişim Yolu

Payment TR → Bankalar ve Taksitler → Taksit Seçenekleri

Örnek Yapılandırma — Garanti

TaksitFaizMin TutarMax Tutar
2 Taksit%0100 ₺
3 Taksit%0100 ₺
6 Taksit%6.50200 ₺
9 Taksit%9.50500 ₺
12 Taksit%12.501000 ₺
Faizsiz Taksit: Faiz oranı 0 olduğunda kullanıcının kredi kartından sadece sipariş tutarı çekilir, vade farkı eklenmez.

Genel Ayarlar

Modülün genel davranışını kontrol eden ayarlar.

Erişim Yolu

Payment TR → Yapılandırma → Genel Ayarlar

Önemli Ayarlar

  • default_bank_id: BIN tanınmadığında kullanılacak varsayılan banka
  • show_installment_on_product: Ürün sayfasında taksit tablosu göster
  • email_template_*: Ödeme linki/başarı/başarısız e-posta şablonları

👤 Müşteri Özel Taksit Kuralları

v18.0.1.6.0 ile eklenen özellik. Belirli müşterilere veya müşteri kategorilerine özel faiz oranları, komisyon, tutar limiti ve kampanya tarihi tanımlayabilirsiniz.

Ne Yapar?

Standart taksit oranları yerine bu müşteriye özel oranları uygular. Müşteri herhangi bir görsel fark görmez — sadece kendi oranıyla işlem yapar.

Tipik Kullanım Senaryoları

🏢 Kurumsal Müşteri İndirimi

"X Holding firmasına 12 taksit %5 (standart %12.50 yerine)."

⭐ VIP / Premium Grup

"Premium müşterilere tüm taksitler faizsiz."

📅 Sınırlı Süreli Kampanya

"1-31 Mayıs arası 6 taksit %0 kampanyası."

🏦 Banka Spesifik

"Bu müşteri sadece Garanti'de %5 oran, diğer bankalarda standart."

Kural Oluşturma — Müşteri Bazlı

Yöntem 1: Müşteri Formundan

  1. Satış → Müşteriler menüsünden müşteriyi açın (sadece ana hesap; alt kontaklar otomatik miras alır)
  2. Form'da "Ödeme TR Taksit Kuralları" sekmesine geçin
  3. Tabloda "Satır Ekle" ile yeni kural ekleyin
  4. Alanları doldurun ve kaydedin

Yöntem 2: Bağımsız Menüden

Payment TR → Bankalar ve Taksitler → Müşteri Özel Taksit Kuralları

Kural Alanları

AlanAçıklamaÖrnek
partner_id Hedef müşteri (ana hesap olmalı) X Holding A.Ş.
category_id Veya hedef kategori (tag). İkisi birden olamaz! Premium
bank_id Hangi banka için. Boş = tüm bankalar. Garanti BBVA
installment_count Hangi taksit sayısı için kural geçerli 12
interest_rate Override edilecek faiz oranı (%) 5.00
commission_rate Override edilecek komisyon (%) 0.00
min_amount / max_amount Bu kuralın geçerli olacağı tutar aralığı (0 = sınırsız) 1000 / 50000
date_start / date_end Kampanya tarihi (opsiyonel) 2026-05-01 / 2026-05-31
priority Çakışma çözümü. Küçük = öncelikli. 10 (default)
state active / inactive active
Alt kontak desteği: Ana hesaba tanımlanan kural, otomatik olarak tüm alt kontaklarında geçerli olur. Alt kontaklarda ayrıca kural tanımlamanıza gerek yoktur.

Kural Oluşturma — Kategori Bazlı

Çok sayıda müşteriye aynı kuralı uygulamak istiyorsanız kategori (tag) kullanın.

Erişim Yolları (3 alternatif)

En kolay: Payment TR → Bankalar ve Taksitler → Müşteri Etiketleri
(v18.0.1.9.0 ile eklenen shortcut menüsü)

Adımlar

  1. Yeni bir etiket oluşturun: Üç yöntemden biriyle:
    • Payment TR → Bankalar ve Taksitler → Müşteri Etiketleri → Yeni
    • Veya Satış → Yapılandırma → Müşteri Etiketleri
    • Veya bir müşteri açıp "Tags" alanına yazıp Enter
  2. Etiket formunun altında "Ödeme TR Taksit Kuralları" bölümünde "Satır Ekle" ile kural tanımlayın
  3. Müşterileri etikete atayın: Hedef müşterilerin "Tags" alanına aynı etiketi ekleyin. Alt kontaklar otomatik olarak ana hesabın etiketini miras alır.

Hızlı Erişim

Tüm tag bazlı kuralları tek listede görmek için:

Payment TR → Bankalar ve Taksitler → Tag Bazlı Kurallar

Örnek

Tag: Premium Müşteri
Kural 1: Tum bankalar, 12 taksit, %0 faiz
Kural 2: Tum bankalar, 6 taksit, %0 faiz

Bu tag'i taşıyan tüm müşteriler 6 ve 12 taksitte faizsiz ödeyebilir.

Kampanya Tarihli Kurallar

Kampanya tarihi alanlarını doldurarak kuralın sadece belirli bir tarih aralığında geçerli olmasını sağlayabilirsiniz.

Erişim Yolu

Payment TR → Bankalar ve Taksitler → Kampanyalar
Bu menü, date_start veya date_end dolu olan tüm kuralları (tarihli kampanyalar) tek listede gösterir.

Kampanya Oluşturma Adımları

  1. Payment TR → Bankalar ve Taksitler → Kampanyalar menüsünü açın
  2. Yeni butonuna basın
  3. Hedef seçin (partner VEYA kategori — birinden biri zorunlu)
  4. Banka, taksit sayısı, faiz oranı girin
  5. Kampanya Tarihi bölümünde date_start ve date_end doldurun
  6. Kaydedin — kampanya otomatik aktif olur

Örnek 1: Belirli Müşteri için Kampanya

partner_idX Holding
category_id(boş)
bank_id(boş — tüm bankalar)
installment_count6
interest_rate0.00
date_start2026-05-01
date_end2026-05-15

Örnek 2: Tüm Müşteriler için Kampanya

Genel bir kampanya için (örn. "Anneler Günü tüm müşterilere"):

  1. Önce bir "Genel Kampanya" tag'i oluşturun
  2. Tüm müşterilere bu etiketi atayın (toplu işlem ile)
  3. Bu tag için kampanya kuralı tanımlayın
XOR Constraint: Bir kuralda hem partner_id hem category_id boş olamaz. Genel kampanya için yukarıdaki "Tüm Müşteriler" tag'i yöntemini kullanın.

Kampanyayı İzleme

Kampanyalar listesinde renk göstergeleri:

  • Yeşil: Şu an aktif (bugün geçerli)
  • Sarı: Active ama tarih dışında (geçmiş ya da gelecek)
  • Gri: Pasif (state=inactive)

Toplu İçe Aktarma (CSV)

Çok sayıda kuralı tek tek girmek yerine CSV dosyasından toplu yükleyin.

Erişim Yolu

Payment TR → Bankalar ve Taksitler → Toplu Kural İçe Aktarma

CSV Format

partner_email,category_name,bank_code,installment_count,interest_rate,commission_rate,priority,date_start,date_end
ahmet@firma.com,,GARANTI,12,5.0,0.0,10,,
,Premium,GARANTI,6,1.0,0.0,10,2026-05-01,2026-05-31
,Premium,,12,0.0,0.0,10,,

Kurallar

  • partner_email VEYA category_name dolu olmalı (ikisi birden olamaz)
  • bank_code boş bırakılırsa "tüm bankalar" anlamına gelir
  • date_start / date_end opsiyonel, format: YYYY-MM-DD
  • Dosya UTF-8 encoded olmalı
  • İlk satır header (kolon adları) olmalı
Test Modu: İlk yüklemede "Test Modu" seçeneğini işaretleyerek yalnızca doğrulama yapın, kayıt oluşturmadan hataları görebilirsiniz.

Çakışma Çözümü & Öncelik

Aynı taksit sayısı için birden fazla kural varsa hangisinin uygulanacağını belirleyen sıralama:

  1. Banka spesifik > Generic
    bank_id dolu olan kural, bank_id = boş olan kuraldan üstündür.
  2. Partner > Kategori
    partner_id ile tanımlı kural, aynı müşterinin kategorisi üzerinden gelen kuraldan üstündür.
  3. Priority (küçük sayı kazanır)
    İlk iki kriter eşitse priority alanına bakılır. Default değer 10'dur.

Örnek

X Holding firması "Premium" tag'ına sahip. Aşağıdaki kurallar var:

KuralHedefBankaFaizPriority
APremium kategoriTüm%210
BX HoldingTüm%110
CX HoldingGaranti%010

12 taksitle Garanti'den öderken Kural C kazanır — banka spesifik ve partner spesifik olduğu için.

E-Ticaret Akışı

Standart Odoo Website Shop kullanıyorsanız:

  1. Müşteri ürünleri sepete ekler, /shop/payment'a gelir
  2. Payment TR inline form otomatik açılır
  3. Müşteri kart numarası girer → BIN tespit edilir → banka belirlenir
  4. Banka'ya göre taksit listesi otomatik yüklenir
  5. Müşteri özel kuralı varsa taksit oranları otomatik override edilir
  6. "Şimdi Öde" → 3D Secure → Bankaya yönlendirme → Geri dönüş
  7. Başarılı ise /shop/confirmation'a yönlendirme

Bağımsız Ödeme Formu

Sale order olmadan açık (public) ödeme formu — bağış, aidat, ön ödeme gibi senaryolar için.

Form Oluşturma

  1. Payment TR → İşlemler → Ödeme Formları'ndan yeni form ekleyin
  2. Form adı, açıklama, tutar (sabit veya değişken) belirleyin
  3. Üretilen URL'i müşterilerinizle paylaşın

Dashboard

Payment TR → Gösterge Paneli menüsünden ulaşılır.

Gösterilen Veriler

  • Bugün/bu hafta/bu ay işlem sayısı ve tutarı
  • Başarı oranı
  • Banka performans listesi (top 10)
  • Son işlemler

Raporlar

Payment TR → Raporlar menüsünden 4 farklı rapor mevcut:

  • İşlem Raporu — pivot/graph ile tarih, banka, durum kırılımı
  • Banka Performans Raporu — banka bazlı başarı oranları
  • Taksit Kullanım Raporu — taksit sayılarına göre dağılım
  • İade Raporu — iade işlemleri detayları

Müşteri Kural İstatistiği

Müşteri Özel Taksit Kuralları menüsünde Pivot ve Graph view'ları ile kuralların banka × taksit × faiz oran kırılımı görülebilir.

Audit Log

Bir transaction'a müşteri özel kuralı uygulandığında, ilgili payment.transaction kaydının chatter bölümüne otomatik mesaj düşer:

Müşteriye Özel Taksit Kuralı Uygulandı
Kural: X Holding - Garanti BBVA - 12 Taksit
Taksit: 12 x 262.50 = 3150.00
Faiz oranı: 5.00% (standart yerine)
Faiz tutarı: 150.00 ₺

Bu sayede her ödeme işleminde hangi kuralın uygulandığı izlenebilir, denetim raporlarında kullanılabilir.

Sıkça Sorulan Sorular

Müşteri özel kuralı tanımladım ama uygulanmıyor?
Kontrol listesi:
  • Kuralın state alanı active mi?
  • Kuralda date_start / date_end varsa bugün bu aralıkta mı?
  • min_amount / max_amount sipariş tutarını kapsıyor mu?
  • Müşteri seçtiği bankayı kapsıyor mu? (bank_id)
  • Alt kontak ödüyorsa ana hesabın kuralı uygulanır — ana hesapta mı tanımlı?
Standart taksite ek olarak kural eklediğimde her ikisi de gösteriliyor mu?
Hayır — müşteri kuralı olan taksit sayısı için sadece müşteri kuralı uygulanır. Diğer taksit sayıları standart oranlarla devam eder.
Müşteri özel oranı gördüğünü nasıl anlar?
Anlamaz — bu tasarım gereği. Müşteri formda hiçbir özel rozet veya etiket görmez, sadece oranlar farklıdır. Şeffaflık istiyorsanız payment.transaction.payment_tr_partner_installment_id alanına bakarak hangi kural uygulandığını görebilirsiniz.
Kuralı oluşturdum ama wizard'da partner seçince uyarı görünmüyor?
partner_id ile oluşturduysanız, wizard'da o müşteriyi seçtiğinizde uyarı çıkmalı. Eğer commercial_partner_id farklıysa (örn. alt kontak) ana hesaba bakar.
Bir kural hem partner hem kategori için tanımlanabilir mi?
Hayır. SQL constraint ile engellendi (partner_xor_category). Aynı sonucu istiyorsanız 2 ayrı kural oluşturun.
Faiz negatif (-%5 gibi indirim) yapabilir miyim?
Hayır. SQL constraint ile engellendi. Eğer iade yapacaksanız Payment TR → İşlemler üzerinden iade akışı kullanın.
Performans sorunu var mı? Her BIN detection'da DB sorgusu mu?
Hayır — @tools.ormcache ile sorgular önbelleğe alınır. Amount 100 TL gruplara yuvarlanarak cache hit oranı artırılır. Kural değiştiğinde cache otomatik invalidate olur.

Hata Çözümleri

Kart akışı çalışmıyor

  • Bankanın state = enabled olduğunu kontrol edin
  • BIN ranges'ın kart numarasıyla eşleştiğini kontrol edin
  • Browser console'da payment_tr log'larına bakın
  • Network tab'da /payment/payment_tr/get_installments response'unu inceleyin

3D yönlendirmesi geri dönmüyor

  • PHP middleware'in config.php'sinde odoo_callback_base_url'in doğru olduğunu doğrulayın
  • HTTPS kullanıyorsanız sertifika geçerli olmalı
  • Bankadan dönen POST'u inceleyin (PHP loglarında logs/callback.log)

Taksit listesi boş geliyor

  • Banka için supports_installment = true mi?
  • Bankaya ait payment.tr.installment kayıtları state = active ve sipariş tutarı min/max aralığında mı?

Faiz uygulanmadı (faizli taksit seçili olmasına rağmen)

  • payment.transaction kaydını açıp payment_tr_installment_id ve payment_tr_partner_installment_id'i kontrol edin
  • Sale order'da "Banka Taksit Vade Farkı" satırı yoksa _payment_tr_apply_installment_interest log'larına bakın

İletişim & Destek

odoerp

Geliştirici: FATİH

Web: www.odoerp.com

Sorun bildirimi, özelleştirme talebi veya yeni özellik önerisi için bizimle iletişime geçin.

Faydalı Bağlantılar

Payment TR v18.0.1.7.0 | Geliştirici: odoerp | Belge tarihi: 2026-05-21