# Send Transactions

> Simulate, submit, and confirm Solana transactions through NoLimitNodes.

Canonical: https://nolimitnodes.com/docs/guides/sending-transactions

Use three steps for reliable submission. Simulate. Send. Confirm.

## 1. Simulate

Simulation catches account errors and compute budget problems before broadcast.

```json
{
  "jsonrpc": "2.0",
  "id": "simulate",
  "method": "simulateTransaction",
  "params": [
    "BASE64_TRANSACTION",
    {
      "encoding": "base64",
      "commitment": "confirmed",
      "replaceRecentBlockhash": true
    }
  ]
}
```

Check these result fields:

- `err`
- `logs`
- `unitsConsumed`
- `replacementBlockhash`

## 2. Send

```bash
curl https://rpc.nln.clr3.org \
  -H "Content-Type: application/json" \
  -H "x-api-key: YOUR_API_KEY" \
  -d '{
    "jsonrpc":"2.0",
    "id":"send",
    "method":"sendTransaction",
    "params":[
      "BASE64_TRANSACTION",
      {
        "encoding":"base64",
        "skipPreflight":false,
        "preflightCommitment":"confirmed",
        "maxRetries":3
      }
    ]
  }'
```

The result is the first transaction signature from the signed message.

## 3. Confirm

Poll `getSignatureStatuses` or subscribe with `signatureSubscribe`.

```json
{
  "jsonrpc": "2.0",
  "id": "status",
  "method": "getSignatureStatuses",
  "params": [
    ["TRANSACTION_SIGNATURE"],
    {
      "searchTransactionHistory": true
    }
  ]
}
```

## Failure rules

- Rebuild after the recent blockhash expires.
- Stop on a program error.
- Keep the same signature for network retries.
- Record simulation logs with the failed signature.
- Pick `confirmed` for user feedback and `finalized` for settlement records.
