Host-to-Host интеграция — прямое взаимодействие сервера с сервером. Вы создаёте счёт через API, получаете реквизиты и показываете их плательщику на своей стороне, без редиректа на CrocoPay.
Вы создаёте счёт через API, получаете реквизиты (карту, номер телефона или QR) и показываете их плательщику на своей стороне — без редиректа на CrocoPay.
Все запросы требуют заголовки Client-Id и Client-Secret. Ключи доступны в разделе «Кассы» → иконка шестерни рядом с нужным мерчантом.
Создаёт новый счёт на оплату. В ответ возвращает ID счёта и платёжные реквизиты.
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"
}
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": "Сбербанк",
"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": "Альфа-Банк",
"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"
}
Возвращает текущий статус и реквизиты счёта по его UUID — используйте для polling'а до момента оплаты.
Возвращает список методов, доступных для вашей кассы — используйте перед созданием счёта.
HTTP/1.1 200 OK
{
"methods": [
{ "currency": "RUB", "payment_option": "TO_CARD", "name": "Карта (любой банк РФ)" },
{ "currency": "RUB", "payment_option": "SBP", "name": "СБП (любой банк РФ)" },
{ "currency": "RUB", "payment_option": "SBP_ALFA", "name": "СБП Альфа-Банк" },
{ "currency": "RUB", "payment_option": "QR_NSPK", "name": "QR НСПК" },
{ "currency": "RUB", "payment_option": "TRANSGRAN_SBER", "name": "Трансгран · SberPay" },
{ "currency": "UAH", "payment_option": "TO_CARD", "name": "Карта (Украина)" },
{ "currency": "UZS", "payment_option": "TO_CARD", "name": "Карта (Узбекистан)" },
{ "currency": "TJS", "payment_option": "TO_CARD", "name": "Карта (Таджикистан)" },
{ "currency": "AZN", "payment_option": "TO_CARD", "name": "Карта (Азербайджан)" },
{ "currency": "KZT", "payment_option": "TO_CARD", "name": "Карта (Казахстан)" },
{ "currency": "KGS", "payment_option": "TO_CARD", "name": "Карта (Кыргызстан)" }
]
}
Значение payment_option зависит от валюты. Доступность конкретного метода для вашей кассы уточняйте у менеджера.
TO_CARD
Перевод на банковскую карту (любой банк РФ)
Номер карты
SBP
Перевод по СБП — любой банк РФ
Номер телефона
SBP_ALFA
Перевод по СБП — Альфа-Банк
Номер телефона
SBP_TBANK
Перевод по СБП — Т-Банк
Номер телефона
QR_NSPK
Оплата по QR-коду НСПК
QR-код
MOBILE_PHONE
Пополнение мобильного телефона
Номер телефона
TO_CARD_TRANSGRAN
Трансграничный перевод на карту (любой банк)
Номер карты
SBP_TRANSGRAN
Трансграничный перевод по СБП (любой банк)
Номер телефона
TRANSGRAN_ALFA
Трансграничный — Альфа-Банк
Карта / телефон
TRANSGRAN_VTB
Трансграничный — ВТБ
Карта / телефон
TRANSGRAN_SBER
Трансграничный — SberPay
Номер телефона
TRANSGRAN_TPAY
Трансграничный — T-Pay (Т-Банк)
Карта / телефон
TO_CARD
Перевод на банковскую карту (Украина)
Номер карты
UZCARD
Перевод на карту UzCard
Номер карты
HUMO
Перевод на карту Humo
Номер карты
PAYME
Перевод через Payme
Карта / телефон
CLICK
Перевод через Click
Карта / телефон
BANK_TRANSFER
Банковский перевод (Казахстан)
Номер карты
BANK_TRANSFER
Банковский перевод (Азербайджан)
Номер карты
KORTI_MILLI
Перевод — Корти Милли
Номер карты
DUSHANBE_CITY
Перевод — Душанбе Сити Банк
Номер карты
TO_CARD
Перевод на банковскую карту (Кыргызстан)
Номер карты
После успешной оплаты CrocoPay отправляет POST на ваш 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');
}
// платёж подтверждён
Express-интеграция — вы создаёте платёжную ссылку через один API-запрос, а плательщик попадает на готовую брендированную форму CrocoPay. Поддерживает несколько гео и валют в рамках одной кассы «из коробки».
Создайте платёжную ссылку одним POST-запросом — плательщик перейдёт на готовую брендированную форму CrocoPay, выберет страну и способ оплаты и завершит платёж сам.
Инициирует платёж и возвращает redirect_url — ссылку на платёжную форму.
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"
}
// Валюта не подключена у мерчанта
{ "status": "error", "message": "Currency UAH is not supported by this merchant." }
// Сумма равна нулю
{ "status": "error", "message": "Amount cannot be 0 or less than 0." }
// Дробная сумма для валюты, где разрешены только целые (HTTP 422)
{ "message": "The amount for currency RUB must be a whole number, without minor units." }
// Неверные client_id / client_secret (HTTP 403)
{ "message": "Can not verify the client. Please check client Id and Client Secret." }
Пример: касса настроена на RUB + UZS, сумма в запросе — 5 000 RUB. Плательщик из Узбекистана выбирает UZ — форма пересчитает сумму в UZS по курсу, мерчант получит уведомление в UZS.
После успешной оплаты CrocoPay отправляет POST на ваш 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');
}
// платёж подтверждён