# Прив’язка платежу до рахунку

## Опис

У переважній більшості випадків покупці платять рівно вказану в рахунку суму на ваш криптогаманець. Але бувають і випадки, коли покупець може помилитися й оплатити не рівно зарезервовану суму. У цьому разі сервіс не зможе автоматично пов’язати платіж і рахунок, а також позначити рахунок як оплачений. Якщо це станеться, ви як продавець можете вручну пов’язати платіж із рахунком, якщо точно впевнені, який платіж очікуєте. Цю операцію можна зробити через особистий кабінет на сайті або через API.

## Умови прив’язки

Прив’язка виконається, лише якщо одночасно дотримано всіх умов:

1. **Статус рахунку** — `unpaid` або `expired`. Скасовані та вже оплачені рахунки прив’язати не можна. Скасування рахунку незворотне.
2. **Платіж ще не прив’язаний до іншого рахунку.** Один платіж може бути пов’язаний лише з одним рахунком.
3. **Платіж надійшов на гаманець, задіяний у цьому рахунку.**
4. **Платіж укладається у вікно доступних платежів** — доба до та доба після створення рахунку. Платіж, що надійшов раніше за створення рахунку, прив’язати можна; поза межами вікна — не можна.

Якщо рахунок належить чужому проєкту, а ключ обмежено проєктом, метод відповідає `Restricted project`. Якщо не виконано будь-яку іншу умову, надходить загальна помилка без зазначення причини — перевіряйте умови на своєму боці.

## Що відбувається після прив’язки

* Рахунок переходить у статус **Оплачений**.
* Надсилаються сповіщення на email, у Telegram-бот і на Webhook URL — так само, як за автоматичної прив’язки.
* Сума рахунку `invoice.amountFiatUSD` **перезаписується фактично отриманою сумою**, приведеною до USD за курсом на момент прив’язки. Оригінальна сума в `invoice.amountFiat` не змінюється.
* Комісія сервісу перераховується за ставкою тарифу проєкту від суми, яку ви отримали. За переплати вона вища за розраховану під час створення рахунку, за недоплати — нижча.

## Запит

```bash
curl -X POST https://api.bitsby.app/invoices/bindPayment \
  -H "Authorization: Token MSvL2ltaDZdWVjmZURURMVWhqSJLT2NURjhL2Fla1Z1T1IxQTltKs1T3Ay" \
	-F "invoiceId=ade9550d-3dc7-4fd3-b94e-3b4c12aaaa0c" \
	-F "paymentId=a4c9e2ee-9a03-43e5-a1a1-00caf679d16a"
```

## Параметри запиту

| Параметр | Тип даних | Опис | Приклад | Обов’язковий? |
| --- | --- | --- | --- | --- |
| `invoiceId` | UUID | ID рахунку у форматі UUID | ade9550d-3dc7-4fd3-b94e-3b4c12aaaa0c | так |
| `paymentId` | UUID | ID платежу у форматі UUID | a4c9e2ee-9a03-43e5-a1a1-00caf679d16a | так |

## Приклад відповіді

```json
{
   "result":"success",
   "data":"Invoice binded to payment"
}
```
