# Переплата

> Клиент перевёл больше, чем нужно: CryptoLike оставляет статус paid, зачисляет всю сумму на баланс и показывает излишек в поле overpaid_amount.

Source: https://cryptolike.net/ru/glossary/overpaid-payment
Updated: 2026-09-24

Криптоплатёж, по которому подтверждённые переводы в сумме больше требуемого, так что сверх цены заказа остаётся излишек.

## Как это работает в CryptoLike

Отдельного статуса «переплачено» в CryptoLike нет: переплата — это `paid` с `overpaid_amount` больше нуля. Вся подтверждённая сумма вместе с излишком зачисляется на ваш баланс, а вебхук `invoice.paid` содержит `overpaid_amount`, поэтому ваша система видит разницу в том же событии, которое подтверждает заказ. `remaining_amount` при этом никогда не бывает отрицательным.

Если на тот же адрес приходит ещё один перевод после `paid`, CryptoLike тоже его зачисляет и повторно отправляет `invoice.paid` с увеличенным `overpaid_amount`. Обрабатывайте каждый `event_id` один раз и привязывайте выдачу заказа к id платежа: второй `invoice.paid` по тому же платежу — это не второй заказ. Страница оплаты сообщает плательщику: «Платёж подтверждён. Излишек зачислен продавцу.» — клиент понимает, куда ушла лишняя сумма.

Дальше решаете вы: отгрузите заказ и договоритесь с клиентом об излишке — зачтите его в следующий заказ или верните выплатой на адрес, который назовёт клиент. Обычные причины — сумма, округлённая вручную в большую сторону, и случайно повторённый перевод. Обратная ситуация, перевод меньше нужного, — это [недоплата](https://cryptolike.net/ru/glossary/underpaid-payment).

## Пример

Вебхук CryptoLike `invoice.paid` при переплате выглядит как обычный подтверждённый платёж, только излишек вынесен в отдельное поле. Сравнивайте с нулём `overpaid_amount`, а не суммы между собой: так проще и без ошибок округления. Значения ниже условные, а названия полей — часть контракта и не меняются от события к событию:

```json
{
  "type": "invoice.paid",
  "data": {
    "invoice": {
      "status": "paid",
      "ticker": "USDT",
      "payer_amount": "25",
      "paid_amount": "30",
      "remaining_amount": "0",
      "overpaid_amount": "5"
    }
  }
}
```
