เอกสาร API
ทุกอย่างที่ต้องรู้เพื่อเชื่อมต่อ SlipXPay: การยืนยันตัวตน endpoint ตรวจสลิป รูปแบบคำตอบ รหัสข้อผิดพลาด และตัวอย่างโค้ด
สมัครเพื่อรับ API keyเริ่มใช้ใน 3 ขั้นตอน
ระบบของคุณส่งสลิปมา SlipXPay ถามธนาคารแล้วตอบกลับทันที
- 1. สร้าง API keyที่หน้า API Keys ตั้งชื่อตามระบบที่ใช้ และจำกัด IP ได้
- 2. ส่งข้อความ QR หรือรูปสลิปมาที่ /slips/verifyใส่ยอดที่คาดไว้ด้วยถ้าต้องการให้เทียบยอดให้
- 3. อ่านผลแล้วตัดสินใจstatus = verified, duplicate = false และ amountMatches = true จึงถือว่าชำระแล้ว
https://api.slipxpay.com/api/v1X-API-Key: sxp_live_...- เรียกจากฝั่งเซิร์ฟเวอร์เท่านั้น อย่าฝังคีย์ในเว็บหรือแอปมือถือ
- สร้างคีย์แยกต่อระบบ จะได้เพิกถอนทีละตัวได้
- จำกัด IP ที่อนุญาตในหน้า API Keys เพื่อความปลอดภัยเพิ่ม
/slips/verify·ตรวจสลิปช่องข้อมูล
| ช่อง | ชนิด | ความหมาย |
|---|---|---|
| qr | string | ข้อความ QR จากสลิป (ไม่เกิน 4,096 ตัวอักษร) ส่งอย่างใดอย่างหนึ่งระหว่าง qr กับ image |
| image | string | รูปสลิปเข้ารหัส base64 (รองรับ data URL) PNG/JPG/WebP ไม่เกิน 5 MB หรือส่งเป็น multipart ในช่อง file |
| expectedAmount | number | ยอดที่คาดว่าจะได้รับเป็นบาท ถ้าใส่ ระบบจะเทียบให้ใน checks.amountMatches |
curl -X POST https://api.slipxpay.com/api/v1/slips/verify \
-H "X-API-Key: sxp_live_..." \
-H "Content-Type: application/json" \
-d '{"qr": "00410006000001010300402209990000000SXP00015102TH9104D3M0", "expectedAmount": 1250}'{
"success": true,
"data": {
"id": "3f9c2d7e-1a4b-4c8d-9e0f-5b6a7c8d9e0f",
"status": "verified",
"duplicate": false,
"duplicateOf": null,
"slip": {
"transactionRef": "009900000000SXP00001",
"amount": 1250,
"currency": "THB",
"transactionAt": "2026-10-08T14:25:41+07:00",
"sender": {
"bankCode": "004",
"bankName": "กสิกรไทย",
"account": "xxx-x-x1234-x",
"name": "นาย สมชาย ใจดี"
},
"receiver": {
"bankCode": "006",
"bankName": "กรุงไทย",
"account": "xxx-x-x5678-x",
"name": "ร้านสมหญิง",
"proxyType": null,
"proxyId": null
},
"ref1": null,
"ref2": null,
"ref3": null
},
"checks": {
"expectedAmount": 1250,
"amountMatches": true
},
"creditsCharged": true,
"qr": "00410006000001010300402209990000000SXP00015102TH9104D3M0",
"source": {
"type": "api",
"apiKeyId": "c4d5e6f7-a8b9-4c0d-9e1f-2a3b4c5d6e7f",
"apiKeyName": "Web shop"
},
"durationMs": 842,
"checkedAt": "2026-10-08T07:25:43.498Z",
"balance": 2999
},
"meta": {
"requestId": "5d2e8f1a-9b3c-4d7e-8f6a-1b2c3d4e5f60",
"timestamp": "2026-10-08T07:25:43.512Z"
}
}ค่าทั้งหมดในตัวอย่างเป็นข้อมูลสมมติ
ค่า status
verifiedธนาคารยืนยันว่ามีรายการโอนนี้ ข้อมูลอยู่ใน slipnot_foundธนาคารไม่พบรายการ ไม่หักเครดิตinvalid_qrอ่าน QR จากรูปไม่ได้ ไม่หักเครดิต
ช่องข้อมูลในคำตอบ
| ช่อง | ชนิด | ความหมาย |
|---|---|---|
| id | string | รหัสการตรวจ ใช้อ้างอิงกับ GET /slips/:id |
| status | verified | not_found | invalid_qr | ผลการตรวจ (ดูด้านบน) |
| duplicate | boolean | true เมื่อสลิปนี้เคยตรวจพบแล้วกับร้านคุณ |
| duplicateOf | { id, checkedAt } | null | การตรวจครั้งแรกของสลิปซ้ำ |
| slip.transactionRef | string | เลขอ้างอิงรายการจากธนาคาร ไม่ซ้ำกันต่อรายการโอน |
| slip.amount | number | ยอดโอนเป็นบาท |
| slip.transactionAt | ISO 8601 | เวลาที่โอนตามธนาคาร |
| slip.sender | { bankCode, bankName, account, name } | ผู้โอน: รหัสธนาคาร ชื่อธนาคาร เลขบัญชี (ปิดบางหลัก) และชื่อ |
| slip.receiver | { …, proxyType, proxyId } | ผู้รับ เพิ่ม proxyType (เช่น BILLERID) และ proxyId เมื่อเป็นพร้อมเพย์หรือบิล |
| slip.ref1 … ref3 | string | null | เลขอ้างอิง 1–3 ของบิล (ถ้ามี) |
| checks.expectedAmount | number | null | ยอดที่คุณส่งมาเทียบ |
| checks.amountMatches | boolean | null | ยอดโอนตรงกับ expectedAmount หรือไม่ (null เมื่อไม่ได้ส่ง) |
| creditsCharged | boolean | หักเครดิตในคำขอนี้หรือไม่ |
| balance | number | เครดิตคงเหลือหลังคำขอนี้ |
| qr | string | null | ข้อความ QR ที่ส่งมา (null เมื่ออ่านไม่ได้) |
| source | { type, apiKeyId, apiKeyName } | ที่มาของการตรวจ: API key ที่เรียก หรือผู้ใช้ที่ตรวจจากแดชบอร์ด |
| durationMs | number | เวลาที่ใช้ตรวจ (มิลลิวินาที) |
| checkedAt | ISO 8601 | เวลาที่ระบบตรวจ |
duplicate เป็น true เมื่อสลิปนี้เคยตรวจพบแล้วกับร้านของคุณ คำตอบมาจากประวัติ ไม่เรียกธนาคารซ้ำ ไม่หักเครดิต และ duplicateOf บอกว่าตรวจครั้งแรกเมื่อไหร่ ใช้ป้องกันลูกค้าส่งสลิปเดิมซ้ำ
checks.amountMatches เป็น true/false หรือ null เมื่อไม่ได้ส่ง expectedAmount
ระบบไม่ผูกบัญชีรับเงินของร้าน ให้ระบบของคุณเทียบ receiver.bankCode, receiver.account (ธนาคารปิดบางหลัก เช่น xxx-x-x5678-x) และ receiver.name กับบัญชีของคุณเอง ก่อนถือว่าชำระแล้ว
/slips·ประวัติการตรวจcurl "https://api.slipxpay.com/api/v1/slips?status=verified&page=1&limit=20" \
-H "X-API-Key: sxp_live_..."{
"success": true,
"data": [
{
"id": "b7e2c9d4-3f1a-4e6b-8c5d-2a9f7e1b6c4d",
"status": "verified",
"duplicate": true,
"duplicateOf": {
"id": "3f9c2d7e-1a4b-4c8d-9e0f-5b6a7c8d9e0f",
"checkedAt": "2026-10-08T07:25:43.498Z"
},
"slip": {
"transactionRef": "009900000000SXP00001",
"amount": 1250,
"currency": "THB",
"transactionAt": "2026-10-08T14:25:41+07:00",
"sender": {
"bankCode": "004",
"bankName": "กสิกรไทย",
"account": "xxx-x-x1234-x",
"name": "นาย สมชาย ใจดี"
},
"receiver": {
"bankCode": "006",
"bankName": "กรุงไทย",
"account": "xxx-x-x5678-x",
"name": "ร้านสมหญิง",
"proxyType": null,
"proxyId": null
},
"ref1": null,
"ref2": null,
"ref3": null
},
"checks": {
"expectedAmount": 1250,
"amountMatches": true
},
"creditsCharged": false,
"qr": "00410006000001010300402209990000000SXP00015102TH9104D3M0",
"source": {
"type": "api",
"apiKeyId": "c4d5e6f7-a8b9-4c0d-9e1f-2a3b4c5d6e7f",
"apiKeyName": "Web shop"
},
"durationMs": 12,
"checkedAt": "2026-10-08T07:41:10.030Z"
},
{
"id": "3f9c2d7e-1a4b-4c8d-9e0f-5b6a7c8d9e0f",
"status": "verified",
"duplicate": false,
"duplicateOf": null,
"slip": {
"transactionRef": "009900000000SXP00001",
"amount": 1250,
"currency": "THB",
"transactionAt": "2026-10-08T14:25:41+07:00",
"sender": {
"bankCode": "004",
"bankName": "กสิกรไทย",
"account": "xxx-x-x1234-x",
"name": "นาย สมชาย ใจดี"
},
"receiver": {
"bankCode": "006",
"bankName": "กรุงไทย",
"account": "xxx-x-x5678-x",
"name": "ร้านสมหญิง",
"proxyType": null,
"proxyId": null
},
"ref1": null,
"ref2": null,
"ref3": null
},
"checks": {
"expectedAmount": 1250,
"amountMatches": true
},
"creditsCharged": true,
"qr": "00410006000001010300402209990000000SXP00015102TH9104D3M0",
"source": {
"type": "api",
"apiKeyId": "c4d5e6f7-a8b9-4c0d-9e1f-2a3b4c5d6e7f",
"apiKeyName": "Web shop"
},
"durationMs": 842,
"checkedAt": "2026-10-08T07:25:43.498Z"
}
],
"meta": {
"requestId": "5d2e8f1a-9b3c-4d7e-8f6a-1b2c3d4e5f60",
"timestamp": "2026-10-08T07:25:43.512Z",
"page": 1,
"limit": 20,
"total": 2
}
}กรองด้วย status, from, to (ISO 8601) และแบ่งหน้าด้วย page, limit (สูงสุด 100) ผลลัพธ์เรียงจากใหม่ไปเก่า ข้อมูลใน meta บอก page, limit และ total
/banks·รหัสธนาคารcurl https://api.slipxpay.com/api/v1/banks -H "X-API-Key: sxp_live_..."{
"success": true,
"data": [
{
"code": "004",
"nameTh": "ธนาคารกสิกรไทย จำกัด (มหาชน)",
"nameEn": "Kasikornbank Public Company Limited",
"shortTh": "กสิกรไทย",
"shortEn": "KBank",
"color": "#138f2d",
"group": "thai",
"logoUrl": "https://<dashboard>/banks/004.png",
"logoKind": "mark",
"formerlyTh": null,
"formerlyEn": null
},
{
"code": "006",
"nameTh": "ธนาคารกรุงไทย จำกัด (มหาชน)",
"nameEn": "Krungthai Bank Public Company Limited",
"shortTh": "กรุงไทย",
"shortEn": "Krungthai",
"color": "#1ba5e1",
"group": "thai",
"logoUrl": "https://<dashboard>/banks/006.png",
"logoKind": "mark",
"formerlyTh": null,
"formerlyEn": null
}
],
"meta": {
"requestId": "5d2e8f1a-9b3c-4d7e-8f6a-1b2c3d4e5f60",
"timestamp": "2026-10-08T07:25:43.512Z"
}
}35 ธนาคาร · อัปเดตตามรายชื่อธนาคารสมาชิกระบบโอนเงิน ต.ค. 2569
ธนาคารพาณิชย์ไทย13
กรุงเทพธนาคารกรุงเทพ จำกัด (มหาชน)002
กสิกรไทยธนาคารกสิกรไทย จำกัด (มหาชน)004
กรุงไทยธนาคารกรุงไทย จำกัด (มหาชน)006
ทีเอ็มบีธนชาตธนาคารทหารไทยธนชาต จำกัด (มหาชน)ธนาคารทหารไทย (TMB) รวมกับธนาคารธนชาต ปี 2564011
ไทยพาณิชย์ธนาคารไทยพาณิชย์ จำกัด (มหาชน)014
ซีไอเอ็มบี ไทยธนาคารซีไอเอ็มบี ไทย จำกัด (มหาชน)022
ยูโอบีธนาคารยูโอบี จำกัด (มหาชน)024
กรุงศรีอยุธยาธนาคารกรุงศรีอยุธยา จำกัด (มหาชน)025
ทิสโก้ธนาคารทิสโก้ จำกัด (มหาชน)067
เกียรตินาคินภัทรธนาคารเกียรตินาคินภัทร จำกัด (มหาชน)เดิมชื่อธนาคารเกียรตินาคิน เปลี่ยนชื่อและโลโก้ ปี 2563069
ไอซีบีซี (ไทย)ธนาคารไอซีบีซี (ไทย) จำกัด (มหาชน)070
ไทยเครดิตธนาคารไทยเครดิต จำกัด (มหาชน)เดิมชื่อธนาคารไทยเครดิต เพื่อรายย่อย ยกระดับเป็นธนาคารพาณิชย์เต็มรูปแบบ ปี 2567071
แลนด์ แอนด์ เฮ้าส์ธนาคารแลนด์ แอนด์ เฮ้าส์ จำกัด (มหาชน)073
ธนาคารของรัฐ6
ออมสินธนาคารออมสิน030
อาคารสงเคราะห์ธนาคารอาคารสงเคราะห์033
ธ.ก.ส.ธนาคารเพื่อการเกษตรและสหกรณ์การเกษตร034- EXIMเอ็กซิมแบงก์ธนาคารเพื่อการส่งออกและนำเข้าแห่งประเทศไทย
035
อิสลามแห่งประเทศไทยธนาคารอิสลามแห่งประเทศไทย066- SMEเอสเอ็มอีแบงก์ธนาคารพัฒนาวิสาหกิจขนาดกลางและขนาดย่อมแห่งประเทศไทย
098
ธนาคารพาณิชย์ไร้สาขา1
คลิกซ์ธนาคารคลิกซ์ จำกัด (มหาชน)ธนาคารพาณิชย์ไร้สาขารายแรกของไทย (กรุงไทย AIS OR) เปิดให้บริการ 27 พ.ค. 2569
088
สาขาธนาคารต่างประเทศ15
เจพีมอร์แกน เชสธนาคารเจพีมอร์แกน เชส สาขากรุงเทพฯ
008- OCBCโอซีบีซีธนาคารโอเวอร์ซี-ไชนีสแบงกิ้งคอร์ปอเรชั่น จำกัด
009
ซิตี้แบงก์ธนาคารซิตี้แบงก์ เอ็น.เอ. สาขากรุงเทพฯโอนธุรกิจลูกค้ารายย่อยให้ธนาคารยูโอบี ปี 2565017ซูมิโตโม มิตซุยธนาคารซูมิโตโม มิตซุย แบงกิ้ง คอร์ปอเรชั่น
018สแตนดาร์ดชาร์เตอร์ดธนาคารสแตนดาร์ดชาร์เตอร์ด (ไทย) จำกัด (มหาชน)
020- RHBอาร์ เอช บีธนาคารอาร์ เอช บี จำกัด
023 เมกะ สากลพาณิชย์ธนาคารเมกะ สากลพาณิชย์ จำกัด (มหาชน)
026แห่งอเมริกาธนาคารแห่งอเมริกา เนชั่นแนล แอสโซซิเอชั่น
027- IOBอินเดียนโอเวอร์ซีส์ธนาคารอินเดียนโอเวอร์ซีส์
029
เอชเอสบีซีธนาคารฮ่องกงและเซี่ยงไฮ้ แบงกิ้งคอร์ปอเรชั่น จำกัด สาขากรุงเทพฯ031ดอยซ์แบงก์ธนาคารดอยซ์แบงก์ สาขากรุงเทพฯ
032มิซูโฮธนาคารมิซูโฮ จำกัด สาขากรุงเทพฯ
039บีเอ็นพี พารีบาส์ธนาคารบีเอ็นพี พารีบาส์ สาขากรุงเทพฯ
045- BOCแห่งประเทศจีน (ไทย)ธนาคารแห่งประเทศจีน (ไทย) จำกัด (มหาชน)
052 - SMTBซูมิโตโม มิตซุย ทรัสต์ธนาคารซูมิโตโม มิตซุย ทรัสต์ (ไทย) จำกัด (มหาชน)
080
/credits·การคิดเครดิตcurl https://api.slipxpay.com/api/v1/credits -H "X-API-Key: sxp_live_..."{
"success": true,
"data": {
"balance": 2999,
"nextExpiry": "2026-11-07T07:10:00.000Z"
},
"meta": {
"requestId": "5d2e8f1a-9b3c-4d7e-8f6a-1b2c3d4e5f60",
"timestamp": "2026-10-08T07:25:43.512Z"
}
}- หัก 1 เครดิตเมื่อ status เป็น verified และไม่ใช่สลิปซ้ำ
- ไม่พบรายการ อ่าน QR ไม่ได้ หรือธนาคารไม่ตอบ ไม่หักเครดิต
- สลิปซ้ำตอบจากประวัติ ไม่หักเครดิตและไม่เรียกธนาคาร
| HTTP | รหัส | ความหมาย |
|---|---|---|
| 401 | INVALID_API_KEY | คีย์ไม่ถูกต้อง ถูกยกเลิก หรือหมดอายุ |
| 403 | IP_NOT_ALLOWED | เรียกจาก IP ที่คีย์ไม่อนุญาต |
| 403 | ORGANIZATION_SUSPENDED | ร้านถูกระงับการใช้งาน |
| 402 | INSUFFICIENT_CREDITS | เครดิตไม่พอ ซื้อเพิ่มที่หน้าเครดิต |
| 503 | VERIFICATION_UNAVAILABLE | ระบบธนาคารไม่ตอบ ลองใหม่ภายหลัง ไม่หักเครดิต |
| 400 | VALIDATION_FAILED | ข้อมูลในคำขอไม่ถูกต้อง ดู error.details |
| 413 | PAYLOAD_TOO_LARGE | รูปหรือคำขอใหญ่เกิน 8 MB (รูปสลิปไม่เกิน 5 MB) |
| 429 | RATE_LIMITED | เรียกถี่เกิน 60 ครั้งต่อนาทีต่อคีย์ |
{
"success": false,
"error": {
"code": "INSUFFICIENT_CREDITS",
"message": "The shop has no credits left"
},
"meta": {
"requestId": "5d2e8f1a-9b3c-4d7e-8f6a-1b2c3d4e5f60",
"timestamp": "2026-10-08T07:25:43.512Z"
}
}