Перейти к содержимому
11 июля 2026 г.·9 мин чтения·обновлено 03 октября 2026 г.

Почему на вашем сайте не проходят оплаты картой: ошибки 3D Secure / SCA и как их устранить

Ошибка 3D Secure значит, что не завершилась проверка, которую запросил банк. Разбираем причины, коды отказов и что исправить самому.

Ошибка 3D Secure («3D Secure failed», «ошибка прохождения проверки 3D Secure») означает, что не завершилась дополнительная проверка, которую запросил банк покупателя: подтверждение в банковском приложении, одноразовый код из SMS или биометрия. Это не отказ из-за нехватки денег и чаще всего не поломка сайта: обычно покупатель не успел подтвердить платёж или не получил запрос, реже устаревшая платёжная интеграция не может показать окно банка. Ниже разберём, как отличить одно от другого по данным в панели платёжного провайдера и что исправлять.

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

Что такое 3D Secure и SCA

SCA (Strong Customer Authentication, строгая аутентификация клиента) — европейское требование из директивы PSD2, действующее с 14 сентября 2019 года. При онлайн-оплате картой в Европейской экономической зоне банк обязан убедиться, что платит именно держатель карты, и использовать для этого минимум два фактора из трёх: то, что вы знаете (PIN, пароль), то, что у вас есть (телефон), и то, что присуще только вам (отпечаток пальца, лицо).

3D Secure — механизм, через который эта проверка проводится. Покупатели видят его под названиями Visa Secure, Mastercard Identity Check, American Express SafeKey, у карт «Мир» — Mir Accept. Актуальная версия, 3DS2, передаёт банку данные об устройстве и операции, и банк может одобрить платёж без лишних вопросов («frictionless», без участия покупателя) или запросить явное подтверждение («challenge»). Старую версию, 3D Secure 1, крупные платёжные системы больше не поддерживают, поэтому интеграция, построенная на ней, будет давать отказы.

За пределами Европы правила зависят от страны, но банк-эмитент в любом случае может запросить 3D Secure по операции, которая кажется ему рискованной. Когда этот шаг работает, покупатель его почти не замечает. Когда что-то настроено неправильно, появляются отказы, пустые страницы или бесконечные циклы.

Не каждый платёж требует подтверждения: исключения SCA

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

  • Небольшие суммы: платежи до 30 евро могут проходить без подтверждения, но банк снова потребует аутентификацию, если исключение уже использовано пять раз с последней успешной проверки или сумма таких платежей превысила 100 евро.
  • Анализ риска операции: провайдер может запросить исключение для низкорисковых платежей в пределах, которые зависят от его уровня мошенничества.
  • Регулярные платежи на фиксированную сумму: подтверждается первый платёж, следующие могут идти без него.
  • Платежи по инициативе продавца: списания с сохранённой карты без участия покупателя формально не подпадают под SCA, если карта была корректно подтверждена при сохранении.
  • Доверенные получатели: если банк покупателя это позволяет, он может добавить ваш магазин в список доверенных.

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

Самые частые причины, по источникам

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

На стороне покупателя:

  • Не успел подтвердить: запрос в приложении банка или код из SMS действуют ограниченное время, после чего платёж отклоняется.
  • Отключены уведомления, банковское приложение не установлено или устарело, в банке указан старый номер телефона.
  • Закрыл окно банка, нажал «Отмена» или несколько раз ввёл неверный код.
  • Блокировщик всплывающих окон или агрессивный блокировщик рекламы «съедает» окно 3D Secure; VPN может вызвать дополнительные проверки в банке.

На стороне банка:

  • Карта не подключена к 3D Secure (услуга для неё не активирована) или для неё закрыты онлайн-платежи.
  • Сервер аутентификации банка временно недоступен.
  • Банк отклоняет операцию по собственным правилам оценки риска.

На стороне сайта:

  • Устаревшая интеграция: она работает на 3D Secure 1 или на старом API (Stripe прямо предупреждает, что интеграции на старом Charges API могут получать много отказов от банков, применяющих SCA).
  • Окно банка не может загрузиться: слишком строгая политика безопасности контента (Content Security Policy), атрибут sandbox на iframe или плагин безопасности, который блокирует домены провайдера.
  • Не обрабатывается возврат из банка: страница зависает, а заказ навсегда остаётся «в ожидании».
  • Списания с сохранённых карт (подписки, повторные платежи) идут по картам, которые не прошли аутентификацию при сохранении.

Как диагностировать проблему шаг за шагом

Не гадайте. Откройте неудавшиеся транзакции в панели платёжного провайдера (Stripe, Adyen, PayPal/Braintree или местный платёжный провайдер, например NETOPIA, PayU или EuPlătesc в Румынии) и посмотрите точную причину. В Stripe это раздел Transactions > Payments с фильтром по статусу: «Incomplete» — платежи, которые покупатель начал, но не завершил (обычно застряли на аутентификации), «Failed» — отклонённые списания с сохранённой карты без участия покупателя. Причина видна при наведении курсора на метку статуса.

Что вы видитеЧто это значитКто решает
authentication_required (Stripe)Банк требует 3D Secure, а шаг не завершён; при списании с сохранённой карты покупателя нужно вернуть для подтвержденияПокупатель/сайт
authentication_not_handled (Stripe)Платёж пошёл дальше без нужной аутентификации, и банк отказал повторноСайт
Статус «Incomplete» (Stripe)Платёж остановился на аутентификации: покупатель ушёл или страница оплаты не показала следующий шагПокупатель/сайт
Код 39 (NETOPIA)Отказ: аутентификация 3D Secure не пройденаПокупатель
insufficient_fundsНедостаточно средств; к 3D Secure отношения не имеетПокупатель
expired_card, incorrect_cvcКарта просрочена или неверный CVCПокупатель
generic_decline, do_not_honorБанк отказал, не объяснив причинуБанк

Затем ищите закономерность. Все отказы от одного банка? Только с телефонов? Только при переходе по ссылкам из Instagram или Facebook? Если отказы сосредоточены у одного банка, вероятно, причина на его стороне (временный сбой или настройки его карт); если они идут отовсюду, смотрите на интеграцию.

Напоследок протестируйте оплату сами. В тестовом режиме у провайдеров есть карты, которые принудительно вызывают 3D Secure (в Stripe карта 4000 0000 0000 3220 всегда требует аутентификацию), и можно смоделировать и успех, и отказ. Потом попробуйте настоящую карту на телефоне и на компьютере. Если у вас работает, а у клиентов нет, дело обычно в их устройстве, банке или сети. Если не работает и у вас — это настройка. Про другие причины, по которым покупатель не может оплатить заказ, читайте в статье что делать, если клиенты не могут оплатить на сайте.

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

Для разработчика: что говорит ответ 3D Secure

Некоторые провайдеры показывают в карточке транзакции стандартные поля EMV 3-D Secure, по которым видно, где сорвалась аутентификация; у других их можно попросить в поддержке. Самые полезные значения:

Поле и значениеЧто это значитУказывает на
transStatus = NНе аутентифицирован, операция отклоненаПокупатель
transStatus = RАутентификацию отклонил банк-эмитентБанк
transStatus = UАутентификацию не удалось провестиТех. сбой
challengeCancel = 01Держатель карты нажал «Отмена»Покупатель
challengeCancel = 05Тайм-аут на сервере банка: первый запрос из окна подтверждения не пришёл, обычно потому что окно не загрузилосьСайт
transStatusReason = 13Держатель карты не подключён к услугеБанк
transStatusReason = 14Тайм-аут на сервере банкаПокупатель

Что проверить в коде:

  • Используйте актуальный API провайдера с поддержкой SCA (в Stripe: Payment Intents, Checkout или Payment Element) и вовремя обновляйте платёжный плагин.
  • Обрабатывайте состояние, когда платёж требует дополнительного действия (в Stripe статус requires_action): показывайте окно банка в модальном окне, в iframe или через редирект с return_url, а после возврата заново проверяйте статус платежа.
  • Разрешите домены провайдера в Content Security Policy (для Stripe: js.stripe.com, hooks.stripe.com и домен вашего return_url) и не ставьте атрибут sandbox на iframe 3D Secure: страницы некоторых банков в таком режиме не работают.
  • Подтверждайте заказ по серверному уведомлению провайдера (webhook или IPN), а не только по возврату браузера. Иначе покупатель, закрывший вкладку после оплаты, останется со списанными деньгами и заказом «в ожидании».
  • Для подписок проводите аутентификацию карты при её сохранении и продумайте сценарий, в котором покупатель возвращается и подтверждает платёж, если банк снова этого потребует. Подробнее — в статье о возврате неудавшихся платежей по подпискам.

Почему на телефоне ошибка 3D Secure случается чаще

На смартфоне у шага 3D Secure больше мест, где он может сорваться:

  • Покупатель уходит из браузера, чтобы подтвердить платёж в банковском приложении. Когда он возвращается, некоторые телефоны уже перезагрузили или закрыли страницу, и если сайт полагается только на возврат браузера, заказ теряется.
  • Встроенные браузеры приложений (когда магазин открывают по ссылке из Instagram, Facebook или TikTok) иногда плохо работают с новыми окнами и редиректами. Если отказы приходят оттуда, протестируйте именно этот путь.
  • Уведомления банковского приложения отключены или задерживаются режимом энергосбережения, а при слабом сигнале SMS с кодом приходит слишком поздно.
  • Apple Pay и Google Pay — хорошая альтернатива на телефоне: покупатель подтверждает оплату отпечатком, Face ID или кодом телефона, и при оплате через кошелёк классическое окно 3D Secure обычно не открывается.

Что можно исправить самому, а что требует разработчика

Без программиста можно:

  • Добавить короткую строку на странице оплаты: «Вам придёт запрос на подтверждение в банковском приложении. Подтвердите его и вернитесь на эту страницу, чтобы завершить заказ». Многие покупатели уходят просто потому, что не понимают экран банка.
  • Предложить альтернативный способ оплаты (Apple Pay или Google Pay, банковский перевод, наложенный платёж) для тех, у кого 3D Secure не проходит.
  • Проверить, что платёжный плагин или модуль обновлён до последней версии и что провайдер подтверждает работу через 3D Secure 2.
  • Разместить на странице помощи список из следующего раздела.

Что требует разработчика: обновление интеграции, переход на актуальный API провайдера, корректный показ окна банка, обработка возврата после аутентификации и подтверждение заказов через webhook. Если страница зависает сразу после окна банка, почти наверняка код не обрабатывает ответ, пришедший от 3D Secure.

Чего сделать нельзя — отключить 3D Secure, чтобы избавиться от отказов. Stripe, например, не позволяет вручную выключить его через API.

Если ошибка 3D Secure возникла у вас при оплате

Этот список можно разместить на странице помощи магазина:

  • Повторите оплату ещё раз. Часто просто истекло время на подтверждение.
  • Проверьте, что банковское приложение обновлено, уведомления включены, а в банке указан ваш актуальный номер телефона.
  • Временно отключите блокировщик рекламы и VPN и откройте магазин в Chrome, Safari или Firefox, а не во встроенном браузере Instagram или Facebook.
  • Убедитесь в приложении банка, что онлайн-платежи по карте разрешены, а лимиты позволяют провести сумму.
  • Если ошибка повторяется, позвоните в банк или оплатите другой картой либо другим способом.

Как мы работаем с платежами в MPO Web Studio

Когда мы делаем интернет-магазин, мы относимся к оплате как к самой чувствительной части сайта, ведь именно там деньги зарабатываются или теряются. Мы используем провайдеров с нативной поддержкой 3D Secure 2, подтверждаем заказы по серверным уведомлениям, тестируем оплату на телефоне и компьютере до запуска и добавляем подсказки, которые проводят покупателя через шаг подтверждения в банке.

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

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

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

Что означает ошибка 3D Secure при оплате картой?+

Банк запросил дополнительное подтверждение (в приложении, кодом из SMS или биометрией), но оно не завершилось: покупатель не успел подтвердить, нажал «Отмена», ввёл неверный код или окно банка не загрузилось. Это не отказ из-за нехватки средств.

Что делать при ошибке прохождения проверки 3D Secure?+

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

Почему у меня оплата проходит, а у клиентов нет?+

Обычно дело в разнице устройств, банков или сети: отключённые уведомления, блокировщик рекламы, который не даёт открыться окну 3D Secure, или карта, не подключённая к услуге. Протестируйте с телефона, по ссылке из Instagram и с другой картой, чтобы найти, где ломается.

Можно ли отключить 3D Secure, чтобы не было отказов?+

Нет. Для карт из Европейской экономической зоны SCA обязательна, и без аутентификации банки всё равно отклоняли бы многие платежи; Stripe, например, не даёт выключить 3DS через API. К тому же по успешно аутентифицированным платежам ответственность за мошенничество обычно переходит к банку-эмитенту, хотя для каждого отдельного платежа это не гарантировано. Решение — правильная интеграция, а не отказ от проверки.

Что означает authentication_required в Stripe?+

Банк требует 3D Secure для этой операции. В Stripe Checkout и Payment Element подтверждение обычно запускается автоматически, а при списании с сохранённой карты покупателя нужно вернуть на сайт, чтобы он подтвердил платёж. Если код приходит даже после успешной аутентификации, покупателю нужно обратиться в свой банк.

3D Secure пройден, но платёж всё равно отклонён. Почему?+

Аутентификация и авторизация — разные шаги. После подтверждения банк ещё проверяет баланс, лимиты и риск и может отказать, например из-за недостатка средств.

Нужен ли 3D Secure при оплате через Apple Pay и Google Pay?+

Обычно не в классическом виде: покупатель подтверждает оплату на телефоне отпечатком, Face ID или кодом, а не в окне банка. Поэтому кошельки — хороший запасной вариант для тех, у кого 3D Secure постоянно не проходит.

Бесплатный гид

7 ошибок, которые отпугивают клиентов с вашего сайта

Оставьте email и получите гид прямо здесь, сразу. Без спама.

Отправляя, вы соглашаетесь с Политикой конфиденциальности.
MКоманда MPOОтвечаем лично

Хотите увидеть, как мог бы выглядеть сайт вашего бизнеса?

Напишите нам в WhatsApp — и мы бесплатно подготовим демо-сайт с названием вашего бизнеса. Сначала смотрите, потом решаете — без обязательств.

Запросить бесплатный демо-сайтОбычно отвечаем за пару минут