

Сверка криптоплатежей — это привычка раз в день ответить на два вопроса: на каждый ли заказ пришли деньги и к каждому ли пришедшему переводу есть заказ. В банке вам помогают назначение платежа и имя плательщика, а в криптовалюте нет ни того ни другого: перевод приходит на адрес с суммой и номером транзакции, и больше ничего. Поэтому сверку закладывают заранее: на каждый заказ выдают свой адрес или свою сумму, а потом сравнивают список переводов из сети со списком заказов. Если вы принимаете криптовалюту через платёжный сервис, половину этой работы он уже сделал, и сверять нужно его отчёт со своей базой заказов. Ниже разбираем, как это устроено и где сверка обычно расходится.
Сверка платежей — это сопоставление двух списков: того, что вы ждёте, и того, что реально пришло. Магазин ждёт 100 долларов за заказ номер 1540; на счёт приходит перевод на 100 долларов с пометкой «заказ 1540»; сверка ставит галочку. Если перевода нет или сумма другая, сверка показывает расхождение, и с ним уже разбирается человек.
С картой и банком эту задачу решает сам платёж: в нём есть имя отправителя, назначение и точная сумма. Криптоперевод устроен иначе, и сверка в нём опирается на другие вещи:
Проще говоря, в банке вы сверяете по подписи на конверте, а в криптовалюте — по тому, в какой ящик и сколько положили. Значит, ящики нужно подписывать заранее.
У сверки две стороны, и у каждой свой набор полей:
Сверка — это соединение двух списков по общему ключу. Ключей в криптовалюте четыре, и обычно их используют вместе:

Когда вы принимаете криптовалюту напрямую на кошелёк, никто за вас адреса не подписывает. Есть четыре способа заранее сделать перевод узнаваемым:
Какой бы способ вы ни выбрали, найденный перевод всё равно нужно проверить: та ли сеть, та ли монета, достаточно ли подтверждений. Что именно смотреть в обозревателе блоков и как отвечать покупателю, пока оплата не подтвердилась, — отдельный разбор о том, как проверить криптовалютный платёж по TXID, сети и статусу.
Платёжный сервис для криптовалюты (его ещё называют криптопроцессингом) забирает на себя всё, о чём шла речь выше. Проще говоря, он сам подписывает ящики и сам в них заглядывает:
Вам остаются два действия: при создании заказа сохранить у себя пару номеров — свой номер заказа и номер, который этому заказу выдал сервис, — а при получении вебхука найти по номеру сервиса свой заказ и обновить ему статус. Эта пара и есть ключ сверки. Потерять её нельзя: уведомление «оплачено 100 USDT» приходит с номером сервиса, и без сохранённой пары его не привязать ни к чему.
У CryptumPay номер заказа приходит уже в ответе на его создание с сервера. К заказу можно приложить сразу несколько своих идентификаторов: номер пользователя, его почту, номер заказа в своей системе и произвольную строку с любыми данными, и всё это возвращается в вебхуке о создании заказа вместе с номером этого заказа в CryptumPay. Дальше CryptumPay присылает вебхук на каждую смену статуса, и в нём стоит номер заказа в CryptumPay, а не ваш, — поэтому пара номеров сохраняется в момент создания. Статусов четыре:
Сумма, зачисленная после всех комиссий, приходит в поле income только в вебхуке статуса finished — именно её и сверяют с итогом дня. Если вебхук потерялся, состояние заказа можно запросить с сервера CryptumPay; история операций и статусы есть и в личном кабинете.
Одно правило стоит записать прямо в код: возврат покупателя на страницу «спасибо за оплату» оплатой не считается. Страницу можно открыть руками, и покупатели иногда открывают её по старой ссылке. Оплату подтверждает только статус, который сервер получил от платёжного сервиса — вебхуком или прямым запросом. Как принимать вебхуки так, чтобы подделанное или повторное уведомление не закрыло заказ, мы разбираем в отдельной статье о безопасной обработке подтверждений по вебхукам.
Если бы все переводы приходили точными и вовремя, сверка заканчивалась бы на галочках. На практике остаток после сопоставления — это и есть её главный результат. Расхождений несколько, и у каждого свой разбор:
Разбирать недоплату и переплату руками не обязательно: если у платёжного сервиса есть допуск по сумме, мелкую разницу он закрывает сам. У CryptumPay допуск в процентах задаёт сам продавец: если разница укладывается в него, платёж подтверждается без вопросов; если недоплата больше допуска, окно оплаты само просит покупателя доплатить, и на это у него есть до двух попыток. Переплату покупатель запрашивает назад из того же окна оплаты, и возврат делает CryptumPay, а не вы вручную.
Для магазина, который принимает криптовалюту на свой кошелёк, каждое из этих расхождений — ручная работа: найти, посчитать, вернуть и записать. Как считать возврат при переплате и что делать с ошибочным переводом, мы разбираем отдельно в материале о возврате криптовалютного платежа при переплате, недоплате и ошибке.

Самая частая путаница в сверке криптоплатежей — не адреса, а суммы. У одного заказа их оказывается три, и все три верные:
Сверять заказ нужно со второй суммой: она отвечает на вопрос «заплатил ли покупатель». Третью сумму сверяют уже не с заказом, а с итогом дня: сколько всего должно было лечь на баланс после комиссий и сколько легло. Если хранить только одно из трёх чисел, через месяц не получится объяснить ни бухгалтеру, ни себе, куда делись 0,6 USDT с каждого заказа.
У CryptumPay сумму счёта выставляют в одной из обычных валют — долларах, евро, рублях, тенге, юанях и ещё девяти, — и это только валюта номинала. Какой бы монетой ни заплатил покупатель, при поступлении она сразу конвертируется в USDT, и платёж зачисляется на USDT-баланс продавца. Комиссия CryptumPay — 1 % за успешный платёж, на больших объёмах от 0,5 %, и её можно переложить на покупателя. Сумма, зачисленная после всех комиссий, приходит в поле income вебхука finished, так что третье число у вас есть в момент завершения платежа, а не в конце месяца.
Откуда вообще берутся комиссии в переводе, кто их платит и почему в одной сети они почти незаметны, а в другой ощутимы, мы объясняем в разборе о том, из чего складывается стоимость криптоплатежа для бизнеса.
Сверка, которую делают «когда накопится», превращается в разбор полугодовой кучи. Рабочий ритм — раз в день, и у процедуры пять шагов:
Чтобы потом не восстанавливать платёж по памяти, от каждого стоит хранить четыре группы полей:
Этот же набор нужен и для бухгалтерии, которая будет отражать выручку: без курса на момент оплаты и без суммы зачисления ей не из чего составить проводку. Как отражать полученную криптовалюту и какие документы к ней прикладывать, мы разбираем в статье о том, как вести учёт криптовалюты, которую бизнес получает в качестве оплаты.

Попросите у покупателя TXID — номер транзакции, который показывает кошелёк или биржа после отправки. Вставьте его в обозреватель блоков той сети, в которой он платил, и посмотрите адрес получателя, сумму и число подтверждений. Если адрес ваш и подтверждений достаточно — деньги пришли; если TXID не находится, перевод не был отправлен, и обещания кошелька «в обработке» ничего не значат. Если вы принимаете через сервис, ту же проверку сделает он: статус заказа покажет, замечен ли перевод в сети.
Прямой связи между сетью и 1С нет: переводы в 1С сами не попадают. Их переносят либо таблицей — выгружают список платежей из личного кабинета сервиса или из своей базы и загружают как документы поступления, — либо через стороннее расширение, которое умеет читать данные из сети или из отчёта сервиса. В обоих случаях перед загрузкой нужен набор полей из раздела про регулярную сверку: без курса и суммы зачисления документ не заполнить.
Есть: для Ethereum и сетей на его основе — web3.py, для TRON — tronpy, и у обозревателей блоков есть открытые API, по которым можно запрашивать переводы на адрес. Но библиотека решает только половину задачи: она покажет перевод, а выдачу адресов на каждый заказ, подсчёт подтверждений и обработку недоплат придётся писать самому. При сотнях платежей в месяц проще взять вебхуки платёжного сервиса, чем писать и поддерживать свой разбор сети.
Сначала посмотреть сеть и монету: перевод не в той сети или не той монетой — это ошибочный перевод, а не оплата, и разбирают его отдельно от сверки. Если перевод на вашем адресе в нужной сети, ищите заказ по сумме и времени, и первым делом среди счетов, закрытых по сроку: перевод мог просто опоздать. Нашли покупателя — выполняете заказ или возвращаете деньги; не нашли — записываете перевод как невыясненный и ждёте, пока покупатель объявится сам: по одному адресу отправителя узнать, кто он, нельзя.
Раз в день, если платежей хотя бы несколько в неделю: за сутки остаток расхождений ещё помнится и разбирается за минуты. При единичных платежах в месяц сверять можно по факту каждого, но итог месяца всё равно стоит сводить отдельно, чтобы баланс сошёлся с суммой зачислений. Реже месяца сверять не советуем: по переводу трёхмесячной давности покупателя уже не найти.
Статья описывает практику сверки и не является юридической, бухгалтерской или налоговой консультацией: порядок отражения криптовалютной выручки в учёте зависит от вашей юрисдикции и требует проверки с профильным специалистом.
Создайте аккаунт и подключите оплату самостоятельно, или свяжитесь с нами и мы поможем всё настроить