[{"data":1,"prerenderedAt":338},["ShallowReactive",2],{"navigation-en":3,"en:\u002Fgetting-started\u002Fquickstart":193,"en:\u002Fgetting-started\u002Fquickstart:surround":333},[4,20,51,77,95,110,133,158,172],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":6},"Getting Started",false,"\u002Fgetting-started","1.getting-started",[10,15],{"title":11,"path":12,"stem":13,"icon":14},"Portal Preparation","\u002Fgetting-started\u002Fportal-setup","1.getting-started\u002F1.portal-setup","i-lucide-rocket",{"title":16,"path":17,"stem":18,"icon":19},"Quickstart","\u002Fgetting-started\u002Fquickstart","1.getting-started\u002F2.quickstart","i-lucide-zap",{"title":21,"icon":22,"path":23,"stem":24,"children":25,"page":6},"Core Concepts","i-lucide-key-round","\u002Fconcepts","2.concepts",[26,31,36,41,46],{"title":27,"path":28,"stem":29,"icon":30},"Authentication","\u002Fconcepts\u002Fauthentication","2.concepts\u002F1.authentication","i-lucide-fingerprint",{"title":32,"path":33,"stem":34,"icon":35},"IP Allowlist","\u002Fconcepts\u002Fip-allowlist","2.concepts\u002F2.ip-allowlist","i-lucide-shield-check",{"title":37,"path":38,"stem":39,"icon":40},"Money Format","\u002Fconcepts\u002Fmoney","2.concepts\u002F3.money","i-lucide-banknote",{"title":42,"path":43,"stem":44,"icon":45},"Idempotency","\u002Fconcepts\u002Fidempotency","2.concepts\u002F4.idempotency","i-lucide-repeat",{"title":47,"path":48,"stem":49,"icon":50},"Error envelope & codes","\u002Fconcepts\u002Ferrors","2.concepts\u002F5.errors","i-lucide-octagon-alert",{"title":52,"icon":53,"path":54,"stem":55,"children":56,"page":6},"Deposits","i-lucide-arrow-down-to-line","\u002Fdeposits","3.deposits",[57,62,67,72],{"title":58,"path":59,"stem":60,"icon":61},"Deposit Overview & State Machine","\u002Fdeposits\u002Foverview","3.deposits\u002F1.overview","i-lucide-info",{"title":63,"path":64,"stem":65,"icon":66},"Create a Deposit","\u002Fdeposits\u002Fcreate","3.deposits\u002F2.create","i-lucide-plus",{"title":68,"path":69,"stem":70,"icon":71},"Get a Deposit","\u002Fdeposits\u002Fretrieve","3.deposits\u002F3.retrieve","i-lucide-search",{"title":73,"path":74,"stem":75,"icon":76},"Cancel a Deposit","\u002Fdeposits\u002Fcancel","3.deposits\u002F4.cancel","i-lucide-x",{"title":78,"icon":79,"path":80,"stem":81,"children":82,"page":6},"Withdrawals","i-lucide-arrow-up-from-line","\u002Fwithdrawals","4.withdrawals",[83,87,91],{"title":84,"path":85,"stem":86,"icon":61},"Withdrawal Overview","\u002Fwithdrawals\u002Foverview","4.withdrawals\u002F1.overview",{"title":88,"path":89,"stem":90,"icon":66},"Create a Withdrawal","\u002Fwithdrawals\u002Fcreate","4.withdrawals\u002F2.create",{"title":92,"path":93,"stem":94,"icon":71},"Get & List Withdrawals","\u002Fwithdrawals\u002Fretrieve","4.withdrawals\u002F3.retrieve",{"title":96,"icon":97,"path":98,"stem":99,"children":100,"page":6},"Balance & Banks","i-lucide-wallet","\u002Fbalance","5.balance",[101,105],{"title":102,"path":103,"stem":104,"icon":97},"Get Balance","\u002Fbalance\u002Fget-balance","5.balance\u002F1.get-balance",{"title":106,"path":107,"stem":108,"icon":109},"Bank List","\u002Fbalance\u002Fbanks","5.balance\u002F2.banks","i-lucide-landmark",{"title":111,"icon":112,"path":113,"stem":114,"children":115,"page":6},"Webhooks","i-lucide-webhook","\u002Fwebhooks","6.webhooks",[116,120,125,129],{"title":117,"path":118,"stem":119,"icon":61},"Webhook Overview","\u002Fwebhooks\u002Foverview","6.webhooks\u002F1.overview",{"title":121,"path":122,"stem":123,"icon":124},"Event Catalog & Payloads","\u002Fwebhooks\u002Fevents","6.webhooks\u002F2.events","i-lucide-list",{"title":126,"path":127,"stem":128,"icon":35},"Signature Verification","\u002Fwebhooks\u002Fsignature-verification","6.webhooks\u002F3.signature-verification",{"title":130,"path":131,"stem":132,"icon":45},"Endpoint Requirements, Retries & SSRF","\u002Fwebhooks\u002Fdelivery-and-retries","6.webhooks\u002F4.delivery-and-retries",{"title":134,"icon":135,"path":136,"stem":137,"children":138,"page":6},"Sandbox","i-lucide-flask-conical","\u002Fsandbox","7.sandbox",[139,143,148,153],{"title":140,"path":141,"stem":142,"icon":61},"Test Mode Overview","\u002Fsandbox\u002Foverview","7.sandbox\u002F1.overview",{"title":144,"path":145,"stem":146,"icon":147},"Simulate Transfer","\u002Fsandbox\u002Fsimulate-transfer","7.sandbox\u002F2.simulate-transfer","i-lucide-banknote-arrow-down",{"title":149,"path":150,"stem":151,"icon":152},"Top-up & Reset","\u002Fsandbox\u002Ftop-up-and-reset","7.sandbox\u002F3.top-up-and-reset","i-lucide-rotate-ccw",{"title":154,"path":155,"stem":156,"icon":157},"End-to-End Test Flow","\u002Fsandbox\u002Fe2e-test-flow","7.sandbox\u002F4.e2e-test-flow","i-lucide-list-checks",{"title":159,"icon":14,"path":160,"stem":161,"children":162,"page":6},"Go-live","\u002Fgo-live","8.go-live",[163,167],{"title":164,"path":165,"stem":166,"icon":157},"Go-live Checklist","\u002Fgo-live\u002Fchecklist","8.go-live\u002F1.checklist",{"title":168,"path":169,"stem":170,"icon":171},"Contact & Support","\u002Fgo-live\u002Fsupport","8.go-live\u002F2.support","i-lucide-life-buoy",{"title":173,"icon":174,"path":175,"stem":176,"children":177,"page":6},"Reference","i-lucide-book-marked","\u002Freference","9.reference",[178,183,188],{"title":179,"path":180,"stem":181,"icon":182},"Endpoint Catalog","\u002Freference\u002Fendpoints","9.reference\u002F1.endpoints","i-lucide-table",{"title":184,"path":185,"stem":186,"icon":187},"Code Samples (Node.js & PHP)","\u002Freference\u002Fcode-samples","9.reference\u002F2.code-samples","i-lucide-code",{"title":189,"path":190,"stem":191,"icon":192},"Status Values & Glossary","\u002Freference\u002Fglossary-states","9.reference\u002F3.glossary-states","i-lucide-book-a",{"id":194,"title":16,"badge":195,"body":196,"description":327,"extension":328,"links":195,"meta":329,"method":195,"navigation":330,"path":17,"seo":331,"stem":18,"__hash__":332},"docs_en\u002F1.getting-started\u002F2.quickstart.md",null,{"type":197,"value":198,"toc":321},"minimark",[199,217,227,232,311],[200,201,202,203,207,208,212,213,216],"p",{},"This page is the shortest path from credentials to your first ",[204,205,206],"code",{},"deposit.success"," webhook, using a ",[209,210,211],"strong",{},"test key"," (",[204,214,215],{},"unk_test_",") in the sandbox — no real money yet.",[218,219,220],"note",{},[200,221,222,223,226],{},"Every request must be HMAC-SHA256 signed, and every money field is a 2-decimal baht string (e.g. ",[204,224,225],{},"\"100.50\"",") — see the later sections for full details.",[228,229,231],"h2",{"id":230},"steps","Steps",[230,233,234,239,249,253,280,284,297,304],{},[235,236,238],"h3",{"id":237},"prepare-a-test-key-webhook","Prepare a test key + webhook",[200,240,241,242,245,246,248],{},"Follow ",[243,244,11],"a",{"href":12}," to issue a ",[209,247,211],{}," and set a webhook URL (make sure it returns 2xx).",[235,250,252],{"id":251},"create-a-deposit-test","Create a deposit (test)",[200,254,255,256,259,260,263,264,267,268,271,272,275,276,279],{},"Call ",[204,257,258],{},"POST \u002Fv1\u002Fdeposits"," (signed HMAC + ",[204,261,262],{},"Idempotency-Key",") with an ",[204,265,266],{},"amount"," and payer details — the system returns ",[204,269,270],{},"expected_amount"," + ",[204,273,274],{},"qr_payload","\u002F",[204,277,278],{},"pay_to",".",[235,281,283],{"id":282},"simulate-the-transfer","Simulate the transfer",[200,285,255,286,289,290,293,294,296],{},[204,287,288],{},"POST \u002Fv1\u002Ftest\u002Fsimulate-transfer"," with the ",[204,291,292],{},"deposit_id"," (omit ",[204,295,266],{}," so it matches exactly). The matcher credits the deposit.",[235,298,300,301,303],{"id":299},"receive-the-depositsuccess-webhook","Receive the ",[204,302,206],{}," webhook",[200,305,306,307,310],{},"Your endpoint receives the webhook — verify the ",[204,308,309],{},"X-Webhook-Signature"," and return 2xx to complete the flow.",[312,313,314],"tip",{},[200,315,316,317,320],{},"Run the entire end-to-end flow in test mode first — switch to live just by using a ",[204,318,319],{},"unk_live_"," key, not by changing the endpoint.",{"title":322,"searchDepth":323,"depth":324,"links":325},"",1,2,[326],{"id":230,"depth":324,"text":231},"Make your first end-to-end deposit in the sandbox with a test key","md",{},{"icon":19},{"title":16,"description":327},"yh1etGe1tXTy1YcACj-1HeFOP393E8_gnQQ3MWmMg08",[334,336],{"title":11,"path":12,"stem":13,"description":335,"icon":14,"children":-1},"Issue API keys, configure a webhook, and register your IP in the Portal before integrating S2S",{"title":27,"path":28,"stem":29,"description":337,"icon":30,"children":-1},"Every S2S request is signed with HMAC-SHA256 using your API key id and secret — a bare API key is never accepted",1781891152608]