Документация API GetPay

Руководство по интеграции приёма платежей и выплат через REST API платёжного сервиса GetPay

01

Что такое GETPAY

GETPAY — платёжный сервис для бизнеса, который позволяет принимать оплату от клиентов и автоматически переводить деньги получателям. Интеграция выполняется один раз через REST API и не требует специальных знаний в области финансов.

💳
Приём платежей

Создайте счёт, перенаправьте клиента на страницу оплаты — остальное сделает GETPAY. Поддерживаются карты, СБП, ЮMoney, Qiwi, мобильные операторы и криптовалюта.

📤
Автовыплаты

Отправляйте деньги получателям по API — на карты, по СБП, на ЮMoney или в криптовалюте. Одиночные переводы и массовые выплаты.

🔔
Уведомления

Как только клиент оплатит — ваш сервер получит POST-запрос на Result URL с данными транзакции. Никакого поллинга, мгновенная реакция.

🔒
Безопасность

Все запросы авторизуются по API-ключу, уведомления подписываются HMAC-SHA256. Данные передаются только по HTTPS.

Как это работает

Типичный сценарий приёма платежа от клиента:

1
Клиент оформляет заказ

На вашем сайте или в приложении клиент выбирает товар и переходит к оплате.

2
Ваш сервер создаёт платёж

POST-запрос к /api/v1/payment/create с суммой и номером заказа. В ответ — ссылка redirectUrl на страницу оплаты GETPAY.

3
Клиент оплачивает

Вы перенаправляете клиента на redirectUrl. Там он выбирает удобный метод и проводит оплату.

4
GETPAY уведомляет ваш сервер

После успешной оплаты на ваш Result URL приходит POST с данными транзакции и подписью. Проверьте подпись и выдайте клиенту товар.

5
Клиент возвращается на ваш сайт

После оплаты клиент автоматически перенаправляется на ваш Back URL — страницу «спасибо за покупку» или в личный кабинет.

Методы оплаты

GETPAY поддерживает широкий набор способов оплаты. Доступные методы зависят от типа вашего проекта.

Группа Методы Комиссия
Банковские карты Visa, MasterCard, МИР (card), СБП (sbp) от 10%
Электронные кошельки ЮMoney (ym), Qiwi / Qplus (qiwi, qplus), WebMoney (wm) от 10%
SberPay sber — оплата через приложение СберБанк от 10%
Мобильные операторы (RU) МТС (mts), Beeline (beeline), Tele2 (tele2), Megafon (megafon), Yota (yota) от 20%
Мобильные операторы (BY) MTS BY (mtsby), Life BY (lifeby) от 20%
Криптовалюта USDT TRC20 (usdt), TRX (trx), TON (ton), NOT, DOGS, HMSTR от 0%
GETPAY кошелёк wallet — оплата с баланса GETPAY (по умолчанию) от 0%
Комиссия зависит от метода оплаты и типа проекта. Точные ставки указаны в личном кабинете при создании проекта.
02

Начало работы

Первые шаги

  1. Войдите в личный кабинет и создайте проект.
  2. Дождитесь активации проекта (модерация) — статус сменится на active.
  3. В настройках профиля скопируйте API-ключ.
  4. Укажите Result URL в настройках проекта — туда будут приходить уведомления об оплате.
  5. Выполните тестовый запрос и убедитесь, что ответ содержит "status": "success".
Базовый URL: https://getpay.io/api/v1/{method}
Все запросы — только по HTTPS. Тело запроса — JSON.

Авторизация

Каждый запрос должен содержать заголовок X-Api-Key. Секретный ключ доступен в настройках личного кабинета.

HTTP
X-Api-Key: 12-a4f8c2d1e9b3... Content-Type: application/json
Держите API-ключ в тайне. Не передавайте его в URL, не публикуйте в открытом коде и репозиториях. Любой, кто получит ваш ключ, сможет создавать платежи и выплаты от вашего имени. При компрометации — немедленно сбросьте ключ в личном кабинете.

Формат ответов

Все ответы — JSON. Поле status всегда присутствует и принимает значения:

  • success — запрос выполнен успешно
  • error — ошибка, см. поле error
  • wait / process — операция в обработке (для повторных запросов)

Успешный ответ:

JSON
{
 "status":   "success",
 "paymentId":  9182736,
 "paymentKey": "a1b2c3d4",
 "redirectUrl": "https://pay.getpay.io/redirect/pay/a1b2c3d4",
 "sum_pay":   500,
 "orderId":   "ORDER-001"
}

Ответ с ошибкой:

JSON
{
 "status": "error",
 "error": "The wallet is not active!"
}
Поле Тип Описание
status string success, error, wait, process
error string Текст ошибки — присутствует только при status: error
repeat_payment int 1 если платёж с таким order_id уже существовал — возвращаются его данные
03

Проекты

GET/api/v1/project/list
GET/api/v1/project/list/{project_id}

Без дополнительных параметров — возвращает все активные проекты. Если указан {project_id} — возвращает один проект.

Ответ (список):

JSON
{
 "status":  "success",
 "projects": [
  {
   "project_id": 1042,
   "domain":    "example.com",
   "balance":  12500.00,
   "status":   "active",  // active | pending    
   "result_url": "https://example.com/result",
   "back_url":  "https://example.com/back",
   "created_at": "2025-01-15 10:00:00" 
  }
 ]
}
Поле Описание
project_id Числовой ID проекта — используется во всех запросах
domain Домен или название проекта
balance Доступный баланс в рублях
status active — готов к работе; pending — на модерации
result_url URL для получения уведомлений о платежах
back_url URL возврата плательщика после оплаты
04

Платежи

POST/api/v1/payment/create

Создание платежа.

Параметр Тип Описание
project_idrequired int ID проекта
order_idrequired string Уникальный номер заказа в вашей системе (до 128 символов)
amountrequired float Сумма в рублях. Допустимый диапазон: 50–100 000
methodoptional string Метод оплаты (см. таблицу ниже). По умолчанию — wallet
commentoptional string Комментарий к платежу (до 128 символов)
client_idoptional string Идентификатор плательщика внутри вашей системы
user_ipoptional string IP-адрес плательщика
otheroptional string Дополнительные произвольные данные
Если платёж с таким order_id уже существует — новый не создаётся. Возвращаются данные существующего платежа с флагом "repeat_payment": 1.

Доступные методы оплаты

method Описание Мин. Макс.
wallet Getpay кошелёк (по умолчанию) 10 ₽ 100 000 ₽
card Карта РФ (VISA / MasterCard / МИР) 100 ₽ 3 000 ₽
sbp СБП 100 ₽ 3 000 ₽
sber SberPay 100 ₽ 3 000 ₽
ym ЮMoney 100 ₽ 3 000 ₽
qiwi / qplus Qplus (Qiwi) 100 ₽ 3 000 ₽
wm WebMoney 100 ₽ 3 000 ₽
mts МТС RU 100 ₽ 3 000 ₽
beeline Beeline RU 100 ₽ 3 000 ₽
tele2 Tele2 RU 100 ₽ 3 000 ₽
megafon Megafon RU 100 ₽ 3 000 ₽
yota Yota RU 100 ₽ 3 000 ₽
lifeby Life BY 150 ₽ 3 000 ₽
mtsby MTS BY 150 ₽ 3 000 ₽
trx Crypto TRX 100 ₽ 100 000 ₽
usdt_trc20 USDT TRC20 100 ₽ 100 000 ₽
ton TON 100 ₽ 100 000 ₽
not / dogs / hmstr TON-токены 100 ₽ 100 000 ₽
Не указывайте method при создании платежа, если хотите дать клиенту выбор — на странице оплаты будут показаны все доступные методы проекта.

Пример запроса:

PHP
$data = [
 'project_id' => 1042,
 'order_id'  => 'ORDER-8841',
 'amount'   => 500,
 'description' => 'Оплата заказа #8841',
];

$ch = curl_init('https://getpay.io/api/v1/payment/create');
curl_setopt_array($ch, [
 CURLOPT_RETURNTRANSFER => true,
 CURLOPT_POST      => true,
 CURLOPT_POSTFIELDS   => json_encode($data),
 CURLOPT_HTTPHEADER   => [
  'Content-Type: application/json',
  'X-Api-Key: ' . $apiKey,
 ],
]);
$result = json_decode(curl_exec($ch), true);
// Перенаправляем плательщика 
header('Location: ' . $result['redirectUrl']);

Успешный ответ:

JSON
{
 "status":     "success",
 "paymentId":   9182736,    // числовой ID в системе 
 "paymentKey":   "a1b2c3d4",  // 8-символьный hex-ключ 
 "redirectUrl":  "https://pay.getpay.io/redirect/pay/a1b2c3d4",
 "sum_pay":    500,      // сумма к оплате (может отличаться для уникализации) 
 "type":      "redirect",
 "orderId":    "ORDER-8841",
 "clientId":    "",
 "repeat_payment": 0 
}

История платежей

GET/api/v1/payment/list
GET/api/v1/payment/list/{id}

Если {id} указан — ищет по paymentKey (hex) или по order_id (по всем проектам). Без {id} — возвращает список с фильтрами.

Параметры списка

Параметр Тип Описание
project_idoptional int Фильтр по проекту
statusoptional int Фильтр по статусу: 0 ожидает, 1 оплачен, 2 отменён
date_startoptional string Начало диапазона, формат YYYY-MM-DD
date_endoptional string Конец диапазона, формат YYYY-MM-DD
start_recordoptional int Номер первой записи для пагинации (по умолчанию 0)
recordsoptional int Количество записей на страницу (по умолчанию 30, максимум 100)
Логика отбора по дате:
  • Заданы оба — отбор за интервал date_start ≤ дата ≤ date_end.
  • Только date_start — все записи начиная с этой даты.
  • Только date_end — все записи до этой даты включительно.
  • Не заданы — без ограничения по времени.
Пагинация: если данных больше, чем records, в ответе появляется поле next_record — порядковый номер первой записи следующей страницы. Для получения следующей страницы повторите запрос с теми же параметрами, добавив start_record = next_record.

Ответ:

JSON
{
 "status":   "success",
 "total":    142,
 "next_record": 30,    // присутствует только если есть следующая страница 
 "payments": [
  {
   "payment_id": "a1b2c3d4",  // paymentKey для поиска через /list/{id} 
   "order_id":  "ORDER-8841",
   "project_id": 1042,
   "amount":   500.00,    // запрошенная сумма 
   "amount_out": 510.00,    // итоговая сумма к оплате 
   "accrued":  485.00,    // зачислено после комиссии 
   "method":   "card",
   "status":   "paid",    // pending | paid | cancelled 
   "created_at": "2025-11-24 12:00:00" 
  }
 ]
}

Обработчик платежа (Result URL)

После успешной оплаты GETPAY отправит POST-запрос на ваш Result URL. Ваш сервер должен ответить текстом OK.

Проверяйте подпись sign перед обработкой уведомления. Без проверки злоумышленник может отправить поддельный запрос на ваш URL.
Проверяйте IP-адрес отправителя. Все уведомления отправляются с фиксированных IP-адресов. Актуальный список всегда доступен по запросу:
GET /api/v1/payment/getips — возвращает массив IP без дополнительных параметров (требует авторизации).

Поля уведомления

Поле Тип Описание
WALLET_ID int ID проекта, на который пришёл платёж
WALLET_TYPE string Тип проекта getpay
SUM float Запрошенная сумма платежа в рублях
OUTSUM float Фактическая сумма к оплате (может отличаться от SUM для уникализации)
ACCRUED float Сумма, зачисленная на баланс проекта (после вычета комиссии)
ORDER_ID string Номер заказа, переданный при создании платежа
P_TYPE string Метод оплаты, которым воспользовался плательщик
P_WALLET string|null Номер карты / телефона / кошелька плательщика (если доступен)
P_OPERATION string|null ID операции на стороне платёжного провайдера
PAYMENT_ID int Внутренний ID платежа в системе GETPAY
OTHER mixed|null Произвольные данные, переданные при создании платежа в поле other
sign string HMAC-SHA256 подпись по всему телу уведомления (без самого поля sign). Рекомендуется для проверки.
SIGN string deprecated MD5-подпись — оставлена для совместимости со старыми интеграциями. Используйте sign.

Проверка подписи (рекомендуется):

PHP
$body = file_get_contents('php://input');
$data = json_decode($body, true);
// Извлекаем и удаляем подпись из данных 
$received = $data['sign'] ?? '';
unset($data['sign']);
// sign = HMAC-SHA256(json_encode(все поля без sign), apiKey) 
$expected = hash_hmac('sha256', json_encode($data, JSON_UNESCAPED_UNICODE), $apiKey);

if (!hash_equals($expected, $received)) {
 http_response_code(400); exit('Bad sign');
}
// Зачисляем оплату по ORDER_ID 
echo 'OK';

Проверка подписи (устаревший способ, для совместимости):

PHP
// SIGN = md5(WALLET_ID . ':' . SUM . ':' . ORDER_ID . ':' . apiKey) 
$expected = md5(
 $data['WALLET_ID'] . ':' . $data['SUM'] . ':' . $data['ORDER_ID'] . ':' . $apiKey
);

if ($expected !== $data['SIGN']) {
 http_response_code(400); exit('Bad sign');
}

Проверка IP-адреса отправителя:

PHP
// Один раз при старте приложения — кэшируйте список в Redis/APCu 
$ch = curl_init('https://getpay.io/api/v1/payment/getips');
curl_setopt_array($ch, [
 CURLOPT_RETURNTRANSFER => true,
 CURLOPT_HTTPHEADER   => ['X-Api-Key: ' . $apiKey],
]);
$allowedIps = json_decode(curl_exec($ch), true) ?? [];
curl_close($ch);

// В обработчике Result URL 
$senderIp = $_SERVER['REMOTE_ADDR'];
if (!in_array($senderIp, $allowedIps, true)) {
 http_response_code(403); exit('Forbidden');
}
05

Выплаты

POST/api/v1/payout/create

Создание выплаты.

Параметр Тип Описание
project_idrequired int ID проекта — баланс списывается с него
order_idrequired string Уникальный номер выплаты в вашей системе (до 128 символов)
amountrequired float Сумма в рублях (лимиты зависят от метода)
methodrequired string card / sbp / mobile / usdt
walletrequired string Номер карты / телефона / кошелька ЮMoney / TRC20-адрес
bankoptional string Банк-получатель — обязателен при method=sbp
commentoptional string Назначение выплаты (до 128 символов)
result_urloptional string URL для уведомления о статусе выплаты
comm_payoptional int 1 — комиссия прибавляется поверх суммы; 0 (по умолчанию) — комиссия вычитается из суммы

Лимиты по методам (для getpay-проектов)

method Минимум Максимум Лимит на карту/месяц
card 5 000 ₽ 50 000 ₽ 150 000 ₽
sbp 5 000 ₽ 50 000 ₽
mobile 100 ₽ 3 000 ₽
usdt 10 000 ₽ 10 000 000 ₽
Повторный запрос с тем же order_id не создаёт новую выплату — возвращаются данные существующей с флагом "repeat": true.

Успешный ответ (getpay-проект, статус process):

JSON
{
 "status":   "process",  // process — поставлена в очередь; success — исполнена; 
 "transferId": 4471,
 "order_id":  "PAYOUT-001",
 "amount":   10000,
 "amount_out": 9700,     // к зачислению получателю (после комиссии) 
 "type":    "card" 
}

История выплат

GET/api/v1/payout/list
GET/api/v1/payout/list/{order_id}

С {order_id} — возвращает одну выплату по вашему номеру. Без — список по всем проектам.

Параметр (для списка) Тип Описание
project_idoptional int Фильтр по проекту
limitoptional int Количество записей (по умолчанию 100, максимум 100)
offsetoptional int Смещение для пагинации

Ответ:

JSON
{
 "status": "success",
 "total":  18,
 "payouts": [
  {
   "payout_id": 4471,
   "order_id":  "PAYOUT-001",
   "project_id": 1042,
   "amount":   10000,
   "amount_out": 9700,
   "method":   "card",
   "wallet":   "4276...1234",
   "status":   "pending",  // pending | completed | failed 
   "error":   null,     // текст ошибки, если status=failed 
   "created_at": "2025-11-24 14:30:00" 
  }
 ]
}
status Описание
pending Ожидает исполнения
completed Успешно выплачено
failed Ошибка — причина в поле error

Курс обмена

GET/api/v1/payout/exchangeRate

Возвращает текущие курсы для криптовалют и других валют.

JSON
{
 "status": "success",
 "rate": {
  "sell": { "usdt_trc20": 82.7 },  // курс вывода usdt/trc20 
  "buy": { // курс покупки (приема)   
   "tron":  8.20,
   "usdt_trc20": 91.00,
   "toncoin": 312.40,
   "notcoin": 0.0041,
   "dogscoin": 0.0012,
   "hmstr": 0.0008 
  }
 }
}
06

Партнёрская программа

Получайте процент от оборота каждого привлечённого клиента — бессрочно и автоматически на баланс.

  • Реферальная ссылка — в личном кабинете.
  • Вознаграждение начисляется с каждой транзакции партнёра.
  • Вывод — через раздел Выплаты любым удобным способом.
  • Ставка согласовывается индивидуально — в личном кабинете.