Skip to main content

Method Signature

align.blockchain.transactions.getStatus(
  txHash: string,
  network: Network
): Promise<TransactionStatus>

Parameters

txHash
string
required
Transaction hash to check
network
string
required
Network where the transaction was sent

Returns

status
string
Status: pending, confirmed, failed
confirmations
number
Number of block confirmations
blockNumber
number
Block number (if confirmed)

Examples

import Align from "@tolbel/align";

const align = new Align({
  apiKey: process.env.ALIGN_API_KEY!,
  environment: "sandbox",
});

const status = await align.blockchain.transactions.getStatus(
  "0x123abc...",
  "polygon"
);

console.log(`Status: ${status.status}`);
console.log(`Confirmations: ${status.confirmations}`);

if (status.status === "confirmed") {
  console.log(`Confirmed in block ${status.blockNumber}`);
}

Polling for Confirmation

async function pollStatus(txHash: string, network: string) {
  const maxAttempts = 30;

  for (let i = 0; i < maxAttempts; i++) {
    const status = await align.blockchain.transactions.getStatus(
      txHash,
      network
    );

    if (status.status === "confirmed") {
      console.log("Transaction confirmed!");
      return status;
    }

    if (status.status === "failed") {
      throw new Error("Transaction failed");
    }

    console.log(`Pending... (attempt ${i + 1}/${maxAttempts})`);
    await new Promise((r) => setTimeout(r, 2000)); // Wait 2 seconds
  }

  throw new Error("Transaction not confirmed in time");
}
For simpler code, use waitForConfirmation() instead of polling manually.