[{"data":1,"prerenderedAt":871},["ShallowReactive",2],{"navigation-en":3,"en:\u002Fsandbox\u002Ftop-up-and-reset":193,"en:\u002Fsandbox\u002Ftop-up-and-reset:surround":866},[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":149,"badge":195,"body":196,"description":859,"extension":860,"links":861,"meta":862,"method":861,"navigation":863,"path":150,"seo":864,"stem":151,"__hash__":865},"docs_en\u002F7.sandbox\u002F3.top-up-and-reset.md","POST",{"type":197,"value":198,"toc":841},"minimark",[199,213,221,225,232,241,309,320,411,415,512,516,625,632,636,658,667,675,704,713,716,781,785,837],[200,201,202,203,207,208,212],"p",{},"These two sandbox-only triggers let you set up and tear down test state. Both require HMAC + ",[204,205,206],"code",{},"Idempotency-Key",", and both return ",[209,210,211],"strong",{},"404"," if you call them with a live key.",[214,215,217,218],"h2",{"id":216},"top-up-post-v1testtop-up","Top-up — ",[204,219,220],{},"POST \u002Fv1\u002Ftest\u002Ftop-up",[200,222,223],{},[204,224,220],{},[200,226,227,228,231],{},"Credit your ",[209,229,230],{},"test balance"," directly (test ledger only — it never touches your live balance). Use it to rehearse flows that need a balance, such as withdrawals.",[233,234,236,237,240],"h3",{"id":235},"request-body-topupreq","Request body (",[204,238,239],{},"TopUpReq",")",[242,243,244,263],"table",{},[245,246,247],"thead",{},[248,249,250,254,257,260],"tr",{},[251,252,253],"th",{},"field",[251,255,256],{},"type",[251,258,259],{},"required",[251,261,262],{},"description",[264,265,266,289],"tbody",{},[248,267,268,274,277,282],{},[269,270,271],"td",{},[204,272,273],{},"amount",[269,275,276],{},"string (baht)",[269,278,279],{},[209,280,281],{},"yes",[269,283,284,285,288],{},"The amount to credit, e.g. ",[204,286,287],{},"\"1000.00\"",". Must be > 0.",[248,290,291,296,299,302],{},[269,292,293],{},[204,294,295],{},"currency",[269,297,298],{},"string",[269,300,301],{},"no",[269,303,304,305,308],{},"Currency (can be omitted; the response returns ",[204,306,307],{},"\"THB\"",").",[233,310,312,313,316,317,240],{"id":311},"response-200-topupresult","Response (",[204,314,315],{},"200",", ",[204,318,319],{},"TopUpResult",[321,322,327],"pre",{"className":323,"code":324,"language":325,"meta":326,"style":326},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"amount\": \"1000.00\",\n  \"currency\": \"THB\",\n  \"status\": \"credited\"\n}\n","json","",[204,328,329,338,365,385,405],{"__ignoreMap":326},[330,331,334],"span",{"class":332,"line":333},"line",1,[330,335,337],{"class":336},"sMK4o","{\n",[330,339,341,344,347,350,353,356,360,362],{"class":332,"line":340},2,[330,342,343],{"class":336},"  \"",[330,345,273],{"class":346},"spNyl",[330,348,349],{"class":336},"\"",[330,351,352],{"class":336},":",[330,354,355],{"class":336}," \"",[330,357,359],{"class":358},"sfazB","1000.00",[330,361,349],{"class":336},[330,363,364],{"class":336},",\n",[330,366,368,370,372,374,376,378,381,383],{"class":332,"line":367},3,[330,369,343],{"class":336},[330,371,295],{"class":346},[330,373,349],{"class":336},[330,375,352],{"class":336},[330,377,355],{"class":336},[330,379,380],{"class":358},"THB",[330,382,349],{"class":336},[330,384,364],{"class":336},[330,386,388,390,393,395,397,399,402],{"class":332,"line":387},4,[330,389,343],{"class":336},[330,391,392],{"class":346},"status",[330,394,349],{"class":336},[330,396,352],{"class":336},[330,398,355],{"class":336},[330,400,401],{"class":358},"credited",[330,403,404],{"class":336},"\"\n",[330,406,408],{"class":332,"line":407},5,[330,409,410],{"class":336},"}\n",[233,412,414],{"id":413},"limits-cap","Limits \u002F cap",[242,416,417,429],{},[245,418,419],{},[248,420,421,424,427],{},[251,422,423],{},"Situation",[251,425,426],{},"HTTP",[251,428,204],{},[264,430,431,446,459,473,487,500],{},[248,432,433,438,441],{},[269,434,435,437],{},[204,436,273],{}," ≤ 0",[269,439,440],{},"422",[269,442,443],{},[204,444,445],{},"INVALID_AMOUNT",[248,447,448,453,455],{},[269,449,450,452],{},[204,451,273],{}," malformed",[269,454,440],{},[269,456,457],{},[204,458,445],{},[248,460,461,466,468],{},[269,462,463],{},[209,464,465],{},"Over the sandbox cap of 1,000,000 baht per call",[269,467,440],{},[269,469,470],{},[204,471,472],{},"AMOUNT_TOO_LARGE",[248,474,475,480,482],{},[269,476,477,479],{},[204,478,295],{}," fails validation",[269,481,440],{},[269,483,484],{},[204,485,486],{},"INVALID_CURRENCY",[248,488,489,492,495],{},[269,490,491],{},"More than 60 calls\u002Fminute per merchant",[269,493,494],{},"429",[269,496,497],{},[204,498,499],{},"RATE_LIMITED",[248,501,502,505,507],{},[269,503,504],{},"Live key",[269,506,211],{},[269,508,509],{},[204,510,511],{},"NOT_FOUND",[233,513,515],{"id":514},"example-request","Example request",[321,517,522],{"className":518,"code":519,"filename":520,"language":521,"meta":326,"style":326},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","curl -X POST https:\u002F\u002Fapi.unkpay.co\u002Fv1\u002Ftest\u002Ftop-up \\\n  -H \"X-Api-Key: unk_test_xxxxxxxxxxxxxxxx\" \\\n  -H \"X-Timestamp: 1718790000\" \\\n  -H \"X-Signature: \u003Chex hmac>\" \\\n  -H \"Idempotency-Key: topup-0001\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"amount\":\"1000.00\",\"currency\":\"THB\"}'\n","cURL","bash",[204,523,524,543,557,570,583,596,610],{"__ignoreMap":326},[330,525,526,530,533,536,539],{"class":332,"line":333},[330,527,529],{"class":528},"sBMFI","curl",[330,531,532],{"class":358}," -X",[330,534,535],{"class":358}," POST",[330,537,538],{"class":358}," https:\u002F\u002Fapi.unkpay.co\u002Fv1\u002Ftest\u002Ftop-up",[330,540,542],{"class":541},"sTEyZ"," \\\n",[330,544,545,548,550,553,555],{"class":332,"line":340},[330,546,547],{"class":358},"  -H",[330,549,355],{"class":336},[330,551,552],{"class":358},"X-Api-Key: unk_test_xxxxxxxxxxxxxxxx",[330,554,349],{"class":336},[330,556,542],{"class":541},[330,558,559,561,563,566,568],{"class":332,"line":367},[330,560,547],{"class":358},[330,562,355],{"class":336},[330,564,565],{"class":358},"X-Timestamp: 1718790000",[330,567,349],{"class":336},[330,569,542],{"class":541},[330,571,572,574,576,579,581],{"class":332,"line":387},[330,573,547],{"class":358},[330,575,355],{"class":336},[330,577,578],{"class":358},"X-Signature: \u003Chex hmac>",[330,580,349],{"class":336},[330,582,542],{"class":541},[330,584,585,587,589,592,594],{"class":332,"line":407},[330,586,547],{"class":358},[330,588,355],{"class":336},[330,590,591],{"class":358},"Idempotency-Key: topup-0001",[330,593,349],{"class":336},[330,595,542],{"class":541},[330,597,599,601,603,606,608],{"class":332,"line":598},6,[330,600,547],{"class":358},[330,602,355],{"class":336},[330,604,605],{"class":358},"Content-Type: application\u002Fjson",[330,607,349],{"class":336},[330,609,542],{"class":541},[330,611,613,616,619,622],{"class":332,"line":612},7,[330,614,615],{"class":358},"  -d",[330,617,618],{"class":336}," '",[330,620,621],{"class":358},"{\"amount\":\"1000.00\",\"currency\":\"THB\"}",[330,623,624],{"class":336},"'\n",[214,626,628,629],{"id":627},"reset-post-v1testreset","Reset — ",[204,630,631],{},"POST \u002Fv1\u002Ftest\u002Freset",[200,633,634],{},[204,635,631],{},[200,637,638,639,642,643,646,647,650,651,653,654,657],{},"Wipe ",[209,640,641],{},"all of your own test data"," atomically: test deposits + withdrawals + any test ",[204,644,645],{},"bank_transactions","\u002Funmatched produced + the entire test ledger (live data and other merchants' data are untouched). You send ",[209,648,649],{},"no body"," (but ",[204,652,206],{}," is still required). This endpoint has ",[209,655,656],{},"no rate limit"," (it only clears your own data).",[659,660,661],"caution",{},[200,662,663,666],{},[204,664,665],{},"reset"," permanently deletes all of your test data. There is no undo — it is for tearing down your own sandbox state.",[233,668,312,670,316,672,240],{"id":669},"response-200-resetresult",[204,671,315],{},[204,673,674],{},"ResetResult",[321,676,678],{"className":323,"code":677,"language":325,"meta":326,"style":326},"{\n  \"status\": \"reset\"\n}\n",[204,679,680,684,700],{"__ignoreMap":326},[330,681,682],{"class":332,"line":333},[330,683,337],{"class":336},[330,685,686,688,690,692,694,696,698],{"class":332,"line":340},[330,687,343],{"class":336},[330,689,392],{"class":346},[330,691,349],{"class":336},[330,693,352],{"class":336},[330,695,355],{"class":336},[330,697,665],{"class":358},[330,699,404],{"class":336},[330,701,702],{"class":332,"line":367},[330,703,410],{"class":336},[705,706,707],"note",{},[200,708,709,710,712],{},"Test data older than ~30 days is purged automatically by the system (a daily worker) anyway — ",[204,711,665],{}," is for clearing it yourself right away.",[233,714,515],{"id":715},"example-request-1",[321,717,719],{"className":518,"code":718,"filename":520,"language":521,"meta":326,"style":326},"curl -X POST https:\u002F\u002Fapi.unkpay.co\u002Fv1\u002Ftest\u002Freset \\\n  -H \"X-Api-Key: unk_test_xxxxxxxxxxxxxxxx\" \\\n  -H \"X-Timestamp: 1718790000\" \\\n  -H \"X-Signature: \u003Chex hmac>\" \\\n  -H \"Idempotency-Key: reset-0001\"\n",[204,720,721,734,746,758,770],{"__ignoreMap":326},[330,722,723,725,727,729,732],{"class":332,"line":333},[330,724,529],{"class":528},[330,726,532],{"class":358},[330,728,535],{"class":358},[330,730,731],{"class":358}," https:\u002F\u002Fapi.unkpay.co\u002Fv1\u002Ftest\u002Freset",[330,733,542],{"class":541},[330,735,736,738,740,742,744],{"class":332,"line":340},[330,737,547],{"class":358},[330,739,355],{"class":336},[330,741,552],{"class":358},[330,743,349],{"class":336},[330,745,542],{"class":541},[330,747,748,750,752,754,756],{"class":332,"line":367},[330,749,547],{"class":358},[330,751,355],{"class":336},[330,753,565],{"class":358},[330,755,349],{"class":336},[330,757,542],{"class":541},[330,759,760,762,764,766,768],{"class":332,"line":387},[330,761,547],{"class":358},[330,763,355],{"class":336},[330,765,578],{"class":358},[330,767,349],{"class":336},[330,769,542],{"class":541},[330,771,772,774,776,779],{"class":332,"line":407},[330,773,547],{"class":358},[330,775,355],{"class":336},[330,777,778],{"class":358},"Idempotency-Key: reset-0001",[330,780,404],{"class":336},[233,782,784],{"id":783},"errors","Errors",[242,786,787,797],{},[245,788,789],{},[248,790,791,793,795],{},[251,792,423],{},[251,794,426],{},[251,796,204],{},[264,798,799,809,824],{},[248,800,801,803,805],{},[269,802,504],{},[269,804,211],{},[269,806,807],{},[204,808,511],{},[248,810,811,816,819],{},[269,812,813,814],{},"Missing ",[204,815,206],{},[269,817,818],{},"400",[269,820,821],{},[204,822,823],{},"IDEMPOTENCY_KEY_REQUIRED",[248,825,826,829,832],{},[269,827,828],{},"Missing\u002Finvalid signature, API key, or timestamp",[269,830,831],{},"401",[269,833,834],{},[204,835,836],{},"UNAUTHORIZED",[838,839,840],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}",{"title":326,"searchDepth":333,"depth":340,"links":842},[843,852],{"id":216,"depth":340,"text":844,"children":845},"Top-up — POST \u002Fv1\u002Ftest\u002Ftop-up",[846,848,850,851],{"id":235,"depth":367,"text":847},"Request body (TopUpReq)",{"id":311,"depth":367,"text":849},"Response (200, TopUpResult)",{"id":413,"depth":367,"text":414},{"id":514,"depth":367,"text":515},{"id":627,"depth":340,"text":853,"children":854},"Reset — POST \u002Fv1\u002Ftest\u002Freset",[855,857,858],{"id":669,"depth":367,"text":856},"Response (200, ResetResult)",{"id":715,"depth":367,"text":515},{"id":783,"depth":367,"text":784},"Credit your test balance and wipe your own test data — two sandbox-only triggers","md",null,{},{"icon":152},{"title":149,"description":859},"vxSzJG8dfqdEPCLfBfjZv-mSpcX9X_jZKw01SU_jra8",[867,869],{"title":144,"path":145,"stem":146,"description":868,"icon":147,"children":-1},"Inject a simulated bank transfer into a PENDING test deposit to drive the real matcher and a deposit.success webhook",{"title":154,"path":155,"stem":156,"description":870,"icon":157,"children":-1},"The recommended sandbox rehearsal — create a test deposit, simulate the transfer, and receive a deposit.success webhook",1781891157322]