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
- 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
- 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.
Updated about 6 hours ago