# Shopper manual signup

A shopper should register to the RKFL system to proceed with the payment. The RKFL system provides a seamless register & login experience with [shopper SSO login](https://docs.rocketfuelblockchain.com/developer-guides/api-reference/shopper-sso-login).

In any case, if SSO is not successful, the RKFL supports a manual signup process. The merchant website should display a signup form similar to the attached screenshot and ask the shopper to enter the details and register.

In the manual registration process, the shopper must [verify the email id](/developer-guides/api-reference/payins/utility-apis/shopper/verify-shoppers-email-id.md). &#x20;

![](/files/OfGuPtQiDtVUlRnsdbOf)

The register API accepts data in an encrypted format. The encryption algorithm is RSA, and the encryption key is the merchant's "Public Key."

```
// The key "encryptedReq" should generate from the below way.
export const encryptedReq = async (toEncrypt, publicKey) => {
  const buffer = Buffer.from(toEncrypt);
  const encrypted = crypto.publicEncrypt(publicKey, buffer);
  return encrypted.toString('base64');
};
```

<mark style="color:green;">`POST`</mark> `/auth/signup`

#### Headers

| Name         | Type   | Description      |
| ------------ | ------ | ---------------- |
| Content-Type | String | application/json |

#### Request Body

| Name                                           | Type   | Description      |
| ---------------------------------------------- | ------ | ---------------- |
| encryptedReq<mark style="color:red;">\*</mark> | String | Encrypted string |
| recaptcha                                      | String | Google recaptcha |

{% tabs %}
{% tab title="400: Bad Request Validation error" %}

```javascript
{
  "ok": false,
  "statusCode": 400,
  "data": {
    
  },
  "message": "Email is already in use"
}
```

{% endtab %}

{% tab title="200: OK Success" %}

```javascript
{
  "ok": true,
  "result": {
    "access": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjBkZTIyMDk5LTEzM2MtNDAzZi1hMTgxLWRmMjFhMGM2M2NhNiIsImlhdCI6MTY1NjQxNTU5OSwiZXhwIjoxNjU2NDE3Mzk5fQ.sfQxkh-LislyDFRJVjaWeCqIy4Gg6SK5yGUSf8zA4gU",
    "refresh": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjBkZTIyMDk5LTEzM2MtNDAzZi1hMTgxLWRmMjFhMGM2M2NhNiIsImlhdCI6MTY1NjQxNTU5OSwiZXhwIjoxNjU2NDE3Mzk5fQ.sfQxkh-LislyDFRJVjaWeCqIy4Gg6SK5yGUSf8zA4gU",
    "newResendTime": 1656415629744
  }
}
```

{% endtab %}
{% endtabs %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.rocketfuel.inc/developer-guides/api-reference/payins/utility-apis/shopper/shopper-manual-signup.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
