[{"data":1,"prerenderedAt":596},["ShallowReactive",2],{"navigation-en":3,"en:\u002Freference\u002Fglossary-states":193,"en:\u002Freference\u002Fglossary-states:surround":593},[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":189,"badge":195,"body":196,"description":587,"extension":588,"links":195,"meta":589,"method":195,"navigation":590,"path":190,"seo":591,"stem":191,"__hash__":592},"docs_en\u002F9.reference\u002F3.glossary-states.md",null,{"type":197,"value":198,"toc":578},"minimark",[199,203,208,315,319,440,458,462,500,504,508],[200,201,202],"p",{},"A single reference for the status enums, Portal roles, and the constants that the rest of the docs depend on.",[204,205,207],"h2",{"id":206},"deposit-status","Deposit status",[209,210,211,228],"table",{},[212,213,214],"thead",{},[215,216,217,221,225],"tr",{},[218,219,220],"th",{},"Status",[218,222,224],{"align":223},"center","Terminal",[218,226,227],{},"Meaning",[229,230,231,254,278,297],"tbody",{},[215,232,233,240,243],{},[234,235,236],"td",{},[237,238,239],"code",{},"PENDING",[234,241,242],{"align":223},"—",[234,244,245,246,249,250,253],{},"Created, waiting for the customer to transfer ",[237,247,248],{},"expected_amount",". ",[237,251,252],{},"pay_to"," is present only in this state.",[215,255,256,261,264],{},[234,257,258],{},[237,259,260],{},"CREDITED",[234,262,263],{"align":223},"✅",[234,265,266,267,269,270,273,274,277],{},"Exact ",[237,268,248],{}," matched and credited (",[237,271,272],{},"matched_amount"," populated). Fires ",[237,275,276],{},"deposit.success",".",[215,279,280,285,287],{},[234,281,282],{},[237,283,284],{},"EXPIRED",[234,286,263],{"align":223},[234,288,289,290,293,294,277],{},"No matching amount before ",[237,291,292],{},"match_window_until",". Fires ",[237,295,296],{},"deposit.expired",[215,298,299,304,306],{},[234,300,301],{},[237,302,303],{},"CANCELLED",[234,305,263],{"align":223},[234,307,308,309,312,313,277],{},"Cancelled by you via ",[237,310,311],{},"POST \u002Fv1\u002Fdeposits\u002F:id\u002Fcancel"," while still ",[237,314,239],{},[204,316,318],{"id":317},"withdrawal-status","Withdrawal status",[209,320,321,331],{},[212,322,323],{},[215,324,325,327,329],{},[218,326,220],{},[218,328,224],{"align":223},[218,330,227],{},[229,332,333,352,364,376,388,403,423],{},[215,334,335,339,341],{},[234,336,337],{},[237,338,239],{},[234,340,242],{"align":223},[234,342,343,344,347,348,351],{},"Created; gross (",[237,345,346],{},"amount"," + ",[237,349,350],{},"fee",") debited immediately, awaiting manual approval.",[215,353,354,359,361],{},[234,355,356],{},[237,357,358],{},"APPROVED",[234,360,242],{"align":223},[234,362,363],{},"Approved by the team, queued for processing.",[215,365,366,371,373],{},[234,367,368],{},[237,369,370],{},"PROCESSING",[234,372,242],{"align":223},[234,374,375],{},"Being processed.",[215,377,378,383,385],{},[234,379,380],{},[237,381,382],{},"IN_PROGRESS",[234,384,242],{"align":223},[234,386,387],{},"In progress at the bank\u002Fsettlement layer.",[215,389,390,395,397],{},[234,391,392],{},[237,393,394],{},"SUCCESS",[234,396,263],{"align":223},[234,398,399,400,277],{},"Payout completed. Fires ",[237,401,402],{},"withdrawal.success",[215,404,405,410,412],{},[234,406,407],{},[237,408,409],{},"FAILED",[234,411,263],{"align":223},[234,413,414,415,418,419,422],{},"Failed mid-processing. Fires ",[237,416,417],{},"withdrawal.failed","; gross is refunded (",[237,420,421],{},"withdrawal.refunded",").",[215,424,425,430,432],{},[234,426,427],{},[237,428,429],{},"REJECTED",[234,431,263],{"align":223},[234,433,434,435,418,438,422],{},"Manually rejected while PENDING\u002FAPPROVED. Fires ",[237,436,437],{},"withdrawal.rejected",[237,439,421],{},[441,442,443],"caution",{},[200,444,445,446,449,450,452,453,455,456,422],{},"Never treat the initial ",[237,447,448],{},"201 PENDING"," as success — wait for a terminal webhook (",[237,451,402],{},", ",[237,454,417],{},", or ",[237,457,437],{},[204,459,461],{"id":460},"portal-roles","Portal roles",[209,463,464,474],{},[212,465,466],{},[215,467,468,471],{},[218,469,470],{},"Role",[218,472,473],{},"Can do",[229,475,476,484,492],{},[215,477,478,481],{},[234,479,480],{},"owner \u002F admin",[234,482,483],{},"Issue\u002Frotate API secrets, configure webhooks — full configuration.",[215,485,486,489],{},[234,487,488],{},"operator",[234,490,491],{},"Operational actions, but cannot issue\u002Frotate secrets or configure webhooks.",[215,493,494,497],{},[234,495,496],{},"viewer",[234,498,499],{},"Read-only.",[501,502],"placeholder-note",{"value":503},"confirm the exact Portal role labels and which buttons each role sees",[204,505,507],{"id":506},"key-constants","Key constants",[209,509,510,523],{},[212,511,512],{},[215,513,514,517,520],{},[218,515,516],{},"Constant",[218,518,519],{},"Value",[218,521,522],{},"Used for",[229,524,525,539,550,563],{},[215,526,527,530,533],{},[234,528,529],{},"Replay window",[234,531,532],{},"±300 seconds",[234,534,535,538],{},[237,536,537],{},"X-Timestamp"," must be within this window of server time.",[215,540,541,544,547],{},[234,542,543],{},"Idempotency-Key TTL",[234,545,546],{},"24 hours",[234,548,549],{},"How long a key (scoped per mode + merchant) is remembered for replay.",[215,551,552,555,560],{},[234,553,554],{},"Empty-body SHA-256",[234,556,557],{},[237,558,559],{},"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",[234,561,562],{},"The body hash on line 4 of the canonical string for any bodyless\u002FGET request.",[215,564,565,568,575],{},[234,566,567],{},"Money format",[234,569,570,571,574],{},"baht string, 2 decimals (e.g. ",[237,572,573],{},"\"100.50\"",")",[234,576,577],{},"Every money field on the wire — never a number, never satang. THB only.",{"title":579,"searchDepth":580,"depth":581,"links":582},"",1,2,[583,584,585,586],{"id":206,"depth":581,"text":207},{"id":317,"depth":581,"text":318},{"id":460,"depth":581,"text":461},{"id":506,"depth":581,"text":507},"Consolidated deposit and withdrawal status enums, Portal role labels, and the key constants (replay window, idempotency TTL, empty-body SHA-256) in one place","md",{},{"icon":192},{"title":189,"description":587},"I4cCmxAA9h7nmMGYQDHsypFWnEoc227qcF7iGbenlaA",[594,195],{"title":184,"path":185,"stem":186,"description":595,"icon":187,"children":-1},"Full merchant-side integration samples — automatic HMAC signing, deposit\u002Fwithdrawal\u002Fbalance\u002Fbanks calls, and webhook verification, in Node.js and PHP",1781891157580]