# D-009. Заказы, платежи, движения по счёту; всё через баланс Статус: принято, 20.10.2026. ## Контекст У пользователя есть счёт. Заказ можно оплатить картой, с баланса или частично. Нужна ручная оплата из админки, которая запускает те же действия, что и настоящая. ## Решение 1. Три сущности: Заказ (что покупают), Платёж (деньги извне), Движение по счёту (неизменяемые записи «+» и «−»). 2. Любой успешный платёж зачисляется на баланс, любой заказ списывается с баланса. 3. Одна точка проведения `processPayment`, идемпотентная. 4. Ручная оплата — платёжная система `manual`. Платёж проводится, когда получает статус `succeeded`. Галочки «провести как реальную» нет. 5. Корректировка баланса — отдельная операция: только движение, без цепочки действий. ## Рассмотренные варианты 1. Одна сущность «транзакция» — смешивает коммерческий документ, деньги провайдера и баланс; сложно с частичной оплатой и повторами вебхуков. 2. Галочка «провести как реальную оплату» — не нужна: проведение запускает смена статуса. ## Последствия Правило «списывается только разница с балансом» получается само. Подробно — [04-billing.md](../04-billing.md).