> ## 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.

# Get withdrawal signature for a user

<Warning>
  Generating a signature authorizes a movement of funds, so this `GET` requires `contractsAndSignatures:write` — not `read`. See [API key roles](/reference/authenticating-with-the-api#api-key-roles).
</Warning>


## OpenAPI

````yaml get /issuing/users/{userId}/signatures/withdrawals
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}/signatures/withdrawals:
    get:
      tags:
        - signatures
      summary: Get withdrawal signature for a user
      operationId: getUserWithdrawalSignature
      parameters:
        - name: userId
          in: path
          description: Id of the user to get a withdrawal signature for
          required: true
          schema:
            type: string
            format: uuid
        - name: chainId
          in: query
          description: >-
            The chain id - as a parsed base-10 number - that the smart contract
            is deployed on
          required: false
          schema:
            type: integer
        - name: token
          in: query
          description: >-
            The address of the token that the withdrawal should be made in, as a
            hex string for EVM or base58 string for Solana
          required: true
          schema:
            type: string
        - name: amount
          in: query
          description: The amount of token that is being withdrawn
          required: true
          schema:
            type: string
        - name: adminAddress
          in: query
          description: >-
            The address making the withdrawal, as a hex string for EVM or base58
            string for Solana, which should be an admin of the smart contract
          required: true
          schema:
            type: string
        - name: recipientAddress
          in: query
          description: >-
            The address that the withdrawal should be sent to, as a hex string
            for EVM or base58 string for Solana
          required: true
          schema:
            type: string
        - name: rainCollateralContractId
          in: query
          description: >-
            Optional ID of the specific collateral contract to use for this
            signature
          required: false
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IssuingSignature'
        '400':
          description: |-
            Invalid request.

            Used when:
            - Invalid address format (asset, admin, recipient).
            - Collateral balance is lower than requested amount.
            - Payment/Withdrawal amount exceeds spending power.
            - Admin address is not an admin of the collateral contract.
            - Collateral contract validation fails (no proxy, no team).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Invalid authorization
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: |-
            Resource not found. Used when:
            - User or Team not found.
            - Collateral contract not found.
            - Chain not found.
            - Asset not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: >-
            Signature conflict, there is already an active signature for this
            user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded, there is already an processing signature for
            this user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error, signature microservice unknown error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '502':
          description: >-
            Blockchain signature error: This indicates a problem encountered
            during blockchain operations, such as the contract not being found
            for the specified chain, unknown blockchain/asset validation errors,
            or failures during signature creation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '503':
          description: Signature microservice is unreachable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '504':
          description: Signature generation exceeded the timeout limit.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - ApiKeyAuth: []
components:
  schemas:
    IssuingSignature:
      type: object
      required:
        - status
        - signature
      properties:
        status:
          type: string
          enum:
            - ready
          description: Status of the signature
        signature:
          type: object
          required:
            - data
            - salt
          properties:
            data:
              type: string
              description: The signature data
            salt:
              type: string
              description: The signature salt
        expiresAt:
          type: string
          format: date-time
          description: The time at which the signature expires
    ErrorResponse:
      type: object
      required:
        - statusCode
        - error
      properties:
        statusCode:
          type: number
          description: Status code indicating the request failed
        error:
          type: string
          description: >-
            Error type name, e.g. 'NotFoundError', 'BadRequestError',
            'InternalServerError'
        message:
          type: string
          description: Human-readable error message describing what went wrong
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      name: Api-Key
      in: header

````