Understanding Transaction Status

BitPowr transaction processing involves multiple stages from creation to final confirmation on the blockchain. This guide explains all transaction statuses and sub-statuses to help you monitor and handle transactions effectively.

Transaction Status Flow

TRANSACTION.NEW
    ↓
TRANSACTION.PENDING
    ↓
TRANSACTION.PROCESSING
    ↓
TRANSACTION.QUEUE (if needed)
    ↓
TRANSACTION.PRE_BROADCAST
    ↓
TRANSACTION.BROADCASTED
    ↓
TRANSACTION.AWAITING_CONFIRMATION
    ↓
TRANSACTION.CONFIRMED (Success)

OR

TRANSACTION.STUCK → TRANSACTION.DROPPED
TRANSACTION.FAILED
TRANSACTION.CANCELLED

Transaction Statuses

1. TRANSACTION.NEW

Description: Transaction has been newly created and accepted by the BitPowr system.

What it means:

  • Transaction request has been validated
  • Transaction record created in BitPowr database
  • Initial processing has begun

Next steps: Will automatically move to PENDING status


2. TRANSACTION.PENDING

Description: Transaction is prepared and ready for processing.

What it means:

  • Transaction parameters have been validated
  • Wallet balances have been checked
  • Transaction is queued for processing

Next steps: Will move to PROCESSING when picked up by transaction relayer


3. TRANSACTION.PROCESSING

Description: Transaction processing has started on the transaction relayer.

What it means:

  • Transaction relayer is actively working on the transaction
  • Blockchain-specific preparations are being made
  • UTXO selection, gas estimation, or fee calculation in progress

Next steps: Will move to QUEUE (if needed) or PRE_BROADCAST


4. TRANSACTION.QUEUE

Description: Transaction is queued due to pending transactions that need to be processed first.

What it means:

  • There are earlier transactions from the same wallet that must complete first
  • Prevents nonce conflicts and ensures proper transaction ordering
  • Common for wallets with high transaction volumes

Next steps: Will move to PRE_BROADCAST when previous transactions clear


5. TRANSACTION.PRE_BROADCAST

Description: Transaction is about to be broadcast to the blockchain network.

What it means:

  • Final transaction preparation is complete
  • Transaction is signed and ready for network submission
  • About to be sent to blockchain nodes

Next steps: Will move to BROADCASTED immediately


6. TRANSACTION.BROADCASTED

Description: Transaction has been successfully broadcast to the blockchain network.

What it means:

  • Transaction has been sent to blockchain nodes
  • Network has received the transaction
  • Transaction is now in the blockchain's mempool

Next steps: Will move to AWAITING_CONFIRMATION


7. TRANSACTION.AWAITING_CONFIRMATION

Description: Transaction is broadcast and waiting for blockchain confirmation.

What it means:

  • Transaction is in the blockchain's mempool
  • Miners/validators are processing the transaction
  • Waiting for inclusion in a confirmed block

Next steps: Will move to CONFIRMED when included in a block


8. TRANSACTION.STUCK

Description: Transaction has spent too much time in processing without progress.

What it means:

  • Transaction may have network issues
  • Fees might be too low for current network conditions
  • Blockchain congestion may be affecting processing

Next steps: May be retried or will move to DROPPED


9. TRANSACTION.DROPPED

Description: Transaction was dropped after spending too much time processing.

What it means:

  • Transaction exceeded maximum processing time limits
  • Network conditions prevented successful completion
  • Transaction will not be completed

Next steps: Transaction is final - may need to create a new transaction


10. TRANSACTION.FAILED / TRANSACTION.FAIL

Description: Transaction failed during processing or on the blockchain.

What it means:

  • An error occurred that prevented transaction completion
  • Could be due to insufficient funds, network issues, or blockchain rejection
  • Check sub-status for specific failure reason

Next steps: Transaction is final - review error and create new transaction if needed


11. TRANSACTION.CANCELLED

Description: Transaction was cancelled before completion.

What it means:

  • Transaction was manually cancelled by user or system
  • Processing was stopped before blockchain broadcast
  • No blockchain fees were consumed

Next steps: Transaction is final - create new transaction if needed


Transaction Sub-Statuses

Sub-statuses provide additional detail about why a transaction failed or encountered issues.

1. TRANSACTION.ERROR

Description: A general error occurred during transaction processing.

Common causes:

  • System errors during processing
  • Unexpected technical issues
  • Network connectivity problems

Resolution: Review transaction details and retry if appropriate


2. TRANSACTION.FAILED_ONCHAIN

Description: Transaction failed after being broadcast to the blockchain.

Common causes:

  • Smart contract execution failed
  • Gas limit too low for EVM transactions
  • Invalid transaction parameters

Resolution: Check blockchain explorer for failure details, adjust parameters and retry


3. TRANSACTION.INSUFFICIENT_AMOUNT / TRANSACTION.INSUFFICIENT_FUND

Description: Insufficient balance to complete the transaction.

Common causes:

  • Wallet balance is lower than transaction amount
  • Tokens have been spent in other transactions
  • Balance calculation error

Resolution: Check wallet balance and reduce transaction amount or add funds


4. TRANSACTION.INSUFFICIENT_FEE

Description: Insufficient balance to pay transaction fees.

Common causes:

  • Not enough ETH for gas fees on Ethereum
  • Insufficient SOL for fees on Solana
  • Not enough BTC for mining fees

Resolution: Add native tokens for fees or reduce transaction amount


5. TRANSACTION.CAN_NOT_BROADCAST

Description: Transaction could not be broadcast to the blockchain network.

Common causes:

  • Network connectivity issues
  • Invalid transaction format
  • Blockchain node rejection

Resolution: Check network status and retry, or contact support


6. TRANSACTION.CANCELLED

Description: Transaction was cancelled (same as primary status).

Common causes:

  • Manual cancellation by user
  • System cancellation due to timeout
  • Automated cancellation due to conditions

Resolution: Create new transaction if still needed


7. TRANSACTION.FAIL / TRANSACTION.FAIL

Description: General transaction failure (same as primary status).

Common causes:

  • Various failure conditions
  • Check other sub-statuses for specifics
  • System or network errors

Resolution: Review failure details and retry with corrected parameters


Approval Related Transactio

TRANSACTION.PENDING_APPROVAL

Description: Transaction requires manual approval before processing can continue.
What it means:

Transaction requires approval from authorized personnel
Common for high-value transactions or sensitive operations Compliance or security policies require manual review Transaction is on hold pending approval decision

Next steps: Will move to APPROVED or REJECTED based on approval decision

  1. TRANSACTION.APPROVED
    Description: Transaction has been approved and can proceed with processing. What it means:

Manual approval has been granted by authorized personnel
Transaction has passed compliance and security checks Processing will resume automatically Transaction will continue to PENDING status

Next steps: Will move to PENDING for continued processing

  1. TRANSACTION.REJECTED
    Description: Transaction has been rejected during the approval process. What it means:

Manual approval was denied by authorized personnel
Transaction failed compliance or security review Transaction will not be processed further Rejection reason should be available in transaction details

Next steps: Transaction is final - review rejection reason and create new transaction if appropriate


Status Monitoring Best Practices

1. Polling Strategy

// Example polling implementation
const checkTransactionStatus = async (transactionId) => {
  const response = await fetch(`/api/v1/transactions/${transactionId}`, {
    headers: { 'Authorization': 'Bearer <token>' }
  });
  const transaction = await response.json();
  return transaction.status;
};

// Poll every 5 seconds for non-final statuses
const finalStatuses = [
  'TRANSACTION.CONFIRMED',
  'TRANSACTION.FAILED',
  'TRANSACTION.DROPPED',
  'TRANSACTION.CANCELLED'
];

2. Error Handling

const handleTransactionStatus = (status, subStatus) => {
  switch (status) {
    case 'TRANSACTION.FAILED':
      if (subStatus === 'TRANSACTION.INSUFFICIENT_FEE') {
        // Prompt user to add funds for fees
      } else if (subStatus === 'TRANSACTION.INSUFFICIENT_FUND') {
        // Prompt user to add funds or reduce amount
      }
      break;
    case 'TRANSACTION.STUCK':
      // Consider showing speed up options for Bitcoin RBF
      break;
    case 'TRANSACTION.DROPPED':
      // Offer to retry the transaction
      break;
  }
};

Status Timelines by Blockchain

Ethereum/EVM Chains

  • NEW → BROADCASTED: 1-30 seconds
  • AWAITING_CONFIRMATION: 15 seconds - 10+ minutes (depends on gas price)
  • Total time: 30 seconds - 15 minutes

Bitcoin

  • NEW → BROADCASTED: 1-60 seconds
  • AWAITING_CONFIRMATION: 10 minutes - 6+ hours (depends on fee rate)
  • Total time: 10 minutes - 6+ hours

Solana

  • NEW → BROADCASTED: 1-10 seconds
  • AWAITING_CONFIRMATION: 1-30 seconds
  • Total time: 2-40 seconds

TRON

  • NEW → BROADCASTED: 1-15 seconds
  • AWAITING_CONFIRMATION: 1-3 minutes
  • Total time: 1-5 minutes

Troubleshooting Common Status Issues

Transaction Stuck in PROCESSING

Possible causes:

  • High network congestion
  • Wallet has many pending transactions
  • System processing delays

Solutions:

  • Wait for natural progression
  • Check for earlier pending transactions
  • Contact support if stuck for >30 minutes

Transaction Stuck in AWAITING_CONFIRMATION

Possible causes:

  • Low fees (Bitcoin/Ethereum)
  • Network congestion
  • Blockchain issues

Solutions:

  • For Bitcoin: Use RBF to increase fees
  • For Ethereum: Wait or use transaction acceleration services
  • Monitor blockchain network status

Frequent INSUFFICIENT_FEE Errors

Solutions:

  • Use fee estimation endpoints before transactions
  • Maintain adequate native token balances
  • Monitor network congestion for fee planning
  • Use gas station to ensure you have enough fees

This comprehensive status guide helps developers understand the complete transaction lifecycle and implement robust transaction monitoring in their applications.