Реалізація холдування коштів на сайті
Уявіть: клієнт замовляє будівельні матеріали з доставкою. Вартість доставки залежить від ваги, яка стає відомою лише після збірки. Якщо одразу списати всю суму, при скасуванні або уточненні вартості доведеться робити повернення. Це збільшує операційні витрати на 25-40% і погіршує користувацький досвід. Повернення та chargeback обходяться бізнесу в 2-3% від обороту. Ми вирішуємо цю проблему за допомогою двостадійних платежів — холдування. Воно блокує кошти на карті, але не списує їх до підтвердження. У результаті chargeback скорочується вдвічі, а клієнти отримують прозорий процес.
Холдування — це авторизація платежу без негайного списання. Гроші блокуються на карті покупця, але залишаються в банку. Продавець може захопити (capture) лише фактичну суму або скасувати холд, якщо угода не відбулася. На практиці це скорочує кількість chargeback на 30-40% і виключає повернення переплат. Для бізнесу це означає швидший цикл відвантаження — в середньому в 1.5 рази.
Двостадійна оплата особливо актуальна для послуг із змінною вартістю, попередніх замовлень і відкладеного списання. Вона дає гнучкість бізнесу та безпеку клієнту.
Які проблеми вирішує холдування?
- Скасування замовлення. Гроші не йдуть продавцю до підтвердження — при скасуванні холд знімається автоматично або за запитом. Це виключає тривалі повернення.
- Змінна вартість. Доставка, вага, комплектація — підсумкова ціна невідома заздалегідь. Холдування дозволяє авторизувати максимальну суму, а списати реальну, використовуючи partial capture.
- Підтвердження якості. Послуга надана, клієнт задоволений — лише тоді захоплення коштів. Це знижує ризик для сервісних компаній.
Як працює двостадійна оплата?
Процес включає дві операції: authorize (блокування) та capture (списання). Між ними проходить від кількох хвилин до 7–30 днів залежно від банку. Ми налаштовуємо платіжний шлюз, обробляємо статуси та гарантуємо коректне скасування холду.
Stripe
У Stripe холдування вмикається параметром capture_method: manual:
$paymentIntent = \Stripe\PaymentIntent::create([ 'amount' => $order->total_cents, 'currency' => 'eur', 'capture_method' => 'manual', 'payment_method_types' => ['card'], 'metadata' => ['order_id' => $order->id], ]); Після 3DS-підтвердження статус — requires_capture. Гроші заблоковані. Для списання:
\Stripe\PaymentIntent::capture($order->stripe_payment_intent_id, [ 'amount_to_capture' => $finalAmountCents, // менше або дорівнює початковій сумі ]); Stripe підтримує partial capture — можна списати менше, решта автоматично розблоковується. Це зручно, коли фінальна вартість виявилася нижчою.
YooKassa
Аналогічно в YooKassa:
$payment = $client->createPayment([ 'amount' => ['value' => '1500.00', 'currency' => 'RUB'], 'capture' => false, 'payment_method_data' => ['type' => 'bank_card'], 'confirmation' => ['type' => 'redirect', 'return_url' => $returnUrl], 'description' => 'Замовлення #' . $order->id, ], uniqid('', true)); Списання:
$client->capturePayment( ['amount' => ['value' => '1500.00', 'currency' => 'RUB']], $order->yookassa_payment_id, uniqid('', true) ); Скасування холду
Якщо замовлення скасовано до списання — обов'язково скасовуємо авторизацію, інакше гроші залишаться заблокованими до закінчення терміну. У Stripe:
\Stripe\PaymentIntent::cancel($order->stripe_payment_intent_id, [ 'cancellation_reason' => 'abandoned', ]); У YooKassa — $client->cancelPayment(...).
Порівняння платіжних систем
| Параметр | Stripe | YooKassa | CloudPayments |
|---|---|---|---|
| Спосіб ввімкнення | capture_method: manual |
capture: false |
Двостадійний режим |
| Partial capture | Так (amount_to_capture) | Так | Так (з обмеженнями) |
| Термін холду | 7–31 день | 7 днів | 7 днів |
| Скасування холду | Через API | Через API | Через API |
Типові сценарії використання холдування
| Сценарій | Дія | Результат |
|---|---|---|
| Скасування замовлення до підтвердження | Автоматичне скасування холду через API | Кошти розблоковуються протягом 1–3 днів |
| Часткове відвантаження | Partial capture на суму відвантаженого товару | Залишок розблоковується автоматично |
| Послуга з погодинною оплатою | Авторизація максимальної суми, списання за фактом | Клієнт не переплачує |
| Закінчення терміну холду | Повідомлення менеджера за 2 дні до закінчення | Можливість продовжити або списати |
Чому холдування вигідніше за одностадійну оплату?
Одностадійна оплата — це негайне списання. При скасуванні потрібно робити повернення, яке може зайняти 3–10 днів. При холдуванні повернення не потрібне — просто скасування авторизації. Це економить час і гроші. За нашими даними, перехід на двостадійну оплату знижує операційні витрати на повернення на 50% і збільшує конверсію в повторні покупки на 10-15%.
Моніторинг холдів, що закінчуються
Ми налаштовуємо фонові завдання, які повідомляють менеджерів за 1–2 дні до закінчення терміну — ви встигаєте провести захоплення або продовжити авторизацію. Для цього використовуються cron-скрипти або черги (Redis/Beanstalkd). Гарантуємо, що жоден холд не зніметься непоміченим.
Що входить у роботу
- Аналіз бізнес-логіки та вибір шлюзу.
- Інтеграція API платіжної системи (налаштування авторизації, захоплення, скасування).
- Розробка обробників статусів і сценаріїв помилок.
- Тестування на пісочниці та бойовому контурі.
- Документація щодо використання та підтримка під час релізу.
Наш досвід і гарантії
Ми реалізували холдування для 15+ проєктів: маркетплейси, доставка їжі, фітнес-клуби. Досвід роботи з платіжними шлюзами — 5 років. Гарантуємо коректну обробку всіх випадків: скасування, часткове захоплення, закінчення терміну. Код проходить код-рев'ю та покривається тестами. Ваші клієнти побачать прозорий процес оплати без прихованих списань.
Терміни та вартість
Термін інтеграції — від 3 до 10 робочих днів залежно від складності CMS та специфіки шлюзу. Вартість розраховується індивідуально. Зв'яжіться з нами для попередньої оцінки вашого проєкту. Отримайте консультацію щодо впровадження холдування у вашому бізнесі.







