{
  "$schema": "https://degreesofsatoshi.com/encyclopedia/schemas/article-v1.json",
  "schemaVersion": "1.0.0",
  "id": "bitcoin-stuck-transactions",
  "canonical": "https://degreesofsatoshi.com/encyclopedia/bitcoin-stuck-transactions/",
  "collection": "bitcoin",
  "title": "Why is my Bitcoin transaction still unconfirmed?",
  "description": "Diagnose an unconfirmed Bitcoin payment by separating broadcast, mempool acceptance, fee competition, conflicts and confirmation.",
  "aliases": [],
  "dates": {
    "published": "2026-10-02",
    "modified": "2026-10-02",
    "verified": "2026-10-02T18:15:23.891Z",
    "dataAsOf": "2026-10-02"
  },
  "authorship": {
    "publisher": "Degrees of Satoshi editorial project",
    "process": "AI-assisted research and drafting with a separate automated source-verification pass; no external expert or named human review is implied."
  },
  "quickAnswer": {
    "text": "An unconfirmed Bitcoin transaction has not yet been included in the chain being checked. It may be waiting because of its fee, a dependency, a conflict or incomplete propagation. First establish whether the transaction was broadcast and accepted; then use a supported replacement or dependent spend only if the wallet can construct one.",
    "claimId": "bitcoin-stuck-transactions-quick-answer",
    "sourceIds": [
      "bitcoin-dev-transactions",
      "core-bumpfee",
      "core-packages",
      "core-mempool"
    ]
  },
  "keyFacts": [
    {
      "label": "Mempool",
      "value": "Different nodes need not have identical sets of pending transactions.",
      "sourceIds": [
        "bitcoin-dev-transactions",
        "core-mempool"
      ],
      "id": "mempool",
      "claimId": "bitcoin-stuck-transactions-fact-mempool"
    },
    {
      "label": "Timeout",
      "value": "A wallet’s display deadline is not a consensus cancellation.",
      "sourceIds": [
        "bitcoin-dev-transactions",
        "core-mempool"
      ],
      "id": "timeout",
      "claimId": "bitcoin-stuck-transactions-fact-timeout"
    },
    {
      "label": "Recovery",
      "value": "Fee replacement requires a transaction that meets the wallet and node conditions.",
      "sourceIds": [
        "core-bumpfee"
      ],
      "id": "recovery",
      "claimId": "bitcoin-stuck-transactions-fact-recovery"
    }
  ],
  "prerequisites": [
    "bitcoin-confirmations"
  ],
  "sections": [
    {
      "id": "diagnose",
      "heading": "Start with evidence, not a countdown",
      "sourceIds": [
        "bitcoin-dev-transactions"
      ],
      "paragraphs": [
        "Check the transaction identifier, its inputs and the network on which it was sent. A payment still waiting for a wallet signature has a different problem from one accepted by a node but not yet mined. An explorer’s lack of a record does not prove that no other node has the transaction.",
        "Look for an unconfirmed parent and for an alternative transaction spending the same input. The displayed fee rate is useful only when interpreted alongside transaction size and dependencies."
      ]
    },
    {
      "id": "choices",
      "heading": "Understand the possible next steps",
      "sourceIds": [
        "core-bumpfee",
        "core-walletcreatefundedpsbt",
        "core-packages"
      ],
      "paragraphs": [
        "If the wallet supports a valid replacement, increasing the fee can create a more competitive conflicting transaction. If you control a suitable unconfirmed output, a child spend can change the economics of the dependent package. Neither method is guaranteed to be available.",
        "Sending another unrelated payment can produce a second successful payment rather than repair the first. Before doing so, establish what the first transaction can still spend and whether a replacement or conflict already exists."
      ]
    },
    {
      "id": "confirmation",
      "heading": "What ends the pending state",
      "sourceIds": [
        "bitcoin-dev-blockchain",
        "bitcoin-dev-transactions",
        "core-mempool"
      ],
      "paragraphs": [
        "Inclusion gives the transaction a block location and one confirmation in that observed chain. Additional blocks increase depth; they do not turn a probabilistic settlement process into an absolute guarantee.",
        "A node may also discard a pending transaction under its local policy. That deletion does not revoke a valid signature or prevent someone from broadcasting the same transaction again if its inputs remain spendable."
      ]
    }
  ],
  "faq": [
    {
      "question": "Does waiting a fixed number of hours automatically return the coins?",
      "answer": "No. Pending-transaction expiry is local node or wallet behavior. The relevant question is whether an accepted transaction has spent the inputs, not whether a timer has elapsed.",
      "sourceIds": [
        "bitcoin-dev-transactions",
        "bitcoin-dev-blockchain",
        "core-mempool"
      ]
    }
  ],
  "claims": [
    {
      "id": "bitcoin-stuck-transactions-quick-answer",
      "articleSlug": "bitcoin-stuck-transactions",
      "statement": "An unconfirmed Bitcoin transaction has not yet been included in the chain being checked. It may be waiting because of its fee, a dependency, a conflict or incomplete propagation. First establish whether the transaction was broadcast and accepted; then use a supported replacement or dependent spend only if the wallet can construct one.",
      "sourceIds": [
        "source-b282fdecc069b74d",
        "source-b7f4c1c78e78f2af",
        "source-9da8e2ada19d24a9",
        "source-b42abb14efd07b1e"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-b282fdecc069b74d",
          "locator": "P2PKH Script Validation; Transaction Fees And Change"
        },
        {
          "sourceId": "source-b7f4c1c78e78f2af",
          "locator": "Arguments and result fields"
        },
        {
          "sourceId": "source-9da8e2ada19d24a9",
          "locator": "Package Mempool Acceptance Rules; Package Fees and Feerate"
        },
        {
          "sourceId": "source-b42abb14efd07b1e",
          "locator": "CTxMemPool::Expire; CTxMemPool::TrimToSize"
        }
      ],
      "scope": {
        "collection": "bitcoin",
        "dataAsOf": "2026-10-02",
        "blockHeight": null
      },
      "qualification": "",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T18:15:23.891Z",
        "reviewer": "Independent automated verification agent verify_bitcoin_stablecoins_100",
        "notes": [
          "The original transaction guide did not support local mempool expiry directly. Added independently fetched v29.0 txmempool.cpp Expire/TrimToSize and package-policy references; expiry removes local entries without changing transaction signatures or the UTXO consensus rules.",
          "Checked pending versus included distinction, replacement restrictions and parent dependencies. No fixed wait or fee is represented as guaranteed confirmation or cancellation."
        ]
      }
    },
    {
      "id": "bitcoin-stuck-transactions-fact-mempool",
      "articleSlug": "bitcoin-stuck-transactions",
      "statement": "Mempool: Different nodes need not have identical sets of pending transactions.",
      "sourceIds": [
        "source-b282fdecc069b74d",
        "source-b42abb14efd07b1e"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-b282fdecc069b74d",
          "locator": "P2PKH Script Validation; Transaction Fees And Change"
        },
        {
          "sourceId": "source-b42abb14efd07b1e",
          "locator": "CTxMemPool::Expire; CTxMemPool::TrimToSize"
        }
      ],
      "scope": {
        "collection": "bitcoin",
        "dataAsOf": "2026-10-02",
        "blockHeight": null
      },
      "qualification": "",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T18:15:23.891Z",
        "reviewer": "Independent automated verification agent verify_bitcoin_stablecoins_100",
        "notes": [
          "The original transaction guide did not support local mempool expiry directly. Added independently fetched v29.0 txmempool.cpp Expire/TrimToSize and package-policy references; expiry removes local entries without changing transaction signatures or the UTXO consensus rules.",
          "Checked pending versus included distinction, replacement restrictions and parent dependencies. No fixed wait or fee is represented as guaranteed confirmation or cancellation."
        ]
      }
    },
    {
      "id": "bitcoin-stuck-transactions-fact-timeout",
      "articleSlug": "bitcoin-stuck-transactions",
      "statement": "Timeout: A wallet’s display deadline is not a consensus cancellation.",
      "sourceIds": [
        "source-b282fdecc069b74d",
        "source-b42abb14efd07b1e"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-b282fdecc069b74d",
          "locator": "P2PKH Script Validation; Transaction Fees And Change"
        },
        {
          "sourceId": "source-b42abb14efd07b1e",
          "locator": "CTxMemPool::Expire; CTxMemPool::TrimToSize"
        }
      ],
      "scope": {
        "collection": "bitcoin",
        "dataAsOf": "2026-10-02",
        "blockHeight": null
      },
      "qualification": "",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T18:15:23.891Z",
        "reviewer": "Independent automated verification agent verify_bitcoin_stablecoins_100",
        "notes": [
          "The original transaction guide did not support local mempool expiry directly. Added independently fetched v29.0 txmempool.cpp Expire/TrimToSize and package-policy references; expiry removes local entries without changing transaction signatures or the UTXO consensus rules.",
          "Checked pending versus included distinction, replacement restrictions and parent dependencies. No fixed wait or fee is represented as guaranteed confirmation or cancellation."
        ]
      }
    },
    {
      "id": "bitcoin-stuck-transactions-fact-recovery",
      "articleSlug": "bitcoin-stuck-transactions",
      "statement": "Recovery: Fee replacement requires a transaction that meets the wallet and node conditions.",
      "sourceIds": [
        "source-b7f4c1c78e78f2af"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-b7f4c1c78e78f2af",
          "locator": "Arguments and result fields"
        }
      ],
      "scope": {
        "collection": "bitcoin",
        "dataAsOf": "2026-10-02",
        "blockHeight": null
      },
      "qualification": "",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T18:15:23.891Z",
        "reviewer": "Independent automated verification agent verify_bitcoin_stablecoins_100",
        "notes": [
          "The original transaction guide did not support local mempool expiry directly. Added independently fetched v29.0 txmempool.cpp Expire/TrimToSize and package-policy references; expiry removes local entries without changing transaction signatures or the UTXO consensus rules.",
          "Checked pending versus included distinction, replacement restrictions and parent dependencies. No fixed wait or fee is represented as guaranteed confirmation or cancellation."
        ]
      }
    }
  ],
  "sources": [
    {
      "id": "bitcoin-dev-transactions",
      "label": "Bitcoin Developer Guide: Transactions",
      "publisher": "Bitcoin developer documentation contributors",
      "url": "https://developer.bitcoin.org/devguide/transactions.html",
      "locator": "P2PKH Script Validation; Transaction Fees And Change",
      "note": "UTXO inputs, transaction outputs, change and the difference paid as a fee.",
      "version": null,
      "checkedAt": "2026-10-02T17:03:41.190Z",
      "contentSha256": "449ae88ea59f9b198c398d3f5f56f83a92cd6be1638fa6681a1fdeea164892c0",
      "recordId": "source-b282fdecc069b74d"
    },
    {
      "id": "core-bumpfee",
      "label": "bumpfee RPC",
      "publisher": "Bitcoin Core",
      "url": "https://bitcoincore.org/en/doc/29.0.0/rpc/wallet/bumpfee/",
      "locator": "Arguments and result fields",
      "note": "Wallet-assisted replacement and the required fee and transaction conditions.",
      "version": "Bitcoin Core 29.0.0 RPC",
      "checkedAt": "2026-10-02T17:03:40.979Z",
      "contentSha256": "7a978997ffb0827fcc25fc4760b9ba7faab60021e1a2f173238cc8e07d94f15c",
      "recordId": "source-b7f4c1c78e78f2af"
    },
    {
      "id": "core-packages",
      "label": "Bitcoin Core package policy",
      "publisher": "Bitcoin Core",
      "url": "https://raw.githubusercontent.com/bitcoin/bitcoin/v29.0/doc/policy/packages.md",
      "locator": "Package Mempool Acceptance Rules; Package Fees and Feerate",
      "note": "Package fee accounting and policy for dependent transaction admission.",
      "version": "Bitcoin Core v29.0",
      "checkedAt": "2026-10-02T17:21:46.897Z",
      "contentSha256": "5caabc65a25e89c4c4d8f3c60ec56d59d6962253db031f3ce8bb13334c411141",
      "recordId": "source-9da8e2ada19d24a9"
    },
    {
      "id": "core-mempool",
      "label": "Bitcoin Core mempool maintenance",
      "publisher": "Bitcoin Core",
      "url": "https://raw.githubusercontent.com/bitcoin/bitcoin/v29.0/src/txmempool.cpp",
      "locator": "CTxMemPool::Expire; CTxMemPool::TrimToSize",
      "note": "Node-local expiry and size-based eviction of unconfirmed transactions.",
      "version": "Bitcoin Core v29.0",
      "checkedAt": "2026-10-02T17:55:16.998Z",
      "contentSha256": "922122645a6b32760948a73deeefa18a1398450bfe765b9b123497e2e5693b53",
      "recordId": "source-b42abb14efd07b1e"
    },
    {
      "id": "core-walletcreatefundedpsbt",
      "label": "walletcreatefundedpsbt RPC",
      "publisher": "Bitcoin Core",
      "url": "https://bitcoincore.org/en/doc/29.0.0/rpc/wallet/walletcreatefundedpsbt/",
      "locator": "Arguments and result fields",
      "note": "Input selection, fee units, change output, selected inputs and transaction funding.",
      "version": "Bitcoin Core 29.0.0 RPC",
      "checkedAt": "2026-10-02T17:03:40.827Z",
      "contentSha256": "d30514044f4ab73bb52b4f8d9bb2d5b8a64482c26fd1b63be11defcb0f2ac6d6",
      "recordId": "source-a8abe4366f2656ba"
    },
    {
      "id": "bitcoin-dev-blockchain",
      "label": "Bitcoin Developer Guide: Block Chain",
      "publisher": "Bitcoin developer documentation contributors",
      "url": "https://developer.bitcoin.org/devguide/block_chain.html",
      "locator": "Proof Of Work; Block Height And Forking; Transaction Data",
      "note": "Block headers, transaction Merkle trees and competing valid branches.",
      "version": null,
      "checkedAt": "2026-10-02T17:03:41.181Z",
      "contentSha256": "0102eb1bda0d084051a86735e4b293dadc5a93b2bee93ad71c62cfeb855f1583",
      "recordId": "source-190b9fe0eec933dc"
    }
  ],
  "related": {
    "articles": [
      "replace-by-fee",
      "child-pays-for-parent",
      "bitcoin-confirmations"
    ],
    "dossiers": [],
    "wallets": []
  },
  "revisionHistory": [
    {
      "date": "2026-10-02",
      "kind": "published",
      "summary": "Initial Bitcoin encyclopedia entry at this permanent URL."
    },
    {
      "date": "2026-10-02",
      "kind": "publishing-format",
      "summary": "Added reusable claims, explicit source locators, and matching Markdown and JSON. This publishing change does not itself establish factual verification."
    }
  ],
  "citation": "Degrees of Satoshi editorial project. “Why is my Bitcoin transaction still unconfirmed?.” Published 2026-10-02; updated 2026-10-02. https://degreesofsatoshi.com/encyclopedia/bitcoin-stuck-transactions/"
}
