SafeMatch — Как работают ордера

Руководство для площадок: процесс обмена, комиссии, рефералы и возможные сценарии

1. Как устроен обмен

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

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

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

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

1
📋
Создание заявки
Площадка публикует заявку IN (покупка) или OUT (продажа) с суммой и ценой
2
🔗
Сопоставление
Система автоматически находит встречную заявку. Крипта продавца резервируется
3
💰
Оплата фиатом
Покупатель переводит фиат по реквизитам продавца и загружает чек
4
Подтверждение
Продавец подтверждает получение фиата. Крипта переводится покупателю
5
🎉
Завершение
Списываются комиссии, начисляются реферальные. Сделка завершена

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

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

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

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

Шаг 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.
Продавец оспаривает чек
Деньги не поступили или чек поддельный.
Баланс: без изменений
открыта апелляция
Таймаут больше не действует
→ Создаётся апелляция для разбора
Ветвь Апелляция — решение администратора
Создаётся при оспаривании чека или после завершения сделки. Пока открыта — заявки заблокированы от отмен и таймаутов.
✅ В пользу создателя
Санкции к контрагенту. Перевод криптовалюты пострадавшему. Вычет рефералов у виновной стороны.
❌ В пользу контрагента
Создатель апелляции не прав. Санкции не применяются. Апелляция закрывается.
⊜ Нейтральное
Компромисс. Санкции не применяются. Возможна компенсация от платформы.
↶ Отзыв
Создатель сам отзывает апелляцию. Всё остаётся как было.

3. Движение баланса

Пошаговое движение средств при подтверждении оплаты одной заявки 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

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

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

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

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

Этап 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% платформа и реферер делят комиссию пополам.

5. Резервирование средств

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

#
Событие
Доступный баланс
Зарезервировано
Этап
Начало: заявка 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Комиссия платформы (от продавца)Остаток комиссии поступает платформе

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

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

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

7. Возможные проблемы и решения

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

8. API для интеграции

Доступные эндпоинты для площадок. Все запросы требуют авторизации по API-ключу и HMAC-подписи.

Управление заявками

POST/ordersСоздание заявки
DELETE/orders/{id}Удаление заявки
POST/orders/{id}/cancel-searchОтмена поиска замены

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

POST/orders/{id}/receiptЗагрузка чека (покупатель)
POST/orders/{id}/confirm-paymentПодтверждение получения оплаты (продавец)
POST/orders/{id}/dispute-receiptОспаривание чека (продавец)

Апелляции

POST/appealsСоздание апелляции

Данные

GET/orders/{id}Данные заявки
GET/ordersСписок заявок