Оглавление

SafeMatch — Руководство пользователя

Полное руководство по работе с платформой SafeMatch для площадок-клиентов.


1. Введение

Что такое SafeMatch

SafeMatch — P2P-платформа для обмена криптовалюты на фиат по модели эскроу. Платформа соединяет площадки, которым нужно пополнение (приём фиата и получение крипты), с площадками, которым нужен вывод (отдача крипты и получение фиата). SafeMatch выступает гарантом сделки: крипта замораживается на платформе до подтверждения оплаты, фиат переводится напрямую между сторонами.

Для кого

SafeMatch создан для бизнес-клиентов — легальных онлайн-площадок (казино, платёжные сервисы, биржи), которым нужно:

Платформа работает по модели B2B: вы интегрируетесь через API, публикуете заявки от имени своих клиентов, а SafeMatch находит встречную сторону и обеспечивает безопасность сделки.

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

  1. Ваша площадка публикует заявку (пополнение или вывод) через API.
  2. SafeMatch автоматически находит встречную заявку с подходящей суммой и курсом.
  3. Стороны получают реквизиты друг друга. Покупатель переводит фиат и загружает чек.
  4. Продавец подтверждает получение денег — крипта зачисляется покупателю.

Весь процесс занимает от нескольких минут до нескольких часов в зависимости от наличия встречных заявок.


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

Подключение площадки

Для начала работы с SafeMatch:

  1. Свяжитесь с нами — напишите в Telegram: @Kos_Change
  2. Предоставьте информацию о вашей площадке для верификации
  3. Получите учётные данные:
    • API-ключ — для идентификации вашей площадки
    • Секретный ключ — для подписи запросов (HMAC-SHA256)
  4. Настройте интеграцию — подключите API согласно руководству по интеграции

Что нужно для интеграции

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


3. Типы заявок

В SafeMatch существует два типа заявок:

IN-заявка (пополнение)

Сценарий: вашей площадке нужна криптовалюта, клиент готов заплатить фиат.

Пример: площадка создаёт IN-заявку на 100 000 RUB с курсом 95–105 RUB/USDT. SafeMatch находит продавца с курсом 98–102. Согласованный курс — 100 RUB/USDT. Клиент переводит 100 000 RUB продавцу, площадка получает 1 000 USDT (минус комиссия).

OUT-заявка (вывод)

Сценарий: площадка отдаёт криптовалюту, клиент хочет получить фиат.

Пример: площадка создаёт OUT-заявку на 100 000 RUB с курсом 95–105, указывает реквизиты карты Сбербанка. SafeMatch находит покупателя. Покупатель переводит 100 000 RUB на карту, площадка подтверждает — крипта переходит покупателю.

Ключевое различие

IN (пополнение)OUT (вывод)
Вы получаетеКриптовалютуФиат
Вы отдаётеФиат (через клиента)Криптовалюту
РеквизитыПолучаете от продавцаУказываете свои
Резервирование криптыНе требуетсяКрипта замораживается при матче
Встречных заявокОдна IN → одна OUTОдна OUT → одна или несколько IN

4. Создание заявки

Параметры заявки

При создании заявки необходимо указать:

ПараметрОписаниеОбязательность
sideТип заявки: IN (пополнение) или OUT (вывод)Всегда
min_priceМинимальный допустимый курс (например, 95.0)Всегда
max_priceМаксимальный допустимый курс (например, 105.0)Всегда
fiatФиатная валюта (например, RUB)Всегда
tokenКриптовалюта (например, USDT)Всегда
fiat_qtyСумма в фиатной валюте (например, 100000)Всегда
max_paymentsМаксимум встречных платежейТолько для OUT
banksПлатёжные реквизитыТолько для OUT

Пример IN-заявки

Площадке нужно получить USDT на сумму 100 000 RUB по курсу от 95 до 105 RUB/USDT:

{
  "side": "IN",
  "min_price": 95.0,
  "max_price": 105.0,
  "fiat": "RUB",
  "token": "USDT",
  "fiat_qty": 100000
}

Пример OUT-заявки

Площадка хочет продать крипту и получить фиат, принимая до 3 платежей:

{
  "side": "OUT",
  "min_price": 95.0,
  "max_price": 105.0,
  "fiat": "RUB",
  "token": "USDT",
  "fiat_qty": 100000,
  "max_payments": 3,
  "banks": [
    {
      "bank_name": "Сбербанк",
      "recipient_details": "2200 0000 0000 0000",
      "recipient_name": "Иван Иванов",
      "detail_type": "CARD",
      "priority": 1
    }
  ]
}

Что проверяется при создании

Важно: при создании заявки средства не списываются — система только проверяет их наличие. Резервирование и списание происходят позже.

Реквизиты для OUT-заявки

При создании OUT вы указываете реквизиты, на которые покупатель переведёт фиат:

ПолеОписание
bank_nameНазвание банка (например, «Сбербанк», «Тинькофф»)
recipient_detailsНомер карты или телефон
recipient_nameИмя получателя
detail_typeТип: CARD (карта) или PHONE_NUMBER (телефон)
priorityПриоритет реквизитов (1 — наивысший)

Можно указать несколько комплектов реквизитов — покупатель выберет наиболее подходящий.


5. Процесс мэтчинга

Как система находит пару

После создания заявки SafeMatch автоматически ищет подходящую встречную заявку. Для сопоставления должны совпасть три условия:

  1. Пересечение курсов — диапазоны курсов покупателя и продавца должны пересекаться.
  2. Точная сумма — сумма одной или нескольких IN-заявок должна точно совпадать с суммой OUT-заявки.
  3. Лимит платежей — количество IN-заявок не превышает max_payments, указанный в OUT.

Как определяется курс

Курс сделки рассчитывается как среднее от пересечения диапазонов:

Покупатель (IN)Продавец (OUT)ПересечениеКурс
Диапазон95–10598–10298–102(98 + 102) / 2 = 100

Что происходит при матче

Один OUT — несколько IN

Одна OUT-заявка может быть сопоставлена с несколькими IN-заявками, если их суммы в сумме дают нужную сумму. Например:

Время ожидания

Заявка может ожидать сопоставления неограниченное время, пока не найдётся подходящая встречная сторона. Вы можете в любой момент удалить заявку, если она ещё не сопоставлена.


6. Оплата и чек

После сопоставления

Когда система находит пару, покупатель получает реквизиты продавца и должен:

  1. Перевести фиат по указанным реквизитам (карта или телефон).
  2. Загрузить чек — подтверждение перевода в формате PDF.

Загрузка чека

Таймаут на загрузку чека

После сопоставления у покупателя есть 20 минут на загрузку чека.
СитуацияЧто произойдёт
Чек загружен в течение 20 минутЗаявка переходит в ожидание подтверждения
Чек не загружен за 20 минутIN-заявка автоматически отменяется
Чек загружен, ожидает подтвержденияТаймаут не действует — продавец подтверждает без ограничений по времени
Заявка в апелляцииТаймаут приостанавливается

Что происходит при отмене по таймауту


7. Подтверждение и завершение

Подтверждение оплаты

После загрузки чека продавец (создатель OUT) проверяет поступление денег и принимает решение:

Что происходит при подтверждении

В момент подтверждения оплаты выполняются все финансовые операции:

  1. Комиссия покупателя — списывается с доступного баланса покупателя.
  2. Перевод крипты — из зарезервированных средств продавца в доступный баланс покупателя.
  3. Комиссия продавца — списывается с доступного баланса продавца.
  4. Реферальные выплаты — начисляются рефереру (если площадка была приведена партнёром).

Пример

Сделка на 100 000 RUB по курсу 100 RUB/USDT (1 000 USDT):

ОперацияСуммаРезультат
Комиссия покупателя (2%)1 000 × 2% = 20 USDTСписано с баланса покупателя
Перевод крипты1 000 USDTЗачислено покупателю
Комиссия продавца (1.5%)1 000 × 1.5% = 15 USDTСписано с баланса продавца

Итого покупатель получил: 1 000 USDT, заплатил 20 USDT комиссии.
Продавец отдал: 1 000 USDT, заплатил 15 USDT комиссии.

Завершение OUT-заявки

OUT-заявка завершается, когда все привязанные IN-заявки завершены или отменены. Если после завершения у продавца остались зарезервированные средства (например, часть IN была отменена) — остаток автоматически возвращается в доступный баланс.


8. Отмена и замена

Удаление заявки

Вы можете удалить свою заявку, пока она не сопоставлена (статус «ожидание сопоставления»). После сопоставления удаление невозможно.

При удалении OUT-заявки зарезервированные средства (если были) возвращаются в доступный баланс.

Когда IN-заявка отменяется

ПричинаОписание
ТаймаутЧек не загружен в течение 20 минут после сопоставления
Отклонение чекаПродавец оспорил чек, администратор подтвердил отмену
Несоответствие реквизитовПеревод выполнен на неверные реквизиты

Поиск замены (для OUT)

Если один из IN-заявок по вашему OUT был отменён, система автоматически переходит в режим поиска замены:

  1. OUT-заявка получает статус «поиск замены».
  2. Система ищет новую IN-заявку на недостающую сумму.
  3. При нахождении замены — дополнительное резервирование крипты и продолжение сделки.

Отмена поиска замены

Если вы не хотите ждать замену, можно отменить поиск. В этом случае:


9. Апелляции

Когда можно создать апелляцию

СитуацияКогда доступно
Деньги не поступили, неверная сумма, ошибкаПосле завершения заявки
Продавец считает чек недействительнымПри получении чека (через оспаривание)

Причины апелляций

Для покупателя (IN):

ПричинаОписание
Средства не поступилиКрипта не зачислена после подтверждения
Неверная суммаЗачислена не та сумма
Неверный получательУказан неверный получатель
Задержка платежаСредства задерживаются

Для продавца (OUT):

ПричинаОписание
Криптовалюта не полученаКрипта не пришла
Неверная сумма криптыПришла не та сумма
Ошибка транзакцииОшибка при переводе
Задержка переводаПеревод задерживается

Как проходит апелляция

Схема процесса апелляции: Создание апелляции → Рассмотрение администратором → Решение. Возможные исходы: В пользу заявителя (корректировка балансов), В пользу контрагента (апелляция отклонена), Нейтральное (без изменений).
  1. Подача — вы указываете причину и описание проблемы.
  2. Рассмотрение — администратор SafeMatch изучает материалы (чеки, данные сделки).
  3. Решение — одно из трёх:
    • В вашу пользу — корректировка балансов.
    • В пользу контрагента — апелляция отклонена.
    • Нейтральное решение — без изменений.
  4. Вы также можете отозвать свою апелляцию до решения.
Пока идёт апелляция, связанные заявки не могут быть отменены по таймауту или удалены.

10. Балансы

У каждой площадки на SafeMatch есть три типа баланса:

Доступный баланс

Средства, которыми вы можете свободно распоряжаться:

Зарезервированные средства

Криптовалюта, заблокированная по вашим активным OUT-заявкам:

Зарезервированные средства нельзя использовать для новых заявок и операций.

Реферальный баланс

Вознаграждение за приведённые площадки (подробнее — в разделе Реферальная программа).

Когда меняется баланс

СобытиеДоступныйЗарезервированныйРеферальный
Пополнение баланса (депозит)+сумма
Создание заявкиПроверка (без изменений)
Сопоставление (матч)Продавец: −криптаПродавец: +крипта
Подтверждение оплатыПокупатель: −комиссия, +крипта; Продавец: −комиссияПродавец: −криптаРеферер: +доля
Отмена INПродавец: −крипта (возврат)
Завершение OUTПродавец: +остатокПродавец: −остаток
Удаление OUTПродавец: +зарезервированныеПродавец: обнуляется

11. Комиссии

Как рассчитывается комиссия

Процент комиссии назначается индивидуально для каждой площадки при подключении. Комиссия списывается только при подтверждении оплаты, а не при создании заявки.

Формула:

Сумма крипты = сумма в фиате ÷ согласованный курс
Комиссия = сумма крипты × процент комиссии

Пример расчёта

Условия: сделка на 100 000 RUB, курс 100 RUB/USDT, комиссия покупателя 2%, комиссия продавца 1.5%.

ШагРасчётРезультат
Сумма крипты100 000 ÷ 1001 000 USDT
Комиссия покупателя1 000 × 2%20 USDT
Комиссия продавца1 000 × 1.5%15 USDT
Итого комиссий35 USDT

Когда списывается

Если сделка отменена

Если IN-заявка отменена (таймаут, отклонение чека), комиссия не списывается — ни с покупателя, ни с продавца.


12. Реферальная программа

Как работает

Если вашу площадку привёл партнёр (реферер), часть комиссии с каждой вашей завершённой сделки автоматически начисляется партнёру.

Когда начисляются выплаты

Реферальные выплаты происходят только при подтверждении оплаты — одновременно с комиссиями. Не при создании заявки и не при сопоставлении.

Пример

Площадка A (покупатель) приведена Партнёром X с реферальным процентом 30%.
Сделка: 100 000 RUB, курс 100, комиссия A = 2% (20 USDT).

ПолучательРасчётСумма
Партнёр X20 USDT × 30%6 USDT (в реферальный баланс)
SafeMatch20 USDT − 6 USDT14 USDT

Партнёр получает свою долю автоматически — никаких дополнительных действий не требуется.

Как стать реферером

Свяжитесь с @Kos_Change в Telegram для обсуждения условий партнёрской программы.


13. WebSocket-уведомления

SafeMatch отправляет уведомления о событиях в реальном времени через WebSocket. Это позволяет вашей системе моментально реагировать на изменения без постоянного опроса API.

Типы уведомлений

ТипОписаниеКогда приходит
order_createdЗаявка созданаПосле успешного создания заявки
order_matchedЗаявка сопоставленаНайдена встречная сторона, выданы реквизиты
order_updatedДанные заявки обновленыСмена статуса или обновление параметров
order_completedЗаявка завершенаСделка успешно завершена
order_cancelledЗаявка отмененаОтмена по таймауту, отклонение или другая причина
order_supplementedК OUT добавлен новый INНайдена замена после отмены одного из IN
balance_updatedБаланс изменёнЗачисление, списание, заморозка или разморозка

Содержание уведомления

Каждое уведомление содержит актуальные данные по заявке: текущий статус, реквизиты, курс, суммы и другие параметры.

Рекомендации


14. Частые сценарии

Сценарий 1: Простая покупка крипты

Условия: Площадка A хочет получить USDT за 50 000 RUB. Комиссия A — 2%.

  1. Площадка A создаёт IN-заявку: 50 000 RUB, курс 95–105 RUB/USDT.
  2. SafeMatch находит OUT-заявку Площадки B на ту же сумму. Курс — 100 RUB/USDT.
  3. A получает реквизиты B. Клиент A переводит 50 000 RUB на карту B.
  4. A загружает чек (PDF).
  5. B подтверждает получение денег.
  6. Результат:
    • A получает: 500 USDT (50 000 ÷ 100)
    • A платит комиссию: 500 × 2% = 10 USDT
    • Итого на балансе A: +490 USDT

Сценарий 2: Продажа крипты (OUT с несколькими IN)

Условия: Площадка B создаёт OUT на 200 000 RUB (max_payments = 3). Баланс B — 5 000 USDT. Комиссия B — 1.5%.

  1. B создаёт OUT-заявку. Курс 95–105 RUB/USDT.
  2. SafeMatch находит два IN: площадка C (120 000 RUB) и площадка D (80 000 RUB). Курс — 100.
  3. У B замораживается: 120 000 ÷ 100 + 80 000 ÷ 100 = 2 000 USDT.
    • Доступный баланс B: 5 000 → 3 000. Зарезервировано: 2 000.
  4. C переводит 120 000 RUB, загружает чек. B подтверждает.
    • Комиссия B: 1 200 × 1.5% = 18 USDT. C получает 1 200 USDT (минус своя комиссия).
    • Зарезервировано у B: 2 000 → 800.
  5. D переводит 80 000 RUB, загружает чек. B подтверждает.
    • Комиссия B: 800 × 1.5% = 12 USDT. D получает 800 USDT (минус своя комиссия).
    • Зарезервировано: 800 → 0.
  6. OUT завершён. Итого B отдала 2 000 USDT, заплатила 30 USDT комиссий, получила 200 000 RUB на карту.

Сценарий 3: Таймаут и поиск замены

Условия: OUT Площадки B на 100 000 RUB. Найден один IN — Площадка A (100 000 RUB). Курс 100.

  1. Матч: у B замораживается 1 000 USDT.
  2. A не загружает чек в течение 20 минут — таймаут.
  3. IN A отменён. Крипта (1 000 USDT) возвращается B в доступный баланс.
  4. OUT B переходит в «поиск замены».
  5. SafeMatch находит новую IN-заявку — Площадка E (100 000 RUB). Матч.
  6. У B снова замораживается 1 000 USDT.
  7. E загружает чек, B подтверждает — сделка завершена.

Сценарий 4: Апелляция после завершения

  1. Сделка между A (IN) и B (OUT) завершена: A получила 500 USDT, B получила 50 000 RUB.
  2. A обнаруживает, что зачислена неверная сумма, и создаёт апелляцию (причина: «неверная сумма»).
  3. Администратор рассматривает материалы.
  4. Решение в пользу A — производится корректировка баланса.

Сценарий 5: Частичное выполнение OUT с отменой поиска

Условия: OUT Площадки B на 150 000 RUB (max_payments = 3). Курс 100.

  1. Найдены два IN: A (100 000 RUB) и C (50 000 RUB). Заморожено: 1 500 USDT.
  2. A загружает чек, B подтверждает — IN A завершён (1 000 USDT переведены A).
  3. C не загружает чек — таймаут. IN C отменён. Крипта (500 USDT) возвращена B.
  4. OUT переходит в «поиск замены» на 50 000 RUB.
  5. B решает не ждать замену и отменяет поиск.
  6. OUT завершается по тем IN, которые уже подтверждены (только A).
  7. Итог: B отдала 1 000 USDT (вместо 1 500), получила 100 000 RUB (вместо 150 000).

Контакты

По всем вопросам, подключению и партнёрской программе — @Kos_Change в Telegram.


Техническая документация по API: Руководство по интеграции