---
id: api-transaction-create-tx
title: CreateTransaction
---

---

Create a new Transaction object and send it to the network to be processed. <br/> See [Quick Start](https://github.com/Zilliqa/zilliqa-js#quick-start) in Javascript-SDK for an example of how to construct a Transaction object.

### Example Request

=== "cURL"

    ```shell
    curl -d '{
        "id": "1",
        "jsonrpc": "2.0",
        "method": "CreateTransaction",
        "params": [{
          "version": 65537,
          "nonce": 1,
          "toAddr": "0x4BAF5faDA8e5Db92C3d3242618c5B47133AE003C",
          "amount": "1000000000000",
          "pubKey": "0205273e54f262f8717a687250591dcfb5755b8ce4e3bd340c7abefd0de1276574",
          "gasPrice": "2000000000",
          "gasLimit": "50",
          "code": "",
          "data": "",
          "signature": "29ad673848dcd7f5168f205f7a9fcd1e8109408e6c4d7d03e4e869317b9067e636b216a32314dd37176c35d51f9d4c24e0e519ba80e66206457c83c9029a490d",
          "priority": false
        }]
    }' -H "Content-Type: application/json" -X POST "https://api.zilliqa.com/"
    ```

=== "Node.js"

    ```js
    let tx = zilliqa.transactions.new({
      version: 65537,
      toAddr: "0x4BAF5faDA8e5Db92C3d3242618c5B47133AE003C",
      amount: units.toQa("1", units.Units.Zil),
      gasPrice: units.toQa("2000", units.Units.Li),
      gasLimit: Long.fromNumber(50),
    });

    // Send a transaction to the network
    tx = await zilliqa.blockchain.createTransaction(tx);
    console.log(tx.id);
    ```

=== "Java"

    ```java
    public class App {
        public static void main(String[] args) throws IOException {
            Wallet wallet = new Wallet();
            wallet.setProvider(new HttpProvider("https://dev-api.zilliqa.com"));
            wallet.addByPrivateKey("e19d05c5452598e24caad4a0d85a49146f7be089515c905ae6a19e8a578a6930");
            Transaction transaction = Transaction.builder()
                    .version(String.valueOf(pack(1, 8)))
                    .toAddr("4baf5fada8e5db92c3d3242618c5b47133ae003c".toLowerCase())
                    .senderPubKey("0246e7178dc8253201101e18fd6f6eb9972451d121fc57aa2a06dd5c111e58dc6a")
                    .amount("1000000000000")
                    .gasPrice("2000000000")
                    .gasLimit("50")
                    .code("")
                    .data("")
                    .provider(new HttpProvider("https://api.zilliqa.com"))
                    .build();
            transaction = wallet.sign(transaction);

            // Send a transaction to the network
            HttpProvider.CreateTxResult result = TransactionFactory.createTransaction(transaction);
            System.out.println(result);
        }
    }
    ```

=== "Python"

    ```python
    from pyzil.account import Account
    from pyzil.zilliqa import chain
    chain.set_active_chain(chain.MainNet)

    account = Account(private_key="0xe19d05c5452598e24caad4a0d85a49146f7be089515c905ae6a19e8a578a6930")

    payload = {
        "to_addr": "0x4BAF5faDA8e5Db92C3d3242618c5B47133AE003C",
        "amount": "1000000000000",
        "nonce": account.get_nonce() + 1,
        "gas_price": "2000000000",
        "gas_limit": 50,
        "code": "",
        "data": "",
        "priority": False,
    }

    params = chain.active_chain.build_transaction_params(account.zil_key, **payload)
    txn_info = chain.active_chain.api.CreateTransaction(params)
    print(txn_info)
    ```

=== "Go"

    ```go
    func SendTransaction() {
        wallet := NewWallet()
        wallet.AddByPrivateKey("e19d05c5452598e24caad4a0d85a49146f7be089515c905ae6a19e8a578a6930")
        provider := provider2.NewProvider("https://api.zilliqa.com/")

        tx := &transaction.Transaction{
            Version:      strconv.FormatInt(int64(util.Pack(1, 1)), 10),
            SenderPubKey: "0246E7178DC8253201101E18FD6F6EB9972451D121FC57AA2A06DD5C111E58DC6A",
            ToAddr:       "4BAF5faDA8e5Db92C3d3242618c5B47133AE003C",
            Amount:       "10000000",
            GasPrice:     "2000000000",
            GasLimit:     "50",
            Code:         "",
            Data:         "",
            Priority:     false,
        }

        err := wallet.Sign(tx, *provider)
        if err != nil {
            fmt.Println(err)
        }

        rsp := provider.CreateTransaction(tx.ToTransactionPayload())

        if rsp.Error != nil {
            fmt.Println(rsp.Error)
        } else {
            result := rsp.Result.(map[string]interface{})
            hash := result["TranID"].(string)
            fmt.Printf("hash is %s\n", hash)
            tx.Confirm(hash, 1000, 3, provider)
        }
    }
    ```

### Example Response

```json
{
  "id": "1",
  "jsonrpc": "2.0",
  "result": {
    "Info": "Non-contract txn, sent to shard",
    /*
    Other possible Info:
    Contract Creation txn, sent to shard
    Contract Txn, Shards Match of the sender and reciever
    Contract Txn, Sent To Ds
    */
    "TranID": "2d1eea871d8845472e98dbe9b7a7d788fbcce226f52e4216612592167b89042c"
  }
}
```

### HTTP Request

| Chain(s)              | URL(s)                                                                                       |
| --------------------- | -------------------------------------------------------------------------------------------- |
| **Zilliqa mainnet**   | [https://api.zilliqa.com/](https://api.zilliqa.com/)                                         |
| **Developer testnet** | [https://dev-api.zilliqa.com/](https://dev-api.zilliqa.com/)                                 |
| **Local testnet**     | [http://localhost:4201/](http://localhost:4201/)                                             |
| **Isolated server**   | [https://zilliqa-isolated-server.zilliqa.com/](https://zilliqa-isolated-server.zilliqa.com/) |

### Arguments

| Parameter | Type   | Required | Description                                              |
| --------- | ------ | -------- | -------------------------------------------------------- |
| `id`      | string | Required | `"1"`                                                    |
| `jsonrpc` | string | Required | `"2.0"`                                                  |
| `method`  | string | Required | `"CreateTransaction"`                                    |
| `params`  | N/A    | Required | See table below for the Transaction parameters required: |

### Transaction Parameters

| Parameter   | Type    | Required | Description                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| ----------- | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `version`   | number  | Required | The decimal conversion of the bitwise concatenation of `CHAIN_ID` and `MSG_VERSION` parameters. <br/><br/> **-** For mainnet, it is `65537`. <br/> **-** For Developer testnet, it is `21823489`.                                                                                                                                                                                                                                               |
| `nonce`     | number  | Required | A transaction counter in each account. This prevents replay attacks where a transaction sending eg. 20 coins from A to B can be replayed by B over and over to continually drain A's balance. <br/><br/> It's value should be `Current account nonce + 1`.                                                                                                                                                                                      |
| `toAddr`    | string  | Required | Recipient's account address. This is represented as a `String`. <br/><br/> **NOTE:** This address has to be checksummed for every 6th bit, but the "0x" prefix is optional. <br/><br/> For deploying new contracts, set this to `"0000000000000000000000000000000000000000"`.                                                                                                                                                                   |
| `amount`    | string  | Required | Transaction amount to be sent to the recipent's address. This is measured in the smallest price unit **Qa** (or 10^-12 **Zil**) in Zilliqa.                                                                                                                                                                                                                                                                                                     |
| `pubKey`    | string  | Required | Sender's public key of 33 bytes.                                                                                                                                                                                                                                                                                                                                                                                                                |
| `gasPrice`  | string  | Required | An amount that a sender is willing to pay per unit of gas for processing this transaction. This is measured in the smallest price unit **Qa** (or 10^-12 **Zil**) in Zilliqa.                                                                                                                                                                                                                                                                   |
| `gasLimit`  | string  | Required | The amount of gas units that is needed to be process this transaction. <br/><br/> **-** For **regular transaction**, please use `"50"`. <br/> **-** For **smart contract transaction**, please consult the [gas documentation](https://github.com/Zilliqa/scilla-docs/blob/master/docs/texsources/gas-costs/gas-doc.pdf).                                                                                                                       |
| `code`      | string  | Optional | The smart contract source code. This is present only when deploying a new contract.                                                                                                                                                                                                                                                                                                                                                             |
| `data`      | string  | Optional | `String`-ified JSON object specifying the transition parameters to be passed to a specified smart contract. <br/><br/> - When creating a contract, this JSON object contains the **init** parameters. <br/> - When calling a contract, this JSON object contains the **msg** parameters. <br/><br/> _For more information on the Scilla interpreter, please visit the [documentation](https://scilla.readthedocs.io/en/latest/interface.html)._ |
| `signature` | string  | Required | An **EC-Schnorr** signature of 64 bytes of the entire Transaction object as stipulated above.                                                                                                                                                                                                                                                                                                                                                   |
| `priority`  | boolean | Optional | A flag for this transaction to be processed by the DS committee. <br/><br/> This is only required for [Category III transactions](https://blog.zilliqa.com/provisioning-sharding-for-smart-contracts-a-design-for-zilliqa-cd8d012ee735).                                                                                                                                                                                                        |
