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

Create a deposit

POST /deposit

Opens a bank-transfer deposit. The response status is SUCCESS, which means the order was created, not that it was paid. Send the payer to address, or show them the receiver bank details yourself.

JPY players must already be registered. An unregistered player fails with 502 and code: "KYC_NOT_REGISTERED".

Request

FieldTypeRequiredNotes
amountnumber or stringyesWhole yen for JPY
channelstringyesBANK_TRANSFER
currencystringyesFor example JPY
callbackUrlstringyesReceives the final status
referenceIdstringyesYour unique order id
playerIdstringyesYour player id
payerAccountNamestringnoPayer name. Katakana is recommended for JPY.
payerAccountstringno
payerBankCodestringnoThai bank codes only (BBL, KBANK, SCB, and others). Omit for JPY.
timestamp, nonceyesSee signing
deposit.json
{ "amount": 50000, "channel": "BANK_TRANSFER", "currency": "JPY", "callbackUrl": "https://merchant.example.com/callbacks/deposit", "referenceId": "TXN-20261011-001", "playerId": "player_abc123", "payerAccountName": "ヤマダ タロウ", "timestamp": 1791729147, "nonce": "b9ea6ab75157aa21" }

Samples

The Node.js and Python samples use the current time, so you can run them against sandbox after you replace the placeholder keys and allow-list your IP. The curl sample is the worked example with a fixed timestamp. Refresh timestamp and re-sign before a live call.

deposit.sh
API_KEY="YOUR_API_KEY" SECRET_KEY="YOUR_SECRET_KEY" BASE_URL="https://api-sandbox.inspay.dev/merchant" CANONICAL='{"amount":"50000","callbackUrl":"https://merchant.example.com/callbacks/deposit","channel":"BANK_TRANSFER","currency":"JPY","nonce":"b9ea6ab75157aa21","payerAccountName":"\u30e4\u30de\u30c0 \u30bf\u30ed\u30a6","playerId":"player_abc123","referenceId":"TXN-20261011-001","timestamp":"1791729147"}' SIG=$(printf '%s' "$CANONICAL" | openssl dgst -sha256 -hmac "$SECRET_KEY" -hex | awk '{print $NF}') curl -sS -X POST "$BASE_URL/deposit" \ -H "Content-Type: application/json" \ -H "x-api-key: $API_KEY" \ -H "x-signature: $SIG" \ --data-binary "$CANONICAL"

Response 200

FieldNotes
transactionIdInsPay transaction id (UUID)
providerOrderIdInternal routing reference. Do not depend on it. Coming soonRemoved from merchant responses.
amount, feefee is known at creation
actualAmountnull until the deposit completes, then amount − fee
statusSUCCESS (created, not paid)
messageInformational text
addressPayment page for the payer: https://pay.inspay.dev/pay/{token}
receiverAccount, receiverName, receiverBank, receiverBankCode, receiverBankBranchBank details the payer transfers to. The payment page shows the same details.
deposit-response.json
{ "transactionId": "4598b99d-0e13-4536-926b-a662bb34ac42", "amount": 50000, "fee": 2250, "actualAmount": null, "status": "SUCCESS", "message": "Deposit created", "address": "https://pay.inspay.dev/pay/C6OKm4FR6vVo3XaDn_p6Fn", "receiverAccount": "1234567", "receiverName": "カ)エグザンプル", "receiverBank": "Example Bank(0000)", "receiverBankCode": null, "receiverBankBranch": "Example Branch(000)" }

Redirect the payer to address, or render receiverAccount, receiverName, receiverBank, and receiverBankBranch in your own UI. Wait for a COMPLETED callback, or poll POST /transactions, before you credit the player.

Last updated on