SafeMatch — Документация

Полное руководство по платформе: от подключения до завершения сделки. Интеграция, жизненный цикл заявок, балансы, комиссии, рефералы и апелляции.

1. Введение

Что такое SafeMatch

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

Для кого

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

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

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

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

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

Роли участников

Покупатель (IN)
Покупает крипту
Переводит фиат продавцу по реквизитам, получает криптовалюту на баланс
Продавец (OUT)
Продаёт крипту
Криптовалюта резервируется при сопоставлении, получает фиат от покупателя

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

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

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

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

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

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

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

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

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

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

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

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

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

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. Процесс мэтчинга

Основные этапы сделки

1
📋
Создание заявки
Площадка публикует заявку IN (покупка) или OUT (продажа) с суммой и ценой
2
🔗
Сопоставление
Система автоматически находит встречную заявку. Крипта продавца резервируется
3
💰
Оплата фиатом
Покупатель переводит фиат по реквизитам продавца и загружает чек
4
Подтверждение
Продавец подтверждает получение фиата. Крипта переводится покупателю
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-заявками, если их суммы в сумме дают нужную сумму. Для каждого IN замораживается соответствующая часть крипты.

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

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

6. Жизненный цикл заявок

IN-заявка (покупка крипты)

Схема переходов статусов IN
Ожидание сопоставления Ожидание оплаты Ожидание подтверждения Завершён
Возможная отмена: Ожидание оплаты Отменён (таймаут 20 мин)
Ожидание подтверждения Отменён (оплата отклонена)
СтатусОписание
Ожидание сопоставленияЗаявка создана и ожидает встречный ордер
Ожидание оплатыНайден встречный ордер, площадке выданы реквизиты для перевода
Ожидание подтвержденияЧек загружен, продавец должен подтвердить получение денег
ЗавершёнОплата подтверждена, крипта зачислена покупателю
ОтменёнЗаявка отменена (таймаут, отклонение или другая причина)

OUT-заявка (продажа крипты)

Схема переходов статусов OUT
Ожидание сопоставления Ожидание подтверждений Завершён
При отмене IN: Ожидание подтверждений Поиск замены Ожидание подтверждений
Удаление: Ожидание сопоставления Удалён
СтатусОписание
Ожидание сопоставленияЗаявка создана, крипта ещё не зарезервирована
Ожидание подтвержденийЗаявка сопоставлена, крипта зарезервирована, ожидаем подтверждения от IN-площадок
Поиск заменыОдин из IN отменён; система ищет новый IN на недостающую сумму
ЗавершёнВсе IN завершены или отменены; зарезервированные средства возвращены (если остались)
УдалёнЗаявка удалена до сопоставления

Ветвления и исходы

На каждом шаге заявка может пойти по позитивному или негативному пути.

Шаг 1 Создание заявки
Площадка публикует заявку на покупку (IN) или продажу (OUT). Баланс проверяется, но не меняется.
Заявка создана
Все проверки пройдены: баланс достаточен, торги разрешены, лимиты не превышены.
Баланс: без изменений. Статус: ожидание сопоставления
→ Переход к Шагу 2: Ожидание сопоставления
Отказ в создании
Недостаточно баланса, торги заблокированы, превышен лимит апелляций/отмен.
Баланс: без изменений. HTTP: 400 / 403
∎ Конец. Площадка должна устранить причину.
Шаг 2 Автоматическое сопоставление
Система каждую секунду ищет подходящие встречные заявки. Критерии: пересечение цен, совпадение суммы, лимит платежей.
🔗
Пара найдена
Найдена комбинация заявок IN, сумма которых совпадает с суммой OUT. Цены пересекаются.
РЕЗЕРВИРОВАНИЕ у продавца:
доступный баланс -1000 USDT → зарезервировано +1000 USDT
IN: ожидание оплаты, OUT: ожидание подтверждений
→ Переход к Шагу 3: Оплата и загрузка чека
Пара не найдена
Нет встречных заявок с подходящей суммой или ценой. Или баланс продавца уменьшился.
Баланс: без изменений. Статус: ожидание сопоставления
↺ Система пробует снова через 1 секунду
Шаг 3 Оплата и загрузка чека
Покупатель (IN) переводит фиат по реквизитам продавца (OUT) и загружает PDF-чек. На загрузку чека даётся 20 минут.
📄
Чек загружен вовремя
Документ принят, статус обновлён.
Баланс: без изменений. IN: ожидание подтверждения
→ Переход к Шагу 4: Подтверждение получения
Таймаут (20 мин)
Покупатель не загрузил чек в установленный срок.
ВОЗВРАТ РЕЗЕРВА продавцу:
зарезервировано -500 USDT → доступный баланс +500 USDT
IN: отменена, OUT: поиск замены
→ Система ищет замену (или площадка отменяет поиск)
Шаг 4 Подтверждение получения оплаты
Продавец проверяет, что фиат поступил. Это ключевой момент — запускаются комиссии, перевод криптовалюты и реферальные начисления.
Продавец подтверждает
Деньги получены. Запускается цепочка из 5 балансовых операций.
-20 USDT комиссия покупателя
+1000 USDT крипта покупателю
-15 USDT комиссия продавца
+6 / +3.75 реферальные
→ IN: завершена. Проверка завершения OUT.
Продавец оспаривает чек
Деньги не поступили или чек поддельный.
Баланс: без изменений
открыта апелляция
Таймаут больше не действует
→ Создаётся апелляция для разбора
Ветвь Апелляция — решение администратора
Создаётся при оспаривании чека или после завершения сделки. Пока открыта — заявки заблокированы от отмен и таймаутов.
✅ В пользу создателя
Санкции к контрагенту. Перевод криптовалюты пострадавшему. Вычет рефералов у виновной стороны.
❌ В пользу контрагента
Создатель апелляции не прав. Санкции не применяются. Апелляция закрывается.
⊜ Нейтральное
Компромисс. Санкции не применяются. Возможна компенсация от платформы.
↶ Отзыв
Создатель сам отзывает апелляцию. Всё остаётся как было.

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

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

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

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

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

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

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

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

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

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

После загрузки чека продавец (создатель 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 комиссии.

Движение баланса при подтверждении (водопад)

Пошаговое движение средств при подтверждении оплаты одной заявки IN на 50 000 RUB (курс 100, криптовалюта = 500 USDT).

Исходные данные

Площадка A (покупатель)
2 000 USDT
Комиссия покупателя = 2%, реферер X (30%)
Площадка B (продавец)
4 000 / 500 рез.
Комиссия продавца = 1.5%, реферер Y (25%)
Партнёр X
0 реф.
Реферер площадки A
Партнёр Y
0 реф.
Реферер площадки B
#
Этап
A (покуп.) доступный
B (продав.) доступный
B (продав.) резерв
Начальное состояние
2 000.00
4 000.00
500.00
① Списание комиссии покупателя: 500 × 2% = 10 USDT
1
Списание комиссии покупателя (10 USDT)
1 990.00
4 000.00
500.00
2
↳ Реферальное начисление партнёру X: 10 × 30% = 3.00
1 990.00
4 000.00
500.00
3
↳ Комиссия платформы: 10 - 3 = 7.00
1 990.00
4 000.00
500.00
② Перевод криптовалюты: резерв продавца → баланс покупателя (500 USDT)
4
Списание из резерва продавца (500 USDT)
1 990.00
4 000.00
0.00
5
Зачисление криптовалюты покупателю (500 USDT)
2 490.00
4 000.00
0.00
③ Списание комиссии продавца: 500 × 1.5% = 7.50 USDT
6
Списание комиссии продавца (7.50 USDT)
2 490.00
3 992.50
0.00
7
↳ Реферальное начисление партнёру Y: 7.50 × 25% = 1.875
2 490.00
3 992.50
0.00
8
↳ Комиссия платформы: 7.50 - 1.875 = 5.625
2 490.00
3 992.50
0.00
Итого
2 490.00 (+490)
3 992.50 (-7.50)
0.00 (-500)

Финальное распределение от этой сделки (500 USDT)

Покупатель (A) получил
+490.00
500 крипты - 10 комиссии
Продавец (B) отдал
-507.50
500 крипты + 7.50 комиссии
Партнёр X
+3.00
30% от комиссии покупателя
Партнёр Y
+1.875
25% от комиссии продавца
SafeMatch
+12.625
7.00 + 5.625

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

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

9. Балансы и резервирование

Типы балансов

БалансОписание
Доступный балансСредства, которые можно использовать для создания заявок и оплаты комиссий
Зарезервированные средстваКриптовалюта продавца, заблокированная на время сделки. Возвращается при отмене или переводится покупателю при подтверждении
Реферальный балансНачисления по реферальной программе. Начисляется доля от комиссии при каждом подтверждении оплаты
Важно: зарезервированные средства нельзя использовать для новых заявок и операций.

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

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

Резервирование средств (водопад)

Хронология всех операций с зарезервированными средствами продавца от начала до конца.

#
Событие
Доступный баланс
Зарезервировано
Этап
Начало: заявка OUT создана, доступный баланс = 5000
5 000
0
🔒 РЕЗЕРВИРОВАНИЕ при сопоставлении
1
Сопоставление: OUT (100K) + IN-1 (50K) + IN-2 (50K), курс 100
4 000
1 000
Резервирование при сопоставлении
🔓 ЧАСТИЧНОЕ СНЯТИЕ РЕЗЕРВА при подтверждении IN-1
2
Подтверждение IN-1: резерв → баланс покупателя (500 USDT)
4 000
500
Подтверждение оплаты
3
Комиссия продавца: доступный баланс -= 7.50
3 992.50
500
Подтверждение оплаты
❌ ВОЗВРАТ РЕЗЕРВА при отмене IN-2 (таймаут)
4
IN-2 отменена: резерв → доступный баланс продавца (500 USDT)
4 492.50
0
Отмена заявки
🔒 ДОП. РЕЗЕРВИРОВАНИЕ при дополнении (новая IN-3)
5
Дополнение: новая IN-3 (50K), доп. резервирование 500
3 992.50
500
Дополнение заявки
🔓 ФИНАЛЬНОЕ СНЯТИЕ РЕЗЕРВА при подтверждении IN-3
6
Подтверждение IN-3: резерв → баланс покупателя (500 USDT)
3 992.50
0
Подтверждение оплаты
7
Комиссия продавца: доступный баланс -= 7.50
3 985.00
0
Подтверждение оплаты
✅ Завершение заявки OUT — проверка остатка
8
Все заявки обработаны, резерв = 0, нечего возвращать
3 985.00
0
Завершение
Финал заявки OUT
3 985.00 (-1015)
0
завершена

Важно: порядок операций при подтверждении оплаты

При подтверждении получения фиата операции всегда идут в таком порядке:

#ОперацияОписание
1Списание комиссии покупателяИз доступного баланса покупателя списывается комиссия
1aРеферальное начисление (покупатель)Если у покупателя есть реферер — ему начисляется доля от комиссии
1bКомиссия платформы (от покупателя)Остаток комиссии поступает платформе
2Перевод криптовалюты покупателюИз резерва продавца криптовалюта переводится на доступный баланс покупателя
3Списание комиссии продавцаИз доступного баланса продавца списывается комиссия
3aРеферальное начисление (продавец)Если у продавца есть реферер — ему начисляется доля от комиссии
3bКомиссия платформы (от продавца)Остаток комиссии поступает платформе

10. Комиссии и реферальная программа

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

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

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

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

Условия: сделка на 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

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

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


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

Ключевое: реферальная выплата происходит в один момент

Реферальные начисления происходят только при подтверждении оплаты. Не при создании заявки, не при сопоставлении, не при загрузке чека — только когда продавец нажимает «оплату получил».

Как делится комиссия

Этап 1
Комиссия покупателя
Комиссия покупателя (IN) делится между реферером и платформой
Площадка-покупатель A платит комиссию = сумма крипты × ставка комиссии покупателя.
Если у площадки A есть реферер (Партнёр X) с долей реферера 30%:
A платит: 500 × 2% = 10 USDT
X получает: 10 × 30% = 3 USDT (реферальный баланс)
SafeMatch: 10 - 3 = 7 USDT (комиссия платформы)
Этап 2
Комиссия продавца
Комиссия продавца (OUT) делится между реферером и платформой
Площадка-продавец B платит комиссию = сумма крипты × ставка комиссии продавца.
Если у площадки B есть реферер (Партнёр Y) с долей реферера 25%:
B платит: 500 × 1.5% = 7.50 USDT
Y получает: 7.50 × 25% = 1.875 USDT (реферальный баланс)
SafeMatch: 7.50 - 1.875 = 5.625 USDT (комиссия платформы)

Условия для реферальной выплаты

УсловиеЕсли НЕ выполнено
Комиссия > 0 (ненулевая ставка)Выплата = 0, платформа тоже не получает
У площадки есть реферерВся комиссия уходит платформе
Доля реферера > 0%Вся комиссия уходит платформе

Примеры с разными ставками

Пример 1: Стандарт
Пример 2: Без реферера
Пример 3: Высокий %

Стандартная сделка: 100 000 RUB, курс 100, криптовалюта = 1 000 USDT

УчастникСтавкаКомиссияДоля реферераРефереруПлатформе
Покупатель (A)Комиссия покупателя 2%1000 × 2% = 20 USDT30%6 USDT14 USDT
Продавец (B)Комиссия продавца 1.5%1000 × 1.5% = 15 USDT25%3.75 USDT11.25 USDT
ИТОГО35 USDT9.75 USDT25.25 USDT

Площадка без реферера: 100 000 RUB, курс 100, криптовалюта = 1 000 USDT

УчастникСтавкаКомиссияДоля реферераРефереруПлатформе
Покупатель (A, нет реферера)Комиссия покупателя 2%20 USDT020 USDT (все 100%)
Продавец (B)Комиссия продавца 1.5%15 USDT25%3.75 USDT11.25 USDT
ИТОГО35 USDT3.75 USDT31.25 USDT

Без реферера вся комиссия покупателя (20 USDT) уходит платформе.

Высокие ставки: комиссия покупателя 3%, комиссия продавца 2.5%, доля реферера 50%

УчастникСтавкаКомиссияДоля реферераРефереруПлатформе
Покупатель (A)Комиссия покупателя 3%1000 × 3% = 30 USDT50%15 USDT15 USDT
Продавец (B)Комиссия продавца 2.5%1000 × 2.5% = 25 USDT50%12.5 USDT12.5 USDT
ИТОГО55 USDT27.5 USDT27.5 USDT

При доле реферера 50% платформа и реферер делят комиссию пополам.

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

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

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

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

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

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

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

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

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

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

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

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

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

12. Апелляции

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

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

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

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

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

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

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

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

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

13. Таймауты

После сопоставления заявки у покупателя есть 20 минут на загрузку чека.

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

При отмене IN-заявки по таймауту:

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

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

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

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

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

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

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

15. Полный пример сделки

Максимально долгий путь: создание → сопоставление → частичное подтверждение → таймаут → поиск замены → дополнение → чек → оспаривание → апелляция → решение → подтверждение → завершение.

T = 0

Создание заявок: B → OUT-001 (100K), A → IN-001 (50K) + IN-002 (50K)

B доступный
5 000
B зарезервировано
0
A доступный
2 000
Рефералы
все 0
T = 1 мин 🔒 Резервирование

Сопоставление: OUT-001 ← IN-001 + IN-002 (курс 100)

50K/100 + 50K/100 = 1000 USDT резервируется у продавца B

B доступный
4 000
-1000
B зарезервировано
1 000
+1000
T = 5 мин

Площадка A загружает чек по IN-001. Баланс без изменений.

T = 8 мин ✅ Подтверждение + комиссии + рефералы

B подтверждает получение оплаты по IN-001

#ОперацияКтоСуммаБаланс
1Комиссия покупателяA доступный -=10 USDT1 990
1aРеферальное → Партнёр XX реферальный +=3 USDTреф: 3
1bПлатформе (от покупателя)SafeMatch +=7 USDT
2aСписание из резерва BB резерв -=500 USDTрезерв: 500
2bЗачисление покупателю AA доступный +=500 USDT2 490
3Комиссия продавцаB доступный -=7.50 USDT3 992.50
3aРеферальное → Партнёр YY реферальный +=1.875 USDTреф: 1.875
3bПлатформе (от продавца)SafeMatch +=5.625 USDT
T = 21 мин ❌ Таймаут + возврат резерва

IN-002 отменена по таймауту

Чек не загружен за 20 мин. Возврат 500 USDT из резерва продавцу B. OUT → поиск замены

B доступный
4 492.50
+500
B зарезервировано
0
-500
T = 25 мин 🔒 Доп. резервирование

Площадка C создаёт IN-003 (50K). Система дополняет OUT-001

B доступный
3 992.50
-500
B зарезервировано
500
+500
T = 30 мин

Площадка C загружает чек по IN-003. Баланс без изменений.

T = 32 мин ⚖ Спор

B оспаривает чек → создаётся апелляция

Апелляция открыта. Таймаут больше не действует. Баланс без изменений.

T = 2 дня

Администратор: нейтральное решение

Санкции не применяются. Апелляция закрыта. Заявки разблокированы.

T = 2 дня + 1 мин ✅ Подтверждение + рефералы

B подтверждает получение оплаты по IN-003 (деньги пришли позже)

#ОперацияКтоСумма
1Комиссия покупателяC доступный -=10 USDT
1aРеферальное → Партнёр ZZ реферальный +=2 USDT (20%)
2Крипта → покупателю Cрезерв B → доступный C500 USDT
3Комиссия продавцаB доступный -=7.50 USDT
3aРеферальное → Партнёр YY реферальный +=1.875 USDT
T = 2 дня + 1 мин

Завершение OUT-001: завершена

IN-001: завершена, IN-002: отменена, IN-003: завершена. Все заявки обработаны. Резерв = 0.

Финальные балансы

УчастникДоступныйЗарезервированоРеферальныйΔ Итого
A (покупатель, 1 подтверждение)2 49000+490
B (продавец)3 98500-1 015
C (покупатель, 1 подтверждение)1 99000+490
Партнёр X (реферер A)3.00+3.00
Партнёр Y (реферер B, ×2)3.75+3.75
Партнёр Z (реферер C)2.00+2.00
SafeMatchкомиссия платформы+26.25

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

Сценарий 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).

17. Риски и решения

Нет встречной заявкиСРЕДНИЙ
Заявка ожидает сопоставления неопределённое время.
✓ Расширить ценовой диапазон или изменить сумму
Таймаут 20 минутВЫСОКИЙ
Покупатель не загрузил чек → автоматическая отмена, возврат резерва, поиск замены.
✓ Загрузить чек вовремя
Деньги не поступилиВЫСОКИЙ
Чек загружен, но фиат не пришёл → апелляция.
✓ Администратор рассматривает спор
Поддельный чекВЫСОКИЙ
Продавец оспаривает → апелляция → возможные санкции.
✓ Модератор проверяет, применяет санкции
Баланс уменьшился до сопоставленияНИЗКИЙ
Доступный баланс продавца стал меньше требуемого → сопоставление пропускается.
✓ Пополнить баланс
Замена не найденаСРЕДНИЙ
Заявка OUT в статусе поиска замены, нет подходящих IN.
✓ Отменить поиск → завершение по уже обработанным
Много отмен или апелляцийСРЕДНИЙ
Превышен лимит → блокировка создания новых заявок.
✓ Снизить процент проблемных сделок
Апелляция после завершенияСРЕДНИЙ
Участник оспаривает результат уже после завершения сделки.
✓ Администратор решает, возможна компенсация

18. Контакты

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

Техническая документация по API: API & SDK