> ## Documentation Index
> Fetch the complete documentation index at: https://www.cashfree.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Create User

> Creates a new user in the PPI system with the provided personal information. This endpoint enables merchants 
to onboard new users who can then be associated with wallets or cards.




## OpenAPI

````yaml /openapi/ppi/ppi.yaml post /ppi/user
openapi: 3.0.3
info:
  title: PPI Wallet API
  description: >-
    API for managing PPI (Prepaid Payment Instrument) wallets and sub-wallets,
    including credit and debit operations.
  version: 1.0.0
  contact:
    name: PPI Service Team
    email: support@cashfree.com
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
servers:
  - url: https://api.cashfree.com
    description: Production server.
  - url: https://sandbox.cashfree.com
    description: Sandbox server.
security:
  - XClientID: []
    XClientSecret: []
tags:
  - name: Wallet Management
    description: Operations related to PPI wallet management.
  - name: User Management
    description: Operations related to user management within the PPI system.
  - name: Beneficiary Management
    description: Operations related to beneficiary management for users.
  - name: KYC Management
    description: Operations related to KYC (Know Your Customer) management.
  - name: Transfers
    description: Operations related to transfer.
paths:
  /ppi/user:
    post:
      tags:
        - User Management
      summary: Create User
      description: >
        Creates a new user in the PPI system with the provided personal
        information. This endpoint enables merchants 

        to onboard new users who can then be associated with wallets or cards.
      operationId: createPPIUser
      parameters:
        - $ref: '#/components/parameters/global_x_api_version'
      requestBody:
        $ref: '#/components/requestBodies/CreateUserRequest'
      responses:
        '200':
          $ref: '#/components/responses/CreateUserResponse'
        '400':
          description: Bad request - Invalid input parameters.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StructuredErrorResponse'
              examples:
                userIdMissing:
                  summary: user ID missing
                  value:
                    message: user id is missing
                    code: user_id_missing
                    type: validation_error
                phoneNumberMissing:
                  summary: phone missing
                  value:
                    message: phone parameter is missing
                    code: phone_missing
                    type: validation_error
                invalidPhoneNumber:
                  summary: Invalid phone format
                  value:
                    message: phone invalid value
                    code: phone_value_invalid
                    type: validation_error
                missingClientId:
                  summary: Missing client ID
                  value:
                    message: x-client-id is missing in the request
                    code: x-client-id_missing
                    type: validation_error
                missingClientSecret:
                  summary: Missing client secret
                  value:
                    message: x-client-secret is missing in the request
                    code: x-client-secret_missing
                    type: validation_error
        '401':
          $ref: '#/components/responses/Response401'
        '409':
          description: Conflict - Duplicate request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StructuredErrorResponse'
              examples:
                duplicateUser:
                  summary: User Id already exists
                  value:
                    code: user_id_already_exists
                    type: validation_error
                    message: User with the same user_id already exists
        '500':
          $ref: '#/components/responses/Response500'
components:
  parameters:
    global_x_api_version:
      description: API version to be used. Format is in YYYY-MM-DD.
      name: x-api-version
      in: header
      required: true
      schema:
        type: string
        default: '2025-11-01'
        example: '2025-11-01'
      example: '2025-11-01'
  requestBodies:
    CreateUserRequest:
      description: Request parameters to create a new user.
      required: true
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/CreateUserRequest'
  responses:
    CreateUserResponse:
      description: Success response for creating a user.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/CreateUserResponse'
          examples:
            SUCCESS:
              summary: Successful user creation
              value:
                user_id: USER827364
                first_name: John
                last_name: Doe
                phone: '9876543210'
                email: john.doe@example.com
                status: ACTIVE
                cf_user_id: '859473832123456789'
    Response401:
      description: Unauthorised - Invalid or missing authentication.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/StructuredErrorResponse'
          examples:
            invalidCredentials:
              summary: Invalid client credentials
              value:
                code: authentication_failed
                type: authentication_error
                message: Invalid client ID and client secret combination
    Response500:
      description: Internal server error.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/StructuredErrorResponse'
          examples:
            internalError:
              summary: Internal server error
              value:
                code: internal_server_error
                type: internal_error
                message: An internal error occurred while processing the request
  schemas:
    StructuredErrorResponse:
      type: object
      properties:
        type:
          type: string
          description: A broad category of the error.
          example: internal_error
        code:
          type: string
          description: A machine-readable error code specific to the issue.
          example: internal_server_error
        message:
          type: string
          description: >-
            A message providing more details about the error, dynamic based on
            the specific issue.
          example: Internal server error
    CreateUserRequest:
      type: object
      required:
        - user_id
        - phone
      properties:
        user_id:
          type: string
          description: >-
            Unique identifier for the user, as provided by you during PPI user
            creation.
          example: USER827364
        phone:
          type: string
          description: >-
            Phone number of the user, without country code. Must be exactly 10
            digits. Only numeric characters are allowed.
          example: '9876543210'
        first_name:
          type: string
          description: First name of the user.
          example: John
        last_name:
          type: string
          description: Last name of the user.
          example: Doe
        email:
          type: string
          description: Email address of the user.
          example: john.doe@example.com
    CreateUserResponse:
      type: object
      properties:
        user_id:
          type: string
          description: >-
            Unique identifier for the user, as provided by you during PPI user
            creation.
          example: USER827364
        first_name:
          type: string
          description: First name of the user.
          example: John
        last_name:
          type: string
          description: Last name of the user.
          example: Doe
        phone:
          type: string
          description: Phone number of the user without country code.
          example: '9876543210'
        email:
          type: string
          description: Email address of the user.
          example: john.doe@example.com
        status:
          type: string
          description: |
            Current status of the user account. Possible values:
            - ACTIVE
            - BLOCKED
          example: ACTIVE
        cf_user_id:
          type: string
          description: Unique identifier of the user generated by Cashfree.
          example: '859473832123456789'
  securitySchemes:
    XClientID:
      type: apiKey
      in: header
      name: x-client-id
      description: >-
        Your unique client identifier issued by Cashfree. You can find this in
        your [Merchant
        Dashboard](https://merchant.cashfree.com/merchants/landing?env=prod).
    XClientSecret:
      type: apiKey
      in: header
      name: x-client-secret
      description: >-
        The secret key associated with your client ID. Use this to authenticate
        your API requests. You can find this in your [Merchant
        Dashboard](https://merchant.cashfree.com/merchants/landing?env=prod).

````