Player KYC
JPY deposits require the player to be registered once. A deposit for an unregistered player fails with 502 and {"code": "KYC_NOT_REGISTERED"}.
Registration can take up to 30 minutes. Deposits are accepted when the status is REGISTERED.
Register
POST /kyc-register
The path uses a hyphen, not a slash.
| Field | Required | Notes |
|---|---|---|
gateway | yes today | The KYC channel value from InsPay onboarding. Coming soongateway becomes optional. InsPay routes by currency and your account setup. Values you already send stay accepted. |
playerId | yes | Your player id |
userName | yes | Player name in full-width katakana |
currency | yes | JPY |
callbackUrl | no | Receives the final KYC status |
timestamp, nonce | yes | See signing |
{
"gateway": "YOUR_KYC_CHANNEL",
"playerId": "player_abc123",
"userName": "ヤマダ タロウ",
"currency": "JPY",
"callbackUrl": "https://merchant.example.com/callbacks/kyc",
"timestamp": 1791729147,
"nonce": "d4e5f6a7"
}API_KEY="YOUR_API_KEY"
SECRET_KEY="YOUR_SECRET_KEY"
BASE_URL="https://api-sandbox.inspay.dev/merchant"
CANONICAL='{"callbackUrl":"https://merchant.example.com/callbacks/kyc","currency":"JPY","gateway":"YOUR_KYC_CHANNEL","nonce":"d4e5f6a7","playerId":"player_abc123","timestamp":"1791729147","userName":"\u30e4\u30de\u30c0 \u30bf\u30ed\u30a6"}'
SIG=$(printf '%s' "$CANONICAL" | openssl dgst -sha256 -hmac "$SECRET_KEY" -hex | awk '{print $NF}')
curl -sS -X POST "$BASE_URL/kyc-register" \
-H "Content-Type: application/json" \
-H "x-api-key: $API_KEY" \
-H "x-signature: $SIG" \
--data-binary "$CANONICAL"Response fields: playerId, gateway, status (PENDING), and message. message is informational text. The status starts at PENDING.
Status
POST /kyc/status
This path uses a slash. Body: gateway (same rules as registration), playerId, timestamp, nonce.
API_KEY="YOUR_API_KEY"
SECRET_KEY="YOUR_SECRET_KEY"
BASE_URL="https://api-sandbox.inspay.dev/merchant"
CANONICAL='{"gateway":"YOUR_KYC_CHANNEL","nonce":"d4e5f6a7","playerId":"player_abc123","timestamp":"1791729147"}'
SIG=$(printf '%s' "$CANONICAL" | openssl dgst -sha256 -hmac "$SECRET_KEY" -hex | awk '{print $NF}')
curl -sS -X POST "$BASE_URL/kyc/status" \
-H "Content-Type: application/json" \
-H "x-api-key: $API_KEY" \
-H "x-signature: $SIG" \
--data-binary "$CANONICAL"Response fields: playerId, gateway, status, providerStatus, updatedAt.
Coming soonproviderStatus becomes an InsPay-defined value. Do not branch on today’s providerStatus text.
Never registered:
{"message": "No KYC registration found for this player."}HTTP status 404.
KYC statuses
| Status | What to do |
|---|---|
PENDING | Still processing. Registration can take up to 30 minutes. |
REGISTERED | Deposits are accepted for this player. |
FAILED | Check the name and register again. |
EXPIRED | Register again. |
The final status is also posted to the registration callbackUrl. See callbacks.