{
  "$schema": "https://degreesofsatoshi.com/encyclopedia/schemas/article-v1.json",
  "schemaVersion": "1.0.0",
  "id": "replace-by-fee",
  "canonical": "https://degreesofsatoshi.com/encyclopedia/replace-by-fee/",
  "collection": "bitcoin",
  "title": "Replace-by-fee: replacing a pending Bitcoin payment",
  "description": "Understand how a pending Bitcoin transaction can be replaced, what changes, and why replacement is a node policy rather than a confirmation guarantee.",
  "aliases": [
    "RBF",
    "fee bump"
  ],
  "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": "Replace-by-fee, or RBF, submits a conflicting Bitcoin transaction that spends at least one of the same inputs, usually with a higher fee. The wallet must be able to construct it, and relay depends on receiving nodes’ policies. It cannot undo a payment already confirmed in the accepted chain.",
    "claimId": "replace-by-fee-quick-answer",
    "sourceIds": [
      "bip125",
      "core-bumpfee",
      "core-replacement"
    ]
  },
  "keyFacts": [
    {
      "label": "Conflict",
      "value": "The replacement competes for an input already spent by the pending transaction.",
      "sourceIds": [
        "core-replacement"
      ],
      "id": "conflict",
      "claimId": "replace-by-fee-fact-conflict"
    },
    {
      "label": "Transaction ID",
      "value": "Changing the signed transaction normally creates a different transaction ID.",
      "sourceIds": [
        "bitcoin-dev-transactions"
      ],
      "id": "transaction-id",
      "claimId": "replace-by-fee-fact-transaction-id"
    },
    {
      "label": "Policy",
      "value": "BIP-125 documents historical opt-in policy; actual node rules depend on implementation and version.",
      "sourceIds": [
        "bip125",
        "core-replacement"
      ],
      "id": "policy",
      "claimId": "replace-by-fee-fact-policy"
    }
  ],
  "prerequisites": [
    "bitcoin-transaction-fees-and-mempool"
  ],
  "sections": [
    {
      "id": "replacement",
      "heading": "What gets replaced",
      "sourceIds": [
        "core-bumpfee",
        "bitcoin-dev-transactions"
      ],
      "paragraphs": [
        "A wallet starts with the payment it already created and prepares another spend of the same coins. It may reduce a change output or choose additional inputs to pay the extra fee. The replacement must still satisfy signatures, input availability and the receiving node’s relay rules.",
        "The recipient should follow the replacement transaction rather than assume the original identifier must eventually confirm. Two conflicting transactions cannot both spend the same output in one valid accepted chain."
      ]
    },
    {
      "id": "fee-example",
      "heading": "A fee increase in numbers",
      "sourceIds": [
        "core-walletcreatefundedpsbt",
        "core-bumpfee"
      ],
      "paragraphs": [
        "For illustration, a 140-vbyte payment at 5 sat/vB pays 700 satoshis. If its replacement remains 140 vbytes and uses 10 sat/vB, its fee is 1,400 satoshis. The additional 700 may come out of change. A changed input or output set can change the size, so a wallet must recalculate.",
        "Paying more does not reserve a place in a block. Miner selection, node policy, conflicts and subsequent fee conditions still matter."
      ]
    },
    {
      "id": "check",
      "heading": "What to inspect before replacing",
      "sourceIds": [
        "bip125",
        "core-bumpfee",
        "core-replacement"
      ],
      "paragraphs": [
        "Check the recipient output, total fee, replacement identifier and whether the original has already confirmed. The cited Bitcoin Core 29.0 RPC describes its own wallet restrictions; these are not universal rules for every wallet.",
        "BIP-125’s opt-in flag is useful historical context, but it must not be presented as an immutable consensus requirement for every replacement accepted by later software."
      ]
    }
  ],
  "faq": [
    {
      "question": "Can RBF recover a payment that already confirmed?",
      "answer": "No. A conflicting replacement is not a rollback of an accepted block. A confirmed payment would require a separate transaction from whoever can spend its output.",
      "sourceIds": [
        "bitcoin-dev-transactions",
        "core-bumpfee"
      ]
    }
  ],
  "claims": [
    {
      "id": "replace-by-fee-quick-answer",
      "articleSlug": "replace-by-fee",
      "statement": "Replace-by-fee, or RBF, submits a conflicting Bitcoin transaction that spends at least one of the same inputs, usually with a higher fee. The wallet must be able to construct it, and relay depends on receiving nodes’ policies. It cannot undo a payment already confirmed in the accepted chain.",
      "sourceIds": [
        "source-67b7ee4bcd0e4a4f",
        "source-b7f4c1c78e78f2af",
        "source-1ec3dafaa6208350"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-67b7ee4bcd0e4a4f",
          "locator": "Summary; Implementation Details"
        },
        {
          "sourceId": "source-b7f4c1c78e78f2af",
          "locator": "Arguments and result fields"
        },
        {
          "sourceId": "source-1ec3dafaa6208350",
          "locator": "GetEntriesForConflicts; PaysForRBF"
        }
      ],
      "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": [
          "Checked BIP-125 Summary/Implementation Details against v29.0 bumpfee and rbf.cpp PaysForRBF. Opt-in signaling is dated policy context, not a universal consensus requirement.",
          "Rephrased wallet construction versus receiving-node relay policy. Recomputed 700-sat and 1,400-sat example, including 700-sat difference."
        ]
      }
    },
    {
      "id": "replace-by-fee-fact-conflict",
      "articleSlug": "replace-by-fee",
      "statement": "Conflict: The replacement competes for an input already spent by the pending transaction.",
      "sourceIds": [
        "source-1ec3dafaa6208350"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-1ec3dafaa6208350",
          "locator": "GetEntriesForConflicts; PaysForRBF"
        }
      ],
      "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": [
          "Checked BIP-125 Summary/Implementation Details against v29.0 bumpfee and rbf.cpp PaysForRBF. Opt-in signaling is dated policy context, not a universal consensus requirement.",
          "Rephrased wallet construction versus receiving-node relay policy. Recomputed 700-sat and 1,400-sat example, including 700-sat difference."
        ]
      }
    },
    {
      "id": "replace-by-fee-fact-transaction-id",
      "articleSlug": "replace-by-fee",
      "statement": "Transaction ID: Changing the signed transaction normally creates a different transaction ID.",
      "sourceIds": [
        "source-b282fdecc069b74d"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-b282fdecc069b74d",
          "locator": "P2PKH Script Validation; Transaction Fees And Change"
        }
      ],
      "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": [
          "Checked BIP-125 Summary/Implementation Details against v29.0 bumpfee and rbf.cpp PaysForRBF. Opt-in signaling is dated policy context, not a universal consensus requirement.",
          "Rephrased wallet construction versus receiving-node relay policy. Recomputed 700-sat and 1,400-sat example, including 700-sat difference."
        ]
      }
    },
    {
      "id": "replace-by-fee-fact-policy",
      "articleSlug": "replace-by-fee",
      "statement": "Policy: BIP-125 documents historical opt-in policy; actual node rules depend on implementation and version.",
      "sourceIds": [
        "source-67b7ee4bcd0e4a4f",
        "source-1ec3dafaa6208350"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-67b7ee4bcd0e4a4f",
          "locator": "Summary; Implementation Details"
        },
        {
          "sourceId": "source-1ec3dafaa6208350",
          "locator": "GetEntriesForConflicts; PaysForRBF"
        }
      ],
      "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": [
          "Checked BIP-125 Summary/Implementation Details against v29.0 bumpfee and rbf.cpp PaysForRBF. Opt-in signaling is dated policy context, not a universal consensus requirement.",
          "Rephrased wallet construction versus receiving-node relay policy. Recomputed 700-sat and 1,400-sat example, including 700-sat difference."
        ]
      }
    }
  ],
  "sources": [
    {
      "id": "bip125",
      "label": "Opt-in Full Replace-by-Fee",
      "publisher": "Bitcoin BIPs contributors",
      "url": "https://raw.githubusercontent.com/bitcoin/bips/927b6de9915c9262615a6399de51b200f81e5aa4/bip-0125.mediawiki",
      "locator": "Summary; Implementation Details",
      "note": "Historical opt-in replacement signaling and replacement policy conditions.",
      "version": "BIP-125; immutable revision pinned in source URL",
      "checkedAt": "2026-10-02T17:22:20.573Z",
      "contentSha256": "da53c6f77100581b715befcfcb2e84adc672d205628a4219c77106f66978aad2",
      "recordId": "source-67b7ee4bcd0e4a4f"
    },
    {
      "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-replacement",
      "label": "Bitcoin Core replacement policy",
      "publisher": "Bitcoin Core",
      "url": "https://raw.githubusercontent.com/bitcoin/bitcoin/v29.0/src/policy/rbf.cpp",
      "locator": "GetEntriesForConflicts; PaysForRBF",
      "note": "Implementation-specific replacement fees and conflict constraints.",
      "version": "Bitcoin Core v29.0",
      "checkedAt": "2026-10-02T17:03:40.829Z",
      "contentSha256": "41748f81bf1410c657e048332787edee9a54eca6ebce46d14891d47c5298e9ae",
      "recordId": "source-1ec3dafaa6208350"
    },
    {
      "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-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"
    }
  ],
  "related": {
    "articles": [
      "bitcoin-confirmations",
      "bitcoin-fee-rate",
      "child-pays-for-parent"
    ],
    "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. “Replace-by-fee: replacing a pending Bitcoin payment.” Published 2026-10-02; updated 2026-10-02. https://degreesofsatoshi.com/encyclopedia/replace-by-fee/"
}
