Как подключить ЮKassa на сайт и не нарушить 54-ФЗ
· 7 мин чтения · Даниил Федулов
54-ФЗ — закон о применении контрольно-кассовой техники, который требует выдавать покупателю фискальный чек на каждый расчёт, включая оплату на сайте. Чтобы принимать оплату по закону, нужны две вещи: договор с платёжным сервисом (например, ЮKassa) и фискальные чеки по 54-ФЗ на каждый платёж. Самозанятым проще всего: онлайн-касса не нужна, чек формируется в приложении «Мой налог». ИП и компаниям нужна онлайн-касса — своя или облачная. Разбираю по шагам, что делать, как технически выглядит создание платежа с чеком и на чём чаще всего спотыкаются.
Сразу оговорка: я разработчик, а не бухгалтер. Как подключить оплату технически и не растерять чеки — ко мне; тонкости вашей системы налогообложения — к бухгалтеру.
Кому что нужно по 54-ФЗ
Самозанятые (НПД)
Онлайн-касса не нужна. Чек на каждый платёж формируется в приложении «Мой налог» и отправляется покупателю. ЮKassa работает с самозанятыми: можно принимать оплату на сайте или в Telegram-боте, главное — не забывать про чек на каждый приход. Именно так работаю я сам: договор, оплата, чек из «Моего налога».
У режима самозанятости есть ограничения — по видам деятельности и годовому доходу, а условия работы платёжных сервисов с самозанятыми время от времени уточняются. Актуальные цифры и правила лучше свериться напрямую в приложении «Мой налог» или у бухгалтера, а не по статьям в интернете, включая эту.
ИП и ООО
Нужна онлайн-касса, которая отправляет фискальный чек покупателю в момент оплаты. Держать физическую кассу для интернет-платежей необязательно — есть облачные кассы, которые арендуются и работают автоматически в связке с платёжным сервисом. ЮKassa умеет передавать данные о покупке в кассу, чтобы чек ушёл сам, — это и есть та связка, которую чаще всего просят настроить.
Подключение ЮKassa по шагам
- Заявка и проверка. Регистрируетесь в ЮKassa, заполняете данные о бизнесе (для самозанятого — статус НПД, для ИП и ООО — реквизиты и систему налогообложения), подписываете договор. Сервис проверяет заявку — обычно это вопрос нескольких дней, срок зависит от загруженности сервиса и полноты данных.
- Создание магазина. После одобрения вы получаете идентификатор магазина (shopId) и секретный ключ — их использует сайт или бот для создания платежей. Обычно выдаётся отдельная пара ключей для тестового режима и отдельная — для боевого.
- Интеграция на сайте. Для популярных CMS у ЮKassa есть готовые модули; для самописных сайтов и Telegram-ботов платежи создаются через API запросом с описанием суммы и способа подтверждения. Здесь же настраивается передача данных для чеков: состав покупки, ставка налога, система налогообложения и способ доставки чека покупателю — на email или телефон.
- Тестовый платёж. Проводите оплату в тестовом режиме: платёж создаётся, статус возвращается на сайт, чек формируется — все шаги должны отработать так же, как будут работать в боевом режиме, только без реального списания денег. Только после этого включается боевой режим.
- Контрольная покупка. Реальный платёж на небольшую сумму: деньги пришли, заказ отметился оплаченным, чек дошёл до покупателя. Теперь можно принимать оплату у настоящих клиентов.
Комиссию ЮKassa не буду называть по памяти — она зависит от оборота и способа оплаты, актуальные цифры смотрите в тарифах на сайте сервиса.
Как выглядит создание платежа с чеком
Технически платёж с чеком 54-ФЗ создаётся одним запросом к API ЮKassa: в теле запроса передаётся сумма, ссылка для возврата покупателя и объект receipt — именно он превращает обычный платёж в платёж с чеком. Пропустить его — самая частая техническая ошибка при самостоятельной интеграции:
curl https://api.yookassa.ru/v3/payments \
-X POST \
-u ВАШ_SHOP_ID:ВАШ_SECRET_KEY \
-H "Idempotence-Key: <уникальный-id-запроса>" \
-H "Content-Type: application/json" \
-d '{
"amount": { "value": "1500.00", "currency": "RUB" },
"confirmation": {
"type": "redirect",
"return_url": "https://vashsajt.ru/order/success"
},
"capture": true,
"description": "Заказ №1042",
"receipt": {
"customer": { "email": "client@example.com" },
"items": [
{
"description": "Консультация по настройке сайта",
"quantity": "1.00",
"amount": { "value": "1500.00", "currency": "RUB" },
"vat_code": 1
}
]
}
}'Смысл частей: amount — сумма платежа целиком, receipt.items — состав покупки построчно (у каждой позиции — своё описание, количество, сумма и код ставки НДС), а receipt.customer — контакт покупателя, куда уйдёт чек (email или телефон). Без этого блока платёж пройдёт, деньги спишутся, а чек не сформируется — формально это уже нарушение 54-ФЗ, даже если покупатель ничего не заметил сразу.
Это иллюстрация структуры запроса, а не финальный рецепт: точные названия полей, допустимые коды ставок НДС и способ передачи ключей авторизации нужно сверять с актуальной документацией ЮKassa — формат API меняется, и то, что верно сегодня, через год может выглядеть иначе.
Типовые ошибки
Большинство проблем с оплатой на сайте — не про сложную технику, а про то, что один из шагов подключения выполнили не до конца или перепутали порядок. Вот с чем сталкиваюсь чаще всего:
- Деньги принимаются, чеки не уходят. Кассу подключили, а объект
receiptв запросе не передали. Это прямое нарушение 54-ФЗ, которое всплывает при первой же жалобе покупателя или проверке. - Неверная ставка налога в чеке. В настройках чека указана не та ставка НДС (
vat_code) или система налогообложения — бухгалтерия потом разбирает эти чеки вручную. - Путаница тестового и боевого ключа. Тестовый и боевой shopId с секретным ключом выглядят похоже, и их легко перепутать местами. Результат — «всё работает», только деньги не списываются по-настоящему, либо наоборот: боевые платежи уходят через тестовый контур и нигде не фиксируются. Проверяйте режим явно перед каждым запуском.
- Сайт не узнаёт об оплате. Уведомления о статусе платежа (вебхуки) не настроены: клиент заплатил, а заказ висит «неоплаченным». Про то, как проверять вебхуки, я писал в статье про связку форм с CRM — принцип тот же: проверять по конечному результату, а не по «вроде должно было сработать».
- «Пока принимаю на личную карту». Для бизнеса это нарушение — и налоговой, и правил банков. Подключение официальной оплаты стоит от 2 000 ₽ и делается быстрее, чем кажется.
Коротко
Если вы самозанятый — касса не нужна, но чек из «Мой налог» на каждый платёж обязателен. Если вы ИП или ООО — без облачной или физической кассы не обойтись, и её нужно связать с платёжным сервисом так, чтобы чек уходил автоматически, а не «когда вспомнят». В обоих случаях главное — не путать тестовый режим с боевым и не забывать про объект receipt в запросе на создание платежа: без него оплата пройдёт, а чек — нет.
Сколько стоит подключение
Моя работа — подключение оплаты на сайт или в Telegram-бота с настройкой чеков и проверкой всего контура: от 2 000 ₽ за типовое подключение, с обязательным тестовым платежом перед боевым режимом. Со стороны ЮKassa вы платите только комиссию с платежей — по их тарифам. Если оплаченные заказы должны сразу попадать в CRM — это соседняя задача, интеграция с amoCRM или Bitrix24. А если оплата нужна в боте, посмотрите ещё разбор цен на Telegram-ботов: там оплата и CRM идут одним контуром.