---
updatedAt: 2026-09-30T20:00:54.000Z
agentTools:
  projectIndex: https://developer.i-payout.com/llms.txt
---

# How to Implement Single Sign On (SSO)

The usual workflow for implementing Single Sign On (SSO) involves the following steps:

**[Step 1: Authenticate](#step-1-authenticate)**: Obtain an API token by validating your credentials.

**[Step 2: Get SSO Token](#step-2-get-sso-token)**: Generate an SSO token for the user.

**[Step 3: Redirect to eWallet](#step-3-redirect-to-ewallet)**: Redirect the user to the eWallet with the SSO token.

<Image src="https://files.readme.io/f11101c-i-payout_Diagram_14.png" align="center" />

## API Endpoints Used

In this guide, you will use the following API endpoint:

<HTMLBlock>{`
<style>
  @import url('https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap');

  .card_container {
    display: flex;
    gap: 10px;
    margin: 0 auto;
    max-width: var(--container-lg);
    width: 100%;
    flex-wrap: wrap;
    /* grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); */

    .card {
      display: flex;
      padding: 20px 14px;
      flex-direction: column;
      justify-content: center;
      align-items: flex-start;
      min-width: 190px;
      flex-shrink: 0;
      gap: 12px;
      border-radius: 6px;
      border: 1px solid #DCDCDC;
      background: #FFF;
      box-shadow: 0px 3.656px 27.422px 0px rgba(0, 0, 0, 0.13);
      text-decoration: none;
      flex-grow: 1;
      flex-basis: 0;
      text-decoration: none !important;

      svg {
        fill: none;

        rect {
          fill: #FFF;
          stroke: #C9C9C9;
        }

        path {
          fill: #E75426;
        }
      }

      h3 {
        color: #383838;
        text-align: center;
        font-family: Inter !important;
        font-size: 17.5px;
        font-style: normal;
        font-weight: 700;
        text-decoration: none;
        margin: 0;
        text-align: start;
      }
    }

    .card:hover {
      cursor: pointer;
      border: 1px solid #E75426 !important;
      box-shadow: 0px 4px 30px 0px rgba(0, 0, 0, 0.13);
      transform: translateY(-1px);

      h3 {
        color: #E75426;
      }

      svg {
        fill: none;

        rect {
          fill: #E75426;
          stroke: #C9C9C9;
        }

        path {
          fill: #FFF;
        }
      }
    }
  }
</style>

<div class="card_container">

  <a class="card" href="/reference/get-sso-token">
    <svg xmlns="http://www.w3.org/2000/svg" width="33" height="33" viewBox="0 0 33 33">
      <rect x="0.5" y="0.5" width="31.8205" height="31.8205" rx="3.70776"></rect>
      <path fill-rule="evenodd" clip-rule="evenodd"
        d="M23.3736 24.9994C22.4754 24.9994 21.7472 24.2712 21.7472 23.373V11.2526L9.62638 11.2526C8.72816 11.2526 8 10.5245 8 9.62632C8 8.72813 8.72816 8 9.62639 8L23.3736 8C24.2718 8 25 8.72813 25 9.62632L25 23.373C25 24.2712 24.2718 24.9994 23.3736 24.9994Z"></path>
      <path fill-rule="evenodd" clip-rule="evenodd"
        d="M22.8056 10.1953C23.4408 10.8304 23.4408 11.8602 22.8056 12.4953L10.7768 24.5237C10.1416 25.1588 9.11188 25.1588 8.47674 24.5237C7.84159 23.8885 7.84159 22.8588 8.47673 22.2237L20.5056 10.1953C21.1407 9.56019 22.1705 9.56019 22.8056 10.1953Z"></path>
    </svg>
    <h3>Get SSO Token</h3>
  </a>

</div>
`}</HTMLBlock>

Below, you will go through the necessary steps to implement SSO between i-payout's eWallet and your website.

## Step 1: Authenticate

To start using i-payout solutions, you will need to authenticate with your API Token. Refer to the [Get a Token](https://developer.i-payout.com/docs/get-a-token) guide to learn how to:

<HTMLBlock>{`
<style>
  @import url('https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap');
  
  .card_container {
    display: flex;
    gap: 10px;
    margin: 0 auto;
    max-width: var(--container-lg);
    width: 100%;
    flex-wrap: wrap;
    /* grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); */

    .card {
      display: flex;
      padding: 20px 14px;
      flex-direction: column;
      justify-content: center;
      align-items: flex-start;
      min-width: 190px;
      flex-shrink: 0;
      gap: 12px;
      border-radius: 6px;
      border: 1px solid #DCDCDC;
      background: #FFF;
      box-shadow: 0px 3.656px 27.422px 0px rgba(0, 0, 0, 0.13);
      text-decoration: none;
      flex-grow: 1;
      flex-basis: 0;
      text-decoration: none !important;

      svg {
        fill: none;

        rect {
          fill: #FFF;
          stroke: #C9C9C9;
        }

        path {
          fill: #E75426;
        }
      }

      h3 {
        color: #383838;
        text-align: center;
        font-family: Inter !important;
        font-size: 17.5px;
        font-style: normal;
        font-weight: 700;
        text-decoration: none;
        margin: 0;
        text-align: start;
      }
    }

    .card:hover {
      cursor: pointer;
      border: 1px solid #E75426 !important;
      box-shadow: 0px 4px 30px 0px rgba(0, 0, 0, 0.13);
      transform: translateY(-1px);

      h3 {
        color: #E75426;
      }

      svg {
        fill: none;

        rect {
          fill: #E75426;
          stroke: #C9C9C9;
        }

        path {
          fill: #FFF;
        }
      }
    }
  }

  @media only screen and (max-width: 450px) {
    .card_container {
      grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    }
  }
</style>

<div class="card_container">

  <a class="card" href="/docs/get-a-token#obtain-a-token-through-the-api">
    <svg xmlns="http://www.w3.org/2000/svg" width="33" height="33" viewBox="0 0 33 33">
      <rect x="0.5" y="0.5" width="31.8205" height="31.8205" rx="3.70776"></rect>
      <path fill-rule="evenodd" clip-rule="evenodd"
        d="M23.3736 24.9994C22.4754 24.9994 21.7472 24.2712 21.7472 23.373V11.2526L9.62638 11.2526C8.72816 11.2526 8 10.5245 8 9.62632C8 8.72813 8.72816 8 9.62639 8L23.3736 8C24.2718 8 25 8.72813 25 9.62632L25 23.373C25 24.2712 24.2718 24.9994 23.3736 24.9994Z"></path>
      <path fill-rule="evenodd" clip-rule="evenodd"
        d="M22.8056 10.1953C23.4408 10.8304 23.4408 11.8602 22.8056 12.4953L10.7768 24.5237C10.1416 25.1588 9.11188 25.1588 8.47674 24.5237C7.84159 23.8885 7.84159 22.8588 8.47673 22.2237L20.5056 10.1953C21.1407 9.56019 22.1705 9.56019 22.8056 10.1953Z"></path>
    </svg>
    <h3>Obtain a Token through the API</h3>
  </a>

  <a class="card" href="/docs/get-a-token#obtain-a-token-through-the-i-payout-admin-portal">
    <svg xmlns="http://www.w3.org/2000/svg" width="33" height="33" viewBox="0 0 33 33">
      <rect x="0.5" y="0.5" width="31.8205" height="31.8205" rx="3.70776"></rect>
      <path fill-rule="evenodd" clip-rule="evenodd"
        d="M23.3736 24.9994C22.4754 24.9994 21.7472 24.2712 21.7472 23.373V11.2526L9.62638 11.2526C8.72816 11.2526 8 10.5245 8 9.62632C8 8.72813 8.72816 8 9.62639 8L23.3736 8C24.2718 8 25 8.72813 25 9.62632L25 23.373C25 24.2712 24.2718 24.9994 23.3736 24.9994Z"></path>
      <path fill-rule="evenodd" clip-rule="evenodd"
        d="M22.8056 10.1953C23.4408 10.8304 23.4408 11.8602 22.8056 12.4953L10.7768 24.5237C10.1416 25.1588 9.11188 25.1588 8.47674 24.5237C7.84159 23.8885 7.84159 22.8588 8.47673 22.2237L20.5056 10.1953C21.1407 9.56019 22.1705 9.56019 22.8056 10.1953Z"></path>
    </svg>
    <h3>Obtain a Token through the i-payout Admin Portal</h3>
  </a>

  <a class="card" href="/docs/get-a-token#using-your-api-token">
    <svg xmlns="http://www.w3.org/2000/svg" width="33" height="33" viewBox="0 0 33 33">
      <rect x="0.5" y="0.5" width="31.8205" height="31.8205" rx="3.70776"></rect>
      <path fill-rule="evenodd" clip-rule="evenodd"
        d="M23.3736 24.9994C22.4754 24.9994 21.7472 24.2712 21.7472 23.373V11.2526L9.62638 11.2526C8.72816 11.2526 8 10.5245 8 9.62632C8 8.72813 8.72816 8 9.62639 8L23.3736 8C24.2718 8 25 8.72813 25 9.62632L25 23.373C25 24.2712 24.2718 24.9994 23.3736 24.9994Z"></path>
      <path fill-rule="evenodd" clip-rule="evenodd"
        d="M22.8056 10.1953C23.4408 10.8304 23.4408 11.8602 22.8056 12.4953L10.7768 24.5237C10.1416 25.1588 9.11188 25.1588 8.47674 24.5237C7.84159 23.8885 7.84159 22.8588 8.47673 22.2237L20.5056 10.1953C21.1407 9.56019 22.1705 9.56019 22.8056 10.1953Z"></path>
    </svg>
    <h3>Use your API Token</h3>
  </a>

</div>
`}</HTMLBlock>

## Step 2: Get SSO Token

Once authenticated, call the [Get SSO Token](https://developer.i-payout.com/reference/get-sso-token) endpoint to generate an SSO token for the user. This token is valid for ten minutes and will be used to seamlessly log the user into the eWallet system. Below, you will find an example request and response for getting the SSO token:

```curl Request
curl --request GET \
     --url https://merchantapi.testewallet.com/api/v1/beneficiaries/<BENEFICIARY_TOKEN>/sso-token \
     --header 'accept: application/json' \
     --header 'content-type: application/json'
```
```json Response
{
  "isSuccess": true,
  "message": "Token generated successfully",
  "statusCode": 0,
  "logIdentifier": "abc123",
  "data": {
    "token": "ssoToken123",
    "expireInMinutes": 10
  }
}
```

## Step 3: Redirect User to eWallet

After obtaining the SSO token, redirect the user to the eWallet using the token. The user will be logged in automatically without needing to re-enter their credentials.

**Example Redirect URL:**

```
https://yourdomain.com/MemberLogin.aspx?secKey={ssoToken}
```

Replace `https://yourdomain.com` with your i-payout eWallet domain and `{ssoToken}` with the token you retrieved in [Step 2](#step-2-get-sso-token). The token is passed in the `secKey` query parameter.