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

# Create an account

> Creates an account for an approved KYC profile.

Complete identity verification before calling this endpoint. Account setup
is asynchronous: persist the returned `account_id`, then use
`GET /accounts/{account_id}` or account webhooks to wait for `status: active`.

The `funding` object selects the account's funding method and blockchain
network. The owner address must be controlled by the user.

`external_reference` is your optional identifier for reconciliation. It does not make
repeated requests idempotent.

Returns 422 with reason `ACCOUNT_CREATION_LIMIT_EXCEEDED` when creating the
account would exceed the configured number of open accounts for the KYC profile.



## OpenAPI

````yaml https://core.sandbox.gnosispay.in/partner-api/openapi.json post /v1/accounts
openapi: 3.1.0
info:
  title: Gnosis Pay Partner API
  version: 1.0.0
  description: >-
    Server-to-server API for onboarding users, creating accounts and cards,
    moving

    funds, and managing the card lifecycle. Call this API only from a trusted

    backend. Every request requires a partner access token, and every resource
    is

    scoped to the authenticated partner.
servers:
  - url: https://core.prod.gnosispay.com/partner-api
    description: Production
    variables: {}
  - url: https://core.sandbox.gnosispay.in/core
    description: Sandbox
    variables: {}
security:
  - BearerAuth: []
tags:
  - name: Accounts
  - name: Cards
  - name: Card transactions
  - name: KYC
  - name: Deposits
  - name: Withdrawals
  - name: PCI
  - name: 3DS
  - name: Webhooks
paths:
  /v1/accounts:
    post:
      tags:
        - Accounts
      summary: Create an account
      description: >-
        Creates an account for an approved KYC profile.


        Complete identity verification before calling this endpoint. Account
        setup

        is asynchronous: persist the returned `account_id`, then use

        `GET /accounts/{account_id}` or account webhooks to wait for `status:
        active`.


        The `funding` object selects the account's funding method and blockchain

        network. The owner address must be controlled by the user.


        `external_reference` is your optional identifier for reconciliation. It
        does not make

        repeated requests idempotent.


        Returns 422 with reason `ACCOUNT_CREATION_LIMIT_EXCEEDED` when creating
        the

        account would exceed the configured number of open accounts for the KYC
        profile.
      operationId: accounts.create.v1
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccountCreationParams'
        description: >-
          KYC profile, external reference, and funding configuration for the new
          account.
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountCreationResponse'
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    AccountCreationParams:
      type: object
      required:
        - kyc_profile_id
        - funding
      properties:
        kyc_profile_id:
          $ref: '#/components/schemas/uuid'
          description: The ID of an approved KYC profile to associate with this account.
        external_reference:
          $ref: '#/components/schemas/ExternalReference'
          description: Optional external reference for your own tracking purposes.
        funding:
          $ref: '#/components/schemas/CreateFunding'
          description: How the account is funded. `type` determines the fields of `config`.
      examples:
        - kyc_profile_id: 019cbf57-758a-7589-8676-835804fa8c44
          external_reference: user-1234
          funding:
            type: safe_wallet
            config:
              chain_config:
                chain: gnosis
              safe_owner_address: '0xC0FFEE254729296a45a3885639AC7E10F9d54979'
    AccountCreationResponse:
      type: object
      required:
        - account_id
      properties:
        account_id:
          $ref: '#/components/schemas/uuid'
          description: >-
            The ID of the newly created account. Use this to check the
            provisioning status.
      examples:
        - account_id: 019cbf58-1b2a-7c3d-9e4f-5a6b7c8d9e0f
    Error:
      type: object
      required:
        - code
        - message
      properties:
        code:
          type: integer
          format: int32
          description: HTTP status code.
        message:
          type: string
          description: Generic human-readable text for the status code. Do not parse it.
        reason:
          type: string
          description: >-
            Stable machine-readable code identifying the specific cause, present
            only

            for errors that expose one (e.g. `CREATE_CARD_LIMIT_EXCEEDED`).
            Branch on

            this rather than on `message`.
    uuid:
      type: string
      format: uuid
    ExternalReference:
      type: string
      minLength: 1
      maxLength: 128
      pattern: ^[A-Za-z0-9_-]+$
      description: >-
        Your identifier for reconciliation. 1 to 128 letters, digits,
        underscores or hyphens.
    CreateFunding:
      type: object
      oneOf:
        - $ref: '#/components/schemas/CreateSafeWalletFunding'
      discriminator:
        propertyName: type
        mapping:
          safe_wallet: '#/components/schemas/CreateSafeWalletFunding'
      description: >-
        Funding source of a new account. Set `type` to choose it; only
        `safe_wallet` is supported.
    CreateSafeWalletFunding:
      type: object
      required:
        - type
        - config
      properties:
        type:
          type: string
          enum:
            - safe_wallet
          description: Funding type.
        config:
          $ref: '#/components/schemas/CreateSafeWalletFundingConfig'
          description: Safe wallet settings.
      description: Funds the account through a Safe wallet deployed on the chosen chain.
      title: Safe Wallet Funding
      examples:
        - type: safe_wallet
          config:
            chain_config:
              chain: gnosis
            safe_owner_address: '0xC0FFEE254729296a45a3885639AC7E10F9d54979'
    CreateSafeWalletFundingConfig:
      type: object
      required:
        - chain_config
        - safe_owner_address
      properties:
        chain_config:
          $ref: '#/components/schemas/AccountChainConfig'
          description: The chain to deploy the Safe wallet on.
        safe_owner_address:
          type: string
          description: The address that will own the Safe wallet.
      description: Settings of the Safe wallet that funds a new account.
      examples:
        - chain_config:
            chain: gnosis
          safe_owner_address: '0xC0FFEE254729296a45a3885639AC7E10F9d54979'
    AccountChainConfig:
      type: object
      oneOf:
        - $ref: '#/components/schemas/CeloChainConfig'
        - $ref: '#/components/schemas/GnosisChainConfig'
      discriminator:
        propertyName: chain
        mapping:
          celo: '#/components/schemas/CeloChainConfig'
          gnosis: '#/components/schemas/GnosisChainConfig'
      description: >-
        Discriminated union for chain-specific configuration. The "chain"
        property is injected automatically.
    CeloChainConfig:
      type: object
      required:
        - chain
      properties:
        chain:
          type: string
          enum:
            - celo
          description: Selected blockchain network.
      description: Celo chain configuration.
      title: Celo Configuration
      examples:
        - chain: celo
    GnosisChainConfig:
      type: object
      required:
        - chain
      properties:
        chain:
          type: string
          enum:
            - gnosis
          description: Selected blockchain network.
      description: Gnosis chain configuration.
      title: Gnosis Configuration
      examples:
        - chain: gnosis
  securitySchemes:
    BearerAuth:
      type: http
      scheme: Bearer

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.