Payment Orchestrator
Pazaryeri
İşlemler & Payout

İşlemler & Payout

Burası pazaryeri döngüsünün defter tarafıdır: her split ödeme, satıcı bacaklarıyla birlikte işlem listesine düşer; her satıcının alacağı payout defterinde birikir; payout'ları kaydeder ve ödendi işaretlersiniz; her mutasyon, kriptografik olarak doğrulayabileceğiniz hash-zincirli bir audit log'a eklenir. Tüm endpoint'ler erişim token'ınızı kullanır (Authorization: Bearer at_live_…), base URL https://api-gateway.lunixi.com/api/v1.

⚠️

Defter yüzeylerinde tüm tutarlar minor birimli (kuruş) string'dir: "netMinor": "13725" = ₺137,25.

Nasıl çalışır

Split ödemeler birikir

Her başarılı split ödeme, satıcı başına bacakları — tutar, komisyon, hold, net — işlem kaydına yazar.

Payout defteri alacağı izler

Defter kayıtları her satıcının brüt → komisyon → vergi → hold → net kırılımını, bir valör tarihini ve bir durumu (PLANNED → PAID) taşır.

Ödersiniz ve ödendi işaretlersiniz

Parayı kendi kanalınızdan gönderirsiniz (banka transferi vb.), sonra kaydedersiniz: bir payout kaydı oluşturun ve — tekil veya toplu — kağıt izi için transfer referansıyla PAID işaretleyin.

Her şey denetlenebilir

Her dealer değişikliği, komisyon kuralı, payout ve mark-paid, kurcalamaya-dayanıklı audit log'a eklenir; GET /marketplace/audit-log/verify compliance raporlaması için zincir bütünlüğünü kanıtlar.

Split işlemleri listeleme

GET /marketplace/transactions, split ödemeleri satıcı kırılımlarıyla listeler. Filtreler: status, subDealerId, limit.

curl "https://api-gateway.lunixi.com/api/v1/marketplace/transactions?subDealerId=d_8f2a...&limit=20" \
  -H "Authorization: Bearer at_live_5f3e2b1a..."

Yanıt bir işlem dizisidir; her işlem satıcı bacaklarını taşır:

{
  "id": "b7e2c9d4-...",
  "orderId": "ORD-2026-1042",
  "createdAt": "2026-07-04T09:41:22.000Z",
  "currency": "TRY",
  "grossMinor": "25000",
  "status": "CAPTURED",
  "is3D": false,
  "disputeState": "NONE",
  "sellers": [
    {
      "subDealerId": "d_8f2a...",
      "netMinor": "13725",
      "commissionMinor": "1275",
      "holdMinor": "0",
      "legStatus": "SETTLED"
    },
    {
      "subDealerId": "d_c41b...",
      "netMinor": "9000",
      "commissionMinor": "1000",
      "holdMinor": "0",
      "legStatus": "SETTLED"
    }
  ]
}

grossMinor işlemin çekilen toplam tutarıdır; status çekirdek ödeme durumu (CAPTURED, REFUNDED, …), disputeState ise chargeback durumudur. Bacak başına:

Bacak alanıAnlamı
netMinorSatıcının bu işlemdeki payout payı — satıcının alacağı
commissionMinorBu bacaktaki komisyonunuz (komisyon kurallarından çözülür)
holdMinorBu bacaktan alıkonan tutar
legStatusPENDING · HELD (hold var) · SETTLED (ödeme capture edildi) · REVERSED (ödeme iade veya void edildi)

Payout defteri

GET /marketplace/payout-ledger, satıcı bazlı settlement görünümüdür. Filtreler: status, subDealerId, days, limit.

curl "https://api-gateway.lunixi.com/api/v1/marketplace/payout-ledger?status=PLANNED&days=30" \
  -H "Authorization: Bearer at_live_5f3e2b1a..."

Her kayıt, payout'u brüt − komisyon − vergi − hold = net şeklinde kırar; valorDate (valör tarihi), payout rail bilgisi ve bir status taşır: PLANNED (kaydedildi, para henüz gönderilmedi) veya PAID (ödeme metadata'sıyla teyit edildi).

Payout kaydetme

Lunixi payout parasını kendisi taşımaz — transferi kendi kanalınızdan yaparsınız ve bunu kayda geçirirsiniz. POST /marketplace/payouts bir payout kaydı oluşturur:

curl -X POST https://api-gateway.lunixi.com/api/v1/marketplace/payouts \
  -H "Authorization: Bearer at_live_5f3e2b1a..." \
  -H "Content-Type: application/json" \
  -d '{
    "subDealerId": "d_8f2a...",
    "grossMinor": "150000",
    "commissionMinor": "12750",
    "netMinor": "137250",
    "currency": "TRY",
    "valorDate": "2026-07-10",
    "note": "Haziran mutabakatı",
    "markPaid": true,
    "paymentMethod": "BANK_WIRE",
    "paymentReference": "TRF-2026-0709-114"
  }'
AlanNot
subDealerIdZorunlu — ödenen satıcı
netMinorZorunlu — satıcının eline geçen tutar (minor birimli string, > 0)
grossMinor / commissionMinor / taxMinor / holdMinorOpsiyonel kırılım; varsayılanlar netMinor üzerinden türetilir
currencyVarsayılan TRY
valorDateYYYY-MM-DD; varsayılan bugün
markPaidPara zaten gönderildiyse true — kayıt doğrudan PAID olarak açılır
paymentMethodBANK_WIRE · EFT · HAVALE · CRYPTO · CLOSED_WALLET · OPEN_WALLET · CASH · OTHER
paymentReference / paidAtTransfer referansı ve gerçek transfer zamanı (ISO); paidAt varsayılanı şimdi

Ödendi işaretleme

PLANNED bir payout'un transferi tamamlandığında:

# Tekil
curl -X POST https://api-gateway.lunixi.com/api/v1/marketplace/payouts/po_3f9c.../mark-paid \
  -H "Authorization: Bearer at_live_5f3e2b1a..." \
  -H "Content-Type: application/json" \
  -d '{ "paymentMethod": "EFT", "paymentReference": "TRF-2026-0710-201" }'
 
# Toplu — örn. toplu banka gönderimi sonrası
curl -X POST https://api-gateway.lunixi.com/api/v1/marketplace/payouts/bulk-mark-paid \
  -H "Authorization: Bearer at_live_5f3e2b1a..." \
  -H "Content-Type: application/json" \
  -d '{ "ids": ["po_3f9c...", "po_71ab...", "po_c02d..."], "paymentMethod": "BANK_WIRE" }'

Toplu çağrı, parti başına özet döner:

{ "marked": 3, "failed": 0, "ids": ["po_3f9c...", "po_71ab...", "po_c02d..."] }

Payout'u kimin, ne zaman ve hangi referansla ödendi işaretlediği kaydın üzerinde tutulur ve audit log'a yansıtılır.

Audit log

Her pazaryeri mutasyonu — dealer yaşam döngüsü değişiklikleri, komisyon kuralları, manuel payout'lar, mark-paid olayları — append-only, hash-zincirli bir audit log'a eklenir: her kayıt kendisini bir öncekine bağlayan bir hash taşır; herhangi bir kurcalama veya silme zinciri tespit edilebilir şekilde kırar.

# Log'u sorgulama
curl "https://api-gateway.lunixi.com/api/v1/marketplace/audit-log?days=30&actionType=PAYOUT_DONE&limit=50" \
  -H "Authorization: Bearer at_live_5f3e2b1a..."

Filtreler: days, actor, actionType, dealerName, limit.

Zincir bütünlüğünü doğrulama

curl https://api-gateway.lunixi.com/api/v1/marketplace/audit-log/verify \
  -H "Authorization: Bearer at_live_5f3e2b1a..."

Yanıt, zincirin sağlam olup olmadığını (valid) ve değilse kırıldığı sıra numarasını (brokenAtSeq) söyler.

Compliance notu: verify endpoint'i, audit log'u regülatör seviyesinde kanıt olarak kullanılabilir kılar — kayıtlı payout ve onboarding geçmişinin yazıldığından beri değiştirilmediğini talep üzerine gösterebilirsiniz. Periyodik compliance raporlamanızın parçası olarak çalıştırın.

Hatalar

DurumAnlamıNe yapmalı
400marketplace.payout.sub_dealer_required / marketplace.payout.amount_required — satıcı eksik veya netMinor pozitif değilPayout gövdesini düzeltin
400marketplace.payout.not_found — payout bulunamadı (ya da size ait değil)Payout id'sini doğrulayın
400marketplace.payout.held_cannot_pay — payout HELD durumundaÖdendi işaretlemeden önce hold'u kaldırın
401API key eksik veya geçersizAuthorization header'ını kontrol edin

İş kuralı hataları, hata kodu yanıt gövdesinin code alanında olacak şekilde HTTP 400 döner — HTTP durumuna değil koda göre dallanın.

Webhooks

İşlem seviyesindeki event'ler çekirdek payment.* webhook'larıdır. Payout kaydetme ve mark-paid merchant'ın başlattığı aksiyonlardır — bunları event yerine payout defteri ve audit log üzerinden izleyin.

Sonraki adımlar

  • Split 2D Ödeme — satıcı bacaklarının en başta nasıl yazıldığı
  • İade & İptal — satıcı kırılımına karşı geri almalar
  • Başlarken — defter rakamlarını süren komisyon kuralları