Sign in
Dönüştürmeler/Convert API

Convert API

Kripto para birimleri arasında doğrudan mağaza bakiyenizden dönüşüm yapın — anlık fiyat teklifi alın ve piyasa fiyatından işlemi gerçekleştirin.

Convert API, mağaza bakiyenizde tuttuğunuz para birimleri arasında güncel piyasa fiyatından dönüşüm yapmanızı sağlar — mağaza panelindeki Swap sekmesini çalıştıran aynı motor, artık backend'inizden çağrılabilir.

Convert uç noktaları, Payment API istekleri için kullandığınız aynı normal API anahtarınızla imzalanır — Payout API anahtarıyla değil. Bir dönüşümü gerçekleştirmek, mağaza bakiyenizi anında borçlandırır ve alacaklandırır; bu nedenle bu anahtarı para hareket ettiren herhangi bir kimlik bilgisi gibi dikkatle ele alın.

Dönüşüm fiyatı alma

Güncel piyasa fiyatından bir dönüşüm için gösterge niteliğinde bir teklif döndürür — geçerli kur ve ortaya çıkan tutarlar. Hiçbir şey borçlandırılmaz veya rezerve edilmez; işlemi gerçekleştirmeden önce istediğiniz kadar çağırabilirsiniz.

POST/v1/convert/price

İstek parametreleri

AlanTürZorunluAçıklamaDeğer
from_currencystringevetKaynak para birimi
to_currencystringevetHedef para birimi. from_currency'den farklı olmalıdır
amountdecimalevetDönüştürülecek tutar, 0'dan büyük
amount_typestringevetamount hangi tarafı ifade ediyor

amount_type=from, tam olarak amount kadar from_currency harcar. amount_type=to, tam olarak amount kadar to_currency alır.

🟢 200 OK · application/json

JSON
{
  "state": 0,
  "result": {
    "success": true,
    "from_currency": "BTC",
    "to_currency": "USDT",
    "amount_type": "from",
    "from_amount": "0.01000000",
    "to_amount": "947.86690000",
    "effective_rate": "94786.69000000",
    "from_amount_usd": "947.87",
    "to_amount_usd": "947.87"
  }
}

Yanıt alanları

AlanTürAçıklama
successbooleanTeklifin başarıyla hesaplanıp hesaplanmadığı
from_currencystringKaynak para birimi
to_currencystringHedef para birimi
amount_typestringİstekteki amount_type değerini yansıtır
from_amountstringfrom_currency cinsinden borçlandırılacak tutar
to_amountstringto_currency cinsinden alacaklandırılacak tutar
effective_ratestringBu teklife uygulanan kur — from_currency'nin 1 biriminin to_currency karşılığı (platform fiyatlandırmasını zaten içerir)
from_amount_usdstring | nullfrom_amount'ın USD karşılığı
to_amount_usdstring | nullto_amount'ın USD karşılığı
  • Bu teklif yalnızca gösterge niteliğindedir — fiyat teklifi ile işlem çağrısı arasında piyasa fiyatı değişebilir.
  • Bu çağrı hiçbir bakiyeyi borçlandırmaz veya rezerve etmez.
Credentials
RequestPOST/v1/convert/price
curl -X POST https://api.2328.io/api/v1/convert/price \
  -H "Content-Type: application/json" \
  -H "User-Agent: MyShop/1.0 (+https://myshop.example)" \
  -H "project: YOUR_PROJECT_UUID" \
  -H "sign: YOUR_HMAC_SIGNATURE"
Response
Click Try it to see the response here.

Dönüşümü gerçekleştirme

Güncel piyasa fiyatından bir dönüşümü gerçekleştirir ve mağaza bakiyenizi günceller. Ayrı bir "fiyatı onayla" adımı yoktur — dönüştürmek istediğiniz tutarla doğrudan bu uç noktayı çağırın.

POST/v1/convert

İdempotans. İlk çağrıdan sonraki yaklaşık bir dakika içinde tam olarak aynı isteği (aynı from_currency, to_currency, amount, amount_type) tekrarlamak, ikinci bir dönüşüm oluşturmak yerine mevcut olanı döndürür. Bu süre geçtikten sonra aynı istek yeni bir dönüşüm olarak değerlendirilir — bir zaman aşımında önceki sonucu kontrol etmeden körlemesine tekrar denemeyin.

Bu uç nokta, her çağıran için dakikada 10 istek ile sınırlıdır — genel API hız sınırından daha sıkı, çünkü her çağrı gerçek bakiyeyi hareket ettirir.

İstek parametreleri

AlanTürZorunluAçıklamaDeğer
from_currencystringevetKaynak para birimi
to_currencystringevetHedef para birimi. from_currency'den farklı olmalıdır
amountdecimalevetDönüştürülecek tutar, 0'dan büyük
amount_typestringevetamount hangi tarafı ifade ediyor

🟢 200 OK · application/json

JSON
{
  "state": 0,
  "result": {
    "id": 12345,
    "type": "manual",
    "status": "completed",
    "from_currency": "BTC",
    "to_currency": "USDT",
    "from_amount": "0.01000000",
    "requested_from_amount": "0.01000000",
    "refund_amount": null,
    "to_amount": "947.86690000",
    "exchange_rate": "94786.69000000",
    "fee_amount": "0.00000000",
    "from_amount_usd": "947.87",
    "to_amount_usd": "947.87",
    "processed_at": "2026-01-20T15:30:24Z",
    "created_at": "2026-01-20T15:30:22Z"
  }
}

Yanıt alanları

AlanTürAçıklama
idintSistem tarafından atanan dönüşüm sipariş kimliği
typestringBu API için her zaman manual
statusstringGüncel durum (aşağıdaki «Dönüşüm durumları»na bakın)
from_currencystringKaynak para birimi
to_currencystringHedef para birimi
from_amountstringfrom_currency cinsinden borçlandırılan tutar
requested_from_amountstring | nullamount_type = from olduğunda başlangıçta talep ettiğiniz kaynak tutar. amount_type = to olduğunda null
refund_amountstring | nullKısmi gerçekleşme sonrası size iade edilen ön borçlandırma tutarının bir kısmı. Sipariş tamamen gerçekleştiyse null
to_amountstringto_currency cinsinden alacaklandırılan tutar
exchange_ratestringBu dönüşüme fiilen uygulanan kur — from_currency'nin 1 biriminin to_currency karşılığı (platform fiyatlandırmasını zaten içerir)
fee_amountstringBu dönüşümden alınan platform ücreti; işlem yönüne bağlı olarak from_currency veya to_currency cinsindendir. Zaten exchange_rate'e yansıtılmıştır — şeffaflık için gösterilir
from_amount_usdstring | nullfrom_amount'ın USD karşılığı
to_amount_usdstring | nullto_amount'ın USD karşılığı
processed_atstring (ISO 8601) | nullDönüşümün ne zaman tamamlandığı. İşlem sürerken null
created_atstring (ISO 8601)Dönüşüm siparişinin oluşturulduğu zaman

Dönüşüm durumları

DurumAçıklama
pendingOluşturuldu, henüz piyasaya gönderilmedi
processingBakiye kilitlendi, sipariş piyasaya yerleştirildi
completedTamamen gerçekleşti — to_amount bakiyenize alacaklandırıldı
failedGerçekleştirilemedi — önceden borçlandırılan tutar otomatik olarak iade edildi
partially_completedYalnızca doğrudan piyasası olmayan (bir ara para birimi üzerinden yönlendirilen) para birimi çiftleri için: ilk adım tamamlandı ancak ikincisi başarısız oldu. to_currency yerine ara para birimi alacaklandırılır — orijinal hedefinize ulaşmak için oradan tekrar dönüştürün
RequestPOST/v1/convert
curl -X POST https://api.2328.io/api/v1/convert \
  -H "Content-Type: application/json" \
  -H "User-Agent: MyShop/1.0 (+https://myshop.example)" \
  -H "project: YOUR_PROJECT_UUID" \
  -H "sign: YOUR_HMAC_SIGNATURE"
Response
Click Try it to see the response here.

Hatalar

Başarısızlık durumunda yanıt state: 1 ve bir error_code içerir — /v1/convert/price ve /v1/convert için ortak:

🔴 422 / 400 · application/json

JSON
{
  "state": 1,
  "error_code": "amount_too_small",
  "errors": {
    "amount": "Amount is too small for this conversion. Please increase the amount and try again."
  }
}
error_codeHTTP durumuAçıklama
validation_failed422Geçersiz veya eksik parametreler ya da bir iş kuralı nedeniyle reddedilme (örn. yetersiz bakiye) — ayrıntılar için errors alanına bakın
amount_too_small422amount, bu para birimi çifti için minimum işlem yapılabilir büyüklüğün altında
convert_unavailable400Dönüşüm şu anda gerçekleştirilemedi (piyasa verisi kullanılamıyor veya iki para birimi arasında rota yok) — kısa süre sonra tekrar deneyin
internal_error400İstek işlenirken beklenmeyen bir sunucu içi hata oluştu

Gelen ödemelerin otomatik dönüştürülmesi

Auto-convert gelen invoice ve statik cüzdan kredileri için bir proje ayarıdır. Bu, /v1/payment alanları ekleyerek değil, merchant kontrol panelinde yapılandırılır. Her kural bir veya daha fazla kaynak para birimi ve bir hedef para birimi seçer.

Dönüşüm tamamlandığında, ödeme bilgileri ve merchant webhooks şunları içerebilir:

JSON
{
  "payment_amount": "0.14800000",
  "merchant_amount": "0.146520000000000000",
  "payer_currency": "XMR",
  "convert": {
    "to_currency": "USDT",
    "commission": "0.09000000",
    "rate": "323.21000000",
    "amount": "47.262015740000000000"
  }
}

Tutar alanları bilerek ayrı tutulmuştur:

  • payment_amount — kaynak ödeme para biriminde zincirde tespit edilen;
  • merchant_amount — dönüşüm öncesinde merchant'ye ait net kaynak tutarı;
  • convert.amountconvert.to_currency'ye kredilenen tutar;
  • convert.rate ve convert.commission — gerçekleştirilmiş dönüşüm sonucu, yerel olarak tekrar hesaplamanız gereken bir fiyat değildir.

convert'nın yokluğu anlamlıdır: dönüşüm tamamlanmamış olabilir, o kaynak için yapılandırılmamış olabilir veya kaynak para birimi kredisine geri dönmüş olabilir. Hedef tutarı /exchange-rates veya kamu piyasası fiyatından uydurmayın.

Auto-convert hatası ve fallback

Dönüşüm, blok zinciri ödemesinin alınmasından sonradır. Piyasa uygunluğu, minimum sipariş boyutları, hassasiyet sınırları, değişim zaman aşımları ve yetersiz uygulanabilir likidite dönüşümü geciktirebilir veya engelleyebilir.

  • Küresel/proje minimumunun altındaki mevduatlar dönüşüm hattını atlayarak kaynak para biriminde kredilenir.
  • Geçici hatalar eşzamanlı olarak yeniden denenebilir.
  • Büyük veya ticarete uygun olmayan mevduatlar, retry politikası tükendiğinde kaynak para birimi kredisine geri dönebilir.
  • Bir ödeme, hedef para birimi dönüşümü gerçekleşmese bile geçerli olabilir.

Entegrasyonunuz önce doğrulanmış ödemeyi saklamalı ve ardından ödeme bilgileri, isteğe bağlı convert bloğu ve merchant bakiyelerinden gerçek kredilenen para birimini uzlaştırmalıdır. Kendi analiz veya bildirim sistemlerinizi beklerken ödemenin webhook kabulünü engellemeyin.

Auto-convert kabul testleri

En azından test edin: başarılı doğrudan dönüştürme, köprü/çok adımlı dönüştürme, minimumun altındaki dust, geçici retry, fallback kaynağa çevrim, eksik ödeme, fazla ödeme, yinelenen webhook, eksik convert ve belirsiz bir timeout sonrası reconciliation.

Manuel dönüştürme uç durumları

  • /v1/convert/price bir göstergelik önizlemedir; piyasa hareketi uygulama sonucunu değiştirebilir.
  • amount_type: from kaynak taraf talebini düzeltir, amount_type: to ise hedef taraf tutarını talep eder. Onay kullanıcı arayüzünü sunarken anlamını değiştirmeyin.
  • Doğrudan piyasası olmayan bir çift, ara bir para birimi üzerinden yönlendirilebilir. Sadece bir adım tamamlanırsa, partially_completed ara krediyi raporlar.
  • Eğer bir yürütme çağrısı zaman aşımına uğrarsa, yeniden denemeden önce uzlaştırma yapın. Bir piyasa emri, HTTP yanıtı kaybolsa bile gerçekleştirilebilir.
  • failed’yi, yerel telafi bakiyesi girişi uygulama izni olarak değil, uzlaştırılacak bir durum olarak ele alın; platform borç/iade muhasebesine sahiptir.