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

# Transaction status tracking

> Subscribe to MultiversX transaction status events by hash or sender address over the Relayer WebSocket.

Track transaction confirmation events by hash or by sender address.

## Choose A Topic

| Need                               | Topic              |
| ---------------------------------- | ------------------ |
| Track one known transaction        | `tx-status/{hash}` |
| Track transactions from one sender | `address/{bech32}` |

Both topics deliver `txStatus` events. Address topics can also deliver `accountDelta` events.

## Request

```json theme={"system"}
{
  "action": "subscribe",
  "requestId": "tx-001",
  "topic": "tx-status/<hash>"
}
```

## Acknowledgment

```json theme={"system"}
{
  "action": "subscribe",
  "requestId": "tx-001",
  "status": "ok",
  "topic": "tx-status/<hash>"
}
```

## Pushed Event

```json theme={"system"}
{
  "type": "txStatus",
  "data": {
    "hash": "a1b2c3...",
    "status": "success",
    "reason": null,
    "sender": "erd1..."
  }
}
```

## Status Values

| Status    | Meaning                                   |
| --------- | ----------------------------------------- |
| `pending` | Seen but not finalized.                   |
| `success` | Finalized successfully.                   |
| `fail`    | Finalized with failure; inspect `reason`. |
| `invalid` | Rejected as invalid.                      |
| `dropped` | Dropped before finalization.              |

## Limits

| Limit         | Value                              |
| ------------- | ---------------------------------- |
| Active topics | 64 per WebSocket connection        |
| Delivery      | After transaction status ingestion |
| Hash tracking | One topic per hash                 |

## Unsubscribe

```json theme={"system"}
{
  "action": "unsubscribe",
  "requestId": "tx-stop",
  "topic": "tx-status/<hash>"
}
```

## Reconnect Handling

After reconnect, resubscribe to still-pending hashes. For completed hashes, prefer a Gateway status lookup instead of keeping long-lived topics.

## Related Pages

* [Broadcasting](/relayer/transaction-broadcasting)
* [WebSocket lifecycle](/relayer/websocket-lifecycle)
* [txStatus event schema](/api-reference/events/tx-status)
