xNearby APIs

Slip Verification API

บริการตรวจสอบสลิปโอนเงินธนาคาร ดึงยอดเงิน และเช็คข้อมูลผู้รับเงินแบบอัตโนมัติ

POST

/slipVerify/v2

⭐ แนะนำที่สุด

ตรวจสอบสลิปแบบอัตโนมัติเต็มรูปแบบ เพียงแนบรูปภาพสลิป ระบบจะอ่าน QR Code และ OCR ยอดเงินให้อัตโนมัติ พร้อมทั้งสามารถระบุข้อมูลผู้รับเงินเพื่อตรวจสอบความถูกต้องได้ในคำสั่งเดียว

พารามิเตอร์ (Form-Data)

Field Type Description
slip จำเป็น File ไฟล์รูปภาพสลิปโอนเงิน (JPEG, PNG, WEBP)
expected_receiver_name ไม่บังคับ String ชื่อผู้รับเงินที่คาดหวัง เช่น "สมชาย ใจดี" หรือ "สมชาย"
expected_bank_code ไม่บังคับ String รหัสธนาคาร 3 หลัก ("004", "014") หรือตัวย่อ ("KBANK", "SCB")
expected_account_no ไม่บังคับ String เลขบัญชีผู้รับเงินแบบเต็ม เช่น "067-8-999346" หรือเลขท้าย 4 ตัว เช่น "346"
จำเป็นต้องมีสิทธิ์ v2 ใน API Key
cURL
curl -X POST https://api.nearbyshop.xyz/slipVerify/v2 \
  -H 'X-API-Key: nb_live_your_api_key_here' \
  -F 'slip=@slip.jpg' \
  -F 'expected_receiver_name=สมชาย ใจดี' \
  -F 'expected_bank_code=KBANK' \
  -F 'expected_account_no=346'
Node.js (Axios)
const axios = require('axios');
const FormData = require('form-data');
const fs = require('fs');

const form = new FormData();
form.append('slip', fs.createReadStream('slip.jpg'));
form.append('expected_receiver_name', 'สมชาย ใจดี');
form.append('expected_bank_code', 'KBANK');
form.append('expected_account_no', '346');

const res = await axios.post('https://api.nearbyshop.xyz/slipVerify/v2', form, {
    headers: {
        'X-API-Key': 'nb_live_your_api_key_here',
        ...form.getHeaders()
    }
});
console.log(res.data);
Python (Requests)
import requests

url = 'https://api.nearbyshop.xyz/slipVerify/v2'
headers = {'X-API-Key': 'nb_live_your_api_key_here'}
data = {
    'expected_receiver_name': 'สมชาย ใจดี',
    'expected_bank_code': 'KBANK',
    'expected_account_no': '346'
}
files = {'slip': open('slip.jpg', 'rb')}

res = requests.post(url, headers=headers, data=data, files=files)
print(res.json())
PHP (cURL)
<?php
$ch = curl_init('https://api.nearbyshop.xyz/slipVerify/v2');
$postData = [
    'slip' => new CURLFile('slip.jpg'),
    'expected_receiver_name' => 'สมชาย ใจดี',
    'expected_bank_code' => 'KBANK',
    'expected_account_no' => '346'
];
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-API-Key: nb_live_your_api_key_here']);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>

ตัวอย่างผลลัพธ์ (Response 200 OK)

JSON Response (200 OK)
{
  "status": "success",
  "data": {
    "trans_id": "202609031200183310899",
    "type": "BANK_TRANSFER",
    "amount": 100,
    "date_time": "2026-09-03T12:00:00.000Z",
    "sender": {
      "name": "นาย สมศักดิ์ สุขใจ",
      "bank": "ธนาคารไทยพาณิชย์ จำกัด (มหาชน)",
      "bank_code": "014",
      "bank_abbr": "SCB",
      "account_no": "xxx-x-x1234-x"
    },
    "receiver": {
      "name": "นาย สมชาย ใจดี",
      "bank": "ธนาคารกสิกรไทย จำกัด (มหาชน)",
      "bank_code": "004",
      "bank_abbr": "KBANK",
      "details": {
        "account_no": "067-8-xxx346"
      }
    }
  },
  "extracted_amount": 100
}
POST

/slipVerify/v1

ตรวจสอบสลิปโดยการอัปโหลดไฟล์ภาพ และระบุจำนวนเงินที่ต้องการตรวจสอบด้วยตัวเอง

พารามิเตอร์ (Form-Data)

Field Type Description
qr_img จำเป็น File ไฟล์รูปภาพสลิปโอนเงิน
amount จำเป็น String จำนวนเงินที่ต้องการตรวจสอบ เช่น "100.00"
expected_receiver_name ไม่บังคับ String ชื่อผู้รับเงินที่คาดหวัง เช่น "สมชาย ใจดี"
expected_bank_code ไม่บังคับ String รหัสธนาคาร เช่น "004" หรือ "KBANK"
expected_account_no ไม่บังคับ String เลขบัญชีผู้รับเงินแบบเต็ม หรือเลขท้าย 4 ตัว
จำเป็นต้องมีสิทธิ์ v1 ใน API Key
cURL
curl -X POST https://api.nearbyshop.xyz/slipVerify/v1 \
  -H 'X-API-Key: nb_live_your_api_key_here' \
  -F 'qr_img=@slip.jpg' \
  -F 'amount=100.00' \
  -F 'expected_bank_code=KBANK'
POST

/slipVerify/noSlip

⚡ เร็วที่สุด

ตรวจสอบสลิปผ่าน QR Payload และจำนวนเงิน โดยไม่ต้องอัปโหลดไฟล์รูปภาพ เหมาะสำหรับระบบที่ถอดรหัส QR Code มาจากฝั่ง Client แล้ว

พารามิเตอร์ (Form-Data หรือ JSON)

Field Type Description
qr_payload จำเป็น String ข้อความ Raw Payload จาก QR Code (เช่น "00460006000001...")
amount จำเป็น String จำนวนเงินที่ต้องการตรวจสอบ
expected_receiver_name ไม่บังคับ String ชื่อผู้รับเงินที่คาดหวัง
expected_bank_code ไม่บังคับ String รหัสธนาคาร (เช่น "004" หรือ "KBANK")
expected_account_no ไม่บังคับ String เลขที่บัญชีผู้รับเงิน
จำเป็นต้องมีสิทธิ์ noSlip ใน API Key
cURL
curl -X POST https://api.nearbyshop.xyz/slipVerify/noSlip \
  -H 'X-API-Key: nb_live_your_api_key_here' \
  -F 'qr_payload=0046000600000101030040225202609031200000462385o94634ugqprde5102TH910404C7' \
  -F 'amount=100.00' \
  -F 'expected_account_no=346'

🛡️ ระบบตรวจสอบข้อมูลผู้รับเงิน (Receiver Validation)

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

1. ชื่อ-นามสกุล ผู้รับเงิน

  • ส่งชื่อ-นามสกุลเต็มได้ เช่น "สมชาย ใจดี"
  • มี/ไม่มีคำนำหน้าได้ (นาย/นาง/นางสาว/MR)
  • สลิปธนาคารที่ย่อนามสกุล (เช่น "สมชาย จ.") ระบบจะจับคู่และผ่านให้อัตโนมัติ

2. รหัสธนาคาร (Bank Code)

  • ส่ง Bank Code 3 หลักได้ เช่น "004", "014", "002"
  • ส่งตัวย่อได้ เช่น "KBANK", "SCB", "BBL", "KTB"
  • ไม่จำกัดตัวพิมพ์เล็ก/ใหญ่ ("kbank" หรือ "KBANK" ได้หมด)

3. เลขที่บัญชี (Account No)

  • ส่งเลขบัญชีเต็มได้ทั้งแบบมีขีด ("067-8-999346") หรือไม่มีขีด
  • ส่งเฉพาะเลขท้าย 4 ตัวได้ เช่น "0346" หรือ "346"
  • ระบบจะเทียบทั้งส่วนหน้าและหลังกับเลข unmasked ในสลิปอย่างแม่นยำ

ตัวอย่างการตอบกลับเมื่อข้อมูลผู้รับเงินไม่ตรง (HTTP 400)

JSON Error Response (400 Bad Request)
{
  "status": "error",
  "code": "RECEIVER_NAME_MISMATCH",
  "message": "ชื่อผู้รับเงินในสลิป (นาย สมชาย ใจดี) ไม่ตรงกับที่ระบุ (นาย วิทยา ทรัพย์สมบูรณ์)",
  "actual_receiver": {
    "name": "นาย สมชาย ใจดี",
    "bank_abbr": "KBANK",
    "bank_code": "004",
    "details": {
      "account_no": "067-8-xxx346"
    }
  }
}

⚠️ รหัสข้อผิดพลาดของสลิป (Slip Error Codes)

รหัสข้อผิดพลาดเฉพาะที่อาจเกิดขึ้นระหว่างการสแกน OCR, การอ่าน QR Code หรือการตรวจสอบสลิปกับระบบธนาคาร:

HTTP Status Error Code สาเหตุ / ความหมาย
400 Bad Request RECEIVER_NAME_MISMATCH ชื่อผู้รับเงินในสลิปไม่ตรงกับที่ระบุใน expected_receiver_name
400 Bad Request RECEIVER_BANK_MISMATCH ธนาคารผู้รับเงินในสลิปไม่ตรงกับที่ระบุใน expected_bank_code
400 Bad Request RECEIVER_ACCOUNT_MISMATCH เลขที่บัญชีผู้รับเงินในสลิปไม่ตรงกับที่ระบุใน expected_account_no
400 Bad Request AMOUNT_MISMATCH ยอดเงินที่ส่งไปตรวจสอบไม่ตรงกับยอดเงินจริงที่ทำรายการในสลิปธนาคาร
400 Bad Request QR_NOT_FOUND ไม่พบ QR Code ในรูปภาพ หรือภาพสลิปเบลอ/แตกเกินกว่าจะอ่านได้
400 Bad Request SLIP_DATA_INCOMPLETE ข้อมูลสลิปไม่สมบูรณ์ หรือสลิปปลอมที่ไม่มี Transaction Reference จากธนาคาร
400 Bad Request DUPLICATE_SLIP สลิปนี้เคยถูกส่งมาตรวจสอบและยืนยันในระบบไปแล้ว (ป้องกันการใช้สลิปซ้ำ)