intro

เริ่มต้นใช้งาน

ตรวจสลิปแรกของคุณภายใน 5 นาที — ตั้งร้าน, ผูก LINE, เช็คโควตา, ยิง API (Starter ขึ้นไป)

⏱ 5 min

ขั้นตอนทั้งหมดที่ต้องทำเพื่อให้ SlipBolt ตรวจสลิปใบแรกของคุณ

1. สร้างบัญชี + ร้านค้า

ไปที่ app.slip-bolt.com/auth/signup แล้วยืนยันอีเมล จากนั้นตั้งชื่อร้านใน onboarding — ร้านแรกเริ่มทดลอง 7 วันเสมอ (สิทธิ์แพ็ก Trial เท่านั้น ไม่ใช่ Pro/Business ฟรี)

ช่วงทดลองได้:

  • 50 สลิป · 1 ที่นั่ง (เจ้าของ) · 1 กลุ่ม LINE · 1 LINE OA
  • ตรวจสลิปผ่าน LINE OA + Dashboard
  • ไม่มี REST API / Webhook — ออก API key ได้เมื่ออัปเกรดเป็น Starter ขึ้นไป

โควตาเหลือดูได้ทันทีที่ Dashboard (กระเบื้องโควตา) โดยไม่ต้องมี API key

2. เพิ่มบัญชีรับเงิน

Settings → Shop → บัญชีรับเงิน — ร้านที่ยังไม่มีบัญชีที่ลูกค้าโอนเข้า ระบบจะปัดสลิปทุกใบ (NO_PAYEE_CONFIGURED) ก่อนยิงไปตรวจ

3. ผูก LINE OA

ที่ Settings → LINE Channels วาง Channel ID + Secret + Access Token จาก LINE OA Manager แล้วเชิญบอทเข้ากลุ่ม ลองส่งสลิปทดสอบ 1 ใบ

4. สร้าง API key (แพ็ก Starter ขึ้นไป)

ที่ Settings → API Keys กดสร้าง key ใหม่ — ระบบจะแสดง key เต็ม ครั้งเดียวเท่านั้น ช่วง Trial ออกคีย์ไม่ได้ (403 PLAN_API_ACCESS_REQUIRED)

Terminal
sk_live_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6

Copy ทันที — เราเก็บแค่ argon2 hash บน server (ลืมแล้วต้องสร้างใหม่)

5. ยิงคำสั่งแรก

เก็บคีย์ไว้ใน environment variable ก่อน (อย่าใส่ในโค้ด) — ช่วงพัฒนาใช้คีย์ sk_test_ ได้เลย ไม่กินโควตาของร้าน

Terminal
export SLIPBOLT_API_KEY="sk_test_..."

จากนั้นส่ง รูปสลิปเป็น raw bytes ไปที่ POST /api/v1/verify — เลือกภาษาที่คุณใช้ได้เลย ระบบจะจำไว้ให้ทุกหน้า

curl -X POST https://api.slip-bolt.com/api/v1/verify \
  -H "Authorization: Bearer $SLIPBOLT_API_KEY" \
  -H "Content-Type: application/octet-stream" \
  --data-binary "@slip.jpg"

ตอบกลับ (ย่อ — ฟิลด์ครบอยู่ที่ API Reference):

JSON
{
  "success": true,
  "data": {
    "status": "SUCCESS",
    "verified": true,
    "duplicate": false,
    "amount": 50.0,
    "transRef": "20260525123045123456",
    "transDate": "2026-05-25T05:30:45.000Z",
    "senderName": "นายสมชาย ใจดี",
    "bankName": "ธนาคารกสิกรไทย",
    "receiverName": "ร้านกาแฟพี่ตุ๊ก",
    "environment": "test",
    "quota": { "used": 1, "limit": 500, "remaining": 499 }
  },
  "meta": { "requestId": "3b1f0c9e-6a2d-4f5e-8b7c-1d2e3f4a5b6c", "timestamp": "2026-05-25T05:30:46.412Z" }
}

ปล่อยของได้เมื่อไร — 4 ข้อที่ต้องเช็ค

  1. data.verified === true — สลิปจริง โอนเข้าบัญชีของร้าน
  2. data.duplicate === false — ไม่ใช่สลิปที่เคยใช้ไปแล้ว (ลูกค้าส่งสลิปเก่ามาซ้ำ)
  3. data.amount ตรงกับยอดออเดอร์ของคุณ — API ไม่รู้ว่าออเดอร์นี้ต้องจ่ายเท่าไร ฝั่งคุณต้องเทียบเอง (ลูกค้าโอน 1 บาทแล้วส่งสลิปมา สลิปก็ยัง "จริง")
  4. data.transRef ยังไม่เคยผูกกับออเดอร์อื่นในระบบคุณ — เก็บ transRef ลงคอลัมน์ที่ติด UNIQUE (ส่งรูปเดิมซ้ำใน 24 ชม. ได้ผลเดิมกลับมาโดย duplicate ยังเป็น false ⇒ ข้อ 1–3 กันสลิปใบเดียวปิดสองออเดอร์ไม่ได้)

โค้ดครบวงจรที่เช็คทั้ง 4 ข้อ พร้อม retry และหน้าอัปโหลด อยู่ที่ ตัวอย่างพร้อมใช้

ไม่รับสลิปเก่า? สลิปจริงที่โอนไว้เกิน 24 ชม. ยังได้ verified: true แต่มี errorCode: "STALE_SLIP" กำกับ — ถ้าธุรกิจคุณต้องการปฏิเสธ ให้เช็คฟิลด์นี้เพิ่ม (ดู Stale slip)

มีสเปก OpenAPI ให้ import

https://api.slip-bolt.com/api/v1/openapi.json — เปิดใน Postman / Insomnia / Bruno เพื่อลองยิงทุก endpoint ได้ทันที หรือ generate client ภาษาอื่น (Go · Java · C# …) ด้วย openapi-generator · path เต็มมี /api/v1/ นำหน้า — https://api.slip-bolt.com/openapi.json ที่รากโดเมน redirect มาที่เดียวกัน

Postman collection พร้อมใช้: https://api.slip-bolt.com/api/v1/postman.json — Import แล้วใส่ตัวแปร apiKey ก็กดส่งได้เลย · POST /verify แยกให้ครบ 5 แบบ (ไฟล์ดิบ · multipart · base64 · url · qr)

โค้ดก๊อปไปวางของ POST /verify ใน Node.js · Python · PHP · Go · Java · C# อยู่ที่ ตัวอย่างพร้อมใช้

ผลอยู่ใน data เสมอ — ทุก response ที่สำเร็จห่อด้วย { success, data, meta } อ่าน response.verified ตรง ๆ จะได้ undefined (ข้อผิดพลาดที่เจอบ่อยที่สุดตอนต่อครั้งแรก)

การเรียก API ใช้ โควตาเดียวกับสลิป LINE ของร้าน · ยอดคงเหลือดูได้จาก quota ในผลลัพธ์หรือ header X-Slipbolt-Quota-Remaining · โควตาหมด → 402 (ดู API Reference) · ใช้ key sk_test_ ทดสอบได้โดยไม่กินโควตาของร้าน (เพดานแยก 200 ครั้ง/เดือน)

6. เช็คโควตาคงเหลือ (ไม่หักสลิป)

ช่องทางใช้เมื่อได้ข้อมูลอะไร
Dashboard → กระเบื้องโควตาทุกแพ็ก รวม Trialused / limit / เหลือกี่วันถึงรีเซ็ต
GET /api/v1/quotaมี API key + scope readโควตาร้านอย่างเดียว
GET /api/v1/meมี API key + scope readร้าน · คีย์ · แพ็ก · โควตา live+test · บัญชีรับเงิน (4 ตัวท้าย)
Terminal
curl https://api.slip-bolt.com/api/v1/me \
  -H "Authorization: Bearer sk_live_..."

รายละเอียดฟิลด์อยู่ที่ API Reference — GET /me

7. รับ Webhook (optional)

หาก subscribe ที่ /settings/webhooks ระบบจะ POST event ทุกครั้งที่มีผลตรวจสลิปใหม่:

JSON
{
  "event": "slip.verified",
  "id": "evt_9f3c1a7b2d4e6f8a0b1c2d3e",
  "created": 1781107927,
  "data": {
    "transactionId": "8f3c…",
    "transRef": "20260525123045123456",
    "amount": 50.0,
    "status": "SUCCESS",
    "sender": "นายสมชาย ใจดี",
    "receiver": "ร้านกาแฟพี่ตุ๊ก",
    "verifiedAt": "2026-05-25T05:30:46.412Z",
    "latencyMs": 480
  }
}

Verify signature ทุกครั้ง — header X-Slipbolt-Signature มาในรูป t=<unix>,v1=<hex> โดย v1 = HMAC-SHA256(secret, ts + "." + raw_body) (ts = ตัวเลขหลัง t=) · สตริงที่เซ็นไม่มี t= นำหน้า และต้องใช้ raw body — โค้ดตัวอย่างพร้อมใช้อยู่ที่ Webhooks

ขั้นถัดไป