Депозит в автопрокате: блокировка карты не равна поступлению денег
5 мин чтения

В карточке аренды стоит «депозит 10 000», и менеджер считает эту сумму поступившими деньгами. На самом деле банк мог только заблокировать её на карте клиента. Когда машина возвращается, нужно либо снять блокировку, либо выполнить согласованное списание, а не оформлять одинаковый «возврат депозита» во всех случаях. Одного денежного поля для таких сценариев недостаточно.
Сначала определите способ приёма депозита
Передача денег и карточная блокировка создают разные состояния. При отдельной авторизации сумма резервируется на платёжном средстве до последующего списания или завершения блокировки. Adyen описывает авторизацию и capture как разные этапы, а запрос списания обрабатывается асинхронно. Само наличие ответа на запрос ещё не позволяет назвать деньги окончательно зачисленными на расчётный счёт.
Поэтому в CRM полезно хранить способ обеспечения, идентификатор авторизации, доступную к списанию сумму и подтверждённые результаты операций. Название «депозит» говорит о бизнес-назначении, но не заменяет технический статус платежа.
| Состояние после события | Ещё заблокировано | Всего списано | Освобождено без списания | Возвращено из списанного | Списано минус возвраты |
|---|---|---|---|---|---|
| Начальная авторизация | 10 000 | 0 | 0 | 0 | 0 |
| capture на 2 500 | 0 | 2 500 | 7 500 | 0 | 2 500 |
| refund на 500 | 0 | 2 500 | 7 500 | 500 | 2 000 |
В таблице выбран режим одного списания. Частичный capture закрывает авторизацию: 2500 переходят в учтённое списание модели, остальные 7500 освобождаются без списания. Последующий refund на 500 относится к ранее списанным деньгам. Он не увеличивает обратно доступный лимит этой закрытой авторизации.
Режим частичного списания нужно уточнять отдельно
В документации Stripe описан обычный сценарий, где частичное списание освобождает остаток и второе списание той же авторизации не выполняется. При этом существуют отдельно поддерживаемые варианты нескольких списаний. Нельзя по одному слову «частичный» определить, останется ли остаток доступным для следующего действия.
Учебный инструмент намеренно поддерживает только единственный capture. Если после 2500 попытаться списать ещё 1000 по той же авторизации, последовательность будет отклонена. Это проверка выбранной схемы, а не утверждение, что все банки и платёжные системы устроены только так.
- capture
- Одно положительное списание, не больше ещё открытой блокировки. В модели завершает её полностью.
- release
- Снятие всей открытой блокировки без списания; сумма в строке события равна нулю.
- expire
- Подтверждённое истечение открытой авторизации с освобождением суммы; отдельный код причины завершения.
- refund
- Положительный возврат из ранее списанной суммы, не больше её невозвращённой части.
Освобождение блокировки и возврат не взаимозаменяемы
Если из авторизованных 10 000 ничего не списали, учебное release оставляет ноль блокировки и ноль списания. Refund здесь не возникает: возвращать из списанного нечего. И наоборот, после полного списания снять старую блокировку вместо возврата уже нельзя — она завершена.
Документация Stripe по возвратам отделяет отмену незавершённого платежа от возврата после списания. В рабочем процессе нужно смотреть актуальный статус конкретной операции. Формулировка для клиента также должна соответствовать выполненному действию, без обещания точного времени изменения банковского баланса по одному локальному событию.
Как проверить арифметику модели
Начальная авторизация всегда равна сумме трёх величин: ещё открытой блокировки, всего списанного и освобождённого без списания. Отдельно всё списанное равно сумме возвратов и оставшегося списания. Возврат не следует одновременно прибавлять к освобождённой части: это разные ветви движения.
Эти равенства помогают обнаружить двойной учёт в учебной истории. Они не подтверждают поступление на банковский счёт, платёжеспособность клиента или корректность введённых событий. Сумма необходимого списания поступает извне: инструмент не определяет ущерб и не назначает удержания.
Почему в форме нет автоматического срока блокировки
Срок зависит от платёжного метода, схемы и условий авторизации. Источник Stripe показывает разные окна и отдельные условия продления. Поэтому модель не подставляет всем семь дней и не решает по календарю, что деньги освободились. Событие expire вводят как подтверждённый результат; реальная система должна получать применимый срок и статус из своего платёжного процесса.
Что показать на демонстрации CRM
- Авторизацию без списания, которая не увеличивает поступления.
- Снятие блокировки и отдельный возврат после capture.
- Частичное списание с понятным состоянием оставшейся суммы.
- Отказ повторного действия, если режим его не допускает.
- Сверку идентификаторов и статусов с выбранным провайдером, включая ошибки и ожидание.
На главной AUTO555 описаны учёт оплат и депозитов. Это не подтверждает наличие интеграции с названными в статье провайдерами или выбранного режима авторизации на любом тарифе. Подготовьте такие примеры при обсуждении платёжного сценария: они помогут отделить бизнес-запись о депозите от реально поддерживаемых банковских действий.
Разделить блокировку, списание, снятие остатка и возврат
Учебная одна авторизация с единственным списанием: capture закрывает блокировку и освобождает незахваченную часть. release/expire снимают всю открытую блокировку, сумма события0. refund возвращает уже списанную сумму. События считаются подтверждёнными и успешными; нет pending/failed, нескольких capture, продления, реального эквайринга, сроков банка или проверки зачисления. Это не функция, заявленная как уже подключённая в AUTO555. Расчёт выполняется на вашем устройстве, введённые данные никуда не отправляются.
Auto555 — облачная CRM для автопроката: брони, договоры, выдача и приёмка, депозиты и финансы в одном окне.
Начать бесплатно