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

# Create account

> Creates a new account for the given owner. The account owner type is determined by the project account ownership mode (`USER` or `COMPANY`). The owner must have an approved application (KYC for users, KYB for companies). For projects that provision user wallets (`USER_FUNDED` funding model), deposit addresses are created on all enabled chains and signer data is required (address + signed auth message from `GET /accounts/auth-message`). For projects without user wallets (`PROGRAM_FUNDED` funding model), no deposit addresses are provisioned and signers are not required.



## OpenAPI

````yaml /api-reference/openapi.json post /accounts/
openapi: 3.1.0
info:
  title: Reap API
  version: 1.0.0
  description: Reap platform API
servers:
  - url: https://sandbox.api.reap.global
    description: Sandbox
  - url: https://prod.api.reap.global
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Accounts
  - name: Activities
  - name: Card Designs
  - name: Card Shipments
  - name: Card Transactions
  - name: Cards
  - name: Companies
  - name: Crypto Deposits
  - name: Policies
  - name: Simulation
  - name: Users
  - name: Virtual Asset Postings
  - name: Virtual Assets
  - name: Webhooks
paths:
  /accounts/:
    post:
      tags:
        - Accounts
      summary: Create account
      description: >-
        Creates a new account for the given owner. The account owner type is
        determined by the project account ownership mode (`USER` or `COMPANY`).
        The owner must have an approved application (KYC for users, KYB for
        companies). For projects that provision user wallets (`USER_FUNDED`
        funding model), deposit addresses are created on all enabled chains and
        signer data is required (address + signed auth message from `GET
        /accounts/auth-message`). For projects without user wallets
        (`PROGRAM_FUNDED` funding model), no deposit addresses are provisioned
        and signers are not required.
      operationId: create_accounts
      parameters:
        - name: Reap-Version
          in: header
          required: true
          schema:
            type: string
            enum:
              - '2025-02-14'
            description: API version (YYYY-MM-DD)
            example: '2025-02-14'
        - name: Idempotency-Key
          in: header
          required: true
          schema:
            type: string
            minLength: 1
            maxLength: 255
            description: >-
              Unique key for safely retrying this request. Up to 255 characters;
              we recommend a UUIDv4. The first request executes and its response
              is cached; subsequent requests with the same key replay the cached
              response (24h retention).
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                ownerId:
                  type: string
                  format: uuid
                  description: >-
                    Owner entity ID. Must be a user ID or company ID, depending
                    on the project's account ownership mode.
                signers:
                  description: >-
                    Signer configurations per protocol. Required for projects
                    that provision user wallets (`USER_FUNDED` funding model);
                    omitted for projects without user wallets
                    (`PROGRAM_FUNDED`). The signer authorizes withdrawals from
                    the account. Use `GET /accounts/auth-message` to get the
                    message to sign.
                  type: object
                  properties:
                    evm:
                      description: EVM signer configuration
                      type: object
                      properties:
                        address:
                          type: string
                          minLength: 1
                          description: Signer address
                        message:
                          type: string
                          minLength: 1
                          description: >-
                            Auth message (JSON string from `GET
                            /accounts/auth-message`)
                        signature:
                          type: string
                          minLength: 1
                          description: Signature of the auth message, proving key ownership
                      required:
                        - address
                        - message
                        - signature
                    svm:
                      description: SVM signer configuration
                      type: object
                      properties:
                        address:
                          type: string
                          minLength: 1
                          description: Signer address
                        message:
                          type: string
                          minLength: 1
                          description: >-
                            Auth message (JSON string from `GET
                            /accounts/auth-message`)
                        signature:
                          type: string
                          minLength: 1
                          description: Signature of the auth message, proving key ownership
                      required:
                        - address
                        - message
                        - signature
              required:
                - ownerId
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                ownerId:
                  type: string
                  format: uuid
                  description: >-
                    Owner entity ID. Must be a user ID or company ID, depending
                    on the project's account ownership mode.
                signers:
                  description: >-
                    Signer configurations per protocol. Required for projects
                    that provision user wallets (`USER_FUNDED` funding model);
                    omitted for projects without user wallets
                    (`PROGRAM_FUNDED`). The signer authorizes withdrawals from
                    the account. Use `GET /accounts/auth-message` to get the
                    message to sign.
                  type: object
                  properties:
                    evm:
                      description: EVM signer configuration
                      type: object
                      properties:
                        address:
                          type: string
                          minLength: 1
                          description: Signer address
                        message:
                          type: string
                          minLength: 1
                          description: >-
                            Auth message (JSON string from `GET
                            /accounts/auth-message`)
                        signature:
                          type: string
                          minLength: 1
                          description: Signature of the auth message, proving key ownership
                      required:
                        - address
                        - message
                        - signature
                    svm:
                      description: SVM signer configuration
                      type: object
                      properties:
                        address:
                          type: string
                          minLength: 1
                          description: Signer address
                        message:
                          type: string
                          minLength: 1
                          description: >-
                            Auth message (JSON string from `GET
                            /accounts/auth-message`)
                        signature:
                          type: string
                          minLength: 1
                          description: Signature of the auth message, proving key ownership
                      required:
                        - address
                        - message
                        - signature
              required:
                - ownerId
          multipart/form-data:
            schema:
              type: object
              properties:
                ownerId:
                  type: string
                  format: uuid
                  description: >-
                    Owner entity ID. Must be a user ID or company ID, depending
                    on the project's account ownership mode.
                signers:
                  description: >-
                    Signer configurations per protocol. Required for projects
                    that provision user wallets (`USER_FUNDED` funding model);
                    omitted for projects without user wallets
                    (`PROGRAM_FUNDED`). The signer authorizes withdrawals from
                    the account. Use `GET /accounts/auth-message` to get the
                    message to sign.
                  type: object
                  properties:
                    evm:
                      description: EVM signer configuration
                      type: object
                      properties:
                        address:
                          type: string
                          minLength: 1
                          description: Signer address
                        message:
                          type: string
                          minLength: 1
                          description: >-
                            Auth message (JSON string from `GET
                            /accounts/auth-message`)
                        signature:
                          type: string
                          minLength: 1
                          description: Signature of the auth message, proving key ownership
                      required:
                        - address
                        - message
                        - signature
                    svm:
                      description: SVM signer configuration
                      type: object
                      properties:
                        address:
                          type: string
                          minLength: 1
                          description: Signer address
                        message:
                          type: string
                          minLength: 1
                          description: >-
                            Auth message (JSON string from `GET
                            /accounts/auth-message`)
                        signature:
                          type: string
                          minLength: 1
                          description: Signature of the auth message, proving key ownership
                      required:
                        - address
                        - message
                        - signature
              required:
                - ownerId
      responses:
        '200':
          description: Response for status 200
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Unique account identifier
                  status:
                    type: string
                    enum:
                      - ACTIVE
                      - RESTRICTED
                    description: Current account status
                    example: ACTIVE
                  ownerType:
                    type: string
                    enum:
                      - USER
                      - COMPANY
                      - PROJECT
                    description: Type of entity that owns this account
                    example: USER
                  ownerId:
                    anyOf:
                      - type: string
                        format: uuid
                      - type: 'null'
                    description: >-
                      Owner entity ID (user or company). Null for
                      `PROJECT`-owned master accounts.
                  chainAddresses:
                    type: array
                    items:
                      $ref: '#/components/schemas/ChainAddress'
                    description: >-
                      Deposit addresses by chain. Empty for accounts without
                      provisioned wallets (user accounts on `PROGRAM_FUNDED`
                      projects).
                  createdAt:
                    type: string
                    examples:
                      - '2024-01-15T10:30:00Z'
                    description: ISO 8601 timestamp of creation
                  updatedAt:
                    type: string
                    examples:
                      - '2024-01-15T10:35:00Z'
                    description: ISO 8601 timestamp of last update
                required:
                  - id
                  - status
                  - ownerType
                  - ownerId
                  - chainAddresses
                  - createdAt
                  - updatedAt
        '400':
          description: Response for status 400
          content:
            application/json:
              schema:
                anyOf:
                  - type: object
                    properties:
                      error:
                        type: object
                        properties:
                          code:
                            type: string
                            const: INVALID_ACCOUNT_OWNER
                          message:
                            type: string
                          detail:
                            anyOf:
                              - type: object
                                additionalProperties: {}
                              - type: 'null'
                        required:
                          - code
                          - message
                          - detail
                    required:
                      - error
                    title: InvalidAccountOwnerError
                    description: Invalid account owner specification
                  - type: object
                    properties:
                      error:
                        type: object
                        properties:
                          code:
                            type: string
                            const: USER_NOT_APPROVED
                          message:
                            type: string
                          detail:
                            anyOf:
                              - type: object
                                additionalProperties: {}
                              - type: 'null'
                        required:
                          - code
                          - message
                          - detail
                    required:
                      - error
                    title: UserNotApprovedError
                    description: User KYC application is not approved
                  - type: object
                    properties:
                      error:
                        type: object
                        properties:
                          code:
                            type: string
                            const: COMPANY_NOT_ACTIVE
                          message:
                            type: string
                          detail:
                            anyOf:
                              - type: object
                                additionalProperties: {}
                              - type: 'null'
                        required:
                          - code
                          - message
                          - detail
                    required:
                      - error
                    title: CompanyNotActiveError
                    description: Company is not active
                  - type: object
                    properties:
                      error:
                        type: object
                        properties:
                          code:
                            type: string
                            const: MISSING_SIGNER
                          message:
                            type: string
                          detail:
                            anyOf:
                              - type: object
                                additionalProperties: {}
                              - type: 'null'
                        required:
                          - code
                          - message
                          - detail
                    required:
                      - error
                    title: MissingSignerError
                    description: >-
                      Signers must be provided for all protocols required by
                      enabled chains
                  - type: object
                    properties:
                      error:
                        type: object
                        properties:
                          code:
                            type: string
                            const: SIGNER_EXPIRED
                          message:
                            type: string
                          detail:
                            anyOf:
                              - type: object
                                additionalProperties: {}
                              - type: 'null'
                        required:
                          - code
                          - message
                          - detail
                    required:
                      - error
                    title: SignerExpiredError
                    description: Signer authentication message has expired
                  - type: object
                    properties:
                      error:
                        type: object
                        properties:
                          code:
                            type: string
                            const: SIGNER_INVALID_DOMAIN
                          message:
                            type: string
                          detail:
                            anyOf:
                              - type: object
                                additionalProperties: {}
                              - type: 'null'
                        required:
                          - code
                          - message
                          - detail
                    required:
                      - error
                    title: SignerInvalidDomainError
                    description: Signer authentication message has invalid domain
                  - type: object
                    properties:
                      error:
                        type: object
                        properties:
                          code:
                            type: string
                            const: SIGNER_INVALID_MESSAGE_FORMAT
                          message:
                            type: string
                          detail:
                            anyOf:
                              - type: object
                                additionalProperties: {}
                              - type: 'null'
                        required:
                          - code
                          - message
                          - detail
                    required:
                      - error
                    title: SignerInvalidMessageFormatError
                    description: Signer authentication message has invalid format
                  - type: object
                    properties:
                      error:
                        type: object
                        properties:
                          code:
                            type: string
                            const: SIGNER_INVALID_SIGNATURE
                          message:
                            type: string
                          detail:
                            anyOf:
                              - type: object
                                additionalProperties: {}
                              - type: 'null'
                        required:
                          - code
                          - message
                          - detail
                    required:
                      - error
                    title: SignerInvalidSignatureError
                    description: Signer signature verification failed
                  - type: object
                    properties:
                      error:
                        type: object
                        properties:
                          code:
                            type: string
                            const: SIGNER_INVALID_ADDRESS
                          message:
                            type: string
                          detail:
                            anyOf:
                              - type: object
                                additionalProperties: {}
                              - type: 'null'
                        required:
                          - code
                          - message
                          - detail
                    required:
                      - error
                    title: SignerInvalidAddressError
                    description: Signer address is invalid
components:
  schemas:
    ChainAddress:
      type: object
      properties:
        chainId:
          type: string
          enum:
            - ETHEREUM_MAINNET
            - ETHEREUM_SEPOLIA
            - BASE_MAINNET
            - BASE_SEPOLIA
            - ARBITRUM_ONE_MAINNET
            - ARBITRUM_ONE_SEPOLIA
            - POLYGON_MAINNET
            - POLYGON_AMOY
            - SOLANA_MAINNET
            - SOLANA_DEVNET
          description: Blockchain network identifier
          example: ETHEREUM_MAINNET
        address:
          type: string
          examples:
            - '0x742d35Cc6634C0532925a3b844Bc9e7595f8fA21'
          description: Deposit address on this chain
      required:
        - chainId
        - address
      description: Deposit address for a specific blockchain
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: API key as Bearer token

````