GELİŞTİRİCİLER

Hesap İşlemleri API

Bakiyeyi okuyun, iade ve çekim talep edin, itirazları yanıtlayın ve webhook teslimatlarını yönetin. Her isteği Kimlik doğrulama bölümündeki gibi imzalayın.

  • Temel URLhttps://www.manuellsolutions.com/api/v3
  • API sürümü3.0.0

İşlemlere gidin

Ortam

Gerçek para hareketi olmadan test edin.

Gerçek ödemeler. Canlı anahtar gerekir.

Bakiye

Kullanılabilir ve çekilebilir bakiyenizi okuyun.

Sandbox bakiyesi sanaldır. Sandbox ödemeleri valör beklemeden hemen available_amount alanına geçer; böylece çekimi hemen test edebilirsiniz.

Canlı bakiye gerçek tahsilatlardan oluşur. Ödeme valör tarihine kadar pending_settlement_amount alanında bekler, sonra available_amount alanına geçer.

GET/api/v3/balance

Bakiyeyi getir

Yanıt · 200

Bakiye özeti.

Balance

AlanTürZorunluAçıklama
currency_codestringZorunluYapılandırılmış platform taban para birimi.
USDEURAEDTRY
available_amountstringZorunluÖdeme bağlantısı, API ve mağaza cüzdanlarının toplam kullanılabilir bakiyesi. Sandbox anahtarı bunun yerine yalıtılmış sanal API cüzdanını okur.
pending_settlement_amountstringZorunluTahsil edildi ancak henüz hesaba geçmedi (valör tarihi bekleniyor). Sandbox anahtarıyla her zaman 0.00'dır; çünkü sandbox ödemeleri valör tarihini beklemez.
environmentstringZorunluRakamların ait olduğu ortam (imzalayan anahtarın ortamı).
livesandbox

Yanıt · Örnek

{
  "currency_code": "USD",
  "available_amount": "48200.00",
  "pending_settlement_amount": "250.00",
  "environment": "live"
}

Olası hatalar

GET/api/v3/balance/withdrawable

Çekilebilir bakiyeyi getir

Yanıt · 200

Çekilebilir bakiye özeti.

WithdrawableBalance

AlanTürZorunluAçıklama
currency_codestringZorunluYapılandırılmış platform taban para birimi.
USDEURAEDTRY
withdrawable_amountstringZorunluÖdeme bağlantısı, API ve mağaza bakiyelerinin toplam kullanılabilir tutarı; POST /withdrawals yalnızca API cüzdanından düşebilir ve ek denetimler uygular. Sandbox anahtarı yalıtılmış sanal API cüzdanını okur.
can_withdrawbooleanZorunluCüzdan bölümlerinden biri negatifse değer false olur.
environmentstringZorunluRakamların ait olduğu ortam (imzalayan anahtarın ortamı).
livesandbox

Yanıt · Örnek

{
  "currency_code": "USD",
  "withdrawable_amount": "48200.00",
  "can_withdraw": true,
  "environment": "live"
}

Olası hatalar

İadeler

İade ya da iptal talep edin ve takip edin.

Canlıda HTTP 202, talebin alındığı anlamına gelir; iade tamamlanmadı. Sonucu durum uçlarından izleyin: requested, sonra awaiting_provider_manual, sonra completed; ya da rejected / cancelled.

Sandbox'ta talep hemen sonuçlanır (varsayılan completed). Reddedilen iadeyi denemek için X-CAV-Sandbox-Scenario: rejected başlığını gönderin.

Canlı talepler incelenir. Dönen iade kaydını completed, rejected veya cancelled olana kadar izleyin. refund kesinleşmiş ödemeyi iade eder, void kesinleşmemiş tahsilatı iptal eder. payment.refunded yalnız tamamlanan refund için gönderilir; void sonucunu GET ile izleyin.

POST/api/v3/refundsIdempotency-Key gerekir

İade ya da iptal talep et

Parametreler

AlanTürZorunluAçıklama
X-CAV-Sandbox-Scenariostring · headerİsteğe bağlıYalnızca sandbox anahtarları. Simüle edilen sonucu seçer: completed (varsayılan) ya da rejected (sanal cüzdana etkisi yoktur). Bu başlığı gönderen bir canlı anahtar ya da tanımlı değerler dışında bir değer gönderen herhangi bir anahtar 422 1000001 alır. Başlık imzalanan metnin parçası değildir; Idempotency-Key parmak izinin parçasıdır, bu yüzden bir anahtarı başka bir senaryoyla yeniden kullanmak 9000010 döndürür. Uygulanan senaryo, aynı adlı yanıt başlığında geri yansıtılır.
completedrejected

İstek gövdesi

AlanTürZorunluAçıklama
payment_codestringZorunluİade/iptal edilecek, başarıyla ödenmiş ödemenin kodu.
maxLength 16
operation_typestringZorunlurefund kesinleşmiş bir ödemeyi iade eder; void henüz kesinleşmemiş bir kart tahsilatını iptal eder. İkisi de bir geri alma talebi açar (durum requested). Bir operatör talebi inceler; onaylandığında tutar bakiyenizde ayrılır ve sağlayıcı iade referansı kaydedilene kadar durum awaiting_provider_manual olur (completed); aksi halde talep rejected ya da cancelled ile sona erer (ayrılan tutar serbest kalır). Bu uç sağlayıcıyı çağırmaz.
refundvoid
reasonstringZorunluİade/iptalin neden talep edildiği.
minLength 3maxLength 500

İstek gövdesi · Örnek

{
  "payment_code": "ab34cdef",
  "operation_type": "refund",
  "reason": "Customer cancelled the order."
}

Yanıt · 202

İade/iptal talebi alındı. İnceleme ve sağlayıcıya iletme işlemi elle yapılır. Sandbox anahtarıyla simüle edilmiş sonuç döner (environment sandbox); idempotent bir tekrar da 202 döndürür.

Reversal

AlanTürZorunluAçıklama
idstringZorunluİade/iptal talebi tanımlayıcısı (UUID).
operationstringZorunluİşlem türü.
refundvoid
statusstringZorunluİade/iptal yaşam döngüsü: requested (operatör bekleniyor) → awaiting_provider_manual (onaylandı; sağlayıcı iade referansı kaydedilene kadar tutar ayrılır) → completed, ya da rejected / cancelled (ayrılan tutar serbest kalır). processing ve failed, bugün ödeme geri almaları için kullanılmayan ayrılmış değerlerdir. Sandbox anahtarıyla durum hemen kesinleşir: completed (varsayılan) ya da rejected.
requestedprocessingcompletedrejectedfailedawaiting_provider_manualcancelled
amountstringZorunluİade/iptal edilen ödemenin tamamının tutarı; ödemenin kendi para biriminde (ödeme ve payment.refunded webhook'uyla aynı tutar ve para birimi), 2 ondalık haneli ondalık dizge olarak verilir. Durum requested olsa da para hareket etmiş sayılmaz.
currencystringZorunluamount alanının para birimi: iade/iptal edilen ödemenin currency_code değeri.
reasonstringZorunluBelirttiğiniz gerekçe.
provider_referencestring | nullZorunluGerçek POS iadesi tamamlandığında doldurulan sağlayıcı iade referansı. Sandbox'ta simüle edilen iade/iptal tamamlandığında SBX- ile başlayan sentetik bir referans döner; bu bir sağlayıcı kaydı değildir.
provider_refunded_atstring · date-time | nullZorunluSağlayıcı iadesinin kaydedildiği zaman (UTC). Elle tamamlanana kadar null.
created_atstring · date-timeZorunluİstek zamanı (UTC).
updated_atstring · date-time | nullZorunluSon durum değişikliği (UTC).
payment_codestring | nullZorunluBu iade/iptal talebinin ait olduğu ödemenin kodu (ödeme oluşturulurken dönen code).
environmentstringZorunluİade/iptal talebinin ortamı (imzalayan anahtarın ortamı).
livesandbox

Yanıt · Örnek

{
  "id": "9B2E6F3A-0C1D-4E5F-8A7B-000000000001",
  "operation": "refund",
  "status": "requested",
  "amount": "250.00",
  "currency": "USD",
  "reason": "Customer cancelled the order.",
  "provider_reference": "string",
  "provider_refunded_at": "2026-09-26T09:00:00.000Z",
  "created_at": "2026-09-26T09:00:00.000Z",
  "updated_at": "2026-09-26T09:00:00.000Z",
  "payment_code": "ab34cdef",
  "environment": "live"
}

Olası hatalar

GET/api/v3/refunds

İadeleri listele

Parametreler

AlanTürZorunluAçıklama
pageinteger · queryİsteğe bağlıSayfa numarası.
minimum 1
per_pageinteger · queryİsteğe bağlıSayfa başına öğe sayısı.
minimum 1maximum 100
statusstring · queryİsteğe bağlıDuruma göre filtreler.
requestedprocessingawaiting_provider_manualcompletedrejectedfailedcancelled
operation_typestring · queryİsteğe bağlıİşlem türüne göre filtreler.
refundvoid

Yanıt · 200

Sayfalanmış iadeler.

AlanTürAçıklama
dataReversal[]
metaPaginationMeta

Yanıt · Örnek

{
  "data": [
    {
      "id": "9B2E6F3A-0C1D-4E5F-8A7B-000000000001",
      "operation": "refund",
      "status": "requested",
      "amount": "250.00",
      "currency": "USD",
      "reason": "Customer cancelled the order.",
      "provider_reference": "string",
      "provider_refunded_at": "2026-09-26T09:00:00.000Z",
      "created_at": "2026-09-26T09:00:00.000Z",
      "updated_at": "2026-09-26T09:00:00.000Z",
      "payment_code": "ab34cdef",
      "environment": "live"
    }
  ],
  "meta": {
    "page": 1,
    "per_page": 20,
    "total": 1,
    "total_pages": 1
  }
}

Olası hatalar

GET/api/v3/refunds/{id}

İade durumunu getir

Parametreler

AlanTürZorunluAçıklama
idstring · uuid · pathZorunluİade/iptal talebinin kimliği.

Yanıt · 200

İade/iptal talebi.

Nesne: Reversal (alanlar İade ya da iptal talep et altında listelenir).

Yanıt · Örnek

{
  "id": "9B2E6F3A-0C1D-4E5F-8A7B-000000000001",
  "operation": "refund",
  "status": "requested",
  "amount": "250.00",
  "currency": "USD",
  "reason": "Customer cancelled the order.",
  "provider_reference": "string",
  "provider_refunded_at": "2026-09-26T09:00:00.000Z",
  "created_at": "2026-09-26T09:00:00.000Z",
  "updated_at": "2026-09-26T09:00:00.000Z",
  "payment_code": "ab34cdef",
  "environment": "live"
}

Olası hatalar

Bildirim

İade tamamlandığında ödemenin webhook adresine imzalı bir payment.refunded bildirimi gönderilir. Başlıklar, imza ve yeniden denemeler Webhook’lar bölümündeki gibidir. void bildirim göndermez.

POSTpayment.refunded

Mağaza adresine imzalı payment.refunded bildirimi

İstek gövdesi

AlanTürZorunluAçıklama
event_idstring · uuidZorunlu
event_typestringZorunlu
payment.refunded
environmentstringZorunlu
sandboxlive
occurred_atstring · date-timeZorunlu
refundobjectZorunlu
refund.public_idstring · uuidZorunlu
refund.statusstringZorunlu
completed
refund.amountstringZorunluSabit ölçekli, 2 ondalık haneli ondalık dizge olarak pozitif tutar. "0.00" kabul edilmez.
refund.currency_codestringZorunluFiat para birimi kodu; desteklenen dört para birimiyle sınırlıdır.
USDEURAEDTRY
refund.completed_atstring · date-timeZorunluoccurred_at ile aynı an.
paymentobjectZorunlu
payment.public_idstring · uuidZorunlu
payment.codestringZorunlu
minLength 1maxLength 16
payment.merchant_referencestring | nullZorunlu
maxLength 64
orderobjectZorunlu
order.public_idstring · uuidZorunlu

İstek gövdesi · Örnek

{
  "event_id": "B5D4E456-EFC1-4EC2-A613-D64A16E45BD5",
  "event_type": "payment.refunded",
  "environment": "sandbox",
  "occurred_at": "2026-09-28T12:00:00.000Z",
  "refund": {
    "public_id": "A1B2C3D4-E5F6-4789-8ABC-DEF012345678",
    "status": "completed",
    "amount": "100.00",
    "currency_code": "USD",
    "completed_at": "2026-09-28T12:00:00.000Z"
  },
  "payment": {
    "public_id": "11111111-2222-4333-8444-555555555555",
    "code": "ab34cdef",
    "merchant_reference": "SIP-2026-0001"
  },
  "order": {
    "public_id": "66666666-7777-4888-8999-AAAAAAAAAAAA"
  }
}

Çekimler

USDT (TRC20) çekimi talep edin ve takip edin.

Canlıda HTTP 201, talebin kabul edildiği ve tutarın bloke edildiği anlamına gelir; USDT'nin gönderildiği anlamına gelmez. status ve tx_hash alanlarını kontrol edin ve adresi iki kez doğrulayın; zincir üzerindeki transfer geri alınamaz.

Sandbox çekimi sanal bakiyeden düşer ve zincire hiçbir şey göndermez. Alt sınır, günlük üst sınır ve kur dahil canlıyla aynı kurallara tabidir. Reddi denemek için X-CAV-Sandbox-Scenario: rejected başlığını gönderin. Sandbox hedef olarak TRON sıfır adresini kabul eder; canlı, yakma adreslerini 1000030 ile reddeder.

En düşük tutar ve günlük üst sınır hesap bazında Manuell tarafından belirlenir; alt sınırın altında API 9000019, üst sınırın üstünde 9000021 döndürür. Canlıda USDT'yi Manuell operatörü gönderir ve tx_hash değerini girer (sent); ya da gerekçeyle reddeder (rejected) ve tutar bakiyenize döner.

POST/api/v3/withdrawalsIdempotency-Key gerekir

USDT çekimi talep et

Parametreler

AlanTürZorunluAçıklama
X-CAV-Sandbox-Scenariostring · headerİsteğe bağlıYalnızca sandbox anahtarları. Simüle edilen sonucu seçer: sent (varsayılan) ya da rejected (sanal cüzdana etkisi yoktur). Bu başlığı gönderen bir canlı anahtar ya da tanımlı değerler dışında bir değer gönderen herhangi bir anahtar 422 1000001 alır. Başlık imzalanan metnin parçası değildir; Idempotency-Key parmak izinin parçasıdır, bu yüzden bir anahtarı başka bir senaryoyla yeniden kullanmak 9000010 döndürür. Uygulanan senaryo, aynı adlı yanıt başlığında geri yansıtılır.
sentrejected

İstek gövdesi

AlanTürZorunluAçıklama
amountstringZorunluAPI cüzdanından bloke edilecek tutar; yapılandırılmış platform taban para biriminde, 2 ondalık haneli ondalık dizge olarak verilir. En düşük tutar ve günlük üst sınır hesap bazında platform operatörü tarafından belirlenir: en düşük tutarın altındaki tutar 9000019, günlük üst sınırın üstündeki tutar 9000021 döndürür. Sınırlarınızı hesap yöneticinize sorun.
addressstringZorunluUSDT TRC20 çekimi için kontrol ettiğiniz kendi TRON adresiniz. Örnekteki değer yer tutucudur ve değiştirilmeden gönderilirse reddedilir.
maxLength 64
address_acknowledgedbooleanZorunlutrue olmalıdır — hedef adresin doğru olduğunu ve işlemin geri alınamaz olduğunu onaylarsınız.

İstek gövdesi · Örnek

{
  "amount": "250.00",
  "address": "REPLACE_WITH_YOUR_TRON_ADDRESS",
  "address_acknowledged": true
}

Yanıt · 201

Çekim talep edildi. Bakiye bloke edilir; zincir üstü gönderim elle yapılır. Sandbox anahtarıyla simüle edilmiş sonuç döner (environment sandbox); idempotent bir tekrar da 201 döndürür.

Withdrawal

AlanTürZorunluAçıklama
idstringZorunluÇekim talebi tanımlayıcısı (UUID).
statusstringZorunluÇekim yaşam döngüsü durumu: requested → sent ya da rejected. Zincir üstü gönderimi platform operatörü elle yapar. Sandbox anahtarıyla durum hemen kesinleşir: sent (varsayılan) ya da rejected.
requestedsentrejected
amountstringZorunluAPI cüzdanından talep edilen ve bloke edilen tutar; platform taban para biriminde, 2 ondalık haneli ondalık dizge olarak verilir; USDT tutarı değildir.
currencystringZorunluTutarın ifade edildiği taban para birimi.
assetstringZorunluÇekim varlığı (USDT).
networkstringZorunluÇekim ağı (TRC20).
addressstringZorunluBelirttiğiniz hedef adres.
usdt_amountstringZorunluTalep kabul edildiğinde hesaplanan USDT tutarı; sabit ölçekli, 6 ondalık haneli ondalık dizge. Bu alan tek başına zincir üstü bir transferi doğrulamaz.
tx_hashstring | nullZorunluGönderimden sonra doldurulan zincir üstü işlem özeti (hash). Sandbox'ta sent durumundaki bir çekim için 64 karakterlik sentetik bir hash döner; zincirde hiçbir transfer yapılmaz.
rejection_reasonstring | nullZorunluReddedilirse doldurulan gerekçe. Sandbox'ta reddedilen bir çekimde Sandbox scenario: rejected yer alır.
requested_atstring · date-timeZorunluİstek zamanı (UTC).
processed_atstring · date-time | nullZorunluGönderildiği ya da reddedildiği zaman (UTC).
created_atstring · date-timeZorunluKaydın oluşturulma zamanı (UTC).
environmentstringZorunluÇekimin ortamı (imzalayan anahtarın ortamı).
livesandbox

Yanıt · Örnek

{
  "id": "7F0C2A94-3B1E-4D58-9A6F-1C2D3E4F5A6B",
  "status": "requested",
  "amount": "250.00",
  "currency": "USD",
  "asset": "USDT",
  "network": "TRC20",
  "address": "REPLACE_WITH_YOUR_TRON_ADDRESS",
  "usdt_amount": "249.000000",
  "tx_hash": null,
  "rejection_reason": null,
  "requested_at": "2026-09-26T09:30:00.000Z",
  "processed_at": null,
  "created_at": "2026-09-26T09:30:00.000Z",
  "environment": "live"
}

Olası hatalar

GET/api/v3/withdrawals

Çekimleri listele

Parametreler

AlanTürZorunluAçıklama
pageinteger · queryİsteğe bağlıSayfa numarası.
minimum 1
per_pageinteger · queryİsteğe bağlıSayfa başına öğe sayısı.
minimum 1maximum 100
statusstring · queryİsteğe bağlıDuruma göre filtreler.
requestedsentrejected

Yanıt · 200

Sayfalanmış çekimler.

AlanTürAçıklama
dataWithdrawal[]
metaPaginationMeta

Yanıt · Örnek

{
  "data": [
    {
      "id": "7F0C2A94-3B1E-4D58-9A6F-1C2D3E4F5A6B",
      "status": "requested",
      "amount": "250.00",
      "currency": "USD",
      "asset": "USDT",
      "network": "TRC20",
      "address": "REPLACE_WITH_YOUR_TRON_ADDRESS",
      "usdt_amount": "249.000000",
      "tx_hash": null,
      "rejection_reason": null,
      "requested_at": "2026-09-26T09:30:00.000Z",
      "processed_at": null,
      "created_at": "2026-09-26T09:30:00.000Z",
      "environment": "live"
    }
  ],
  "meta": {
    "page": 1,
    "per_page": 20,
    "total": 1,
    "total_pages": 1
  }
}

Olası hatalar

GET/api/v3/withdrawals/{id}

Çekim durumunu getir

Parametreler

AlanTürZorunluAçıklama
idstring · uuid · pathZorunluÇekim kimliği.

Yanıt · 200

Çekim.

Nesne: Withdrawal (alanlar USDT çekimi talep et altında listelenir).

Yanıt · Örnek

{
  "id": "7F0C2A94-3B1E-4D58-9A6F-1C2D3E4F5A6B",
  "status": "requested",
  "amount": "250.00",
  "currency": "USD",
  "asset": "USDT",
  "network": "TRC20",
  "address": "REPLACE_WITH_YOUR_TRON_ADDRESS",
  "usdt_amount": "249.000000",
  "tx_hash": null,
  "rejection_reason": null,
  "requested_at": "2026-09-26T09:30:00.000Z",
  "processed_at": null,
  "created_at": "2026-09-26T09:30:00.000Z",
  "environment": "live"
}

Olası hatalar

İtirazlar

İtirazları listeleyin ve kanıtınızı gönderin.

İtirazlar kart kuruluşlarından geldiği için sandbox'ta test itirazını POST /api/v3/sandbox/disputes ile kendiniz oluşturursunuz. Bkz. Hesap işlemlerini test etme.

İtiraz, banka bildirdiğinde Manuell tarafından kaydedilir. İtiraz edilen tutar bakiyenizden düşer (bakiye eksiye inebilir ve can_withdraw false olur); kazanırsanız geri eklenir. Kanıtınızı evidence_due_at tarihinden önce gönderin; itiraz açıkken yeni bir Idempotency-Key önceki notunuzu değiştirir.

GET/api/v3/disputes

İtirazları listele

Parametreler

AlanTürZorunluAçıklama
pageinteger · queryİsteğe bağlıSayfa numarası.
minimum 1
per_pageinteger · queryİsteğe bağlıSayfa başına öğe sayısı.
minimum 1maximum 100
statusstring · queryİsteğe bağlıDuruma göre filtreler.
openunder_reviewwonlost

Yanıt · 200

Sayfalanmış itirazlar.

AlanTürAçıklama
dataDispute[]
metaPaginationMeta

Dispute

AlanTürZorunluAçıklama
idstringZorunluİtiraz tanımlayıcısı (UUID).
servicestringZorunluKendisine itiraz edilen ödemenin ait olduğu hizmet: bu API üzerinden oluşturulan ödeme için api, ödeme bağlantısı için link.
amountstringZorunluİtiraz edilen tutar (ondalık dizge).
currencystringZorunluİtirazın para birimi.
statusstringZorunluİtiraz durumu.
openunder_reviewwonlost
reasonstringZorunluİtirazın neden kategorisi.
fraudunauthorizedproduct_not_deliveredduplicateamount_mismatchother
reason_notestring | nullZorunluBankanın gerekçe notu, olduğu gibi.
occurred_onstring · dateZorunluİtirazın açıldığı tarih (YYYY-MM-DD).
evidence_due_atstring · date-time | nullZorunluKanıt gönderme son tarihi (UTC). Sandbox itirazı, oluşturulduktan sonra 7 gün boyunca kanıt için açık kalır.
evidence_submitted_atstring · date-time | nullZorunluPlatformun savunmayı bankaya ilettiği zaman.
merchant_evidence_notestring | nullZorunluGönderdiğiniz not.
merchant_evidence_submitted_atstring · date-time | nullZorunluNotunuzu gönderdiğiniz zaman.
resolved_atstring · date-time | nullZorunluİtirazın sonuçlandığı zaman.
created_atstring · date-timeZorunluKaydın oluşturulma zamanı (UTC).
payment_codestring | nullZorunluİtirazın ait olduğu API ödemesinin kodu (ödeme oluşturulurken dönen code); itiraz bir API ödemesine bağlı değilse null.
environmentstringZorunluİtirazın ortamı (imzalayan anahtarın ortamı).
livesandbox

Yanıt · Örnek

{
  "data": [
    {
      "id": "9B2E6F3A-0C1D-4E5F-8A7B-000000000001",
      "service": "api",
      "amount": "250.00",
      "currency": "USD",
      "status": "open",
      "reason": "fraud",
      "reason_note": "string",
      "occurred_on": "2026-09-26",
      "evidence_due_at": "2026-09-26T09:00:00.000Z",
      "evidence_submitted_at": "2026-09-26T09:00:00.000Z",
      "merchant_evidence_note": "string",
      "merchant_evidence_submitted_at": "2026-09-26T09:00:00.000Z",
      "resolved_at": "2026-09-26T09:00:00.000Z",
      "created_at": "2026-09-26T09:00:00.000Z",
      "payment_code": "ab34cdef",
      "environment": "live"
    }
  ],
  "meta": {
    "page": 1,
    "per_page": 20,
    "total": 1,
    "total_pages": 1
  }
}

Olası hatalar

GET/api/v3/disputes/{id}

İtirazı getir

Parametreler

AlanTürZorunluAçıklama
idstring · uuid · pathZorunluİtiraz kimliği.

Yanıt · 200

İtiraz.

Nesne: Dispute (alanlar İtirazları listele altında listelenir).

Yanıt · Örnek

{
  "id": "9B2E6F3A-0C1D-4E5F-8A7B-000000000001",
  "service": "api",
  "amount": "250.00",
  "currency": "USD",
  "status": "open",
  "reason": "fraud",
  "reason_note": "string",
  "occurred_on": "2026-09-26",
  "evidence_due_at": "2026-09-26T09:00:00.000Z",
  "evidence_submitted_at": "2026-09-26T09:00:00.000Z",
  "merchant_evidence_note": "string",
  "merchant_evidence_submitted_at": "2026-09-26T09:00:00.000Z",
  "resolved_at": "2026-09-26T09:00:00.000Z",
  "created_at": "2026-09-26T09:00:00.000Z",
  "payment_code": "ab34cdef",
  "environment": "live"
}

Olası hatalar

POST/api/v3/disputes/{id}/evidenceIdempotency-Key gerekir

İtiraz kanıtı gönder

Parametreler

AlanTürZorunluAçıklama
idstring · uuid · pathZorunluİtiraz kimliği.

İstek gövdesi

AlanTürZorunluAçıklama
notestringZorunluİtiraz için kanıt metniniz.
minLength 3maxLength 4000

İstek gövdesi · Örnek

{
  "note": "Order 4821 was delivered on 2026-09-25. Carrier reference ABC123."
}

Yanıt · 200

Kanıt kaydedildi; itirazın durumu değişmez. Aynı idempotent tekrar, özgün yanıt gövdesini döndürür.

Nesne: Dispute (alanlar İtirazları listele altında listelenir).

Yanıt · Örnek

{
  "id": "9B2E6F3A-0C1D-4E5F-8A7B-000000000001",
  "service": "api",
  "amount": "250.00",
  "currency": "USD",
  "status": "open",
  "reason": "fraud",
  "reason_note": "string",
  "occurred_on": "2026-09-26",
  "evidence_due_at": "2026-09-26T09:00:00.000Z",
  "evidence_submitted_at": "2026-09-26T09:00:00.000Z",
  "merchant_evidence_note": "string",
  "merchant_evidence_submitted_at": "2026-09-26T09:00:00.000Z",
  "resolved_at": "2026-09-26T09:00:00.000Z",
  "created_at": "2026-09-26T09:00:00.000Z",
  "payment_code": "ab34cdef",
  "environment": "live"
}

Olası hatalar

Teslimatları yönetin

Webhook teslimatlarını inceleyin ve başarısızları yeniden gönderin.

Bildirimlerin gideceği adres ortam başına “API anahtarı ve entegrasyon” sayfasında belirlenir. Aşağıdaki uçlar teslimatları listeler ve başarısız olanları yeniden kuyruğa alır.

GET/api/v3/webhooks/deliveries

Webhook teslimatlarını listele

Parametreler

AlanTürZorunluAçıklama
pageinteger · queryİsteğe bağlıSayfa numarası.
minimum 1
per_pageinteger · queryİsteğe bağlıSayfa başına öğe sayısı.
minimum 1maximum 100
statusstring · queryİsteğe bağlıDuruma göre filtreler.
pendingdeliveredfailed

Yanıt · 200

Sayfalanmış teslimatlar.

AlanTürAçıklama
dataWebhookDelivery[]
metaPaginationMeta

WebhookDelivery

AlanTürAçıklama
idstringTeslimat tanımlayıcısı (UUID).
eventstringTeslimatın olay türü: payment.paid, payment.refunded veya payment.failed. Başarısız deneme kesin sonuç değildir; ödeme created kalır ve daha sonra ödenebilir.
statusstringTeslimat durumu.
pendingdeliveredfailed
payment_codestring | nullİlgili ödeme kodu (varsa).
attempt_countintegerŞimdiye kadarki teslimat denemesi sayısı.
last_status_codeinteger | nullSon denemenin HTTP durumu.
last_errorstring | nullEski ham teslimat hatası; last_error_code ve last_error_message kullanın.
last_error_codestring | nullKararlı, makine tarafından okunabilir teslimat hata kodu.
invalid_webhook_targetwebhook_target_private_networkwebhook_environment_invalidwebhook_signing_unavailablewebhook_response_unsuccessfulwebhook_egress_proxy_unreachablewebhook_unreachablewebhook_delivery_failed
last_error_messagestring | nullAccept-Language ile seçilen kısa, insanın okuyacağı teslimat hata iletisi.
next_attempt_atstring · date-time | nullBir sonraki yeniden denemenin planlandığı zaman (UTC).
delivered_atstring · date-time | nullTeslim edildiği zaman (UTC).
created_atstring · date-timeKaydın oluşturulma zamanı (UTC).

Yanıt · Örnek

{
  "data": [
    {
      "id": "9B2E6F3A-0C1D-4E5F-8A7B-000000000001",
      "event": "payment.paid",
      "status": "pending",
      "payment_code": null,
      "attempt_count": 1,
      "last_status_code": null,
      "last_error": null,
      "last_error_code": null,
      "last_error_message": null,
      "next_attempt_at": null,
      "delivered_at": null,
      "created_at": "2026-09-26T09:00:00.000Z"
    }
  ],
  "meta": {
    "page": 1,
    "per_page": 20,
    "total": 1,
    "total_pages": 1
  }
}

Olası hatalar

GET/api/v3/webhooks/deliveries/{id}

Webhook teslimatını getir

Parametreler

AlanTürZorunluAçıklama
idstring · uuid · pathZorunluTeslimat kimliği.

Yanıt · 200

Teslimat; url ve payload dahil.

WebhookDeliveryDetail

AlanTürAçıklama
idstringTeslimat tanımlayıcısı (UUID).
eventstringTeslimatın olay türü: payment.paid, payment.refunded veya payment.failed. Başarısız deneme kesin sonuç değildir; ödeme created kalır ve daha sonra ödenebilir.
statusstringTeslimat durumu.
pendingdeliveredfailed
payment_codestring | nullİlgili ödeme kodu (varsa).
attempt_countintegerŞimdiye kadarki teslimat denemesi sayısı.
last_status_codeinteger | nullSon denemenin HTTP durumu.
last_errorstring | nullEski ham teslimat hatası; last_error_code ve last_error_message kullanın.
last_error_codestring | nullKararlı, makine tarafından okunabilir teslimat hata kodu.
invalid_webhook_targetwebhook_target_private_networkwebhook_environment_invalidwebhook_signing_unavailablewebhook_response_unsuccessfulwebhook_egress_proxy_unreachablewebhook_unreachablewebhook_delivery_failed
last_error_messagestring | nullAccept-Language ile seçilen kısa, insanın okuyacağı teslimat hata iletisi.
next_attempt_atstring · date-time | nullBir sonraki yeniden denemenin planlandığı zaman (UTC).
delivered_atstring · date-time | nullTeslim edildiği zaman (UTC).
created_atstring · date-timeKaydın oluşturulma zamanı (UTC).
urlstringBu teslimat için webhook adresiniz.
payloadobject | nullGönderilen JSON gövdesi.

Yanıt · Örnek

{
  "id": "9B2E6F3A-0C1D-4E5F-8A7B-000000000001",
  "event": "payment.paid",
  "status": "pending",
  "payment_code": null,
  "attempt_count": 1,
  "last_status_code": null,
  "last_error": null,
  "last_error_code": null,
  "last_error_message": null,
  "next_attempt_at": null,
  "delivered_at": null,
  "created_at": "2026-09-26T09:00:00.000Z",
  "url": "string",
  "payload": null
}

Olası hatalar

POST/api/v3/webhooks/deliveries/{id}/retryIdempotency-Key gerekir

Başarısız teslimatı yeniden dene

Parametreler

AlanTürZorunluAçıklama
idstring · uuid · pathZorunluTeslimat kimliği.

Yanıt · 200

Başarısız teslimat yeniden kuyruğa alındı. Aynı idempotent tekrar, yeni bir deneme yapmadan ilk kuyruğa alma yanıtını döndürür.

Nesne: WebhookDeliveryDetail (alanlar Webhook teslimatını getir altında listelenir).

Yanıt · Örnek

{
  "id": "9B2E6F3A-0C1D-4E5F-8A7B-000000000001",
  "event": "payment.paid",
  "status": "pending",
  "payment_code": null,
  "attempt_count": 1,
  "last_status_code": null,
  "last_error": null,
  "last_error_code": null,
  "last_error_message": null,
  "next_attempt_at": null,
  "delivered_at": null,
  "created_at": "2026-09-26T09:00:00.000Z",
  "url": "string",
  "payload": null
}

Olası hatalar

Teslimat hataları

last_error eski alandır; yeni entegrasyonlarda last_error_code kullanın.

AlanAçıklama
invalid_webhook_targetWebhook hedefi geçersiz.
webhook_target_private_networkWebhook hedefi özel bir ağa çözümleniyor.
webhook_environment_invalidWebhook ortamı geçersiz.
webhook_signing_unavailableWebhook imzalanamadı.
webhook_response_unsuccessfulHedef 2xx dışında yanıt verdi.
webhook_egress_proxy_unreachableTeslimat çıkış vekiline ulaşılamadı.
webhook_unreachableWebhook hedefine ulaşılamadı.
webhook_delivery_failedWebhook teslimatı başarısız oldu.

Hizmet durumu ve bakım

Bazı hizmetler geçici olarak bakıma alınabilir. Yalnızca yeni işler etkilenir; bu bölüm nelerin durduğunu, nelerin çalışmaya devam ettiğini ve durumun nasıl sorgulanacağını anlatır.

GET/api/v3/service-statusHerkese açık

Hizmet durumunu getir

Yanıt · 200

Bakımdaki hizmetler (liste boş olabilir).

AlanTürZorunluAçıklama
dataServiceStatusItem[]ZorunluŞu anda bakımda olan hizmetler; boş liste hiçbirinin bakımda olmadığı anlamına gelir.

ServiceStatusItem

AlanTürZorunluAçıklama
servicestringZorunluHizmet kodu: api_collection (API üzerinden oluşturulan ödemeler ve ödeme sayfaları), withdrawals (çekim talepleri) ya da link_collection, storefront, usdt_sales ve balance_load (platformun diğer hizmetleri).
api_collectionlink_collectionwithdrawalsstorefrontusdt_salesbalance_load
untilstring · date-time | nullZorunluTahmini dönüş zamanı (UTC, ISO-8601) ya da null. Yalnızca bir tahmindir: bakım kendiliğinden bitmez ve bu zaman geçtikten sonra alan null olur.
notestring | nullZorunluPlatform operatöründen gelen kısa düz metin mesajı ya da null.
maxLength 240

Yanıt · Örnek

{
  "data": [
    {
      "service": "api_collection",
      "until": "2026-10-01T12:00:00Z",
      "note": "Planned maintenance."
    }
  ]
}

Diğer yanıtlar

  • 429İstek sınırı aşıldı.

Olası hatalar

Sayfalama

Liste uçları page (varsayılan 1) ve per_page (varsayılan 20, en fazla 100) alır; data ve meta döndürür.

PaginationMeta

AlanTürZorunluAçıklama
pageintegerZorunluSayfa numarası (1'den başlar).
per_pageintegerZorunluSayfa başına öğe sayısı (1–100).
totalintegerZorunluEşleşen toplam kayıt sayısı.
total_pagesintegerZorunluceil(total / per_page).

Hesap işlemlerini test etme

Bakiye, iade, çekim ve itirazlar sandbox'ta canlıyla aynı uçlar, gövdeler ve hata kodlarıyla çalışır.

  • Sandbox ödemeleri valör beklemeden hemen available_amount alanına geçer.
  • İade ve çekim talepleri hemen sonuçlanır. Sonucu X-CAV-Sandbox-Scenario başlığı belirler.
  • İtirazlar bankadan geldiği için sandbox'ta POST /api/v3/sandbox/disputes ile oluşturursunuz.

İade, çekim ve itiraz testlerini “Sandbox işlemleri” sayfasından izleyin.

Sonucu seçme

İade ve çekim talepleri canlıyla aynı uçları ve gövdeleri kullanır. Sonucu seçmek için isteğe bağlı X-CAV-Sandbox-Scenario başlığını ekleyin. Başlık imzaya dahil değildir. Canlı anahtarla gönderilen başlık 422 (1000001) ile reddedilir; böylece bir test hiçbir zaman gerçek bir isteğe dönüşmez.

X-CAV-Sandbox-Scenario

X-CAV-Sandbox-Scenario: rejected
Uç noktaBaşlık değerleriVarsayılanEtki
POST /api/v3/refundscompleted rejectedcompletedcompleted iadeyi sonuçlandırır ve sanal bakiyeden düşer; rejected reddi kaydeder, bakiyeyi değiştirmez.
POST /api/v3/withdrawalssent rejectedsentsent sanal bakiyeden düşer ve tx_hash alanını yer tutucu bir değerle doldurur; rejected tutarı serbest bırakır.
POST /api/v3/sandbox/disputesopen won lostopenBaşlıkla değil, istek gövdesinde verilir: open, won ya da lost.

Test itirazı

İtirazlar kart kuruluşlarından gelir; canlıda sizin tarafınızdan başlatılamaz. Bu, tek sandbox'a özel uçtur: ödenmiş bir sandbox ödemesi için test itirazı oluşturur ve canlıdaki Dispute nesnesini döndürür.

POST/api/v3/sandbox/disputesIdempotency-Key gerekir

Ödenmiş bir sandbox ödemesi için sandbox itirazı oluştur

İstek gövdesi

AlanTürZorunluAçıklama
payment_codestringZorunluKendi sandbox anahtarınızla oluşturulmuş, ödenmiş bir ödemenin koduyla değiştirin.
maxLength 16
scenariostringİsteğe bağlıKaydedilecek sonuç: open (varsayılan) kanıt için açık kalır; won ve lost zaten sonuçlanmıştır.
openwonlost
reasonstringZorunluİtiraz neden kategorisi; Dispute.reason ile aynı değerler.
fraudunauthorizedproduct_not_deliveredduplicateamount_mismatchother

İstek gövdesi · Örnek

{
  "payment_code": "ab34cdef",
  "scenario": "open",
  "reason": "fraud"
}

Yanıt · 201

İtiraz kaydedildi; idempotent bir tekrar aynı itirazı döndürür.

Nesne: Dispute (alanlar İtirazları listele altında listelenir).

Yanıt · Örnek

{
  "id": "B5D4E456-EFC1-4EC2-A613-D64A16E45BD5",
  "service": "api",
  "amount": "250.00",
  "currency": "USD",
  "status": "open",
  "reason": "fraud",
  "reason_note": null,
  "occurred_on": "2026-09-30",
  "evidence_due_at": "2026-10-07T09:00:00.000Z",
  "evidence_submitted_at": null,
  "merchant_evidence_note": null,
  "merchant_evidence_submitted_at": null,
  "resolved_at": null,
  "created_at": "2026-09-30T09:00:00.000Z",
  "payment_code": "ab34cdef",
  "environment": "sandbox"
}

Olası hatalar

Canlı terminal ve son uçtan uca test için hesap yöneticinizle görüşün. İletişim