Перейти к содержимому

Недоплаты и переплаты в криптовалюте: инструкция для продавца

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

Суммы платежейНедоплата или переплата

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

Эта инструкция предполагает, что актив, сеть и адрес назначения верны. Если они не совпадают с указанными, воспользуйтесь инструкцией по инцидентам с неверной сетью. Здесь речь идет о сумме, сроках или распределении поступления, которое в остальном соответствует запросу.

Описанные ниже меры — рекомендации продавцам по организации работы и разработке, а не перечень автоматических функций Yolfi. Примеры условные и не описывают случаи клиентов.

Установите сумму, прежде чем выбирать решение

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

Учитывайте отдельно три показателя:

  • Запрошенная сумма: сколько требовалось по платежным инструкциям.
  • Проверенные поступления: соответствующие запросу переводы, которые действительно получены и могут быть зачтены.
  • Неурегулированный остаток: недостающая или избыточная сумма после предыдущих зачетов, предоставленных кредитов и возвратов.

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

При выводе с биржи может поступить меньше, чем намеревался отправить покупатель, если сервис удерживает комиссию. Проверьте поступление, а не гадайте. В то же время при обычном переводе USDC или USDT в Ethereum плата за газ не удерживается в USDC или USDT: комиссии за газ в Ethereum оплачиваются в ETH. Не советуйте покупателям добавлять приблизительную сумму в стейблкоинах на газ.

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

Таблица решений при расхождении сумм

Используйте ее как шаблон внутренних правил. Это категории для работы продавца, а не статусы API Yolfi.

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

Назначайте для каждого исключения конкретного ответственного и срок следующего сообщения о ходе решения. Поступление не должно оставаться нераспределенным из-за того, что поддержка и финансовый отдел считают ответственными друг друга.

Недоплаты: запрашивайте только одобренное следующее действие

Допустим, запрос требует 100 USDC, а проверенное поступление составляет 98 USDC. Недостача — 2 USDC. Сохраните исходную запись о поступлении; не заменяйте ее незаметно новой записью на 100.

Выберите один из документально оформленных вариантов:

  1. Получить остаток. Убедитесь, что интеграция умеет сопоставлять отдельные поступления. Создайте учитываемый запрос на недостающую сумму, связанный с тем же заказом, с актуальными платежными инструкциями.
  2. Предоставить уступку. Уполномоченный сотрудник фиксирует списанную сумму и порядок ее учета. Не утверждайте, что уступка продавца меняет правила признания платежа провайдером.
  3. Вернуть частичное поступление. Согласуйте условия и адрес возврата до выполнения отдельного исходящего платежа.

В ответе Yolfi о частичной оплате сказано, что неполные платежи не подтверждаются и покупателю следует связаться с продавцом. Доплата на тот же адрес допускается при условии, что система продавца ее поддерживает. Поэтому не обещайте, что отправка разницы автоматически завершит исходный платежный запрос Yolfi.

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

Установите правила для небольших недоплат до возникновения инцидентов. Например, определите предел одобрения, подходящие покупки и основание для аудита. Универсального допустимого процента нет: BTCPay Server описывает собственную настраиваемую допустимую недоплату, но это не доказывает наличие такой же настройки в Yolfi.

Переплаты: отделяйте продажу от излишка

Покупатель должен 100 USDT, а отправляет 105 USDT. Если остальные требования к приему оплаты выполнены, зачтите 100 USDT в счет покупки, а 5 USDT учтите как неурегулированный излишек. По умолчанию не считайте разницу дополнительной выручкой и не предоставляйте за нее дополнительные права на продукт.

Предложите покупателю выбрать доступное решение, соответствующее правилам: возврат или явно согласованный зачет на будущие покупки. Объясните применимые комиссии до получения согласия и проверьте местные требования к защите потребителей и учету. Небольшая сумма не дает права молча удерживать средства.

Также отличайте перевод избыточной суммы от дублирующего платежа. Два перевода по 100 USDT за одну покупку стоимостью 100 USDT — это два поступления, а не одно исправленное. Сохраните обе записи о транзакциях, исполните заказ один раз и отдельно рассмотрите дополнительные 100 USDT.

Поздние платежи: истечение срока не решает судьбу полученных средств

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

При позднем поступлении проверьте:

  • действует ли исходная цена;
  • доступны ли еще товар, свободные места или доступ к продукту;
  • не был ли тот же заказ уже оплачен по другому запросу;
  • не были ли уже одобрены возврат, зачет на будущие покупки или уступка.

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

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

Возвращайте средства безопасно, не создавая второй инцидент

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

Перед одобрением возврата:

  1. Подтвердите исходное поступление, обоснованность обращения покупателя и оставшуюся сумму, доступную к возврату.
  2. Удостоверьтесь в личности заявителя через установленный канал общения с покупателем.
  3. Получите и проверьте актив, сеть и адрес для возврата. Не отправляйте средства автоматически отправителю транзакции: адрес может принадлежать бирже или другому посреднику.
  4. Согласуйте полную сумму возврата, порядок учета комиссий и ожидаемую сумму к получению с учетом применимых требований.
  5. Получите одобрение в соответствии с правилами безопасности кошелька; зафиксируйте причину и одобрившего сотрудника.
  6. Запишите идентификатор исходящей транзакции и проверьте результат, прежде чем отмечать возврат как завершенный.

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

Сделайте каждое решение идемпотентным

Идемпотентность означает, что повторные попытки не дублируют бизнес-действие. Рекомендации Stripe по вебхукам описывают повторные события и отсутствие гарантированного порядка для Stripe; это полезный инженерный ориентир, а не описание гарантий доставки Yolfi.

В своей интеграции:

  • Проверяйте подлинность уведомлений по документированной процедуре провайдера.
  • Надежно сохраняйте входящие события и устраняйте дубликаты по документированным идентификаторам.
  • Идентифицируйте каждое поступление по сети и идентификатору транзакции, добавляя индекс перевода или события, если одна транзакция содержит несколько значимых переводов.
  • Обеспечьте однократный зачет каждого поступления и однократное исполнение каждого заказа с помощью ограничений базы данных или равноценных транзакционных механизмов.
  • Резервируйте одобренную операцию возврата до отправки, чтобы параллельные обработчики не отправили ее дважды.

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

Частые вопросы

Стоит ли принимать небольшую недоплату?

Только по утвержденным правилам продавца. Зафиксируйте уступку отдельно и проверьте, как признается платеж; не предполагайте наличие автоматического допуска.

Нужно ли автоматически возвращать переплату?

Не без проверки принадлежности средств, адреса, суммы и защиты от дублирования. Направляйте излишек на проверку, если нет проверенного и одобренного процесса, который безопасно обрабатывает такие случаи.

Можно ли оплатить один заказ двумя частичными переводами?

В вашем учете можно зачесть несколько поступлений, если правила это разрешают. Признает ли платежный провайдер их совместно, нужно проверять отдельно.

Заключение: урегулируйте остаток, а не просто закройте обращение

Начните с понятной платежной ссылки Yolfi, а затем ведите реестр исключений продавца вместе с записью о платеже. Закрывайте случай, только когда зачет в счет заказа, решение об исполнении, оставшийся баланс и любой возврат или предоставленный кредит согласованы между собой. Так небольшое расхождение суммы не превратится во второй платеж, повторную доставку или небезопасный возврат.

Начните принимать криптоплатежи уже сегодня

Подключите кошелёк, создайте первую ссылку и получите оплату за считаные минуты.

Предприниматель работает за ноутбуком
Платёж получен+120.00 USDT