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

# Create Custody Wallet

> Creates a custody wallet managed by Kravata for your company or one of your users. Custody wallets are created already `accepted` and can receive funds right away.

#### Request

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| Authorization | Header | Yes | `Bearer <access>` obtained from **POST /api/token**. |
| clientId | Path | Yes | Your client ID, from **GET /api/infoClient**. |
| userId | Path | Yes | Your client ID or the ID of one of your users (from **GET /api/b2b2b/&#123;clientId&#125;/users**). The user must be approved. |

#### Request Body

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| token | string | Yes | Token the wallet holds, e.g. `USDC`. |
| network | string | No | `POLYGON` (default) or `SUI`. |

#### Response

The wallet: `id`, `wallet` (address, partially masked), `supportedToken`, `supportedNetwork`, `supportedCustodian` (Kravata), `status` (`accepted`), `isCustodial` (`true`), `registerDate` and `userId`.



## OpenAPI

````yaml /business/openapi.json post /api/b2b2b/{clientId}/wallet/custody/{userId}
openapi: 3.1.0
info:
  title: Kravata Business API
  version: '1.0'
  description: >-
    Kravata Business API: on-ramp and off-ramp orders, accounts and wallets,
    users, custody wallets and transfers.
servers:
  - url: https://testapi.kravata.co
    description: Test
  - url: https://apiv2.kravata.co
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Authentication
  - name: Accounts
  - name: Wallets
  - name: Users
  - name: Ramp Orders
  - name: Custody
  - name: Webhooks
paths:
  /api/b2b2b/{clientId}/wallet/custody/{userId}:
    post:
      tags:
        - Custody
      summary: Create Custody Wallet
      description: >-
        Creates a custody wallet managed by Kravata for your company or one of
        your users. Custody wallets are created already `accepted` and can
        receive funds right away.


        #### Request


        | Field | Type | Required | Description |

        | --- | --- | --- | --- |

        | Authorization | Header | Yes | `Bearer <access>` obtained from **POST
        /api/token**. |

        | clientId | Path | Yes | Your client ID, from **GET /api/infoClient**.
        |

        | userId | Path | Yes | Your client ID or the ID of one of your users
        (from **GET /api/b2b2b/&#123;clientId&#125;/users**). The user must be
        approved. |


        #### Request Body


        | Field | Type | Required | Description |

        | --- | --- | --- | --- |

        | token | string | Yes | Token the wallet holds, e.g. `USDC`. |

        | network | string | No | `POLYGON` (default) or `SUI`. |


        #### Response


        The wallet: `id`, `wallet` (address, partially masked),
        `supportedToken`, `supportedNetwork`, `supportedCustodian` (Kravata),
        `status` (`accepted`), `isCustodial` (`true`), `registerDate` and
        `userId`.
      operationId: create-custody-wallet
      parameters:
        - name: clientId
          in: path
          required: true
          description: ''
          schema:
            type: string
            format: uuid
        - name: userId
          in: path
          required: true
          description: ''
          schema:
            type: string
            format: uuid
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                token:
                  type: string
                network:
                  type: string
            example:
              token: USDC
              network: SUI
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  registerDate:
                    type: string
                  status:
                    type: string
                  supportedCustodian:
                    type: object
                    properties:
                      code:
                        type: string
                      id:
                        type: integer
                      name:
                        type: string
                      status:
                        type: boolean
                  supportedNetwork:
                    type: object
                    properties:
                      id:
                        type: integer
                      name:
                        type: string
                      status:
                        type: boolean
                  supportedToken:
                    type: object
                    properties:
                      id:
                        type: integer
                      token:
                        type: string
                      status:
                        type: boolean
                  userId:
                    type: string
                  wallet:
                    type: string
              examples:
                api-b2b2b-wallet-custody:
                  summary: api/b2b2b/wallet/custody
                  value:
                    id: 507218f2-5e61-44af-ac1d-c0511fabe151
                    registerDate: '2025-09-29 19:52:20.361139'
                    status: accepted
                    supportedCustodian:
                      code: KRAVATA
                      id: 140
                      name: KRAVATA
                      status: true
                    supportedNetwork:
                      id: 8
                      name: POLYGON
                      status: true
                    supportedToken:
                      id: 1
                      status: true
                      token: USDC
                    userId: 08597c65-c25b-4a7c-8c68-f1180bce65f4
                    wallet: '0xc857a3d67f9d5ffd185b32c10139a5d9372f4c68'
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Access token from POST /api/token (valid 5 minutes).

````