> For the complete documentation index, see [llms.txt](https://docs.rocketfuel.inc/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.rocketfuel.inc/developer-guides/api-reference/payins/utility-apis/shopper/shopper-manual-signup.md).

# 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 %}
