# Overpaid payment

> A crypto payment that exceeds the amount due. CryptoLike keeps the status paid, credits the whole sum and reports the surplus in overpaid_amount.

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

A crypto payment whose confirmed transfers add up to more than the amount due, leaving a surplus beyond the price of the order.

## How it works in CryptoLike

CryptoLike has no separate "overpaid" status: an overpayment is `paid` with `overpaid_amount` above zero. The whole confirmed sum, surplus included, is credited to your balance, and the `invoice.paid` webhook carries `overpaid_amount`, so your system sees the difference in the same event that confirms the order. `remaining_amount` is never negative.

If another transfer reaches the same address after the payment is `paid`, CryptoLike credits it as well and sends `invoice.paid` again with a higher `overpaid_amount`. Process each `event_id` once and key your fulfilment on the payment id: a second `invoice.paid` for the same payment is not a second order. The checkout page tells the payer "Payment confirmed. The surplus was credited to the merchant.", so the customer knows where the extra went.

The next step is yours: ship the order, then settle the surplus with the customer — a credit on the next order, or a payout to an address the customer gives you. Typical causes are an amount rounded up by hand and a transfer repeated by mistake. The opposite case, a short transfer, is an [underpaid payment](https://cryptolike.net/glossary/underpaid-payment).

## Example

A CryptoLike `invoice.paid` webhook for an overpayment looks like any other confirmed payment, with the surplus in its own field. Compare `overpaid_amount` with zero rather than comparing amounts yourself. The values below are illustrative; the field names are the contract:

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