Host-to-Host entegrasyon — sunucudan sunucuya doğrudan iletişim. API ile fatura oluşturur, ödeme bilgilerini alır ve CrocoPay'e yönlendirmeden kendi tarafınızda ödeyene gösterirsiniz.
API ile fatura oluşturur, ödeme bilgilerini (kart, telefon numarası veya QR) alır ve kendi tarafınızda ödeyene gösterirsiniz — CrocoPay'e yönlendirme yok.
Tüm isteklerde şu header'lar gerekir: Client-Id ve Client-Secret. Anahtarları "Mağazalar" → merchant'ın yanındaki dişli simgesinde bulabilirsiniz.
Yeni bir ödeme faturası oluşturur. Fatura ID'sini ve ödeme bilgilerini döndürür.
amount
evet
Ödeme tutarı (BDT para birimleri için tam sayı)
currency
evet
Para birimi: RUB, UAH, UZS, KZT, TJS, AZN, KGS
payment_option
evet
Ödeme yöntemi (TO_CARD, SBP, QR_NSPK…)
callback_url
hayır
Ödeme webhook bildirimi için URL (POST)
success_url
hayır
Başarılı ödemeden sonra ödeyenin yönlendirileceği adres. Belirtilmezse ödeyen CrocoPay onay sayfasını görür
cancel_url
hayır
Ödeyen iptal ederse veya fatura süresi dolarsa yönlendirileceği adres. Belirtilmezse ödeyen CrocoPay sayfasında kalır
POST /api/v2/h2h/invoices HTTP/1.1
Host: crocopay.tech
Client-Id: GnHqauRCUVtB8sECR7m
Client-Secret: vpBpXo7REyApkDnLIOpMR3lk1ndaLmY2qoZptV9cHOtjJLUDsW26GBSe2kda1IVQIMR758Z
Content-Type: application/json
{
"amount": 5000,
"currency": "RUB",
"payment_option": "TO_CARD",
"callback_url": "https://example.com/payment?user_id=42",
"success_url": "https://example.com/success",
"cancel_url": "https://example.com/cancel"
}
HTTP/1.1 200 OK
{
"id": "911c2823-f55b-43b5-9881-d5653107f7dc",
"status": "Pending",
"amount": 5000,
"currency": "RUB",
"payment_option": "TO_CARD",
"card": "4276 1234 5678 9012",
"bank_receiver": "Sberbank",
"card_owner": "IVAN PETROV",
"expires_at": "2026-09-15T12:30:00Z"
}
HTTP/1.1 200 OK
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "Pending",
"amount": 5000,
"currency": "RUB",
"payment_option": "SBP",
"card": "+79001234567",
"bank_receiver": "Alfa-Bank",
"card_owner": "ANNA SIDOROVA",
"expires_at": "2026-09-15T12:30:00Z"
}
HTTP/1.1 422 Unprocessable Entity
{
"status": "error",
"message": "payment_option TO_CARD is not enabled for currency UZS"
}
Faturanın güncel durumunu ve ödeme bilgilerini UUID ile döndürür — ödeme yapılana kadar sorgulamak için kullanın.
Mağazanız için kullanılabilir ödeme yöntemlerini döndürür — fatura oluşturmadan önce çağırın.
HTTP/1.1 200 OK
{
"methods": [
{ "currency": "RUB", "payment_option": "TO_CARD", "name": "Kart (herhangi bir Rus bankası)" },
{ "currency": "RUB", "payment_option": "SBP", "name": "SBP (herhangi bir Rus bankası)" },
{ "currency": "RUB", "payment_option": "SBP_ALFA", "name": "SBP Alfa-Bank" },
{ "currency": "RUB", "payment_option": "QR_NSPK", "name": "NSPK QR" },
{ "currency": "RUB", "payment_option": "TRANSGRAN_SBER", "name": "Sınır ötesi · SberPay" },
{ "currency": "UAH", "payment_option": "TO_CARD", "name": "Kart (Ukrayna)" },
{ "currency": "UZS", "payment_option": "TO_CARD", "name": "Kart (Özbekistan)" },
{ "currency": "TJS", "payment_option": "TO_CARD", "name": "Kart (Tacikistan)" },
{ "currency": "AZN", "payment_option": "TO_CARD", "name": "Kart (Azerbaycan)" },
{ "currency": "KZT", "payment_option": "TO_CARD", "name": "Kart (Kazakistan)" },
{ "currency": "KGS", "payment_option": "TO_CARD", "name": "Kart (Kırgızistan)" }
]
}
Değeri payment_option para birimine bağlıdır. Mağazanız için hangi yöntemlerin açık olduğunu yöneticinize sorun.
TO_CARD
Bank card transfer (any Russian bank)
Card number
SBP
SBP transfer — any Russian bank
Phone number
SBP_ALFA
SBP transfer — Alfa-Bank
Phone number
SBP_TBANK
SBP transfer — T-Bank
Phone number
QR_NSPK
NSPK QR code payment
QR code
MOBILE_PHONE
Mobile phone top-up
Phone number
TO_CARD_TRANSGRAN
Cross-border card transfer (any bank)
Card number
SBP_TRANSGRAN
Cross-border SBP transfer (any bank)
Phone number
TRANSGRAN_ALFA
Cross-border — Alfa-Bank
Card / phone
TRANSGRAN_VTB
Cross-border — VTB
Card / phone
TRANSGRAN_SBER
Cross-border — SberPay
Phone number
TRANSGRAN_TPAY
Cross-border — T-Pay (T-Bank)
Card / phone
TO_CARD
Bank card transfer (Ukraine)
Card number
UZCARD
UzCard card transfer
Card number
HUMO
Humo card transfer
Card number
PAYME
Payme transfer
Card / phone
CLICK
Click transfer
Card / phone
BANK_TRANSFER
Bank transfer (Kazakhstan)
Card number
BANK_TRANSFER
Bank transfer (Azerbaijan)
Card number
KORTI_MILLI
Transfer — Korti Milli
Card number
DUSHANBE_CITY
Transfer — Dushanbe City Bank
Card number
TO_CARD
Bank card transfer (Kyrgyzstan)
Card number
success_urlcancel_urlBaşarılı ödemeden sonra CrocoPay şu adrese POST gönderir: callback_url.
POST /payment?user_id=42 HTTP/1.1
Host: example.com
Content-Type: application/json
{
"timestamp": 1753282096,
"subtotal": 500000,
"percentage": 0,
"charge_percentage": 0,
"charge_fixed": 0,
"total": 500000,
"sign": "ef5954715c663e3f96194a03981a0b04dd0772bfa5164afcdb507470c9c5078d"
}
$expected = hash_hmac('sha256',
"{$_POST['timestamp']}|{$_POST['subtotal']}|{$_POST['percentage']}|" .
"{$_POST['charge_percentage']}|{$_POST['charge_fixed']}|{$_POST['total']}",
$yourClientSecret
);
if (!hash_equals($expected, $_POST['sign'])) {
http_response_code(403);
exit('Invalid signature');
}
// ödeme onaylandı Express entegrasyon — tek bir API isteğiyle ödeme bağlantısı oluşturursunuz, ödeyen hazır CrocoPay markalı ödeme formuna gelir. Bir mağazada birden fazla ülke ve para birimi kutudan çıktığı gibi çalışır.
Tek bir POST isteğiyle ödeme bağlantısı oluşturun — ödeyen CrocoPay markalı formu açar, ülkeyi ve ödeme yöntemini seçer ve ödemeyi tamamlar.
Ödemeyi başlatır ve şunu döndürür: redirect_url — ödeme formunun bağlantısı.
client_id
evet
Mağaza ID'si
client_secret
evet
Mağaza gizli anahtarı
amount
evet
Ödeme tutarı (BDT para birimleri için tam sayı)
currency
evet
Para birimi: RUB, UAH, UZS, KZT, TJS, AZN, KGS
successUrl
hayır
Başarılı ödemeden sonra ödeyenin yönlendirileceği adres. Belirtilmezse ödeyen CrocoPay onay sayfasını görür
cancelUrl
hayır
İptal veya fatura süresinin dolması durumunda ödeyenin yönlendirileceği adres. Belirtilmezse ödeyen CrocoPay sayfasında kalır
callbackUrl
hayır
Ödeme webhook bildirimi için URL (POST). Sipariş ID'nizi içine ekleyin
POST /api/v2/initiate-payment HTTP/1.1 Host: crocopay.tech Content-Type: application/x-www-form-urlencoded client_id=GnHAFAZsT1ktFYqauUVtB8sECR7m &client_secret=vpBpXN40yaWQWicAobl...R758Z &amount=5000 ¤cy=RUB &successUrl=https://example.com/success &cancelUrl=https://example.com/cancel &callbackUrl=https://example.com/payment?user_id=42
HTTP/1.1 200 OK
{
"status": "success",
"message": "Initiated payment successfully.",
"redirect_url": "https://crocopay.tech/restapi/payment?grant_id=78784424&token=DuMJThhEimrrdiCKrW2A"
}
// Para birimi merchant için açık değil
{ "status": "error", "message": "Currency UAH is not supported by this merchant." }
// Tutar sıfır
{ "status": "error", "message": "Amount cannot be 0 or less than 0." }
// Sadece tam sayı kabul eden para biriminde kesirli tutar (HTTP 422)
{ "message": "The amount for currency RUB must be a whole number, without minor units." }
// Geçersiz client_id / client_secret (HTTP 403)
{ "message": "Can not verify the client. Please check client Id and Client Secret." }
Örnek: mağaza RUB + UZS için ayarlı ve istek tutarı 5.000 RUB. Özbekistan'dan bir ödeyen UZ'yi seçer — form tutarı güncel kurla UZS'ye çevirir ve merchant bildirimi UZS olarak alır.
success_urlcancel_urlBaşarılı ödemeden sonra CrocoPay şu adrese POST gönderir: callback_url.
POST /payment?user_id=42 HTTP/1.1
Host: example.com
Content-Type: application/json
{
"timestamp": 1753282096,
"subtotal": 500000,
"percentage": 0,
"charge_percentage": 0,
"charge_fixed": 0,
"total": 500000,
"sign": "ef5954715c663e3f96194a03981a0b04dd0772bfa5164afcdb507470c9c5078d"
}
$expected = hash_hmac('sha256',
"{$_POST['timestamp']}|{$_POST['subtotal']}|{$_POST['percentage']}|" .
"{$_POST['charge_percentage']}|{$_POST['charge_fixed']}|{$_POST['total']}",
$yourClientSecret
);
if (!hash_equals($expected, $_POST['sign'])) {
http_response_code(403);
exit('Invalid signature');
}
// ödeme onaylandı Dünyanın her yerindeki müşterilerden aynı H2H API ile ABD doları, euro, Kanada doları ve rupi cinsinden ödeme alın. Ödeyen sıradan bir Visa/Mastercard kartı, Apple Pay, Google Pay, PayPal, Revolut ve daha fazlasını kullanır — BDT banka hesabı gerekmez.
amount
evet
Tutar. USD, EUR, INR için kuruş kullanılabilir: 49.99
currency
evet
USD, EUR, CAD veya INR
provider
hayır
Sağlayıcı kodu (stripe, paypal, revolut…). Gönderilmezse ödeyen sayfamızda seçer
callback_url
hayır
Ödeme bildiriminin gönderileceği adres. Sipariş ID'nizi içine ekleyin
success_url
hayır
Başarılı ödemeden sonra ödeyenin yönlendirileceği adres. Belirtilmezse ödeyen CrocoPay onay sayfasını görür
cancel_url
hayır
İptal veya fatura süresinin dolması durumunda ödeyenin yönlendirileceği adres. Belirtilmezse ödeyen CrocoPay sayfasında kalır
provider isteğe bağlıdır — bağlantının nereye gideceğini belirler:
GET /api/v2/h2h/payment-method/available (USD / EUR para birimleri) — liste değişir, sabit kodlamayın. Sağlayıcı sizin için açık değilse veya geçici olarak kullanılamıyorsa fatura reddedilmez — bunun yerine seçici bağlantısı gelir. Bilinmeyen sağlayıcı kodu 422 hatası döndürür. Eski parametre adı onramp_provider hâlâ kabul edilir.stripe
Stripe / Link (kartlar, Apple Pay, Google Pay)coinbase
Coinbasepaypal
PayPal — PayPal hesabı gerekirrobinhood
Robinhood — Robinhood hesabı gerekirrevolut
Revolut — Revolut hesabı gerekirtopper
Topperbanxa
Banxabinance
Binance Connectblockchaincom
Blockchain.comtransak
Transakmeld
Meld (toplayıcı)particle
Particle Networksardine
Sardineinterac
Interacupi
UPI / IMPSMinimumları sağlayıcılar belirler ve zamanla değişir. Minimumun altındaki tutar API tarafından değil, sağlayıcının sayfasında reddedilir. Ülke ödeyenin IP'sinden belirlenir: o ülkeye hizmet vermeyen sağlayıcı ödemeyi reddeder (örn. PayPal ve Robinhood sadece ABD). ABD/AB dışındaki müşteriler için stripe, topper, banxa, transak veya binance kullanın — ya da provider göndermeyip ödeyenin seçmesine izin verin. İlk ödemede hızlı kimlik doğrulama (KYC, ~2 dk) gerekebilir; kart 3-D Secure desteklemelidir. Ödemeler kesindir — chargeback yok.
POST /api/v2/h2h/invoices HTTP/1.1
Host: crocopay.tech
Client-Id: GnHqauRCUVtB8sECR7m
Client-Secret: vpBpXo7REyApkDnLIOpMR3lk1ndaLmY2qoZptV9cHOtjJLUDsW26GBSe2kda1IVQIMR758Z
Content-Type: application/json
{
"amount": 49.99,
"currency": "USD",
"callback_url": "https://example.com/webhook?order=1042",
"success_url": "https://example.com/success",
"cancel_url": "https://example.com/cancel"
}
{
"amount": 120,
"currency": "EUR",
"provider": "revolut",
"callback_url": "https://example.com/webhook?order=1043"
}
HTTP/1.1 200 OK
{
"message": "Payment url was successfully generated",
"url": "https://pay.crocopay.tech/...",
"transaction": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "Pending",
"currency": "USD",
"amount": 49.99,
"expiredAt": "2026-10-19T12:30:00.000000Z"
}
}
transaction.id yanıttan — şuna gönderin: GET /api/v2/h2h/invoices/{id}. callback_url bildirimi ID içermez — sipariş ID'nizi callback_url'ye ekleyin (?order=1042).
Komisyon modu ve mağazanız için uluslararası ödemelerin açılması hakkında yöneticinize danışın.
success_urlcancel_urlBaşarılı ödemeden sonra CrocoPay şu adrese POST gönderir: callback_url.
POST /payment?user_id=42 HTTP/1.1
Host: example.com
Content-Type: application/json
{
"timestamp": 1753282096,
"subtotal": 500000,
"percentage": 0,
"charge_percentage": 0,
"charge_fixed": 0,
"total": 500000,
"sign": "ef5954715c663e3f96194a03981a0b04dd0772bfa5164afcdb507470c9c5078d"
}
$expected = hash_hmac('sha256',
"{$_POST['timestamp']}|{$_POST['subtotal']}|{$_POST['percentage']}|" .
"{$_POST['charge_percentage']}|{$_POST['charge_fixed']}|{$_POST['total']}",
$yourClientSecret
);
if (!hash_equals($expected, $_POST['sign'])) {
http_response_code(403);
exit('Invalid signature');
}
// ödeme onaylandı H2H API ile kripto kabul edin: sipariş herhangi bir para biriminde (RUB, UZS, KZT, USD …), ödeyen USDT, USDC, BTC, ETH ve diğer coinlerle öder. Size USD olarak geçer.
payment_option: "CRYPTO" sipariş para biriminde. Tutar CrocoPay kuruyla USD'ye çevrilir, minimum 10 USD.crypto_currency — ödeyeni şuraya yönlendirin: url: ağı ve coini seçer, adresi, QR'ı ve tam tutarı görür.crypto_currency (örn. USDT.Tron) — yanıtta formunuz için adres ve tam tutar zaten bulunur.amount
number · evet
Para biriminde tutar (BDT para birimleri için tam sayı)
currency
string · evet
Kriptonun açık olduğu sipariş para birimi
payment_option
string · evet
CRYPTO
crypto_currency
string · hayır
Coin currency_id (USDT.Tron, BTC.Bitcoin …). Gönderilmezse ödeyen seçer
callback_url
string · hayır
Durum değişikliği webhook'u
success_url
string · hayır
Başarılı ödemeden sonra müşterinin yönlendirileceği adres. Belirtilmezse müşteri CrocoPay onay sayfasını görür
cancel_url
string · hayır
İptal veya fatura süresinin dolması durumunda müşterinin yönlendirileceği adres. Belirtilmezse müşteri CrocoPay sayfasında kalır
POST /api/v2/h2h/invoices HTTP/1.1
Host: crocopay.tech
Client-Id: YOUR_CLIENT_ID
Client-Secret: YOUR_CLIENT_SECRET
Content-Type: application/json
{
"amount": 5000,
"currency": "RUB",
"payment_option": "CRYPTO",
"crypto_currency": "USDT.Tron",
"callback_url": "https://example.com/webhook?order=1042",
"success_url": "https://example.com/success"
}
HTTP/1.1 200 OK
{
"message": "Payment url was successfully generated",
"url": "https://crocopay.tech/restapi/crypto/pay?hash=a1b2c3d4-...",
"transaction": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "Pending",
"currency": "RUB",
"amount": 5000,
"expiredAt": "2026-10-23T14:30:00.000000Z"
},
"crypto": {
"status": "NEW",
"amount_usd": "61.73",
"coin": "USDT.Tron",
"network": "TRON (TRC-20)",
"pay_address": "TRQsqAhU21UH56Q6yr2fdVwLdPysAnkuLo",
"amount_to_pay": "61.74",
"expires_at": "2026-10-23T10:30:00+00:00",
"quote_expires_at": "2026-10-23T10:30:00+00:00"
}
}
crypto_currency olmadan coin, network, pay_address ve amount_to_pay null olur — ödeyeni url'ye yönlendirin.
Kripto ödemeler merchant'ın USD bakiyesine geçer: siparişin USD tutarı eksi %1 komisyon (grup tarifesi kriptoya uygulanmaz). Ödemeden sonra fatura amount ve currency: USD ile birlikte order_amount, order_currency, paid_coin ve paid_amount döndürür.
NEW
→ Pending
Ödeme bekleniyor
PAID
→ Success
Ödendi (±%1 tolerans) — ürünü teslim edin
OVERPAID
→ Success
Fazla ödendi — ürünü teslim edin
UNDERPAID
→ Pending
Kısmen ödendi — manuel inceleme, desteğe yazın
EXPIRED
→ Cancelled
Ödenmeden süresi doldu
currency_id'yi crypto_currency olarak gönderin. Faturanın USD tutarı coinin minimumundan az değilse coin kullanılabilir.
USDT.Tron minimum 10 USD
USDD.Tron minimum 10 USD
USD1.Tron minimum 10 USD
TRX.Tron minimum 10 USD
USDT.BNBSmartChain minimum 10 USD
USDC.BNBSmartChain minimum 10 USD
DAI.BNBSmartChain minimum 10 USD
USDE.BNBSmartChain minimum 10 USD
USDD.BNBSmartChain minimum 10 USD
USD1.BNBSmartChain minimum 10 USD
CAKE.BNBSmartChain minimum 10 USD
SHIB.BNBSmartChain minimum 10 USD
WLFI.BNBSmartChain minimum 10 USD
BNB.BNBSmartChain minimum 10 USD
USDT.Ethereum minimum 50 USD
USDC.Ethereum minimum 50 USD
DAI.Ethereum minimum 50 USD
PYUSD.Ethereum minimum 50 USD
USDE.Ethereum minimum 50 USD
USDD.Ethereum minimum 50 USD
USD1.Ethereum minimum 50 USD
XAUT.Ethereum minimum 50 USD
ARB.Ethereum minimum 50 USD
SHIB.Ethereum minimum 50 USD
PEPE.Ethereum minimum 50 USD
WLD.Ethereum minimum 50 USD
ENA.Ethereum minimum 50 USD
SAND.Ethereum minimum 50 USD
CAKE.Ethereum minimum 50 USD
WLFI.Ethereum minimum 50 USD
ETH.Ethereum minimum 50 USD
USDT.Polygon minimum 10 USD
USDC.Polygon minimum 10 USD
POL.Polygon minimum 10 USD
DAI.Polygon minimum 10 USD
SAND.Polygon minimum 10 USD
USDT.Arbitrum minimum 10 USD
USDC.Arbitrum minimum 10 USD
ETH.Arbitrum minimum 10 USD
DAI.Arbitrum minimum 10 USD
ARB.Arbitrum minimum 10 USD
PYUSD.Arbitrum minimum 10 USD
CAKE.Arbitrum minimum 10 USD
BTC.Bitcoin minimum 20 USD
LTC.Litecoin minimum 10 USD
DOGE.Dogecoin minimum 10 USD
BCH.Bitcoincash minimum 10 USD
400
Bu tutar için coin kullanılamıyor — yanıtta başka coin seçmek için url var
403
Bu para birimi için kripto açık değil — yöneticinize yazın
422
Tutar 10 USD'nin altında veya doğrulama hatası
5xx
Geçici hata veya kur kullanılamıyor — daha sonra tekrar deneyin
success_urlcancel_urlBaşarılı ödemeden sonra CrocoPay şu adrese POST gönderir: callback_url.
POST /payment?user_id=42 HTTP/1.1
Host: example.com
Content-Type: application/json
{
"timestamp": 1753282096,
"subtotal": 500000,
"percentage": 0,
"charge_percentage": 0,
"charge_fixed": 0,
"total": 500000,
"sign": "ef5954715c663e3f96194a03981a0b04dd0772bfa5164afcdb507470c9c5078d"
}
$expected = hash_hmac('sha256',
"{$_POST['timestamp']}|{$_POST['subtotal']}|{$_POST['percentage']}|" .
"{$_POST['charge_percentage']}|{$_POST['charge_fixed']}|{$_POST['total']}",
$yourClientSecret
);
if (!hash_equals($expected, $_POST['sign'])) {
http_response_code(403);
exit('Invalid signature');
}
// ödeme onaylandı