Skip to main content
Bu reçete, gün sonu mutabakat (reconciliation) akışını gösterir: bankanın EOD dosyasını alıp Payven’deki işlem kayıtlarıyla eşleştirir, tutarsızlıkları işaretler ve operasyon ekibinin çözümleyebileceği bir kuyruk üretir.

Akış

1. EOD dosyasını başlat

Banka tarafından gelen mutabakat dosyasını (.csv, .txt, banka-spesifik format) Payven’e yükleyerek mutabakat sürecini başlatın. Konsoldan veya API ile:
curl -X POST https://vpos.payven.com.tr/api/v1/reconciliations/start \
  -H "Authorization: Bearer $PAYVEN_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "connector_code": "GARANTI",
    "settlement_date": "2026-05-07",
    "file_url":       "https://your-bucket/eod/garanti-20260507.csv"
  }'
Yanıt:
{
  "reconciliation_id": "rec_8e3f5c12...",
  "status":            "processing",
  "estimated_records": 1342
}
Asenkron çalışır — webhook ile sonucu bekleyin (reconciliation.completed) veya status polling yapın:
curl https://vpos.payven.com.tr/api/v1/reconciliations/{id} \
  -H "Authorization: Bearer $PAYVEN_TOKEN"

2. Sonucu inceleme

Eşleştirme tamamlandığında detayları çekin:
curl "https://vpos.payven.com.tr/api/v1/reconciliations/{id}/details?status=discrepancy&page=1&page_size=50" \
  -H "Authorization: Bearer $PAYVEN_TOKEN"
Tipik yanıt:
{
  "items": [
    {
      "id":             "det_...",
      "transaction_id": "8e3f5c12-...",
      "status":         "discrepancy",
      "discrepancy_type": "amount_mismatch",
      "payven_amount":   15000,
      "bank_amount":     14850,
      "diff":            -150,
      "note":            null
    }
  ],
  "total_count": 23,
  "page": 1,
  "total_pages": 1
}
discrepancy_typeAnlam
amount_mismatchTutar Payven ile banka arasında farklı (komisyon kesintisi olabilir)
missing_at_bankPayven’de var, bankada yok (banka teslim etmemiş)
missing_at_payvenBankada var, Payven’de yok (eksik webhook / başka kanaldan işlem)
status_mismatchPayven completed, banka voided ya da tersi
duplicate_at_bankAynı işlem bankada iki kez raporlanmış

3. Tutarsızlık çözümleme

Operasyon ekibi her detayı tek tek çözümler. Örnek: banka komisyon kesintisi nedeniyle tutar farkı varsa “kabul” karar verilir:
curl -X POST https://vpos.payven.com.tr/api/v1/reconciliations/{rec_id}/details/{detail_id}/resolve \
  -H "Authorization: Bearer $PAYVEN_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "resolution":   "accept_bank_amount",
    "note":         "POS komisyonu — tahsis edilmiş tarafe",
    "category":     "fee_deduction"
  }'
Toplu çözümleme — aynı tip tüm detayları tek seferde işaretle:
curl -X POST https://vpos.payven.com.tr/api/v1/reconciliations/{rec_id}/details/bulk-resolve \
  -H "Authorization: Bearer $PAYVEN_TOKEN" \
  -d '{
    "filter": { "discrepancy_type": "amount_mismatch", "diff_max": 200 },
    "resolution": "accept_bank_amount",
    "note":        "≤2 TL fark — komisyon",
    "category":    "fee_deduction"
  }'
resolutionEtki
accept_bank_amountPayven kayıtları bankaya hizalanır (audit log’a kaydı düşer)
accept_payven_amountBanka kayıtları yanlış kabul edilir (şikâyet kaydı oluşturulur)
disputeBanka ile chargeback / iade görüşmesi başlatılır
manual_offsetManuel düzeltme (muhasebe kayıtlarına yansır)

4. Mutabakatı sonuçlandır

Tüm detaylar matched veya resolved olduğunda mutabakatı sonuçlandırın:
curl -X POST https://vpos.payven.com.tr/api/v1/reconciliations/{id}/finalize \
  -H "Authorization: Bearer $PAYVEN_TOKEN"
Bu adım bir settlement raporu üretir — bayinin alacağı net tutarı (komisyonlar düşürülmüş) muhasebe sistemine yansıtmak için.
curl https://vpos.payven.com.tr/api/v1/settlements?reconciliation_id={id} \
  -H "Authorization: Bearer $PAYVEN_TOKEN"

5. Otomasyon — günlük cron

Tipik bir günlük mutabakat cron’u:
# 09:00 her gün — bir önceki günün dosyalarını işle
import datetime, requests

YESTERDAY = (datetime.date.today() - datetime.timedelta(days=1)).isoformat()

for connector in ["GARANTI", "AKBANK", "ZIRAATBANK"]:
    file_url = fetch_eod_file_from_bank_sftp(connector, YESTERDAY)
    res = requests.post(
        "https://vpos.payven.com.tr/api/v1/reconciliations/start",
        headers={"Authorization": f"Bearer {token}"},
        json={
            "connector_code": connector,
            "settlement_date": YESTERDAY,
            "file_url": file_url,
        },
    )

# Webhook handler tarafında: reconciliation.completed event'ı geldiğinde
# discrepancy listesini çek, otomatik kuralları uygula (fee_deduction < 5 TL),
# kalanı operasyona düşür.

Kontrol listesi

EOD dosya formatı (CSV layout, encoding, separator) Payven konnektörünün beklediği şablona uygun mu?
SFTP / S3 vb. dosya kaynağı için Payven IP whitelist’inde mi?
reconciliation.completed webhook’u operasyon kuyruğuna mesaj atıyor mu?
Otomatik çözümleme kuralları (örn. ≤5 TL fark = fee_deduction) tanımlı mı?
Settlement raporu muhasebe sistemine entegre mi?

İlgili sayfalar