> ## Documentation Index
> Fetch the complete documentation index at: https://rain-sandbox-trial.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Move a user to a subtenant

> Move a consumer user - along with their cards, transactions, and other related data - to one of your subtenants.

Call this endpoint with your parent tenant's API key and **no `Sub-Tenant-Id` header**. The user can currently belong to your parent tenant or to any of your subtenants; the target must be one of your subtenants. You cannot move a user back to the parent tenant.

This endpoint is only available for consumer users who own their own single-member team. To move users who belong to a company, move the whole company instead.

The move succeeds only when:
- The target subtenant is authorized to serve consumer users.
- The target subtenant supports exactly the same currencies as the user's current tenant.
- The move is not from a Partner-Managed tenant to a Rain-Managed tenant (not supported yet).

The user's active sessions are invalidated by the move, so they need to sign in again. When the user has a large transaction history, the request may take several seconds to complete.



## OpenAPI

````yaml put /issuing/users/{userId}/subtenant
openapi: 3.0.3
info:
  title: Issuing API
  description: This is the specification for Rain's Issuing API.
  termsOfService: https://www.rain.xyz/legal/authorized-user-terms
  contact:
    email: support@rain.xyz
  version: 1.3.0
servers:
  - url: https://api-dev.rain.xyz/v1
    description: Sandbox server
  - url: https://api.rain.xyz/v1
    description: Production server
security: []
tags:
  - name: paymentRoutes
    description: >-
      **Endpoint Migration:** The `/v1/automations` endpoints have been renamed
      to `/v1/payment-routes`. The old `/v1/automations` paths remain available
      as deprecated aliases during migration. Update your integrations to use
      `/v1/payment-routes` as the deprecated endpoints will be removed in a
      future release.
  - name: simulate
    description: >-
      Transaction simulation endpoints for testing integration flows in
      non-production environments. These endpoints let you trigger transaction
      events programmatically to automate integration tests and verify webhook
      handling without depending on external systems or staging real deposits.
      **Sandbox only** — all simulation endpoints return `404 Not Found` in
      production.
  - name: raindrops
    description: >-
      Rewards and points management endpoints. Custom API keys need
      `raindrops:read`/`raindrops:write` for general rewards endpoints and
      `raindrops-travel:read`/`raindrops-travel:write` for travel redemption
      endpoints.
    x-group: rewards
paths:
  /issuing/users/{userId}/subtenant:
    put:
      tags:
        - subtenants
      summary: Move a user to a subtenant
      description: >-
        Move a consumer user - along with their cards, transactions, and other
        related data - to one of your subtenants.


        Call this endpoint with your parent tenant's API key and **no
        `Sub-Tenant-Id` header**. The user can currently belong to your parent
        tenant or to any of your subtenants; the target must be one of your
        subtenants. You cannot move a user back to the parent tenant.


        This endpoint is only available for consumer users who own their own
        single-member team. To move users who belong to a company, move the
        whole company instead.


        The move succeeds only when:

        - The target subtenant is authorized to serve consumer users.

        - The target subtenant supports exactly the same currencies as the
        user's current tenant.

        - The move is not from a Partner-Managed tenant to a Rain-Managed tenant
        (not supported yet).


        The user's active sessions are invalidated by the move, so they need to
        sign in again. When the user has a large transaction history, the
        request may take several seconds to complete.
      operationId: updateIssuingUserSubtenant
      parameters:
        - name: userId
          in: path
          description: Id of the user to move
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        description: Target subtenant
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - subtenantId
              properties:
                subtenantId:
                  type: string
                  format: uuid
                  description: >-
                    Id of the subtenant to move the user to. Must be a subtenant
                    of the tenant that owns the API key.
      responses:
        '204':
          description: Successful operation
        '400':
          description: >-
            Invalid request - the user cannot be moved, the user already belongs
            to the target subtenant, the target subtenant cannot serve consumer
            users, or the supported currencies differ
        '401':
          description: Invalid authorization
        '403':
          description: Forbidden
        '404':
          description: User or subtenant not found
        '500':
          description: Internal server error
      security:
        - ApiKeyAuth: []
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      name: Api-Key
      in: header

````