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

# wallet/createaccount | TRON

> TRON API method that creates a new account on the TRON blockchain. Chainstack supports wallet/createaccount on TRON JSON-RPC nodes.

TRON API method that creates a new account on the TRON blockchain. This method generates an unsigned transaction to activate a new account address by sending it TRX for the first time.

## Parameters

* `owner_address` — the address that will create and pay for the new account. Must have sufficient TRX balance to cover the account creation fee.
* `account_address` — the new account address to be created and activated on the blockchain.
* `visible` — optional boolean parameter. When set to `true`, addresses are in base58 format. Default is `false`.

## Response

* `visible` — indicates the address format used in the response
* `txID` — the transaction hash
* `raw_data` — raw transaction data including:
  * `contract` — array containing the account creation contract
  * `ref_block_bytes` — reference block bytes
  * `ref_block_hash` — reference block hash
  * `expiration` — transaction expiration timestamp
  * `timestamp` — transaction creation timestamp
* `raw_data_hex` — hexadecimal representation of the raw transaction

## Use case

The `wallet/createaccount` method is used for:

* Activating new TRON addresses on the blockchain.
* Creating accounts for new users in wallet applications.
* Setting up multi-signature or contract accounts.
* Onboarding new users to the TRON ecosystem.

Note: The returned transaction must be signed and broadcast to complete the account creation.

## curl example

The node validates that the `owner_address` can cover the protocol’s account creation fee. If the owner is not funded, you will get a validation error instead of an unsigned transaction.

```shell Shell theme={"system"}
curl --request POST \
  --url 'https://tron-mainnet.core.chainstack.com/95e61622bf6a8af293978377718e3b77/wallet/createaccount' \
  --header 'Content-Type: application/json' \
  --data '{
    "owner_address": "TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g",
    "account_address": "TFgY1uN8buRxAtV2r6Zy5sG3ACko6pJT1y",
    "visible": true
  }'
```

Example error when the owner address lacks enough TRX to cover the account creation fee:

```json theme={"system"}
{
  "Error": "class org.tron.core.exception.ContractValidateException : Validate CreateAccountActuator error, insufficient fee."
}
```

When the owner is funded, the response is an unsigned transaction that you must sign and then broadcast using [`wallet/broadcasttransaction`](/reference/tron-broadcasttransaction) or [`wallet/broadcasthex`](/reference/tron-broadcasthex).

<Tip>
  you can also create an account implicitly by sending TRX to a new address; on first receipt the account is created and the sender pays the creation fee. Addresses can be provided in base58 with `visible: true` or in hex with `visible: false`.
</Tip>

## end-to-end steps

<Steps>
  <Step title="check the payer balance">
    Use `wallet/getaccount` to confirm the `owner_address` has enough TRX to cover the account creation fee.

    ```shell Shell theme={"system"}
    curl --request POST \
      --url 'https://tron-mainnet.core.chainstack.com/95e61622bf6a8af293978377718e3b77/wallet/getaccount' \
      --header 'Content-Type: application/json' \
      --data '{
        "address": "TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g",
        "visible": true
      }'
    ```
  </Step>

  <Step title="option: use nile testnet">
    For testing, you can use a Nile endpoint and get test TRX from the faucet. Replace with your own Nile endpoint from the console.

    ```shell Shell theme={"system"}
    curl --request POST \
      --url 'https://tron-nile.core.chainstack.com/11112222333444555666677778888/wallet/createaccount' \
      --header 'Content-Type: application/json' \
      --data '{
        "owner_address": "TXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
        "account_address": "TYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY",
        "visible": true
      }'
    ```

    Fund `owner_address` with test TRX from the Nile faucet, then run the call again.
  </Step>

  <Step title="sign and broadcast">
    On success, you receive an unsigned transaction. Sign the `raw_data` with your private key and broadcast via [`wallet/broadcasttransaction`](/reference/tron-broadcasttransaction) or provide the built hex to [`wallet/broadcasthex`](/reference/tron-broadcasthex).
  </Step>
</Steps>

<Warning>
  getting `insufficient fee` is expected when the payer has no TRX. Fund the `owner_address` first or create the account implicitly by sending TRX to the new address.
</Warning>


## OpenAPI

````yaml openapi/tron_node_api/createaccount.json post /95e61622bf6a8af293978377718e3b77/wallet/createaccount
openapi: 3.0.0
info:
  title: wallet/createaccount TRON API
  version: 1.0.0
  description: Create a new account on the TRON blockchain
servers:
  - url: https://tron-mainnet.core.chainstack.com
security: []
paths:
  /95e61622bf6a8af293978377718e3b77/wallet/createaccount:
    post:
      tags:
        - Account Management
      summary: wallet/createaccount
      operationId: createAccount
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - owner_address
                - account_address
              properties:
                owner_address:
                  type: string
                  description: >-
                    The existing account that pays the account creation fee.
                    Must have sufficient TRX.
                  default: TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g
                account_address:
                  type: string
                  description: The new account address to be activated.
                  default: TFgY1uN8buRxAtV2r6Zy5sG3ACko6pJT1y
                visible:
                  type: boolean
                  description: When true, addresses are base58; when false, hex.
                  default: true
      responses:
        '200':
          description: Unsigned account creation transaction
          content:
            application/json:
              schema:
                type: object
                properties:
                  visible:
                    type: boolean
                  txID:
                    type: string
                  raw_data:
                    type: object
                  raw_data_hex:
                    type: string
        '400':
          description: Validation error (e.g., insufficient fee)
          content:
            application/json:
              schema:
                type: object
                properties:
                  Error:
                    type: string
              example:
                Error: >-
                  class org.tron.core.exception.ContractValidateException :
                  Validate CreateAccountActuator error, insufficient fee.

````