ข้ามไปยังเนื้อหา

Payers (บัญชีผู้ใช้ปลายทาง)

payer คือบัญชีธนาคารของผู้ใช้ปลายทาง (ลูกค้าของคุณ) ทุก pay-in และ payout ต้องอ้างถึง payer หนึ่งคน

  • สำหรับ pay-in ระบบใช้บัญชีของ payer ช่วยจับคู่การโอนเข้า จึงควรเป็นบัญชีที่ผู้ใช้จะโอนออกจริง
  • สำหรับ payout บัญชีของ payer คือบัญชีปลายทางที่จะได้รับเงิน

สร้าง payer ได้สองวิธี

  • ส่งแบบ inline ตอนใช้งานครั้งแรก (แนะนำ) ส่งบัญชีธนาคารเป็น payer: { bankCode, accountNumber, accountName } ตอนสร้าง pay-in หรือ payout ระบบจะสร้าง payer ในครั้งแรก และใช้ payer เดิมกับคำขอถัดไปที่ bankCode และ accountNumber ตรงกัน response มี payerId ของ payer นั้น
  • สร้างไว้ก่อน ด้วย POST /v1/payers ด้านล่าง แล้วส่ง payerId

ทั้งสองวิธีตรวจสอบข้อมูลเหมือนกัน เก็บ id ไว้คู่กับผู้ใช้ในระบบของคุณถ้าต้องการอ้างถึง payer ภายหลัง

การส่ง payer แบบ inline จะไม่เปลี่ยนชื่อที่บันทึกไว้ของ payer เพราะระบบใช้ชื่อนี้จับคู่การโอนเข้า ถ้าชื่อต่างกันจะได้แค่คำเตือน payer_name_differs ถ้าต้องการเปลี่ยนชื่อ ใช้ PATCH /v1/payers/{id}

MethodPathใช้ทำอะไร
GET/v1/banksรายชื่อธนาคารที่รองรับ
POST/v1/payersสร้าง payer
GET/v1/payers/{id}ดู payer
GET/v1/payersค้นหา payer
PATCH/v1/payers/{id}แก้ไข payer (ฟิลด์ที่ไม่ส่งจะคงค่าเดิม)
DELETE/v1/payers/{id}ลบ payer ที่ยังไม่มีรายการ
GET/v1/payers/{id}/paymentspay-in และ payout ทั้งหมดของ payer
GET /v1/banks

คืนรายการทั้งหมดในครั้งเดียว (ไม่มีการแบ่งหน้า) ใช้ code เป็น bankCode ตอนสร้าง payer รายการนี้เปลี่ยนไม่บ่อย ควร cache ไว้และดึงใหม่เป็นระยะ

{
"data": [
{ "object": "bank", "code": "SCB", "name": "Siam Commercial Bank", "localName": "ธนาคารไทยพาณิชย์" },
{ "object": "bank", "code": "KBANK", "name": "Kasikorn Bank", "localName": "ธนาคารกสิกรไทย" }
],
"requestId": "req_..."
}
POST /v1/payers
ฟิลด์จำเป็นคำอธิบาย
bankCodeใช่รหัสธนาคารจาก GET /v1/banks
accountNumberใช่เลขบัญชี ตัวเลขเท่านั้น ไม่มีขีด (สูงสุด 32 หลัก)
accountNameใช่ชื่อบัญชีตามที่ธนาคารแสดง (สูงสุด 200 ตัว)
accountNameEnไม่ชื่อบัญชีภาษาอังกฤษ
statusไม่active (ค่าเริ่มต้น) หรือ inactive payer ที่ inactive ใช้สร้างรายการไม่ได้
referralCodeไม่รหัสผู้แนะนำ ถ้ามี (สูงสุด 64 ตัว)
{
"bankCode": "SCB",
"accountNumber": "1234567890",
"accountName": "สมชาย สบายดี",
"accountNameEn": "Somchai Sabuydee"
}

response (201)

{
"data": {
"object": "payer",
"id": "payer_7c0a4b8e2f3d4a1b9c8d7e6f5a4b3c2d",
"bankCode": "SCB",
"bankName": "Siam Commercial Bank",
"accountNumber": "1234567890",
"accountName": "สมชาย สบายดี",
"accountNameEn": "Somchai Sabuydee",
"status": "active",
"referralCode": null,
"createdAt": "2026-01-01T00:00:00.000Z"
},
"requestId": "req_..."
}
PATCH /v1/payers/{id}

ส่งเฉพาะฟิลด์ที่ต้องการเปลี่ยน (ฟิลด์เดียวกับตอนสร้าง) ฟิลด์ที่ไม่ส่งจะคงค่าเดิม เช่น ปิดการใช้งาน payer

{ "status": "inactive" }
GET /v1/payers?accountNumber=4567&bankCode=SCB
พารามิเตอร์คำอธิบาย
accountNumberเลขบัญชีที่มีข้อความนี้อยู่
accountNameชื่อบัญชีที่มีข้อความนี้อยู่ ไม่สนตัวพิมพ์เล็กใหญ่
bankCodeรหัสธนาคาร
limit, cursorการแบ่งหน้า
DELETE /v1/payers/{id}

ลบได้เฉพาะ payer ที่ยังไม่เคยมี pay-in หรือ payout ถ้ามีแล้วจะได้ 409 payer_has_payments ให้เปลี่ยน status เป็น inactive แทน

{ "data": { "id": "payer_7c0a4b8e2f3d4a1b9c8d7e6f5a4b3c2d", "deleted": true }, "requestId": "req_..." }
GET /v1/payers/{id}/payments?status=succeeded

คืน pay-in และ payout ปนกัน เรียงจากใหม่ไปเก่า ให้ดูชนิดจากฟิลด์ object ("payin" หรือ "payout") รองรับตัวกรอง status, reference, createdFrom, createdTo, limit, cursor

HTTPcodeความหมาย
400parameter_missing, parameter_invalidฟิลด์ขาดหรือผิดรูปแบบ เช่น เลขบัญชีมีตัวอักษรอื่นนอกจากตัวเลข ดู error.param
404resource_not_foundไม่พบ payer หรือไม่ใช่ของบัญชีคุณ
409payer_has_paymentspayer มีรายการแล้ว ลบไม่ได้
422bank_not_foundbankCode ไม่อยู่ในรายการธนาคาร
422referral_code_not_found, referrer_inactiveรหัสผู้แนะนำไม่ถูกต้องหรือผู้แนะนำถูกปิด
422payer_blockedบัญชีนี้ถูกระงับการใช้งาน