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

# Track Transfer Status

> Monitor cross-chain transfer progress with real-time status updates.

Returns the current status of a cross-chain transfer. Poll this endpoint after executing user steps to monitor progress until completion.

***

## Reference

### Parameters

| Parameter | Type   | Location | Required | Description                                                      |
| --------- | ------ | -------- | -------- | ---------------------------------------------------------------- |
| `quoteId` | string | Path     | Yes      | Quote ID from the `/quotes` response                             |
| `txHash`  | string | Query    | No       | Transaction hash from execution (recommended for faster updates) |

### Response

Returns transfer status information with optional execution history.

#### Attributes

| Attribute          | Type   | Description                                                                       |
| ------------------ | ------ | --------------------------------------------------------------------------------- |
| `status`           | enum   | Current transfer state: `PENDING`, `PROCESSING`, `SUCCEEDED`, `FAILED`, `UNKNOWN` |
| `explorerUrl`      | string | Optional LayerZero Scan URL for tracking                                          |
| `executionHistory` | array  | Optional array of execution events                                                |

#### Status values

| Status       | Description                               | Terminal |
| ------------ | ----------------------------------------- | -------- |
| `UNKNOWN`    | Transfer not found or not started         | Yes      |
| `PENDING`    | Transfer initiated but not yet processing | No       |
| `PROCESSING` | Cross-chain message in transit            | No       |
| `SUCCEEDED`  | Transfer completed successfully           | Yes      |
| `FAILED`     | Transfer failed (reverted or timeout)     | Yes      |

#### Execution history events

| Event       | Description                       | Chain             |
| ----------- | --------------------------------- | ----------------- |
| `SENT`      | Transaction submitted             | Source chain      |
| `BUS_RODE`  | Batch executed (Stargate V2 only) | Source chain      |
| `DELIVERED` | Message delivered                 | Destination chain |

Each event includes:

| Attribute               | Type   | Description                    |
| ----------------------- | ------ | ------------------------------ |
| `event`                 | enum   | Event type                     |
| `transaction`           | object | Transaction details            |
| `transaction.chainKey`  | string | Chain where event occurred     |
| `transaction.hash`      | string | Transaction hash               |
| `transaction.timestamp` | number | Unix timestamp in milliseconds |

## Code examples

<Tabs>
  <Tab title="cURL">
    ```bash wrap theme={null}
    curl -X GET "https://transfer.layerzero-api.com/v1/status/QUOTE_ID?txHash=0x..." \
      -H "x-api-key: YOUR_API_KEY"
    ```
  </Tab>

  <Tab title="TypeScript">
    ```typescript wrap theme={null}
    const params = new URLSearchParams({txHash: '0x...'});
    const response = await fetch(
      `https://transfer.layerzero-api.com/v1/status/QUOTE_ID?${params}`,
      {
        headers: {
          'x-api-key': 'YOUR_API_KEY',
        },
      },
    );

    const {status, explorerUrl} = await response.json();
    console.log('Status:', status);
    console.log('Explorer:', explorerUrl);
    ```
  </Tab>

  <Tab title="Python">
    ```python wrap theme={null}
    import requests

    response = requests.get(
      "https://transfer.layerzero-api.com/v1/status/QUOTE_ID",
      headers={"x-api-key": "YOUR_API_KEY"},
      params={"txHash": "0x..."},
    )

    data = response.json()
    print(f"Status: {data['status']}")
    print(f"Explorer: {data.get('explorerUrl')}")
    ```
  </Tab>
</Tabs>

### Response

```json wrap theme={null}
{
  "status": "SUCCEEDED",
  "explorerUrl": "https://layerzeroscan.com/tx/0x...",
  "executionHistory": [
    {
      "event": "SENT",
      "transaction": {
        "chainKey": "base",
        "hash": "0x123...",
        "timestamp": 1704067200000
      }
    },
    {
      "event": "DELIVERED",
      "transaction": {
        "chainKey": "arbitrum",
        "hash": "0x456...",
        "timestamp": 1704067260000
      }
    }
  ]
}
```

## Error handling

| HTTP Status | Description         | Action                         |
| ----------- | ------------------- | ------------------------------ |
| `404`       | Quote not found     | Return `UNKNOWN` status        |
| `429`       | Rate limit exceeded | Wait 5 seconds, retry          |
| `500`       | Server error        | Retry with exponential backoff |

```typescript wrap theme={null}
async function checkStatusSafe(quoteId: string, txHash: string): Promise<string> {
  try {
    const params = new URLSearchParams({txHash});
    const response = await fetch(
      `https://transfer.layerzero-api.com/v1/status/${quoteId}?${params}`,
      {headers: {'x-api-key': 'YOUR_API_KEY'}},
    );

    if (response.status === 404) return 'UNKNOWN';
    if (response.status === 429) {
      await new Promise((r) => setTimeout(r, 5000));
      return checkStatusSafe(quoteId, txHash);
    }

    const {status} = await response.json();
    return status;
  } catch (error) {
    console.error('Status check failed:', error);
    return 'UNKNOWN';
  }
}
```

## Related endpoints

* [Quotes](./quotes) — Request transfer quotes (provides the `quoteId`)
* [Build user steps](./build-user-steps) — Generate fresh transactions for Solana
* [Submit signature](./submit-signature) — Submit signatures for Aori routes

## Examples

* [EVM Example](../examples/evm) — Complete transfer with status tracking
* [Solana Example](../examples/solana) — Solana transfer with polling


## OpenAPI

````yaml GET /status/{quoteId}
openapi: 3.0.3
info:
  title: Value Transfer API
  version: 1.0.0
  description: Unified API for cross-chain value transfers across 150+ blockchains
servers:
  - url: https://transfer.layerzero-api.com/v1
security: []
paths:
  /status/{quoteId}:
    get:
      tags:
        - Transfer
      summary: Check transfer status
      description: >-
        Check the current status of a transfer. Returns the status and an
        optional LayerZero Scan explorer URL.
      parameters:
        - name: quoteId
          in: path
          required: true
          description: The quote ID from the /quotes response
          schema:
            type: string
            example: quote_abc123
        - name: txHash
          in: query
          description: Optional transaction hash for faster status lookup
          schema:
            type: string
            example: 0x...
      responses:
        '200':
          description: Successfully retrieved status
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                      - PENDING
                      - PROCESSING
                      - SUCCEEDED
                      - FAILED
                      - UNKNOWN
                  explorerUrl:
                    type: string
                  executionHistory:
                    type: array
                    items:
                      type: object
                      properties:
                        event:
                          type: string
                        transaction:
                          type: object
                          properties:
                            chainKey:
                              type: string
                            hash:
                              type: string
                example:
                  status: SUCCEEDED
                  explorerUrl: https://layerzeroscan.com/tx/...
                  executionHistory:
                    - event: SENT
                      transaction:
                        chainKey: base
                        hash: 0x...
                    - event: DELIVERED
                      transaction:
                        chainKey: optimism
                        hash: 0x...
      security:
        - apiKey: []
components:
  securitySchemes:
    apiKey:
      type: apiKey
      name: x-api-key
      in: header
      description: >-
        API key for authenticating requests. Required for /quotes,
        /build-user-steps, /submit-signature, and /status endpoints.

````