2. Validate Mobile

The second step for registration is validating the merchant's mobile number. In this step, the merchant will receive an SMS containing OTP to send to the server.

Endpoint

POST /api/partner/register/validate-otp

Request Headers

HeaderRequiredDescription
AuthorizationYesBearer token provided by Authentication Endpoint
AcceptYesIt must be set to application/JSON.
Content-TypeYesIt must be set to application/JSON.
{
  "Authorization": "Bearer [id_token]",
  "Accept": "application/json",
  "Content-Type": "application/json"
}

Request Body Parameters

Field nameField typeDescriptionRestrictions
signatureStringThe signature is received from the first step. It must be passed as is.Modifying the signature will invalidate the registration session.
sessionUuidStringThe registration session UUID.This field must be passed as is. Otherwise, it will invalidate the registration session.
mobileStringIt is the mobile number of the merchant.It must be the mobile number submitted in the first step.
otpStringThe OTP message in the SMS is received on the merchant's mobile device.
partnerProfileNoStringThe partner profile no. It will be given upon signing the contract with Paylink.

An example of the request is as follows:

{
  "signature": "ae135f2506dc3c********",
  "mobile": "0599925477",
  "sessionUuid": "96ea8e22-edef-414b-9724-3bd2d494b710",
  "otp": "7615",
  "partnerProfileNo": "19039481"
}

Success Response

After submitting the above input, the response details are as follows:

Field nameField typeDescription
signatureStringThis is a signature that must be passed to the next step. It is used for data integrity.
mobileStringIt will contain the mobile number of the merchant.
sessionUuidStringThis field will contain a random session UUID for this registration process.
licenseNumberStringIt is the license number of the merchant.
licenseTypeStringIt is the license type of the merchant. It is either a freelance certificate or commercial registration.
licenseNameStringIt is the merchant's license name, the merchant's name in case of freelance documents, or the organization name in case of CR documents.
nationalIdsArray of StringIt is the list of national IDs related to the merchant license. The merchant must choose a national ID from this array in the third step. If this array is empty, then the merchant can pass any national IDs
bankNamesArray of StringList of the bank name. The registering merchant will choose a bank name from this array.
monthlySalesVolumesArray of objectIt is the estimated volume of the registered merchant sales per month. It will contain the array of objects where each object has three fields (salesVolumeValuesalesVolumeName, and salesVolumeNameAr). salesVolumeValue will contain the values below_1000010000_5000050000_100000, and more_than_100000salesVolumeName will contain the sales volume in English. salesVolumeNameAr will contain the sales volume in Arabic. For example, a value below_10000 means sales below 10000 SAR per month. The value 10000_50000 means sales between 10,000 and 50,000 per month. |

Example of the response:

{
  "signature": "example_signature",
  "mobile": "1234567890",
  "sessionUuid": "example_session_uuid",
  "licenseNumber": "123456789",
  "licenseType": "cr",
  "licenseName": "Example Company",
  "nationalIds": ["1234567890", "0987654321"],
  "bankNames": ["Bank A", "Bank B", "Bank C"],
  "monthlySalesVolumes": [
    {
      "salesVolumeValue": "below_10000",
      "salesVolumeName": "Below 10,000 SAR",
      "salesVolumeNameAr": "أقل من 10000 ريال سعودي"
    },
    {
      "salesVolumeValue": "10000_50000",
      "salesVolumeName": "10,000 - 50,000 SAR",
      "salesVolumeNameAr": "10,000 - 50,000 ريال سعودي"
    },
    {
      "salesVolumeValue": "50000_100000",
      "salesVolumeName": "50,000 - 100,000 SAR",
      "salesVolumeNameAr": "50,000 - 100,000 ريال سعودي"
    },
    {
      "salesVolumeValue": "more_than_100000",
      "salesVolumeName": "More than 100,000 SAR",
      "salesVolumeNameAr": "أكثر من 100,000 ريال سعودي"
    }
  ]
}