[{"data":1,"prerenderedAt":2503},["ShallowReactive",2],{"docs-nav":3,"docs-\u002Fdocs\u002Fapi":35,"docs-surround-\u002Fdocs\u002Fapi":2496},[4,9,13,18,22,26,30],{"path":5,"title":6,"category":7,"order":8},"\u002Fdocs","Introduction","intro",1,{"path":10,"title":11,"category":7,"order":12},"\u002Fdocs\u002Fgetting-started","เริ่มต้นใช้งาน",10,{"path":14,"title":15,"category":16,"order":17},"\u002Fdocs\u002Fauthentication","Authentication","core",20,{"path":19,"title":20,"category":16,"order":21},"\u002Fdocs\u002Fapi","API Reference",25,{"path":23,"title":24,"category":16,"order":25},"\u002Fdocs\u002Fwebhooks","Webhooks",30,{"path":27,"title":28,"category":16,"order":29},"\u002Fdocs\u002Fsecurity","Security & PDPA",50,{"path":31,"title":32,"category":33,"order":34},"\u002Fdocs\u002Fchangelog","Changelog","meta",90,{"id":36,"title":20,"badge":37,"body":38,"category":16,"description":2489,"extension":2490,"meta":2491,"navigation":313,"order":21,"path":19,"seo":2492,"stem":2493,"updatedAt":2494,"__hash__":2495},"docs\u002Fdocs\u002Fapi.md","REST",{"type":39,"value":40,"toc":2470},"minimark",[41,62,67,77,80,103,135,161,164,168,175,180,236,292,297,389,394,474,481,826,844,846,850,857,863,917,1048,1050,1053,1060,1089,1110,1234,1236,1239,1250,1265,1293,1313,1710,1729,1731,1735,1742,1801,1821,1907,1920,1924,1935,1955,1957,1961,1968,2022,2031,2033,2037,2057,2059,2063,2187,2189,2193,2196,2238,2253,2255,2259,2262,2354,2439,2441,2444,2466],[42,43,44,45,49,50,54,55,58,59],"p",{},"Public REST API สำหรับเชื่อมต่อระบบของคุณ (POS \u002F ERP \u002F บอท) เข้ากับ SlipBolt\nยืนยันตัวตนด้วย ",[46,47,48],"strong",{},"API key"," (",[51,52,53],"code",{},"sk_live_…"," \u002F ",[51,56,57],{},"sk_test_…",") — ดู ",[60,61,15],"a",{"href":14},[63,64,66],"h2",{"id":65},"base-url","Base URL",[68,69,74],"pre",{"className":70,"code":72,"language":73},[71],"language-text","https:\u002F\u002Fapi.slip-bolt.com\u002Fapi\u002Fv1\n","text",[51,75,72],{"__ignoreMap":76},"",[42,78,79],{},"ทุก request ต้องมี header:",[68,81,85],{"className":82,"code":83,"language":84,"meta":76,"style":76},"language-http shiki shiki-themes github-light github-dark","Authorization: Bearer sk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n","http",[51,86,87],{"__ignoreMap":76},[88,89,91,95,99],"span",{"class":90,"line":8},"line",[88,92,94],{"class":93},"s9eBZ","Authorization",[88,96,98],{"class":97},"szBVR",":",[88,100,102],{"class":101},"sZZnC"," Bearer sk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n",[104,105,107],"callout",{"type":106},"info",[42,108,109,112,113,116,117,120,121,124,125,128,129],{},[46,110,111],{},"เช็คก่อนยิงงานชุดใหญ่"," — ",[51,114,115],{},"GET \u002Fapi\u002Fv1\u002Fme"," (ร้าน · แพ็ก · โควตา live+test · บัญชีรับเงิน)\nและ ",[51,118,119],{},"GET \u002Fapi\u002Fv1\u002Fquota"," (โควตาอย่างเดียว) ",[46,122,123],{},"ไม่หักสลิป"," · ต้องมี scope ",[51,126,127],{},"read","\nช่วง Trial ไม่มี API key — ดูกระเบื้องโควตาบน ",[60,130,134],{"href":131,"rel":132},"https:\u002F\u002Fapp.slip-bolt.com\u002Fdashboard",[133],"nofollow","Dashboard",[104,136,137],{"type":106},[42,138,139,142,143,145,146,149,150,153,154,157,158],{},[46,140,141],{},"Test mode"," — ใช้ key ",[51,144,57],{}," เพื่อรันทั้ง pipeline จริงโดย ",[46,147,148],{},"ไม่กินโควตาของร้าน"," เหมาะกับตอน\ndev\u002FCI · แต่มีเพดานแยกของตัวเอง ",[46,151,152],{},"200 ครั้ง\u002Fร้าน\u002Fเดือน"," (ตรวจกับธนาคารจริงทุกครั้ง ไม่ใช่ของจำลอง)\nเกินแล้วได้ ",[51,155,156],{},"402 TEST_QUOTA_EXCEEDED"," เหมือนกัน — ดูรายละเอียดที่ ",[60,159,15],{"href":160},"\u002Fdocs\u002Fauthentication#sk_test_-%E0%B9%80%E0%B8%A5%E0%B8%99%E0%B8%97%E0%B8%94%E0%B8%AA%E0%B8%AD%E0%B8%9A",[162,163],"hr",{},[63,165,167],{"id":166},"post-apiv1verify","POST \u002Fapi\u002Fv1\u002Fverify",[42,169,170,171,174],{},"ตรวจสลิปโอนเงิน 1 ใบ ส่งรูปสลิปเป็น ",[46,172,173],{},"raw bytes"," (ไม่ใช่ JSON \u002F ไม่ใช่ base64)",[176,177,179],"h3",{"id":178},"request","Request",[181,182,183,194],"table",{},[184,185,186],"thead",{},[187,188,189,192],"tr",{},[190,191],"th",{},[190,193],{},[195,196,197,208,218,226],"tbody",{},[187,198,199,203],{},[200,201,202],"td",{},"Method",[200,204,205],{},[51,206,207],{},"POST",[187,209,210,213],{},[200,211,212],{},"Content-Type",[200,214,215],{},[51,216,217],{},"application\u002Foctet-stream",[187,219,220,223],{},[200,221,222],{},"Body",[200,224,225],{},"ไฟล์รูปสลิป (JPEG\u002FPNG) เป็น binary ดิบ",[187,227,228,231],{},[200,229,230],{},"Scope ที่ต้องมี",[200,232,233],{},[51,234,235],{},"verify",[68,237,241],{"className":238,"code":239,"language":240,"meta":76,"style":76},"language-bash shiki shiki-themes github-light github-dark","curl -X POST https:\u002F\u002Fapi.slip-bolt.com\u002Fapi\u002Fv1\u002Fverify \\\n  -H \"Authorization: Bearer sk_live_...\" \\\n  -H \"Content-Type: application\u002Foctet-stream\" \\\n  --data-binary \"@slip.jpg\"\n","bash",[51,242,243,262,273,283],{"__ignoreMap":76},[88,244,245,249,253,256,259],{"class":90,"line":8},[88,246,248],{"class":247},"sScJk","curl",[88,250,252],{"class":251},"sj4cs"," -X",[88,254,255],{"class":101}," POST",[88,257,258],{"class":101}," https:\u002F\u002Fapi.slip-bolt.com\u002Fapi\u002Fv1\u002Fverify",[88,260,261],{"class":251}," \\\n",[88,263,265,268,271],{"class":90,"line":264},2,[88,266,267],{"class":251},"  -H",[88,269,270],{"class":101}," \"Authorization: Bearer sk_live_...\"",[88,272,261],{"class":251},[88,274,276,278,281],{"class":90,"line":275},3,[88,277,267],{"class":251},[88,279,280],{"class":101}," \"Content-Type: application\u002Foctet-stream\"",[88,282,261],{"class":251},[88,284,286,289],{"class":90,"line":285},4,[88,287,288],{"class":251},"  --data-binary",[88,290,291],{"class":101}," \"@slip.jpg\"\n",[42,293,294],{},[46,295,296],{},"Node.js",[68,298,302],{"className":299,"code":300,"language":301,"meta":76,"style":76},"language-javascript shiki shiki-themes github-light github-dark","import { readFile } from 'node:fs\u002Fpromises';\n\nconst image = await readFile('slip.jpg');\nconst res = await fetch('https:\u002F\u002Fapi.slip-bolt.com\u002Fapi\u002Fv1\u002Fverify', {\n  method: 'POST',\n  headers: {\n    Authorization: `Bearer ${process.env.SLIPBOLT_API_KEY}`,\n    'Content-Type': 'application\u002Foctet-stream',\n  },\n  body: image,\n});\n\nif (res.status === 402) throw new Error('โควตาหมด — อัปเกรดแพ็ก');\nconst data = await res.json();\nconsole.log(data.verified, data.amount, res.headers.get('X-Slipbolt-Quota-Remaining'));\n","javascript",[51,303,304,309,315,320,325,331,337,343,349,355,360,366,371,377,383],{"__ignoreMap":76},[88,305,306],{"class":90,"line":8},[88,307,308],{},"import { readFile } from 'node:fs\u002Fpromises';\n",[88,310,311],{"class":90,"line":264},[88,312,314],{"emptyLinePlaceholder":313},true,"\n",[88,316,317],{"class":90,"line":275},[88,318,319],{},"const image = await readFile('slip.jpg');\n",[88,321,322],{"class":90,"line":285},[88,323,324],{},"const res = await fetch('https:\u002F\u002Fapi.slip-bolt.com\u002Fapi\u002Fv1\u002Fverify', {\n",[88,326,328],{"class":90,"line":327},5,[88,329,330],{},"  method: 'POST',\n",[88,332,334],{"class":90,"line":333},6,[88,335,336],{},"  headers: {\n",[88,338,340],{"class":90,"line":339},7,[88,341,342],{},"    Authorization: `Bearer ${process.env.SLIPBOLT_API_KEY}`,\n",[88,344,346],{"class":90,"line":345},8,[88,347,348],{},"    'Content-Type': 'application\u002Foctet-stream',\n",[88,350,352],{"class":90,"line":351},9,[88,353,354],{},"  },\n",[88,356,357],{"class":90,"line":12},[88,358,359],{},"  body: image,\n",[88,361,363],{"class":90,"line":362},11,[88,364,365],{},"});\n",[88,367,369],{"class":90,"line":368},12,[88,370,314],{"emptyLinePlaceholder":313},[88,372,374],{"class":90,"line":373},13,[88,375,376],{},"if (res.status === 402) throw new Error('โควตาหมด — อัปเกรดแพ็ก');\n",[88,378,380],{"class":90,"line":379},14,[88,381,382],{},"const data = await res.json();\n",[88,384,386],{"class":90,"line":385},15,[88,387,388],{},"console.log(data.verified, data.amount, res.headers.get('X-Slipbolt-Quota-Remaining'));\n",[42,390,391],{},[46,392,393],{},"Python",[68,395,399],{"className":396,"code":397,"language":398,"meta":76,"style":76},"language-python shiki shiki-themes github-light github-dark","import requests\n\nwith open(\"slip.jpg\", \"rb\") as f:\n    res = requests.post(\n        \"https:\u002F\u002Fapi.slip-bolt.com\u002Fapi\u002Fv1\u002Fverify\",\n        headers={\n            \"Authorization\": f\"Bearer {API_KEY}\",\n            \"Content-Type\": \"application\u002Foctet-stream\",\n        },\n        data=f.read(),\n    )\n\nif res.status_code == 402:\n    raise RuntimeError(\"quota exhausted\")\nprint(res.json()[\"verified\"], res.headers[\"X-Slipbolt-Quota-Remaining\"])\n","python",[51,400,401,406,410,415,420,425,430,435,440,445,450,455,459,464,469],{"__ignoreMap":76},[88,402,403],{"class":90,"line":8},[88,404,405],{},"import requests\n",[88,407,408],{"class":90,"line":264},[88,409,314],{"emptyLinePlaceholder":313},[88,411,412],{"class":90,"line":275},[88,413,414],{},"with open(\"slip.jpg\", \"rb\") as f:\n",[88,416,417],{"class":90,"line":285},[88,418,419],{},"    res = requests.post(\n",[88,421,422],{"class":90,"line":327},[88,423,424],{},"        \"https:\u002F\u002Fapi.slip-bolt.com\u002Fapi\u002Fv1\u002Fverify\",\n",[88,426,427],{"class":90,"line":333},[88,428,429],{},"        headers={\n",[88,431,432],{"class":90,"line":339},[88,433,434],{},"            \"Authorization\": f\"Bearer {API_KEY}\",\n",[88,436,437],{"class":90,"line":345},[88,438,439],{},"            \"Content-Type\": \"application\u002Foctet-stream\",\n",[88,441,442],{"class":90,"line":351},[88,443,444],{},"        },\n",[88,446,447],{"class":90,"line":12},[88,448,449],{},"        data=f.read(),\n",[88,451,452],{"class":90,"line":362},[88,453,454],{},"    )\n",[88,456,457],{"class":90,"line":368},[88,458,314],{"emptyLinePlaceholder":313},[88,460,461],{"class":90,"line":373},[88,462,463],{},"if res.status_code == 402:\n",[88,465,466],{"class":90,"line":379},[88,467,468],{},"    raise RuntimeError(\"quota exhausted\")\n",[88,470,471],{"class":90,"line":385},[88,472,473],{},"print(res.json()[\"verified\"], res.headers[\"X-Slipbolt-Quota-Remaining\"])\n",[176,475,477,478],{"id":476},"response-200-ok","Response ",[51,479,480],{},"200 OK",[68,482,486],{"className":483,"code":484,"language":485,"meta":76,"style":76},"language-json shiki shiki-themes github-light github-dark","{\n  \"success\": true,\n  \"data\": {\n    \"id\": \"8f3c…\",\n    \"status\": \"SUCCESS\",\n    \"verified\": true,\n    \"transRef\": \"015170106978META…\",\n    \"amount\": 250.0,\n    \"bankCode\": \"002\",\n    \"bankName\": \"ธนาคารกรุงเทพ\",\n    \"senderName\": \"นาย ก. …\",\n    \"senderAccount\": \"xxx-x-x1234-x\",\n    \"receiverName\": \"ร้าน ข.\",\n    \"receiverAccount\": \"xxx-x-x5678-x\",\n    \"transDate\": \"2026-06-17T03:21:05.000Z\",\n    \"errorCode\": null,\n    \"errorMessage\": null,\n    \"createdAt\": \"2026-06-17T03:21:06.412Z\",\n    \"duplicate\": false,\n    \"cached\": false,\n    \"latencyMs\": 480,\n    \"environment\": \"live\",\n    \"quota\": { \"used\": 132, \"limit\": 500, \"remaining\": 368 }\n  },\n  \"meta\": { \"requestId\": \"req_…\", \"timestamp\": \"2026-06-17T10:21:06+07:00\" }\n}\n","json",[51,487,488,494,508,516,528,540,551,563,575,587,599,611,623,635,647,659,672,684,697,710,721,734,747,788,793,820],{"__ignoreMap":76},[88,489,490],{"class":90,"line":8},[88,491,493],{"class":492},"sVt8B","{\n",[88,495,496,499,502,505],{"class":90,"line":264},[88,497,498],{"class":251},"  \"success\"",[88,500,501],{"class":492},": ",[88,503,504],{"class":251},"true",[88,506,507],{"class":492},",\n",[88,509,510,513],{"class":90,"line":275},[88,511,512],{"class":251},"  \"data\"",[88,514,515],{"class":492},": {\n",[88,517,518,521,523,526],{"class":90,"line":285},[88,519,520],{"class":251},"    \"id\"",[88,522,501],{"class":492},[88,524,525],{"class":101},"\"8f3c…\"",[88,527,507],{"class":492},[88,529,530,533,535,538],{"class":90,"line":327},[88,531,532],{"class":251},"    \"status\"",[88,534,501],{"class":492},[88,536,537],{"class":101},"\"SUCCESS\"",[88,539,507],{"class":492},[88,541,542,545,547,549],{"class":90,"line":333},[88,543,544],{"class":251},"    \"verified\"",[88,546,501],{"class":492},[88,548,504],{"class":251},[88,550,507],{"class":492},[88,552,553,556,558,561],{"class":90,"line":339},[88,554,555],{"class":251},"    \"transRef\"",[88,557,501],{"class":492},[88,559,560],{"class":101},"\"015170106978META…\"",[88,562,507],{"class":492},[88,564,565,568,570,573],{"class":90,"line":345},[88,566,567],{"class":251},"    \"amount\"",[88,569,501],{"class":492},[88,571,572],{"class":251},"250.0",[88,574,507],{"class":492},[88,576,577,580,582,585],{"class":90,"line":351},[88,578,579],{"class":251},"    \"bankCode\"",[88,581,501],{"class":492},[88,583,584],{"class":101},"\"002\"",[88,586,507],{"class":492},[88,588,589,592,594,597],{"class":90,"line":12},[88,590,591],{"class":251},"    \"bankName\"",[88,593,501],{"class":492},[88,595,596],{"class":101},"\"ธนาคารกรุงเทพ\"",[88,598,507],{"class":492},[88,600,601,604,606,609],{"class":90,"line":362},[88,602,603],{"class":251},"    \"senderName\"",[88,605,501],{"class":492},[88,607,608],{"class":101},"\"นาย ก. …\"",[88,610,507],{"class":492},[88,612,613,616,618,621],{"class":90,"line":368},[88,614,615],{"class":251},"    \"senderAccount\"",[88,617,501],{"class":492},[88,619,620],{"class":101},"\"xxx-x-x1234-x\"",[88,622,507],{"class":492},[88,624,625,628,630,633],{"class":90,"line":373},[88,626,627],{"class":251},"    \"receiverName\"",[88,629,501],{"class":492},[88,631,632],{"class":101},"\"ร้าน ข.\"",[88,634,507],{"class":492},[88,636,637,640,642,645],{"class":90,"line":379},[88,638,639],{"class":251},"    \"receiverAccount\"",[88,641,501],{"class":492},[88,643,644],{"class":101},"\"xxx-x-x5678-x\"",[88,646,507],{"class":492},[88,648,649,652,654,657],{"class":90,"line":385},[88,650,651],{"class":251},"    \"transDate\"",[88,653,501],{"class":492},[88,655,656],{"class":101},"\"2026-06-17T03:21:05.000Z\"",[88,658,507],{"class":492},[88,660,662,665,667,670],{"class":90,"line":661},16,[88,663,664],{"class":251},"    \"errorCode\"",[88,666,501],{"class":492},[88,668,669],{"class":251},"null",[88,671,507],{"class":492},[88,673,675,678,680,682],{"class":90,"line":674},17,[88,676,677],{"class":251},"    \"errorMessage\"",[88,679,501],{"class":492},[88,681,669],{"class":251},[88,683,507],{"class":492},[88,685,687,690,692,695],{"class":90,"line":686},18,[88,688,689],{"class":251},"    \"createdAt\"",[88,691,501],{"class":492},[88,693,694],{"class":101},"\"2026-06-17T03:21:06.412Z\"",[88,696,507],{"class":492},[88,698,700,703,705,708],{"class":90,"line":699},19,[88,701,702],{"class":251},"    \"duplicate\"",[88,704,501],{"class":492},[88,706,707],{"class":251},"false",[88,709,507],{"class":492},[88,711,712,715,717,719],{"class":90,"line":17},[88,713,714],{"class":251},"    \"cached\"",[88,716,501],{"class":492},[88,718,707],{"class":251},[88,720,507],{"class":492},[88,722,724,727,729,732],{"class":90,"line":723},21,[88,725,726],{"class":251},"    \"latencyMs\"",[88,728,501],{"class":492},[88,730,731],{"class":251},"480",[88,733,507],{"class":492},[88,735,737,740,742,745],{"class":90,"line":736},22,[88,738,739],{"class":251},"    \"environment\"",[88,741,501],{"class":492},[88,743,744],{"class":101},"\"live\"",[88,746,507],{"class":492},[88,748,750,753,756,759,761,764,767,770,772,775,777,780,782,785],{"class":90,"line":749},23,[88,751,752],{"class":251},"    \"quota\"",[88,754,755],{"class":492},": { ",[88,757,758],{"class":251},"\"used\"",[88,760,501],{"class":492},[88,762,763],{"class":251},"132",[88,765,766],{"class":492},", ",[88,768,769],{"class":251},"\"limit\"",[88,771,501],{"class":492},[88,773,774],{"class":251},"500",[88,776,766],{"class":492},[88,778,779],{"class":251},"\"remaining\"",[88,781,501],{"class":492},[88,783,784],{"class":251},"368",[88,786,787],{"class":492}," }\n",[88,789,791],{"class":90,"line":790},24,[88,792,354],{"class":492},[88,794,795,798,800,803,805,808,810,813,815,818],{"class":90,"line":21},[88,796,797],{"class":251},"  \"meta\"",[88,799,755],{"class":492},[88,801,802],{"class":251},"\"requestId\"",[88,804,501],{"class":492},[88,806,807],{"class":101},"\"req_…\"",[88,809,766],{"class":492},[88,811,812],{"class":251},"\"timestamp\"",[88,814,501],{"class":492},[88,816,817],{"class":101},"\"2026-06-17T10:21:06+07:00\"",[88,819,787],{"class":492},[88,821,823],{"class":90,"line":822},26,[88,824,825],{"class":492},"}\n",[42,827,828,831,832,834,835,838,839,843],{},[51,829,830],{},"verified"," เป็น ",[51,833,504],{}," เฉพาะเมื่อ ",[51,836,837],{},"status === \"SUCCESS\""," — ดูตาราง ",[60,840,842],{"href":841},"#transaction-status","status"," ด้านล่าง",[162,845],{},[63,847,849],{"id":848},"quota-pool-เดียวกับสลิป-line","Quota — pool เดียวกับสลิป LINE",[42,851,852,853,856],{},"การเรียก API ",[46,854,855],{},"ใช้โควตารายเดือนเดียวกับสลิปจาก LINE ของร้าน"," (pool เดียว นับรวมกัน)\nไม่ใช่โควตาแยก — ใช้ผ่านช่องไหนก็หักจากก้อนเดียวกัน",[42,858,859,860,862],{},"ทุก response (รวม ",[51,861,119],{},") แนบ header บอกยอดคงเหลือ:",[181,864,865,875],{},[184,866,867],{},[187,868,869,872],{},[190,870,871],{},"Header",[190,873,874],{},"ความหมาย",[195,876,877,887,897,907],{},[187,878,879,884],{},[200,880,881],{},[51,882,883],{},"X-Slipbolt-Quota-Limit",[200,885,886],{},"เพดานสลิป\u002Fเดือนของแพ็กปัจจุบัน",[187,888,889,894],{},[200,890,891],{},[51,892,893],{},"X-Slipbolt-Quota-Used",[200,895,896],{},"ใช้ไปแล้วในรอบเดือนนี้",[187,898,899,904],{},[200,900,901],{},[51,902,903],{},"X-Slipbolt-Quota-Remaining",[200,905,906],{},"คงเหลือ",[187,908,909,914],{},[200,910,911],{},[51,912,913],{},"X-Slipbolt-Quota-Reset-Days",[200,915,916],{},"กี่วันก่อนรีเซ็ตรอบใหม่",[104,918,920,937,1031],{"type":919},"warning",[42,921,922,928,929,932,933,936],{},[46,923,924,925],{},"โควตาหมด → ",[51,926,927],{},"402 Payment Required"," (เฉพาะ key ",[51,930,931],{},"live",") — ไม่ใช่ ",[51,934,935],{},"200"," เงียบ ๆ ให้ integrator เช็คจาก HTTP status ได้เลย",[68,938,940],{"className":483,"code":939,"language":485,"meta":76,"style":76},"{ \"success\": false, \"statusCode\": 402, \"error\": \"Payment Required\",\n  \"message\": \"โควตาสลิปรายเดือนของร้านถูกใช้หมดแล้ว — อัปเกรดแพ็กหรือรอรอบบิลถัดไป\",\n  \"code\": \"QUOTA_EXCEEDED\", \"quota\": { \"used\": 500, \"limit\": 500, \"remaining\": 0 } }\n",[51,941,942,976,988],{"__ignoreMap":76},[88,943,944,947,950,952,954,956,959,961,964,966,969,971,974],{"class":90,"line":8},[88,945,946],{"class":492},"{ ",[88,948,949],{"class":251},"\"success\"",[88,951,501],{"class":492},[88,953,707],{"class":251},[88,955,766],{"class":492},[88,957,958],{"class":251},"\"statusCode\"",[88,960,501],{"class":492},[88,962,963],{"class":251},"402",[88,965,766],{"class":492},[88,967,968],{"class":251},"\"error\"",[88,970,501],{"class":492},[88,972,973],{"class":101},"\"Payment Required\"",[88,975,507],{"class":492},[88,977,978,981,983,986],{"class":90,"line":264},[88,979,980],{"class":251},"  \"message\"",[88,982,501],{"class":492},[88,984,985],{"class":101},"\"โควตาสลิปรายเดือนของร้านถูกใช้หมดแล้ว — อัปเกรดแพ็กหรือรอรอบบิลถัดไป\"",[88,987,507],{"class":492},[88,989,990,993,995,998,1000,1003,1005,1007,1009,1011,1013,1015,1017,1019,1021,1023,1025,1028],{"class":90,"line":275},[88,991,992],{"class":251},"  \"code\"",[88,994,501],{"class":492},[88,996,997],{"class":101},"\"QUOTA_EXCEEDED\"",[88,999,766],{"class":492},[88,1001,1002],{"class":251},"\"quota\"",[88,1004,755],{"class":492},[88,1006,758],{"class":251},[88,1008,501],{"class":492},[88,1010,774],{"class":251},[88,1012,766],{"class":492},[88,1014,769],{"class":251},[88,1016,501],{"class":492},[88,1018,774],{"class":251},[88,1020,766],{"class":492},[88,1022,779],{"class":251},[88,1024,501],{"class":492},[88,1026,1027],{"class":251},"0",[88,1029,1030],{"class":492}," } }\n",[42,1032,1033,1034,1037,1038,1040,1041,1044,1045,1047],{},"key ",[51,1035,1036],{},"sk_test_"," ไม่กินโควตาก้อนนี้ (ของร้าน) จึงไม่ได้ ",[51,1039,963],{}," ตัวนี้ — ",[46,1042,1043],{},"แต่มีเพดานแยกของตัวเอง\n200 ครั้ง\u002Fเดือน"," เกินแล้วได้ ",[51,1046,156],{}," เหมือนกัน (ดูหัวข้อ Idempotency\u002FTest mode ด้านบน)",[162,1049],{},[63,1051,119],{"id":1052},"get-apiv1quota",[42,1054,1055,1056,1059],{},"อ่านโควตาคงเหลือ ",[46,1057,1058],{},"โดยไม่เปลือง verify"," — เหมาะให้ระบบ poll ก่อนยิงงานชุดใหญ่",[181,1061,1062,1070],{},[184,1063,1064],{},[187,1065,1066,1068],{},[190,1067],{},[190,1069],{},[195,1071,1072,1081],{},[187,1073,1074,1076],{},[200,1075,202],{},[200,1077,1078],{},[51,1079,1080],{},"GET",[187,1082,1083,1085],{},[200,1084,230],{},[200,1086,1087],{},[51,1088,127],{},[68,1090,1092],{"className":238,"code":1091,"language":240,"meta":76,"style":76},"curl https:\u002F\u002Fapi.slip-bolt.com\u002Fapi\u002Fv1\u002Fquota \\\n  -H \"Authorization: Bearer sk_live_...\"\n",[51,1093,1094,1103],{"__ignoreMap":76},[88,1095,1096,1098,1101],{"class":90,"line":8},[88,1097,248],{"class":247},[88,1099,1100],{"class":101}," https:\u002F\u002Fapi.slip-bolt.com\u002Fapi\u002Fv1\u002Fquota",[88,1102,261],{"class":251},[88,1104,1105,1107],{"class":90,"line":264},[88,1106,267],{"class":251},[88,1108,1109],{"class":101}," \"Authorization: Bearer sk_live_...\"\n",[68,1111,1113],{"className":483,"code":1112,"language":485,"meta":76,"style":76},"{\n  \"success\": true,\n  \"data\": {\n    \"used\": 132,\n    \"limit\": 500,\n    \"remaining\": 368,\n    \"percentUsed\": 26,\n    \"allowOverage\": false,\n    \"planCode\": \"STARTER\",\n    \"periodMonth\": \"2026-06\",\n    \"daysUntilReset\": 13\n  }\n}\n",[51,1114,1115,1119,1129,1135,1146,1157,1168,1180,1191,1203,1215,1225,1230],{"__ignoreMap":76},[88,1116,1117],{"class":90,"line":8},[88,1118,493],{"class":492},[88,1120,1121,1123,1125,1127],{"class":90,"line":264},[88,1122,498],{"class":251},[88,1124,501],{"class":492},[88,1126,504],{"class":251},[88,1128,507],{"class":492},[88,1130,1131,1133],{"class":90,"line":275},[88,1132,512],{"class":251},[88,1134,515],{"class":492},[88,1136,1137,1140,1142,1144],{"class":90,"line":285},[88,1138,1139],{"class":251},"    \"used\"",[88,1141,501],{"class":492},[88,1143,763],{"class":251},[88,1145,507],{"class":492},[88,1147,1148,1151,1153,1155],{"class":90,"line":327},[88,1149,1150],{"class":251},"    \"limit\"",[88,1152,501],{"class":492},[88,1154,774],{"class":251},[88,1156,507],{"class":492},[88,1158,1159,1162,1164,1166],{"class":90,"line":333},[88,1160,1161],{"class":251},"    \"remaining\"",[88,1163,501],{"class":492},[88,1165,784],{"class":251},[88,1167,507],{"class":492},[88,1169,1170,1173,1175,1178],{"class":90,"line":339},[88,1171,1172],{"class":251},"    \"percentUsed\"",[88,1174,501],{"class":492},[88,1176,1177],{"class":251},"26",[88,1179,507],{"class":492},[88,1181,1182,1185,1187,1189],{"class":90,"line":345},[88,1183,1184],{"class":251},"    \"allowOverage\"",[88,1186,501],{"class":492},[88,1188,707],{"class":251},[88,1190,507],{"class":492},[88,1192,1193,1196,1198,1201],{"class":90,"line":351},[88,1194,1195],{"class":251},"    \"planCode\"",[88,1197,501],{"class":492},[88,1199,1200],{"class":101},"\"STARTER\"",[88,1202,507],{"class":492},[88,1204,1205,1208,1210,1213],{"class":90,"line":12},[88,1206,1207],{"class":251},"    \"periodMonth\"",[88,1209,501],{"class":492},[88,1211,1212],{"class":101},"\"2026-06\"",[88,1214,507],{"class":492},[88,1216,1217,1220,1222],{"class":90,"line":362},[88,1218,1219],{"class":251},"    \"daysUntilReset\"",[88,1221,501],{"class":492},[88,1223,1224],{"class":251},"13\n",[88,1226,1227],{"class":90,"line":368},[88,1228,1229],{"class":492},"  }\n",[88,1231,1232],{"class":90,"line":373},[88,1233,825],{"class":492},[162,1235],{},[63,1237,115],{"id":1238},"get-apiv1me",[42,1240,1241,1242,1245,1246,1249],{},"ข้อมูลร้าน · คีย์ · แพ็ก · โควตาคงเหลือ — ",[46,1243,1244],{},"ไม่เปลืองโควตา"," เหมาะเรียกตอนบูตระบบของคุณ\nเพื่อเช็คว่าคีย์ถูกร้าน scope ครบ เหลือสลิปเท่าไหร่ และบัญชีรับเงินที่ระบบใช้เทียบผู้รับคือบัญชีไหน\n(สาเหตุอันดับหนึ่งของ ",[51,1247,1248],{},"RECEIVER_MISMATCH"," คือร้านยังไม่ได้เพิ่มบัญชีที่ลูกค้าโอนเข้า)",[42,1251,1252,1253,1256,1257,1260,1261,1264],{},"ช่วงทดลอง 7 วัน ",[51,1254,1255],{},"plan.code"," จะเป็น ",[51,1258,1259],{},"\"TRIAL\""," และ ",[51,1262,1263],{},"quota.limit"," = 50 เสมอ\nแม้ร้านจะเคยเลือกการ์ด Pro\u002FBusiness ตอนสมัคร — สิทธิ์แพ็กจ่ายเริ่มหลังชำระแล้วเท่านั้น",[181,1266,1267,1275],{},[184,1268,1269],{},[187,1270,1271,1273],{},[190,1272],{},[190,1274],{},[195,1276,1277,1285],{},[187,1278,1279,1281],{},[200,1280,202],{},[200,1282,1283],{},[51,1284,1080],{},[187,1286,1287,1289],{},[200,1288,230],{},[200,1290,1291],{},[51,1292,127],{},[68,1294,1296],{"className":238,"code":1295,"language":240,"meta":76,"style":76},"curl https:\u002F\u002Fapi.slip-bolt.com\u002Fapi\u002Fv1\u002Fme \\\n  -H \"Authorization: Bearer sk_live_...\"\n",[51,1297,1298,1307],{"__ignoreMap":76},[88,1299,1300,1302,1305],{"class":90,"line":8},[88,1301,248],{"class":247},[88,1303,1304],{"class":101}," https:\u002F\u002Fapi.slip-bolt.com\u002Fapi\u002Fv1\u002Fme",[88,1306,261],{"class":251},[88,1308,1309,1311],{"class":90,"line":264},[88,1310,267],{"class":251},[88,1312,1109],{"class":101},[68,1314,1316],{"className":483,"code":1315,"language":485,"meta":76,"style":76},"{\n  \"success\": true,\n  \"data\": {\n    \"shop\": { \"id\": \"8f3c…\", \"name\": \"ร้าน ข.\" },\n    \"apiKey\": {\n      \"name\": \"POS หน้าร้าน\",\n      \"prefix\": \"sk_live_a1b2c3\",\n      \"environment\": \"live\",\n      \"scopes\": [\"verify\", \"read\"],\n      \"lastUsedAt\": \"2026-06-17T03:21:06.000Z\",\n      \"createdAt\": \"2026-05-01T00:00:00.000Z\"\n    },\n    \"plan\": { \"code\": \"STARTER\", \"name\": \"Starter\" },\n    \"quota\": { \"used\": 132, \"limit\": 500, \"remaining\": 368, \"percentUsed\": 26,\n      \"overage\": 0, \"allowOverage\": false, \"planCode\": \"STARTER\",\n      \"periodMonth\": \"2026-06\", \"daysUntilReset\": 13 },\n    \"testQuota\": { \"used\": 12, \"limit\": 200, \"remaining\": 188 },\n    \"rateLimit\": { \"perKeyPerMinute\": 120, \"verifyPerMinute\": 240 },\n    \"payeeAccounts\": [\n      { \"bankCode\": \"kbank\", \"kind\": \"BANK\", \"holder\": \"ร้าน ข.\", \"accountLast4\": \"5678\", \"isPrimary\": true, \"status\": \"ACTIVE\" }\n    ]\n  }\n}\n",[51,1317,1318,1322,1332,1338,1364,1371,1383,1395,1406,1425,1437,1447,1452,1477,1516,1545,1566,1599,1626,1634,1697,1702,1706],{"__ignoreMap":76},[88,1319,1320],{"class":90,"line":8},[88,1321,493],{"class":492},[88,1323,1324,1326,1328,1330],{"class":90,"line":264},[88,1325,498],{"class":251},[88,1327,501],{"class":492},[88,1329,504],{"class":251},[88,1331,507],{"class":492},[88,1333,1334,1336],{"class":90,"line":275},[88,1335,512],{"class":251},[88,1337,515],{"class":492},[88,1339,1340,1343,1345,1348,1350,1352,1354,1357,1359,1361],{"class":90,"line":285},[88,1341,1342],{"class":251},"    \"shop\"",[88,1344,755],{"class":492},[88,1346,1347],{"class":251},"\"id\"",[88,1349,501],{"class":492},[88,1351,525],{"class":101},[88,1353,766],{"class":492},[88,1355,1356],{"class":251},"\"name\"",[88,1358,501],{"class":492},[88,1360,632],{"class":101},[88,1362,1363],{"class":492}," },\n",[88,1365,1366,1369],{"class":90,"line":327},[88,1367,1368],{"class":251},"    \"apiKey\"",[88,1370,515],{"class":492},[88,1372,1373,1376,1378,1381],{"class":90,"line":333},[88,1374,1375],{"class":251},"      \"name\"",[88,1377,501],{"class":492},[88,1379,1380],{"class":101},"\"POS หน้าร้าน\"",[88,1382,507],{"class":492},[88,1384,1385,1388,1390,1393],{"class":90,"line":339},[88,1386,1387],{"class":251},"      \"prefix\"",[88,1389,501],{"class":492},[88,1391,1392],{"class":101},"\"sk_live_a1b2c3\"",[88,1394,507],{"class":492},[88,1396,1397,1400,1402,1404],{"class":90,"line":345},[88,1398,1399],{"class":251},"      \"environment\"",[88,1401,501],{"class":492},[88,1403,744],{"class":101},[88,1405,507],{"class":492},[88,1407,1408,1411,1414,1417,1419,1422],{"class":90,"line":351},[88,1409,1410],{"class":251},"      \"scopes\"",[88,1412,1413],{"class":492},": [",[88,1415,1416],{"class":101},"\"verify\"",[88,1418,766],{"class":492},[88,1420,1421],{"class":101},"\"read\"",[88,1423,1424],{"class":492},"],\n",[88,1426,1427,1430,1432,1435],{"class":90,"line":12},[88,1428,1429],{"class":251},"      \"lastUsedAt\"",[88,1431,501],{"class":492},[88,1433,1434],{"class":101},"\"2026-06-17T03:21:06.000Z\"",[88,1436,507],{"class":492},[88,1438,1439,1442,1444],{"class":90,"line":362},[88,1440,1441],{"class":251},"      \"createdAt\"",[88,1443,501],{"class":492},[88,1445,1446],{"class":101},"\"2026-05-01T00:00:00.000Z\"\n",[88,1448,1449],{"class":90,"line":368},[88,1450,1451],{"class":492},"    },\n",[88,1453,1454,1457,1459,1462,1464,1466,1468,1470,1472,1475],{"class":90,"line":373},[88,1455,1456],{"class":251},"    \"plan\"",[88,1458,755],{"class":492},[88,1460,1461],{"class":251},"\"code\"",[88,1463,501],{"class":492},[88,1465,1200],{"class":101},[88,1467,766],{"class":492},[88,1469,1356],{"class":251},[88,1471,501],{"class":492},[88,1473,1474],{"class":101},"\"Starter\"",[88,1476,1363],{"class":492},[88,1478,1479,1481,1483,1485,1487,1489,1491,1493,1495,1497,1499,1501,1503,1505,1507,1510,1512,1514],{"class":90,"line":379},[88,1480,752],{"class":251},[88,1482,755],{"class":492},[88,1484,758],{"class":251},[88,1486,501],{"class":492},[88,1488,763],{"class":251},[88,1490,766],{"class":492},[88,1492,769],{"class":251},[88,1494,501],{"class":492},[88,1496,774],{"class":251},[88,1498,766],{"class":492},[88,1500,779],{"class":251},[88,1502,501],{"class":492},[88,1504,784],{"class":251},[88,1506,766],{"class":492},[88,1508,1509],{"class":251},"\"percentUsed\"",[88,1511,501],{"class":492},[88,1513,1177],{"class":251},[88,1515,507],{"class":492},[88,1517,1518,1521,1523,1525,1527,1530,1532,1534,1536,1539,1541,1543],{"class":90,"line":385},[88,1519,1520],{"class":251},"      \"overage\"",[88,1522,501],{"class":492},[88,1524,1027],{"class":251},[88,1526,766],{"class":492},[88,1528,1529],{"class":251},"\"allowOverage\"",[88,1531,501],{"class":492},[88,1533,707],{"class":251},[88,1535,766],{"class":492},[88,1537,1538],{"class":251},"\"planCode\"",[88,1540,501],{"class":492},[88,1542,1200],{"class":101},[88,1544,507],{"class":492},[88,1546,1547,1550,1552,1554,1556,1559,1561,1564],{"class":90,"line":661},[88,1548,1549],{"class":251},"      \"periodMonth\"",[88,1551,501],{"class":492},[88,1553,1212],{"class":101},[88,1555,766],{"class":492},[88,1557,1558],{"class":251},"\"daysUntilReset\"",[88,1560,501],{"class":492},[88,1562,1563],{"class":251},"13",[88,1565,1363],{"class":492},[88,1567,1568,1571,1573,1575,1577,1580,1582,1584,1586,1588,1590,1592,1594,1597],{"class":90,"line":674},[88,1569,1570],{"class":251},"    \"testQuota\"",[88,1572,755],{"class":492},[88,1574,758],{"class":251},[88,1576,501],{"class":492},[88,1578,1579],{"class":251},"12",[88,1581,766],{"class":492},[88,1583,769],{"class":251},[88,1585,501],{"class":492},[88,1587,935],{"class":251},[88,1589,766],{"class":492},[88,1591,779],{"class":251},[88,1593,501],{"class":492},[88,1595,1596],{"class":251},"188",[88,1598,1363],{"class":492},[88,1600,1601,1604,1606,1609,1611,1614,1616,1619,1621,1624],{"class":90,"line":686},[88,1602,1603],{"class":251},"    \"rateLimit\"",[88,1605,755],{"class":492},[88,1607,1608],{"class":251},"\"perKeyPerMinute\"",[88,1610,501],{"class":492},[88,1612,1613],{"class":251},"120",[88,1615,766],{"class":492},[88,1617,1618],{"class":251},"\"verifyPerMinute\"",[88,1620,501],{"class":492},[88,1622,1623],{"class":251},"240",[88,1625,1363],{"class":492},[88,1627,1628,1631],{"class":90,"line":699},[88,1629,1630],{"class":251},"    \"payeeAccounts\"",[88,1632,1633],{"class":492},": [\n",[88,1635,1636,1639,1642,1644,1647,1649,1652,1654,1657,1659,1662,1664,1666,1668,1671,1673,1676,1678,1681,1683,1685,1687,1690,1692,1695],{"class":90,"line":17},[88,1637,1638],{"class":492},"      { ",[88,1640,1641],{"class":251},"\"bankCode\"",[88,1643,501],{"class":492},[88,1645,1646],{"class":101},"\"kbank\"",[88,1648,766],{"class":492},[88,1650,1651],{"class":251},"\"kind\"",[88,1653,501],{"class":492},[88,1655,1656],{"class":101},"\"BANK\"",[88,1658,766],{"class":492},[88,1660,1661],{"class":251},"\"holder\"",[88,1663,501],{"class":492},[88,1665,632],{"class":101},[88,1667,766],{"class":492},[88,1669,1670],{"class":251},"\"accountLast4\"",[88,1672,501],{"class":492},[88,1674,1675],{"class":101},"\"5678\"",[88,1677,766],{"class":492},[88,1679,1680],{"class":251},"\"isPrimary\"",[88,1682,501],{"class":492},[88,1684,504],{"class":251},[88,1686,766],{"class":492},[88,1688,1689],{"class":251},"\"status\"",[88,1691,501],{"class":492},[88,1693,1694],{"class":101},"\"ACTIVE\"",[88,1696,787],{"class":492},[88,1698,1699],{"class":90,"line":723},[88,1700,1701],{"class":492},"    ]\n",[88,1703,1704],{"class":90,"line":736},[88,1705,1229],{"class":492},[88,1707,1708],{"class":90,"line":749},[88,1709,825],{"class":492},[104,1711,1712],{"type":106},[42,1713,1714,1717,1718,1721,1722,1725,1726,1728],{},[51,1715,1716],{},"payeeAccounts"," ส่งแค่ ",[46,1719,1720],{},"4 ตัวท้าย"," ของเลขบัญชี — คีย์ API รั่วได้ง่ายกว่ารหัสผ่านหน้าเว็บ\nไม่จำเป็นต้องให้เลขเต็มเพื่อรู้ว่า \"บัญชีไหน\" · ",[51,1723,1724],{},"testQuota.used: null"," = วัดไม่ได้ชั่วคราว\n(คีย์ ",[51,1727,1036],{}," จะตกไปกินโควตาปกติของร้านแทน ไม่ใช่ error)",[162,1730],{},[63,1732,1734],{"id":1733},"get-apiv1transactions","GET \u002Fapi\u002Fv1\u002Ftransactions",[42,1736,1737,1738,1741],{},"ลิสต์ผลตรวจสลิปของร้านย้อนหลัง — ใหม่สุดก่อน แบ่งหน้าแบบ cursor รวมทุกช่องทาง (API \u002F LINE \u002F Dashboard)\nเหมาะกับตอน ",[51,1739,1740],{},"POST \u002Fverify"," หลุดกลางทาง (timeout\u002Fเน็ตตัด) แล้วอยากรู้ผลจริงโดยไม่ต้องส่งสลิปซ้ำ",[181,1743,1744,1752],{},[184,1745,1746],{},[187,1747,1748,1750],{},[190,1749],{},[190,1751],{},[195,1753,1754,1762,1770],{},[187,1755,1756,1758],{},[200,1757,202],{},[200,1759,1760],{},[51,1761,1080],{},[187,1763,1764,1766],{},[200,1765,230],{},[200,1767,1768],{},[51,1769,127],{},[187,1771,1772,1775],{},[200,1773,1774],{},"Query",[200,1776,1777,1779,1780,1779,1783,1779,1786,1789,1790,1793,1794,1779,1797,1800],{},[51,1778,842],{}," · ",[51,1781,1782],{},"source",[51,1784,1785],{},"transRef",[51,1787,1788],{},"from","\u002F",[51,1791,1792],{},"to"," (ISO-8601) · ",[51,1795,1796],{},"cursor",[51,1798,1799],{},"limit"," (1-100, default 50)",[68,1802,1804],{"className":238,"code":1803,"language":240,"meta":76,"style":76},"curl \"https:\u002F\u002Fapi.slip-bolt.com\u002Fapi\u002Fv1\u002Ftransactions?status=SUCCESS&limit=20\" \\\n  -H \"Authorization: Bearer sk_live_...\"\n",[51,1805,1806,1815],{"__ignoreMap":76},[88,1807,1808,1810,1813],{"class":90,"line":8},[88,1809,248],{"class":247},[88,1811,1812],{"class":101}," \"https:\u002F\u002Fapi.slip-bolt.com\u002Fapi\u002Fv1\u002Ftransactions?status=SUCCESS&limit=20\"",[88,1814,261],{"class":251},[88,1816,1817,1819],{"class":90,"line":264},[88,1818,267],{"class":251},[88,1820,1109],{"class":101},[68,1822,1824],{"className":483,"code":1823,"language":485,"meta":76,"style":76},"{\n  \"success\": true,\n  \"data\": {\n    \"items\": [ { \"id\": \"8f3c…\", \"status\": \"SUCCESS\", \"verified\": true, \"…\": \"…\" } ],\n    \"nextCursor\": \"7ab1…\"\n  }\n}\n",[51,1825,1826,1830,1840,1846,1889,1899,1903],{"__ignoreMap":76},[88,1827,1828],{"class":90,"line":8},[88,1829,493],{"class":492},[88,1831,1832,1834,1836,1838],{"class":90,"line":264},[88,1833,498],{"class":251},[88,1835,501],{"class":492},[88,1837,504],{"class":251},[88,1839,507],{"class":492},[88,1841,1842,1844],{"class":90,"line":275},[88,1843,512],{"class":251},[88,1845,515],{"class":492},[88,1847,1848,1851,1854,1856,1858,1860,1862,1864,1866,1868,1870,1873,1875,1877,1879,1882,1884,1886],{"class":90,"line":285},[88,1849,1850],{"class":251},"    \"items\"",[88,1852,1853],{"class":492},": [ { ",[88,1855,1347],{"class":251},[88,1857,501],{"class":492},[88,1859,525],{"class":101},[88,1861,766],{"class":492},[88,1863,1689],{"class":251},[88,1865,501],{"class":492},[88,1867,537],{"class":101},[88,1869,766],{"class":492},[88,1871,1872],{"class":251},"\"verified\"",[88,1874,501],{"class":492},[88,1876,504],{"class":251},[88,1878,766],{"class":492},[88,1880,1881],{"class":251},"\"…\"",[88,1883,501],{"class":492},[88,1885,1881],{"class":101},[88,1887,1888],{"class":492}," } ],\n",[88,1890,1891,1894,1896],{"class":90,"line":327},[88,1892,1893],{"class":251},"    \"nextCursor\"",[88,1895,501],{"class":492},[88,1897,1898],{"class":101},"\"7ab1…\"\n",[88,1900,1901],{"class":90,"line":333},[88,1902,1229],{"class":492},[88,1904,1905],{"class":90,"line":339},[88,1906,825],{"class":492},[42,1908,1909,1910,1913,1914,1916,1917,1919],{},"ส่ง ",[51,1911,1912],{},"nextCursor"," กลับมาเป็น ",[51,1915,1796],{}," เพื่อดึงหน้าถัดไป · ",[51,1918,669],{}," = หมดแล้ว",[63,1921,1923],{"id":1922},"get-apiv1transactionsid","GET \u002Fapi\u002Fv1\u002Ftransactions\u002F:id",[42,1925,1926,1927,1930,1931,1934],{},"ดึงผลตรวจสลิป 1 รายการ — ใช้คู่กับ webhook (รับ ",[51,1928,1929],{},"data.id"," จาก event แล้วมาดึงรายละเอียดเต็ม)\nรายการของร้านอื่น หรือ id ที่ไม่มีอยู่ → ",[51,1932,1933],{},"404"," เหมือนกัน (ไม่ยืนยันว่า id นั้นมีอยู่จริงในระบบ)",[68,1936,1938],{"className":238,"code":1937,"language":240,"meta":76,"style":76},"curl https:\u002F\u002Fapi.slip-bolt.com\u002Fapi\u002Fv1\u002Ftransactions\u002F8f3c2a1e-… \\\n  -H \"Authorization: Bearer sk_live_...\"\n",[51,1939,1940,1949],{"__ignoreMap":76},[88,1941,1942,1944,1947],{"class":90,"line":8},[88,1943,248],{"class":247},[88,1945,1946],{"class":101}," https:\u002F\u002Fapi.slip-bolt.com\u002Fapi\u002Fv1\u002Ftransactions\u002F8f3c2a1e-…",[88,1948,261],{"class":251},[88,1950,1951,1953],{"class":90,"line":264},[88,1952,267],{"class":251},[88,1954,1109],{"class":101},[162,1956],{},[63,1958,1960],{"id":1959},"scopes","Scopes",[42,1962,1963,1964,1967],{},"แต่ละ key ถือ scope ได้หลายตัว — endpoint ต้องการ scope ครบทุกตัวที่ระบุ (ตั้งค่าได้ที่ ",[46,1965,1966],{},"Settings → API Keys",")",[181,1969,1970,1980],{},[184,1971,1972],{},[187,1973,1974,1977],{},[190,1975,1976],{},"Scope",[190,1978,1979],{},"ใช้กับ",[195,1981,1982,1993,2008],{},[187,1983,1984,1988],{},[200,1985,1986],{},[51,1987,235],{},[200,1989,1990,1992],{},[51,1991,167],{}," (default ของทุก key)",[187,1994,1995,1999],{},[200,1996,1997],{},[51,1998,127],{},[200,2000,2001,1779,2003,1779,2005],{},[51,2002,119],{},[51,2004,115],{},[51,2006,2007],{},"GET \u002Fapi\u002Fv1\u002Ftransactions[\u002F:id]",[187,2009,2010,2015],{},[200,2011,2012],{},[51,2013,2014],{},"webhook",[200,2016,2017,2018,2021],{},"สำรองไว้สำหรับอนาคต — ตอนนี้ยังไม่มี public endpoint ใช้งาน scope นี้ (ตั้งค่า outgoing webhook ทำผ่าน ",[46,2019,2020],{},"Dashboard → Settings → Webhooks"," เท่านั้น ไม่ใช่ API key)",[42,2023,2024,2025,49,2028,1967],{},"scope ไม่พอ → ",[51,2026,2027],{},"403 Forbidden",[51,2029,2030],{},"API key missing scope(s): …",[162,2032],{},[63,2034,2036],{"id":2035},"rate-limit","Rate limit",[42,2038,2039,2042,2043,2045,2046,2049,2050,2053,2054],{},[46,2040,2041],{},"120 req\u002Fmin ต่อ key"," (เท่ากันทุกแพ็ก) + เพดานรวมของ ",[51,2044,167],{}," ที่ 240 req\u002Fmin\nเกินแล้ว → ",[51,2047,2048],{},"429 Too Many Requests"," + header ",[51,2051,2052],{},"Retry-After"," · ดู ",[60,2055,15],{"href":2056},"\u002Fdocs\u002Fauthentication#rate-limit-%E0%B9%80%E0%B8%97%E0%B9%88%E0%B8%B2%E0%B8%81%E0%B8%B1%E0%B8%99%E0%B8%97%E0%B8%B8%E0%B8%81%E0%B9%81%E0%B8%9E%E0%B9%87%E0%B8%81",[162,2058],{},[63,2060,2062],{"id":2061},"transaction-status","Transaction status",[181,2064,2065,2079],{},[184,2066,2067],{},[187,2068,2069,2073,2077],{},[190,2070,2071],{},[51,2072,842],{},[190,2074,2075],{},[51,2076,830],{},[190,2078,874],{},[195,2080,2081,2094,2110,2122,2133,2148,2160,2175],{},[187,2082,2083,2088,2091],{},[200,2084,2085],{},[51,2086,2087],{},"SUCCESS",[200,2089,2090],{},"✅",[200,2092,2093],{},"สลิปถูกต้อง โอนเข้าบัญชีร้าน",[187,2095,2096,2101,2104],{},[200,2097,2098],{},[51,2099,2100],{},"DUPLICATE",[200,2102,2103],{},"❌",[200,2105,2106,2107,2109],{},"เลขอ้างอิง (",[51,2108,1785],{},") นี้เคยตรวจแล้ว",[187,2111,2112,2117,2119],{},[200,2113,2114],{},[51,2115,2116],{},"AMOUNT_MISMATCH",[200,2118,2103],{},[200,2120,2121],{},"ยอดบนสลิปไม่ตรงเงื่อนไข",[187,2123,2124,2128,2130],{},[200,2125,2126],{},[51,2127,1248],{},[200,2129,2103],{},[200,2131,2132],{},"โอนเข้าบัญชีที่ไม่ใช่ของร้าน",[187,2134,2135,2140,2142],{},[200,2136,2137],{},[51,2138,2139],{},"INVALID",[200,2141,2103],{},[200,2143,2144,2145,1967],{},"อ่านสลิปไม่ได้ \u002F ไม่ใช่สลิป \u002F สลิปไม่ใช่รายการล่าสุด (",[51,2146,2147],{},"errorCode: STALE_SLIP",[187,2149,2150,2155,2157],{},[200,2151,2152],{},[51,2153,2154],{},"FRAUD",[200,2156,2103],{},[200,2158,2159],{},"สลิปปลอม\u002Fแก้ไข — ไม่ตรงข้อมูลธนาคาร",[187,2161,2162,2167,2169],{},[200,2163,2164],{},[51,2165,2166],{},"QUOTA_EXCEEDED",[200,2168,2103],{},[200,2170,2171,2172,2174],{},"โควตาหมด (ดู ",[51,2173,963],{}," ด้านบน)",[187,2176,2177,2182,2184],{},[200,2178,2179],{},[51,2180,2181],{},"PROVIDER_ERROR",[200,2183,2103],{},[200,2185,2186],{},"ผู้ให้บริการตรวจสลิปขัดข้องชั่วคราว — ลองใหม่",[162,2188],{},[63,2190,2192],{"id":2191},"idempotency","Idempotency",[42,2194,2195],{},"ระบบ dedupe ให้อัตโนมัติ — สองเคสที่ต่างกัน:",[2197,2198,2199,2214],"ul",{},[2200,2201,2202,2205,2206,1779,2209,1789,2211,2213],"li",{},[46,2203,2204],{},"ส่ง \"รูปเดิม\" ซ้ำภายใน 24 ชม."," → ",[51,2207,2208],{},"cached: true",[51,2210,842],{},[51,2212,830],{}," เป็นผลจริงของ\nรายการเดิม (retry ตอนเน็ตตัด\u002Ftimeout ได้อย่างปลอดภัย — ไม่ตรวจซ้ำ ไม่หักโควตา)",[2200,2215,2216,2221,2222,2225,2226,49,2234,2237],{},[46,2217,2218,2220],{},[51,2219,1785],{}," เดียวกัน เคยตรวจผ่านไปแล้ว"," (คนละไฟล์รูป\u002Fถ่ายซ้ำ) → ",[51,2223,2224],{},"duplicate: true"," และ\n",[46,2227,2228,1256,2230,2233],{},[51,2229,842],{},[51,2231,2232],{},"\"DUPLICATE\""," เสมอในการตอบครั้งนี้",[51,2235,2236],{},"verified: false",") — ไม่ว่าผลตรวจ\nครั้งแรกจะเป็นอะไรก็ตาม",[104,2239,2240],{"type":919},[42,2241,2242,2248,2249,2252],{},[46,2243,2244,2245],{},"ห้าม credit ออเดอร์จากแค่ ",[51,2246,2247],{},"verified === true"," — ต้องเช็ค ",[51,2250,2251],{},"duplicate"," ก่อนเสมอถ้าระบบคุณ\nเคยประมวลผล transRef นั้นไปแล้ว ไม่งั้นการ retry\u002Fส่งซ้ำโดยไม่ตั้งใจจะ credit ซ้ำ",[162,2254],{},[63,2256,2258],{"id":2257},"error-envelope","Error envelope",[42,2260,2261],{},"ทุก error รูปแบบเดียวกัน:",[68,2263,2265],{"className":483,"code":2264,"language":485,"meta":76,"style":76},"{\n  \"success\": false,\n  \"error\": \"Forbidden\",\n  \"message\": \"API key missing scope(s): read\",\n  \"statusCode\": 403,\n  \"path\": \"\u002Fapi\u002Fv1\u002Fquota\",\n  \"requestId\": \"req_abc123\",\n  \"timestamp\": \"2026-06-17T10:30:45+07:00\"\n}\n",[51,2266,2267,2271,2281,2293,2304,2316,2328,2340,2350],{"__ignoreMap":76},[88,2268,2269],{"class":90,"line":8},[88,2270,493],{"class":492},[88,2272,2273,2275,2277,2279],{"class":90,"line":264},[88,2274,498],{"class":251},[88,2276,501],{"class":492},[88,2278,707],{"class":251},[88,2280,507],{"class":492},[88,2282,2283,2286,2288,2291],{"class":90,"line":275},[88,2284,2285],{"class":251},"  \"error\"",[88,2287,501],{"class":492},[88,2289,2290],{"class":101},"\"Forbidden\"",[88,2292,507],{"class":492},[88,2294,2295,2297,2299,2302],{"class":90,"line":285},[88,2296,980],{"class":251},[88,2298,501],{"class":492},[88,2300,2301],{"class":101},"\"API key missing scope(s): read\"",[88,2303,507],{"class":492},[88,2305,2306,2309,2311,2314],{"class":90,"line":327},[88,2307,2308],{"class":251},"  \"statusCode\"",[88,2310,501],{"class":492},[88,2312,2313],{"class":251},"403",[88,2315,507],{"class":492},[88,2317,2318,2321,2323,2326],{"class":90,"line":333},[88,2319,2320],{"class":251},"  \"path\"",[88,2322,501],{"class":492},[88,2324,2325],{"class":101},"\"\u002Fapi\u002Fv1\u002Fquota\"",[88,2327,507],{"class":492},[88,2329,2330,2333,2335,2338],{"class":90,"line":339},[88,2331,2332],{"class":251},"  \"requestId\"",[88,2334,501],{"class":492},[88,2336,2337],{"class":101},"\"req_abc123\"",[88,2339,507],{"class":492},[88,2341,2342,2345,2347],{"class":90,"line":345},[88,2343,2344],{"class":251},"  \"timestamp\"",[88,2346,501],{"class":492},[88,2348,2349],{"class":101},"\"2026-06-17T10:30:45+07:00\"\n",[88,2351,2352],{"class":90,"line":351},[88,2353,825],{"class":492},[181,2355,2356,2366],{},[184,2357,2358],{},[187,2359,2360,2363],{},[190,2361,2362],{},"Status",[190,2364,2365],{},"เมื่อไร",[195,2367,2368,2378,2388,2404,2416,2429],{},[187,2369,2370,2375],{},[200,2371,2372],{},[51,2373,2374],{},"400",[200,2376,2377],{},"body ไม่ใช่ raw bytes \u002F ไม่มีรูป",[187,2379,2380,2385],{},[200,2381,2382],{},[51,2383,2384],{},"401",[200,2386,2387],{},"API key ผิด\u002Fถูก revoke",[187,2389,2390,2394],{},[200,2391,2392],{},[51,2393,963],{},[200,2395,2396,2397,2399,2400,2403],{},"โควตาหมด — ",[51,2398,2166],{}," (key live) หรือ ",[51,2401,2402],{},"TEST_QUOTA_EXCEEDED"," (key test เกิน 200\u002Fเดือน)",[187,2405,2406,2410],{},[200,2407,2408],{},[51,2409,2313],{},[200,2411,2412,2413,1967],{},"scope ไม่พอ หรือแพ็กปัจจุบันไม่รวม REST API (",[51,2414,2415],{},"PLAN_API_ACCESS_REQUIRED",[187,2417,2418,2422],{},[200,2419,2420],{},[51,2421,1933],{},[200,2423,2424,2425,2428],{},"ไม่พบรายการ (",[51,2426,2427],{},"GET \u002Ftransactions\u002F:id",") — หรือเป็นของร้านอื่น",[187,2430,2431,2436],{},[200,2432,2433],{},[51,2434,2435],{},"429",[200,2437,2438],{},"เกิน rate limit",[162,2440],{},[63,2442,2443],{"id":2443},"ถัดไป",[2197,2445,2446,2461],{},[2200,2447,2448,2450,2451,54,2454,54,2457,2460],{},[60,2449,24],{"href":23}," — รับ event ",[51,2452,2453],{},"slip.verified",[51,2455,2456],{},"slip.duplicate",[51,2458,2459],{},"slip.failed"," แบบ HMAC-signed แทนการ poll",[2200,2462,2463,2465],{},[60,2464,15],{"href":14}," — รายละเอียด key · โควตาต่อแพ็ก · rate limit",[2467,2468,2469],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}",{"title":76,"searchDepth":275,"depth":275,"links":2471},[2472,2473,2478,2479,2480,2481,2482,2483,2484,2485,2486,2487,2488],{"id":65,"depth":264,"text":66},{"id":166,"depth":264,"text":167,"children":2474},[2475,2476],{"id":178,"depth":275,"text":179},{"id":476,"depth":275,"text":2477},"Response 200 OK",{"id":848,"depth":264,"text":849},{"id":1052,"depth":264,"text":119},{"id":1238,"depth":264,"text":115},{"id":1733,"depth":264,"text":1734},{"id":1922,"depth":264,"text":1923},{"id":1959,"depth":264,"text":1960},{"id":2035,"depth":264,"text":2036},{"id":2061,"depth":264,"text":2062},{"id":2191,"depth":264,"text":2192},{"id":2257,"depth":264,"text":2258},{"id":2443,"depth":264,"text":2443},"Public REST API สำหรับ integrator — ตรวจสลิป, อ่านโควตา, รูปแบบ error + status ครบทุก endpoint","md",{},{"title":20,"description":2489},"docs\u002Fapi",null,"m1gFMQ3HdEBKlw_ByK_FiUzKh-YMgPTOdzb1vm-Ho5Y",[2497,2500],{"title":6,"path":5,"stem":2498,"description":2499},"docs\u002Findex","เอกสารสำหรับนักพัฒนา — เริ่มต้นใช้งาน API ตรวจสลิป + Webhook + LINE LIFF ภายใน 5 นาที",{"title":15,"path":14,"stem":2501,"description":2502},"docs\u002Fauthentication","Bearer JWT (dashboard) vs API key (server-to-server) — เลือกใช้แบบไหนเมื่อไร",1789321307580]