---
title: "Change Individual User Role"
method: POST
path: "/v3/role-change/individual"
tags: ["Role Change"]
---

# Change Individual User Role

`POST /v3/role-change/individual`

## Request

- Base URL: `https://sandbox-api.transfi.com`
- URL: `https://sandbox-api.transfi.com/v3/role-change/individual`
- Auth: HTTP basic
- TypeScript: <https://skmtc.dev/transfi/apis/transfi-single-integrated-api/docs/v3/role-change/individual/post.ts> (a function with typed inputs; its response is checked against the schema)

Step 2 of the role change flow, for users created as individuals. Grants the user the additional role `targetRole` - for example promoting an individual recipient to a sender. Call `POST /v3/role-change/mandatory-fields` first and send the fields it names. Use `POST /v3/role-change/business` for users created as organizations.

## Headers

- `MID` string, required

## Request body

- object: `targetRole`, `userId` and `currencyType` plus the fields named in `additionalMandatoryFieldNames` by `POST /v3/role-change/mandatory-fields`. The properties below `currencyType` are illustrative dynamic fields.
  - `targetRole` 'recipient' | 'sender', required: Role the user should additionally hold. Must match the `targetRole` used in step 1.
  - `userId` string, required: TransFi user id of the existing individual user. Must start with `UX-`.
  - `currencyType` 'crypto' | 'fiat': Currency rail the user will transact on in the new role. Defaults to `fiat`. Must match the `currencyType` used in step 1.
  - `email` string: Illustrative dynamic field. Send a valid email address when `additionalMandatoryFieldNames` contains `email`; a new address triggers an email verification link.
  - `phone` string: Illustrative dynamic field. Send it when `additionalMandatoryFieldNames` contains `phone`, always together with `phoneCode`.
  - `phoneCode` string: International dialling code for `phone`. 1-4 characters including an optional leading `+`, for example `+91`. Must be sent together with `phone`.
  - `dob` string: Illustrative dynamic field. Send it when `additionalMandatoryFieldNames` contains `dob`, in the format stated by that field's `validationMessage`.

## Response `200`

OK

- object
  - `status` string, required
  - `data` object, required
    - `userId` string, required: The user whose role was changed.
    - `targetRole` string, required: The role the user now additionally holds.
    - `contactVerificationData` object: Present only when a verification link was sent for a newly supplied contact detail.
      - `email` object
        - `status` string: `initiated` when a link was sent.
        - `message` string
      - `phone` object
        - `status` string: `initiated` when a link was sent.
        - `message` string
  - `traceId` string

## Other responses

- `400`: Bad Request
- `404`: Not Found
- `409`: Conflict

## Changes

- **2026-11-03** `7b745621a79f`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/transfi/apis/transfi-single-integrated-api/changes/v3/role-change/individual/post.md)

---

[API](https://skmtc.dev/transfi/apis/transfi-single-integrated-api.md) - [All operations](https://skmtc.dev/transfi/apis/transfi-single-integrated-api/llms.txt) - [OpenAPI document](https://skmtc.dev/transfi/apis/transfi-single-integrated-api/revisions/7b745621a79f?raw)
