# Asociar un pago a una factura

## Descripción general

En la gran mayoría de los casos, los clientes pagan a tu billetera cripto exactamente el importe indicado en la factura. Pero a veces un cliente se equivoca y paga algo distinto del importe reservado. En ese caso, el servicio no puede asociar automáticamente el pago a la factura y marcar la factura como pagada. Si esto ocurre, tú como comercio puedes asociar el pago a la factura manualmente, siempre que tengas la certeza de qué pago esperas. Puedes hacerlo en el panel o a través de la API.

## Condiciones de la asociación

La asociación solo se realiza cuando se cumplen todas las condiciones a la vez:

1. **Estado de la factura** —`unpaid` o `expired`. Las facturas canceladas y las ya pagadas no se pueden asociar. La cancelación es irreversible.
2. **El pago aún no está asociado a otra factura.** Un pago solo puede vincularse a una factura.
3. **El pago llegó a una billetera que participa en esta factura.**
4. **El pago entra en la ventana de pago disponible** —24 horas antes y 24 horas después de la creación de la factura. Un pago que llegó antes de crearse la factura puede asociarse; uno fuera de la ventana, no.

Si la factura pertenece a otro proyecto y la clave está restringida a un proyecto, el método responde con `Restricted project`. Si falla cualquier otra condición, vuelve un error genérico sin indicar el motivo —comprueba las condiciones en tu lado.

## Qué ocurre después de la asociación

* La factura pasa a **Pagada**.
* Las notificaciones salen al correo, al bot de Telegram y al Webhook URL —igual que con la asociación automática.
* El importe de la factura `invoice.amountFiatUSD` **se sobrescribe con el importe realmente recibido**, convertido a USD al tipo de cambio del momento de la asociación. El importe original en `invoice.amountFiat` no cambia.
* La comisión del servicio se recalcula según la tarifa del proyecto sobre el importe que recibiste. Con un pago en exceso es mayor que la calculada al crear la factura; con un pago insuficiente, menor.

## Solicitud

```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"
```

## Parámetros de la solicitud

| Parámetro   | Tipo de dato | Descripción                      | Ejemplo                              | ¿Obligatorio? |
| ----------- | ------------ | -------------------------------- | ------------------------------------ | ------------- |
| `invoiceId` | UUID         | ID de la factura en formato UUID | ade9550d-3dc7-4fd3-b94e-3b4c12aaaa0c | sí            |
| `paymentId` | UUID         | ID del pago en formato UUID      | a4c9e2ee-9a03-43e5-a1a1-00caf679d16a | sí            |

## Ejemplo de respuesta

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