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

# Transaction statuses and sub-statuses

> Guide to understanding transaction statuses in WaaS 2.0.

<Tip>
  Try [Cobo WaaS Skill](/v2/guides/overview/cobo-waas-skill) in your AI coding assistant (Claude Code, Cursor, etc.). Describe your needs in natural language to auto-generate production-ready SDK code and debug faster 🚀
</Tip>

WaaS 2.0 defines a range of transaction statuses and sub-statuses to reflect different processing stages. This page provides a complete list of statuses and describes the actions you can perform based on each status.

## Status reference table

### Deposits

The table below provides an overview of transaction statuses and sub-statuses relevant to deposits in the WaaS 2.0 service.

<table className="table-three-cols">
  <tr>
    <th>Status</th>
    <th>Sub-Status</th>
    <th>Description</th>
  </tr>

  <tr>
    <td rowspan="2">PendingScreening</td>
    <td>PendingScreeningAppCheck</td>
    <td>The transaction is under review by the [Screening app](https://manuals.cobo.com/en/apps/screening/introduction).</td>
  </tr>

  <tr>
    <td>PendingCoboKYTCheck</td>
    <td>The transaction is pending Cobo's KYT check.</td>
  </tr>

  <tr>
    <td>Confirming</td>
    <td>PendingBlockConfirmations</td>
    <td>The transaction is awaiting the required number of confirmations.</td>
  </tr>

  <tr>
    <td>Completed</td>
    <td>N/A</td>
    <td>The transaction is completed and funds are available.</td>
  </tr>

  <tr>
    <td rowspan="2">Rejected</td>
    <td>RejectedByCoboKYT</td>
    <td>The transaction was rejected by Cobo KYT.</td>
  </tr>

  <tr>
    <td>RejectedByScreeningApp</td>
    <td>The transaction was rejected by the Screening app.</td>
  </tr>
</table>

### Withdrawals

The table below provides an overview of transaction statuses and sub-statuses relevant to withdrawals in the WaaS 2.0 service.

<table className="table-three-cols">
  <tr>
    <th>Status</th>
    <th>Sub-Status</th>
    <th>Description</th>
  </tr>

  <tr>
    <td rowspan="1">Submitted</td>
    <td>N/A</td>
    <td>The transaction is submitted.</td>
  </tr>

  <tr>
    <td rowspan="4">PendingScreening</td>
    <td>PendingTravelRuleCheck</td>
    <td>The transaction is undergoing a Travel Rule check.</td>
  </tr>

  <tr>
    <td>PendingTravelRuleInfo</td>
    <td>The transaction is awaiting users to provide information related to the Travel Rule.</td>
  </tr>

  <tr>
    <td>PendingScreeningAppCheck</td>
    <td>The transaction is under review by the [Screening app](https://manuals.cobo.com/en/apps/screening/introduction).</td>
  </tr>

  <tr>
    <td>PendingCoboKYTCheck</td>
    <td>The transaction is pending Cobo's KYT check.</td>
  </tr>

  <tr>
    <td rowspan="5">PendingAuthorization</td>
    <td>PendingDoubleCheck</td>
    <td>The transaction is pending a double check.</td>
  </tr>

  <tr>
    <td>PendingSpenderCheck</td>
    <td>The transaction is pending a spender check.</td>
  </tr>

  <tr>
    <td>PendingRiskControlCheck</td>
    <td>The transaction is pending for a Risk Control check.</td>
  </tr>

  <tr>
    <td>PendingApproverCheck</td>
    <td>The transaction is pending approval from the approver.</td>
  </tr>

  <tr>
    <td>PendingCoboCheck</td>
    <td>The transaction is pending an internal check by Cobo.</td>
  </tr>

  <tr>
    <td rowspan="11">PendingSignature</td>
    <td>Queue</td>
    <td>The transaction is queued to be processed by Cobo Portal.</td>
  </tr>

  <tr>
    <td>PendingWaitSigner</td>
    <td>The transaction is waiting for a signer to sign it in Cobo Guard.</td>
  </tr>

  <tr>
    <td>InsufficientBalance</td>
    <td>The transaction cannot proceed due to insufficient balance. Please deposit required tokens or cancel the transaction.</td>
  </tr>

  <tr>
    <td>InsufficientBalanceFundLocked</td>
    <td>The transaction cannot proceed because the available balance is currently locked. Please wait until the balance is unlocked.</td>
  </tr>

  <tr>
    <td>PendingSystemProcessing</td>
    <td>The transaction has been submitted and is awaiting processing by the blockchain system.</td>
  </tr>

  <tr>
    <td>SystemProcessingOngoing</td>
    <td>The blockchain system is currently processing the transaction.</td>
  </tr>

  <tr>
    <td>Built</td>
    <td>The transaction has been built but not signed yet.</td>
  </tr>

  <tr>
    <td>PendingSignerApproval</td>
    <td>The transaction is pending approval from the signer.</td>
  </tr>

  <tr>
    <td>PendingApprovalStart</td>
    <td>The transaction approval is waiting to be started.<ul><li>For <a href="https://manuals.cobo.com/en/portal/mpc-wallets/ucw/introduction">MPC Wallets (User-Controlled Wallets)</a>, you need to use the Client App and call the UCW SDK to start the transaction approval process.</li><li>For <a href="https://manuals.cobo.com/en/portal/mpc-wallets/ocw/introduction">MPC Wallets (Organization-Controlled Wallets)</a>:<ul><li>If you are using the <a href="https://manuals.cobo.com/en/portal/mpc-wallets/ocw/create-key-share-groups">server co-signer</a>, this status indicates that the TSS Node will soon request the callback server to start the <a href="https://manuals.cobo.com/en/portal/risk-controls/introduction">risk controls</a> check. No further action is required from you at this stage.</li><li>If you are using the <a href="https://manuals.cobo.com/en/portal/mpc-wallets/ocw/create-key-share-groups">mobile co-signer</a>, key share holders need to use their <a href="https://manuals.cobo.com/en/guard/introduction">Cobo Guard</a> to approve the transaction and participate in the signing process.</li></ul></li></ul></td>
  </tr>

  <tr>
    <td>PendingSignerProcessing</td>
    <td>The transaction is currently being signed.</td>
  </tr>

  <tr>
    <td>SignatureVerificationSuccess</td>
    <td>The transaction's signature has been successfully verified.</td>
  </tr>

  <tr>
    <td>Broadcasting</td>
    <td>FailedBroadcasting</td>
    <td>The transaction failed to be broadcast to the blockchain network.</td>
  </tr>

  <tr>
    <td rowspan="2">Confirming</td>
    <td>Reverting</td>
    <td>The transaction is being reverted due to failure on the blockchain.</td>
  </tr>

  <tr>
    <td>PendingBlockConfirmations</td>
    <td> The transaction is awaiting the required number of confirmations.</td>
  </tr>

  <tr>
    <td rowspan="1">Completed</td>
    <td>N/A</td>
    <td>The transaction is completed.</td>
  </tr>

  <tr>
    <td rowspan="6">Failed</td>
    <td>FailedBySigner</td>
    <td>The transaction failed during the signing process.</td>
  </tr>

  <tr>
    <td>FailedOnChain</td>
    <td>The transaction failed on the blockchain.</td>
  </tr>

  <tr>
    <td>ReplacedByNewTransaction</td>
    <td>The transaction has been replaced by a new transaction through the Replace-By-Fee (RBF) mechanism.</td>
  </tr>

  <tr>
    <td>SignatureVerificationFailed</td>
    <td>The transaction's signature failed verification.</td>
  </tr>

  <tr>
    <td>FailedSignerTimeout</td>
    <td>The transaction failed due to signature timeout.</td>
  </tr>

  <tr>
    <td>ReOrged</td>
    <td>The transaction failed due to a blockchain reorganization.</td>
  </tr>

  <tr>
    <td rowspan="18">Rejected</td>
    <td>RejectedWhiteList</td>
    <td>The transaction was rejected because the IP address of the initiator was not in the whitelist.</td>
  </tr>

  <tr>
    <td>RejectedKYT</td>
    <td>The transaction was rejected because it failed Know Your Transaction (KYT) compliance checks.</td>
  </tr>

  <tr>
    <td>RejectedRiskControlCheck</td>
    <td>The transaction was rejected because it failed the risk control check.</td>
  </tr>

  <tr>
    <td>RejectedSpenderAuth</td>
    <td>The transaction was rejected by the spender.</td>
  </tr>

  <tr>
    <td>RejectedApproverAuth</td>
    <td>The transaction was rejected by the approver.</td>
  </tr>

  <tr>
    <td>RejectedDoubleCheck</td>
    <td>The transaction was rejected because it failed a double check.</td>
  </tr>

  <tr>
    <td>RejectedbyMobileCosigner</td>
    <td>The transaction was rejected by a mobile cosigner.</td>
  </tr>

  <tr>
    <td>RejectedCoboCheck</td>
    <td>The transaction was rejected because it failed the internal check by Cobo.</td>
  </tr>

  <tr>
    <td>RejectedByScreeningApp</td>
    <td>The transaction was rejected because it failed the screening check by the [Screening app](https://manuals.cobo.com/en/apps/screening/introduction).</td>
  </tr>

  <tr>
    <td>RejectedTravelRuleDueToUnsupportedToken</td>
    <td>The transaction was rejected because the token was not supported by the Travel Rule.</td>
  </tr>

  <tr>
    <td>RejectedTravelRule</td>
    <td>The transaction was rejected because it failed to comply with the Travel Rule.</td>
  </tr>

  <tr>
    <td>RejectedTravelRuleDueToCompliance</td>
    <td>The transaction was rejected because it failed the cross-check of the Travel Rule.</td>
  </tr>

  <tr>
    <td>RejectedTransactionPolicy</td>
    <td>The transaction was rejected due to it failed the transaction policies.</td>
  </tr>

  <tr>
    <td>RejectedBySigner</td>
    <td>The transaction was rejected by the signer.</td>
  </tr>

  <tr>
    <td>CanceledBySpender</td>
    <td>The transaction was canceled by a spender.</td>
  </tr>

  <tr>
    <td>CanceledByAPI</td>
    <td>The transaction was canceled by a [Cancel transaction](https://www.cobo.com/developers/v2/api-references/transactions/cancel-transaction) operation.</td>
  </tr>

  <tr>
    <td>OnchainRejection</td>
    <td>The transaction was rejected from being added to the blockchain.</td>
  </tr>

  <tr>
    <td>RejectedByCobo</td>
    <td>The transaction was rejected by Cobo possibly due to unmet compliance or risk control requirements. You can contact our [support team](mailto:help@cobo.com) for more details.</td>
  </tr>

  <tr>
    <td rowspan="1">Pending</td>
    <td>N/A</td>
    <td>The transaction is waiting to be included in a block.</td>
  </tr>
</table>

## Available actions

You can perform the following actions based on the transaction status:

* Cancel a transaction if its status is one of the following:
  * `Submitted`
  * `PendingScreening`
  * `PendingAuthorization`
  * `PendingSignature` (Only when the sub-status is `Queue`, `InsufficientBalance`, `InsufficientBalanceFundLocked`, `PendingSignerApproval`, `PendingSystemProcessing`, or `Built`)
* Resend a transaction if its status is `Failed`.
* Speed up or drop a transaction if its status is `Broadcasting`.

For more details, refer to [Manage transactions](/v2/guides/transactions/manage-transactions).
