К содержанию
Arbitpay Docs

Депозиты

Депозит — приём платежа от вашего клиента. Платформа выдаёт реквизиты, ваш клиент переводит на них деньги, и после подтверждения платежа сделка закрывается.

В API депозит — это сделка с типом buy. Все запросы идут на общие эндпоинты сделок, тип задаётся полем type в теле запроса.

ДействиеМетодПуть
Создание депозитаPOST/api/deals/create
Получение депозитаGET/api/deals/get
Обновление депозитаPOST/api/deals/update

Все действия раздела доступны только клиентам (по api_key). Сделка должна принадлежать вашему клиенту, иначе вернётся ACCESS_DENIED.

Создание депозита

Создаёт депозит и подбирает подходящий реквизит под указанные параметры.

Тело запроса (JSON)

ПолеТипОбяз.Описание
typestring✅buy
user_idstring✅Идентификатор заказа на вашей стороне
bank_uuidstring✅UUID банка из списка банков
amountnumber✅Сумма платежа, положительное число (формат 35.00)
currencystring✅Валюта — см. «Справочники»
payment_methodstring✅Метод оплаты — см. «Справочники»
return_urlstring⚠️Адрес возврата плательщика с платёжной страницы
success_urlstring⚠️Адрес перехода после успешной оплаты
fail_urlstring⚠️Адрес перехода после неудачной оплаты
callback_urlstring⚠️Адрес для уведомлений о смене статуса — см. «Колбеки»
bash
curl -X POST "https://arbitpay.online/api/deals/create" \
  -H "Authorization: Bearer <API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "buy",
    "user_id": "order-10237",
    "bank_uuid": "a6ccb483-ffab-439f-ae08-34c87e6e6738",
    "amount": 39772.64,
    "currency": "UAH",
    "payment_method": "card"
  }'

Запрос идемпотентен по user_id. Если у вас уже есть сделка с тем же user_id, того же типа и на ту же запрашиваемую сумму в статусе created, повторный запрос вернёт её же (с сообщением о существующей сделке), а не создаст дубль — это защищает от таймаута и двойной отправки.

Важно:

  • идемпотентность действует, только пока сделка в статусе created. Как только она перешла в pending, unconfirmed, paid, canceled или dispute, повторный запрос с тем же user_id создаст новую сделку;
  • сравнивается исходная сумма из запроса, а не скорректированная payment.amount.

Платформа может скорректировать сумму на несколько копеек, чтобы платёж можно было однозначно сопоставить со сделкой. Оплачивать нужно ровно ту сумму, которая пришла в payment.amount. Если она отличается от запрошенной, в ответе дополнительно появляется поле payment.requested_amount.

Поля return_url, success_url и fail_url необязательны и применяются, если для выбранного метода оплаты используется платёжная страница. Передавайте полные адреса со схемой http или https — значения сохраняются в сделке как есть.

Возможные ошибки

codeУсловие
ACCESS_DENIEDТокен не принадлежит клиенту
INVALID_METHODМетод запроса не POST
MISSING_FIELDSОтсутствует одно из обязательных полей
INVALID_TYPEtype не buy и не sell
INVALID_AMOUNTamount не число или ≤ 0
INVALID_CURRENCYНедопустимая валюта
INVALID_PAYMENT_METHODНедопустимый метод оплаты
BANK_NOT_FOUNDБанк по bank_uuid не найден или отключён
REQUISITE_NOT_FOUNDНе найден подходящий реквизит под указанные критерии
NO_FREE_AMOUNTНет свободной суммы платежа под указанные критерии

Получение депозита

Возвращает депозит по его uuid.

Параметры запроса (query)

ПолеТипОбяз.Описание
uuidstring✅UUID сделки (36 символов)
bash
curl -X GET "https://arbitpay.online/api/deals/get?uuid=8f14e45f-cea1-4a2c-9b7a-1d2e3f4a5b6c" \
  -H "Authorization: Bearer <API_KEY>"

См. структуру ответа.

Возможные ошибки

codeУсловие
ACCESS_DENIEDТокен не принадлежит клиенту или сделка чужая
INVALID_METHODМетод запроса не GET
MISSING_FIELDSНе передан uuid
INVALID_UUIDuuid не соответствует формату (36 символов)

Обновление депозита

Обновляет статус депозита, добавляет комментарий и/или прикрепляет изображение оплаты.

Тело запроса (JSON)

ПолеТипОбяз.Описание
uuidstring✅UUID депозита (36 символов)
statusstring⚠️Новый статус — см. «Справочники»
commentstring⚠️Текст комментария к депозиту
image_base64string⚠️Изображение оплаты в формате data-URL: data:image/(png|jpg|jpeg|webp);base64,...

Помимо uuid, необходимо передать хотя бы одно из полей status, comment, image_base64. Иначе — ошибка NO_FIELDS_TO_UPDATE.

bash
curl --request POST \
  --url "https://arbitpay.online/api/deals/update" \
  --header "Authorization: Bearer <API_KEY>" \
  --header "Content-Type: application/json" \
  --data '{
    "uuid": "8f14e45f-cea1-4a2c-9b7a-1d2e3f4a5b6c",
    "comment": "Комментарий к сделке",
    "image_base64": "data:image/png;base64,iVBORw0KGgo..."
  }'

См. структуру ответа.

Возможные ошибки

codeУсловие
ACCESS_DENIEDТокен не принадлежит клиенту или депозит чужой
INVALID_METHODМетод запроса не POST
MISSING_FIELDSНе передан uuid
NO_FIELDS_TO_UPDATEНе передано ни одного поля для обновления
INVALID_UUIDuuid не соответствует формату
INVALID_STATUSНедопустимое значение status
INVALID_IMAGE_FORMATimage_base64 не PNG/JPEG/WebP в формате data-URL

Структура ответа

Возвращается эндпоинтами создания, получения и обновления.

json
{
  "status": "success",
  "code": "SUCCESS",
  "data": {
    "deal": {
      "uuid": "8f14e45f-cea1-4a2c-9b7a-1d2e3f4a5b6c",
      "type": "buy",
      "status": "created",
      "created": "2026-07-08 12:34:56"
    },
    "requisite": {
      "name": "Иван",
      "surname": "Петров",
      "midname": "Сергеевич",
      "details": "4149600012342309",
      "organization_name": "ФОП Петров",
      "iban": "UA123456789012345678901234567",
      "identification_code": "1234567890",
      "payment_purpose": "Оплата услуг"
    },
    "payment": {
      "bank_name": "Кредит Днепр",
      "method": "card",
      "amount": "39772.64",
      "currency": "UAH",
      "time_limit": 30,
      "time_limit_unit": "minutes",
      "payment_url": ""
    },
    "comments": []
  },
  "message": "Deal retrieved successfully."
}

Описание полей

deal

ПолеТипОписание
uuidstringИдентификатор сделки
typestringВсегда buy для депозита
statusstringТекущий статус — см. «Справочники»
createdstringДата и время создания
receipt_urlstringСсылка на квитанцию. Поле появляется только после того, как квитанцию прикрепили

requisite — реквизиты, на которые платит ваш клиент

ПолеТипОписание
namestringИмя
surnamestringФамилия
midnamestringОтчество
detailsstringНомер карты / счёта
organization_namestringНазвание организации
ibanstringIBAN
identification_codestringИдентификационный код
payment_purposestringНазначение платежа

payment — параметры платежа

ПолеТипОписание
bank_namestringНазвание банка
methodstringМетод оплаты
amountstringСумма платежа — оплачивать нужно именно её
requested_amountnumberТолько при создании и только если сумма была скорректирована — сумма из запроса
currencystringВалюта
time_limitnumberЛимит времени на оплату
time_limit_unitstringЕдиница измерения лимита (minutes)
payment_urlstringСсылка на оплату для методов с платёжной страницей; иначе пустая строка

comments — массив комментариев к сделке.

© Arbitpay. Документация REST API.