Embedded Wallets
SDK
Javascript
How to
Wallet Operation
Send Transaction

Send Transaction

This method allows you to send a custom transaction on a blockchain network.

Method Signature

async sendTransaction(config: SendTransactionConfig): Promise<TransactionReceipt>

Parameters

config: SendTransactionConfig - An object with the following properties:

  • network: Network (required) - The network used for transactions.
  • transaction: object (required) - The raw transaction data, containing:
    • from: string (required) - The address of the sender.
    • to: string (required) - The address of the recipient.
    • data: string (required) - The data payload of the transaction.
    • value: string (optional) - The amount of native currency to send with the transaction.
    • gasPrice: string (optional) - Gas price in Wei (this will be calculated automatically if not provided).
    • gasLimit: string (optional) - Gas limit for the transaction (this will be calculated automatically if not provided).
    • nonce: string (optional) - The number used once to prevent duplicate transactions (this will be calculated automatically if not provided).
    • maxFeePerGas: string (optional) - Maximum fee per gas provided (this will be calculated automatically if not provided).
    • maxPriorityFeePerGas: string (optional) - Maximum priority fee per gas you are willing to pay, this only used in EIP1559 support blockchain.
  • walletToken: string (required) - The wallet token of the wallet to send the transaction for.
  • refreshToken: string (optional) - The refresh token for authentication. Use this if you want to allow SDK automatically refresh the wallet token.

Returns

Promise<TransactionReceipt> - An object containing the transaction receipt data.

Example Usage

const receipt = await sdk.wallet.sendTransaction({
  network: Network.ETHEREUM,
  transaction: {
    from: '0x1234567890123456789012345678901234567890',
    to: '0x0987654321098765432109876543210987654321',
    data: '0x',
    value: '0x0',
    gasPrice: '0x09184e72a000',
    gasLimit: '0x5208'
  },
  walletToken: 'your-wallet-token',
  refreshToken: 'your-refresh-token' // Optional
});
console.log(receipt);

Response Example

{
  "txReceipt": {
    "_type": "TransactionReceipt",
    "accessList": null,
    "blockNumber": null,
    "blockHash": null,
    "chainId": "1",
    "data": "0x",
    "from": "0x5B3A69CD0984c8621c75c54aa4dCA89e382523A9",
    "gasLimit": "21000",
    "gasPrice": "123278603083",
    "hash": "0x94cb07276ea513abde5d9c8f1bca1986822e9ed176190dd91d29a5c99ed62075",
    "maxFeePerGas": null,
    "maxPriorityFeePerGas": null,
    "nonce": 4,
    "signature": {
      "_type": "signature",
      "networkV": "230",
      "r": "0x862636e954a2f904290499eb206a0b959f2aa6383c4ed66427b057db791fc047",
      "s": "0x674f31a31e935265964d450d070de48a41d914194ff37aa3f22a98c2c2a31ec1",
      "v": 28
    },
    "to": "0x5B3A69CD0984c8621c75c54aa4dCA89e382523A9",
    "type": 0,
    "value": "0"
  },
  "walletToken": "your-new-wallet-token",
  "refreshToken": "your-new-refresh-token"
}
ℹ️

The SDK will automatically refresh the wallet token and return the new wallet token and refresh token if the refresh token is provided.

ℹ️

The response is an object containing the transaction receipt data, including details such as the transaction hash, gas used, and block information.

Additional Information

  • This method requires a valid wallet token in the SDK configuration.
  • The transaction object should contain the raw transaction data you want to send.
  • Optional parameters like nonce, gasPrice, and gasLimit will be automatically calculated if not provided.
  • For EIP1559 compatible networks, you can specify maxFeePerGas and maxPriorityFeePerGas.
  • All numeric values in the transaction object should be provided as hexadecimal strings (e.g., '0x5208' for gasLimit).

For more information, see the Xellar Send Transaction API Documentation (opens in a new tab).