Skip to Content
Version 1.1 · A Coming soon badge is a backward-compatible change still rolling out.
Create a withdrawal

Create a withdrawal

POST /withdraw

Pays a bank account. Creation returns SUCCESS and holds amount + fee from your available balance. Insufficient balance returns 400. The hold is released if the withdrawal ends FAILED.

destination is the recipient bank code, not the account number. For JPY that is the 4-digit Zengin code, for example 0005. destinationName is the recipient bank name.

Request

FieldTypeRequiredNotes
amount, channel, currency, callbackUrl, referenceId, playerIdyesSame as deposit. channel is BANK_TRANSFER.
destinationstringyesRecipient bank code. JPY: 4-digit Zengin code, for example 0005.
destinationNamestringyesRecipient bank name
destinationAccountstringyesAccount number
destinationAccountNamestringyesAccount holder. Katakana for JPY.
destinationBranchCodestringJPYBranch code, 3 digits
destinationBranchNamestringJPYBranch name
destinationAccountTypestringnoJPY: 1 savings (default), 2 checking
destinationBranchstringnoLegacy single field. Digits are read as the branch code; anything else is the branch name. Prefer destinationBranchCode and destinationBranchName.
timestamp, nonceyesSee signing
withdraw.json
{ "amount": 100000, "channel": "BANK_TRANSFER", "currency": "JPY", "callbackUrl": "https://merchant.example.com/callbacks/withdraw", "referenceId": "WD-20261011-001", "playerId": "player_abc123", "destination": "0005", "destinationName": "MUFG Bank", "destinationBranchCode": "001", "destinationBranchName": "Head Office", "destinationAccountType": "1", "destinationAccount": "0987654", "destinationAccountName": "タナカ ユキ", "timestamp": 1791729147, "nonce": "c1d2e3f4" }

Samples

withdraw.sh
API_KEY="YOUR_API_KEY" SECRET_KEY="YOUR_SECRET_KEY" BASE_URL="https://api-sandbox.inspay.dev/merchant" CANONICAL='{"amount":"100000","callbackUrl":"https://merchant.example.com/callbacks/withdraw","channel":"BANK_TRANSFER","currency":"JPY","destination":"0005","destinationAccount":"0987654","destinationAccountName":"\u30bf\u30ca\u30ab \u30e6\u30ad","destinationAccountType":"1","destinationBranchCode":"001","destinationBranchName":"Head Office","destinationName":"MUFG Bank","nonce":"c1d2e3f4","playerId":"player_abc123","referenceId":"WD-20261011-001","timestamp":"1791729147"}' SIG=$(printf '%s' "$CANONICAL" | openssl dgst -sha256 -hmac "$SECRET_KEY" -hex | awk '{print $NF}') # Expected with YOUR_SECRET_KEY: 874f023bf0f749af00294362657462cb6d926118f91774623d049fc17432644e curl -sS -X POST "$BASE_URL/withdraw" \ -H "Content-Type: application/json" \ -H "x-api-key: $API_KEY" \ -H "x-signature: $SIG" \ --data-binary "$CANONICAL"

Response 200

transactionId, amount, fee, actualAmount (null until completed, then amount + fee), status (SUCCESS), and message.

providerOrderId may be present today. It is an internal routing reference. Coming soonIt will be removed. Do not depend on it.

SUCCESS means the withdrawal was accepted and the hold was placed. Pay the player out of your own books only after COMPLETED.

Last updated on