# จับคู่การชำระเงินกับใบแจ้งหนี้

## ภาพรวม

ในกรณีส่วนใหญ่ ลูกค้าชำระเงินเข้ากระเป๋าเงินคริปโตของคุณตรงตามจำนวนที่ระบุในใบแจ้งหนี้ แต่บางครั้งลูกค้าทำพลาดและชำระจำนวนอื่นที่ไม่ใช่จำนวนที่จองไว้ ในกรณีนั้น บริการจับคู่การชำระเงินกับใบแจ้งหนี้และทำเครื่องหมายว่าใบแจ้งหนี้ถูกชำระโดยอัตโนมัติไม่ได้ หากเกิดเหตุการณ์นี้ คุณในฐานะร้านค้าจับคู่การชำระเงินกับใบแจ้งหนี้ด้วยตนเองได้ หากแน่ใจว่ากำลังรอการชำระเงินรายการใด ทำได้ทั้งในแดชบอร์ดและผ่าน API

## เงื่อนไขการจับคู่

การจับคู่จะสำเร็จเมื่อเงื่อนไขทั้งหมดเป็นจริงพร้อมกันเท่านั้น:

1. **สถานะใบแจ้งหนี้** — `unpaid` หรือ `expired` ใบที่ยกเลิกและใบที่ชำระแล้วจับคู่ไม่ได้ การยกเลิกย้อนกลับไม่ได้
2. **การชำระเงินยังไม่ถูกจับคู่กับใบแจ้งหนี้อื่น** การชำระเงินหนึ่งรายการผูกได้กับใบแจ้งหนี้เดียวเท่านั้น
3. **การชำระเงินมาถึงกระเป๋าเงินที่เกี่ยวข้องกับใบแจ้งหนี้นี้**
4. **การชำระเงินอยู่ภายในหน้าต่างการชำระที่ใช้ได้** — 24 ชั่วโมงก่อนและ 24 ชั่วโมงหลังการสร้างใบแจ้งหนี้ การชำระเงินที่มาถึงก่อนใบแจ้งหนี้ถูกสร้างจับคู่ได้ ส่วนที่อยู่นอกหน้าต่างจับคู่ไม่ได้

หากใบแจ้งหนี้เป็นของโปรเจกต์อื่นและคีย์ถูกจำกัดไว้กับโปรเจกต์ เมธอดจะตอบกลับด้วย `Restricted project` หากเงื่อนไขข้ออื่นไม่ผ่าน จะได้รับข้อผิดพลาดทั่วไปโดยไม่ระบุสาเหตุ — ให้ตรวจสอบเงื่อนไขที่ฝั่งคุณเอง

## สิ่งที่เกิดขึ้นหลังการจับคู่

* ใบแจ้งหนี้เปลี่ยนเป็น**ชำระแล้ว (Paid)**
* การแจ้งเตือนออกไปยังอีเมล บอท 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"
}
```
