# Send transactions

Considering that the authentication part is done, you can start to send transactions. You'll just need to create the transaction and send it to the SDK.&#x20;

Depending on the UX you want to provide, there are different ways of sending transactions.

{% hint style="info" %}
For **non sponsored transactions**, each wallet will have to pay a prefund to the Entrypoint contract or be filled with native tokens.

To enable **sponsored transactions**, see the [following documentation](https://docs.cometh.io/core-features/go-gasless).
{% endhint %}

### Send a single transaction

{% tabs %}
{% tab title="TS" %}

```typescript
import { encodeFunctionData } from "viem";
import countContractAbi from "@/contract/counterABI.json";

const COUNTER_CONTRACT_ADDRESS = "0x4FbF9EE4B2AF774D4617eAb027ac2901a41a7b5F";

const calldata = encodeFunctionData({
  abi: countContractAbi,
  functionName: "count",
});

const txHash =  await smartAccountClient.sendTransaction(
  {
    to: COUNTER_CONTRACT_ADDRESS,
    data: calldata,
  }
);
```

{% endtab %}
{% endtabs %}

<figure><img src="https://4172304486-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkhrlOGcn41UbO16bfSjm%2Fuploads%2FuT8sWALIjZfL8aAwVA3o%2Fsendtx.gif?alt=media&#x26;token=4dda0cf3-05aa-4101-915f-16e9a67d7d64" alt="" width="563"><figcaption></figcaption></figure>

### Send transactions batches

With Cometh Connect, you can execute multiple actions in the same transaction.

{% tabs %}
{% tab title="TS" %}

```typescript
import { encodeFunctionData } from "viem";
import countContractAbi from "@/contract/counterABI.json";

const COUNTER_CONTRACT_ADDRESS = "0x4FbF9EE4B2AF774D4617eAb027ac2901a41a7b5F";

const txHash =  await smartAccountClient.sendUserOperation(
      {
        calls: [
          {
            to: COUNTER_CONTRACT_ADDRESS,
            data: calldata,
          },
          {
            to: COUNTER_CONTRACT_ADDRESS,
            data: calldata,
          },
        ],
      }
    )

```

{% endtab %}
{% endtabs %}
