Member Register API Documentation

Complete API reference for Member Registration endpoints

GET /v2/user/register/:partnerKey
Validate an agent/partner prefix and retrieve agent information for registration.
Request

Path Parameters:

Parameter Type Required Description
partnerKey string Yes Agent/Partner prefix key

Body: Empty

Response

200 OK Success

{
  "isSuccess": true,
  "statusCode": 200,
  "data": {
    "agentId": 123,
    "agentName": "Agent Name",
    "agentPrefix": "AGENT01",
    "agentRegisterUrl": "https://example.com/register",
    "isEnable": true,
    "isEnableOtp": true,
    "otpDigit": 4,
    "isRegisterWithoutBank": false,
    "isDisableRegisterMember": false,
    "lineId": "@line_id",
    "peerAgents": ["AGENT02", "AGENT03"]
  }
}

404 Not Found Agent not found

{
  "isSuccess": false,
  "statusCode": 404,
  "message": {
    "errorCode": "AGENT_NOT_FOUND",
    "errorMessage": "Agent not found"
  }
}

429 Too Many Requests Duplicate request detected

{
  "isSuccess": false,
  "statusCode": 429,
  "message": {
    "errorCode": "DUPLICATE_REQUEST",
    "errorMessage": "Duplicate request. Please try again after a short wait."
  }
}
POST /v2/user/register/otp
Request an OTP (One-Time Password) to be sent to the mobile number for registration. The OTP is sent via SMS.
Request

Headers:

Header Type Required Description
Content-Type string Yes application/json

Body:

Field Type Required Description
mobileNumber string Yes Mobile phone number
partnerKey string Optional Agent/Partner prefix key
mobileNumberCountryCode string Optional Country code for mobile number (e.g., "95" for Myanmar)
Example Request:
{
  "mobileNumber": "0912345678",
  "partnerKey": "AGENT01",
  "mobileNumberCountryCode": "66"
}
Response

200 OK Success

Note: The otp field is only returned in development/staging environments. In production, the OTP is sent via SMS and not included in the response.

Development/Staging Response:

{
  "isSuccess": true,
  "statusCode": 200,
  "data": {
    "otp": "1234",
    "referCode": "7fp25p",
    "createAt": 1762073725580,
    "expireAt": 1762074025580
  }
}

Production Response:

{
  "isSuccess": true,
  "statusCode": 200,
  "data": {
    "referCode": "7fp25p",
    "createAt": 1762073725580,
    "expireAt": 1762074025580
  }
}

400 Bad Request Registration disabled

{
  "isSuccess": false,
  "statusCode": 400,
  "message": {
    "errorCode": "REGISTRATION_DISABLED",
    "errorMessage": "Registration is disabled"
  }
}

404 Not Found Agent not found

{
  "isSuccess": false,
  "statusCode": 404,
  "message": {
    "errorCode": "AGENT_NOT_FOUND",
    "errorMessage": "Agent not found"
  }
}

429 Too Many Requests Duplicate request detected

{
  "isSuccess": false,
  "statusCode": 429,
  "message": {
    "errorCode": "DUPLICATE_REQUEST",
    "errorMessage": "Duplicate request. Please try again after a short wait."
  }
}

500 Internal Server Error Unable to send OTP

{
  "isSuccess": false,
  "statusCode": 500,
  "message": {
    "errorCode": "UNABLE_TO_SEND_OTP",
    "errorMessage": "Unable to send OTP message"
  }
}
POST /v2/user/register/otp/verify
Verify the OTP code and obtain a registration token. If the user already exists, returns access and refresh tokens for login. If OTP is disabled for the agent, returns a registration token directly.
Request

Headers:

Header Type Required Description
Content-Type string Yes application/json

Body:

Field Type Required Description
partnerKey string Yes Agent/Partner prefix key
mobileNumber string Yes Mobile phone number
otp string Optional OTP code received via SMS (required if OTP is enabled)
otpLineRegisterToken string Optional Line register token (for Line registration flow)
Example Request:
{
  "partnerKey": "AGENT01",
  "mobileNumber": "0912345678",
  "otp": "1234"
}
Response

200 OK Success - New User (OTP Enabled)

{
  "isSuccess": true,
  "statusCode": 200,
  "data": {
    "registerToken": "uuid-token-string"
  }
}

200 OK Success - OTP Disabled

{
  "isSuccess": true,
  "statusCode": 200,
  "data": {
    "skipOtp": true,
    "registerToken": "uuid-token-string"
  }
}

200 OK Success - User Already Exists

{
  "isSuccess": true,
  "statusCode": 200,
  "data": {
    "registerToken": null,
    "isAlreadyMember": true,
    "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
    "refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
  }
}

400 Bad Request Registration disabled

{
  "isSuccess": false,
  "statusCode": 400,
  "message": {
    "errorCode": "REGISTRATION_DISABLED",
    "errorMessage": "Registration is disabled"
  }
}

400 Bad Request Register token not expired

{
  "isSuccess": false,
  "statusCode": 400,
  "message": {
    "errorCode": "REGISTER_TOKEN_NOT_EXPIRED",
    "errorMessage": "Cannot register because RegisterToken has not expired"
  }
}

400 Bad Request Invalid OTP

{
  "isSuccess": false,
  "statusCode": 400,
  "message": {
    "errorCode": "OTP_INVALID",
    "errorMessage": "Invalid OTP"
  }
}

404 Not Found Agent not found

{
  "isSuccess": false,
  "statusCode": 404,
  "message": {
    "errorCode": "AGENT_NOT_FOUND",
    "errorMessage": "Agent not found"
  }
}

406 Not Acceptable Agent cannot have members

{
  "isSuccess": false,
  "statusCode": 406,
  "message": {
    "errorCode": "AGENT_CANNOT_HAVE_MEMBERS",
    "errorMessage": "This agent cannot have members"
  }
}

409 Conflict Registration conflict

{
  "isSuccess": false,
  "statusCode": 409,
  "message": {
    "errorCode": "REGISTRATION_CONFLICT",
    "errorMessage": "Cannot register repeatedly"
  }
}

409 Conflict Registration limit reached

{
  "isSuccess": false,
  "statusCode": 409,
  "message": {
    "errorCode": "MEMBER_REGISTRATION_LIMIT_REACHED",
    "errorMessage": "You have reached the registration limit, please login"
  }
}

410 Gone OTP expired

{
  "isSuccess": false,
  "statusCode": 410,
  "message": {
    "errorCode": "OTP_EXPIRED",
    "errorMessage": "OTP expired"
  }
}

429 Too Many Requests Duplicate request detected

{
  "isSuccess": false,
  "statusCode": 429,
  "message": {
    "errorCode": "DUPLICATE_REQUEST",
    "errorMessage": "Duplicate request. Please try again after a short wait."
  }
}
POST /v2/user/register/
Register a new member user. Requires a valid registration token from the OTP verification step (if OTP is enabled). Supports registration with or without bank account information based on agent settings.
Request

Headers:

Header Type Required Description
Content-Type string Yes application/json

Body:

Field Type Required Description
registerToken string Optional Registration token from OTP verification (required if OTP is enabled for the agent)
partnerKey string Yes Agent/Partner prefix key
mobileNumber string Yes Mobile phone number
password string Yes User password
via string Yes Registration source (e.g., "WEB", "MOBILE", "LINE", "TELEGRAM")
username string Optional Desired username (if alternate username is enabled)
alternateUsername string Optional Alternate username (if alternate username feature is enabled)
paymentMethodCodeName string Optional Bank code name (e.g., "KBANK", "SCB") - required if bank registration is enabled
paymentAccountName string Optional Bank account holder name - required if bank registration is enabled
paymentAccountNumber string Optional Bank account number - required if bank registration is enabled
affiliateByMemberCode string Optional Affiliate member code (for referral system)
lineAccessToken string Optional Line access token (for Line registration)
lineUserId string Optional Line user ID (for Line registration)
telegramUserId string Optional Telegram user ID (for Telegram registration)
telegramAccessToken string Optional Telegram access token (for Telegram registration)
mobileNumberCountryCode string Optional Country code for mobile number
Example Request:
{
  "registerToken": "uuid-token-string",
  "partnerKey": "AGENT01",
  "mobileNumber": "0912345678",
  "password": "password123",
  "via": "WEB",
  "paymentMethodCodeName": "KBANK",
  "paymentAccountName": "John Doe",
  "paymentAccountNumber": "1234567890"
}
Response

200 OK Success

{
  "isSuccess": true,
  "statusCode": 200,
  "data": {
    "registerUserResponseDto": {
      "mobileNumber": "0912345678",
      "userUid": "user-uid-123",
      "username": "XAGENT000000001",
      "agentName": "Agent Name",
      "alternateUsername": "john_doe"
    },
    "message": "Registration successful"
  }
}

Note: The alternateUsername field is only included in the response if the agent has alternate username feature enabled.

400 Bad Request Invalid token

{
  "isSuccess": false,
  "statusCode": 400,
  "message": {
    "errorCode": "INVALID_TOKEN",
    "errorMessage": "Invalid token"
  }
}

400 Bad Request Register token mismatch

{
  "isSuccess": false,
  "statusCode": 400,
  "message": {
    "errorCode": "REGISTER_TOKEN_MISMATCH",
    "errorMessage": "RegisterToken mismatch"
  }
}

400 Bad Request Registration disabled

{
  "isSuccess": false,
  "statusCode": 400,
  "message": {
    "errorCode": "REGISTRATION_DISABLED",
    "errorMessage": "Registration is disabled"
  }
}

404 Not Found Agent not found

{
  "isSuccess": false,
  "statusCode": 404,
  "message": {
    "errorCode": "AGENT_NOT_FOUND",
    "errorMessage": "Agent not found"
  }
}

406 Not Acceptable Agent cannot have members

{
  "isSuccess": false,
  "statusCode": 406,
  "message": {
    "errorCode": "AGENT_CANNOT_HAVE_MEMBERS",
    "errorMessage": "This agent cannot have members"
  }
}

409 Conflict User already exists

{
  "isSuccess": false,
  "statusCode": 409,
  "message": {
    "errorCode": "USER_DUPLICATE_IN_AGENT",
    "errorMessage": "User already exists in this agent"
  }
}

409 Conflict Username duplicate

{
  "isSuccess": false,
  "statusCode": 409,
  "message": {
    "errorCode": "USERNAME_DUPLICATE",
    "errorMessage": "Duplicate username"
  }
}

409 Conflict Mobile number duplicate

{
  "isSuccess": false,
  "statusCode": 409,
  "message": {
    "errorCode": "MOBILE_NUMBER_DUPLICATE",
    "errorMessage": "Cannot create user with this mobile number again"
  }
}

422 Unprocessable Entity Bank account required

{
  "isSuccess": false,
  "statusCode": 422,
  "message": {
    "errorCode": "BANK_ACCOUNT_REQUIRED",
    "errorMessage": "Please provide bank information"
  }
}

429 Too Many Requests Duplicate request detected

{
  "isSuccess": false,
  "statusCode": 429,
  "message": {
    "errorCode": "DUPLICATE_REQUEST",
    "errorMessage": "Duplicate request. Please try again after a short wait."
  }
}

500 Internal Server Error Registration failed

{
  "isSuccess": false,
  "statusCode": 500,
  "message": {
    "errorCode": "REGISTRATION_FAILED",
    "errorMessage": "Registration failed"
  }
}
GET /v2/user/register/resource/payment
Get a list of available payment bank methods for registration. Results are cached for 5 minutes.
Request

Query Parameters:

Parameter Type Required Description
country string Optional Filter by country code

Body: Empty

Response

200 OK Success

{
  "isSuccess": true,
  "statusCode": 200,
  "data": [
    {
      "codeName": "kbank",
      "code": "KBANK",
      "fullNameEng": "Kasikorn Bank",
      "fullNameThai": "ธนาคารกสิกรไทย",
      "paymentType": "BANK"
    },
    {
      "codeName": "scb",
      "code": "SCB",
      "fullNameEng": "Siam Commercial Bank",
      "fullNameThai": "ธนาคารไทยพาณิชย์",
      "paymentType": "BANK"
    }
  ]
}

Member Register API Documentation © 2024