{
  "$schema": "https://degreesofsatoshi.com/encyclopedia/schemas/article-v1.json",
  "schemaVersion": "1.0.0",
  "id": "bitcoin-payment-refunds",
  "canonical": "https://degreesofsatoshi.com/encyclopedia/bitcoin-payment-refunds/",
  "collection": "bitcoin",
  "title": "Bitcoin refunds: why returning a payment requires a new transaction",
  "description": "Learn why a Bitcoin refund is a new payment, how to choose its destination and why copying an original input address can lose the refund.",
  "aliases": [
    "bitcoin refund",
    "bitcoin refund explained"
  ],
  "dates": {
    "published": "2026-10-02",
    "modified": "2026-10-02",
    "verified": "2026-10-02T19:29:20.637Z",
    "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 ordinary Bitcoin refund is a new transaction authorized by the party returning funds. It does not erase or reverse the original payment. Agree on the refund amount and obtain a suitable destination from the customer. Do not automatically send money to an address inferred from the original transaction’s inputs; a custodial service may not credit that return to the customer.",
    "claimId": "bitcoin-payment-refunds-quick-answer",
    "sourceIds": [
      "x425-btc-dev-payment-processing",
      "x425-btc-btcpay-refunds",
      "x425-btc-know"
    ]
  },
  "keyFacts": [
    {
      "label": "Ledger effect",
      "value": "Original payment remains in history",
      "sourceIds": [
        "x425-btc-dev-transactions"
      ],
      "id": "ledger-effect",
      "claimId": "bitcoin-payment-refunds-fact-ledger-effect"
    },
    {
      "label": "Destination",
      "value": "Use a confirmed refund destination",
      "sourceIds": [
        "x425-btc-dev-payment-processing"
      ],
      "id": "destination",
      "claimId": "bitcoin-payment-refunds-fact-destination"
    },
    {
      "label": "Costs",
      "value": "The refund has its own transaction fee",
      "sourceIds": [
        "x425-btc-dev-transactions"
      ],
      "id": "costs",
      "claimId": "bitcoin-payment-refunds-fact-costs"
    }
  ],
  "prerequisites": [
    "double-spending",
    "bitcoin-confirmations"
  ],
  "sections": [
    {
      "id": "agreement",
      "heading": "Establish the amount being returned",
      "sourceIds": [
        "x425-btc-btcpay-invoices"
      ],
      "paragraphs": [
        "A refund policy needs a unit of account. Returning the original bitcoin quantity, its original fiat value, or an amount calculated at a later exchange rate can produce different results. The cited BTCPay documentation offers these choices explicitly; the software cannot choose the commercial agreement for both parties.",
        "For example, a 100,000-satoshi purchase followed by an agreed 25% bitcoin-denominated refund means 25,000 satoshis before any separately agreed fee deduction."
      ]
    },
    {
      "id": "destination",
      "heading": "The input address is not a return label",
      "sourceIds": [
        "x425-btc-dev-payment-processing",
        "x425-btc-btcpay-refunds"
      ],
      "paragraphs": [
        "An exchange can combine several customers’ withdrawals in one transaction or spend from addresses it manages centrally. Sending back to one of those source addresses may fail to identify the customer’s account. The developer guide describes this exact refund hazard.",
        "BTCPay’s documented flow lets the customer claim a refund with a payout destination, which the merchant then reviews and processes. Confirm the destination through the customer relationship, not through an unsolicited message."
      ]
    },
    {
      "id": "payment",
      "heading": "Approve, send and reconcile the new transaction",
      "sourceIds": [
        "x425-btc-btcpay-refunds",
        "x425-btc-core-sendtoaddress"
      ],
      "paragraphs": [
        "The merchant signs and broadcasts a separate payout. Record its transaction identifier with the original invoice and confirm the recipient amount. If fee subtraction is used, the amount delivered can be lower than the entered amount.",
        "Do not call the refund complete merely because a claim link was generated. The documented on-chain flow distinguishes a requested payout, a signed transaction awaiting confirmation and a completed payout."
      ]
    }
  ],
  "faq": [
    {
      "question": "Can the Bitcoin network force a merchant to refund me?",
      "answer": "The ordinary protocol has no merchant-refund authority or chargeback command. Returning funds requires an authorized new spend; any contractual or legal remedy is separate from that transaction mechanism.",
      "sourceIds": [
        "x425-btc-know",
        "x425-btc-dev-transactions"
      ]
    },
    {
      "question": "Can I reuse the sender address as the refund address?",
      "answer": "Do not assume it is suitable. Transaction inputs can belong to a shared custodial system, and the customer may need a different deposit destination. Obtain and verify a current refund address from the customer.",
      "sourceIds": [
        "x425-btc-dev-payment-processing"
      ]
    }
  ],
  "claims": [
    {
      "id": "bitcoin-payment-refunds-quick-answer",
      "articleSlug": "bitcoin-payment-refunds",
      "statement": "An ordinary Bitcoin refund is a new transaction authorized by the party returning funds. It does not erase or reverse the original payment. Agree on the refund amount and obtain a suitable destination from the customer. Do not automatically send money to an address inferred from the original transaction’s inputs; a custodial service may not credit that return to the customer.",
      "sourceIds": [
        "source-5100780ba9c0cc55",
        "source-363266151956e734",
        "source-ba4dc8db91e16d53"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-5100780ba9c0cc55",
          "locator": "Requesting Payments; Verifying Payment; Issuing Refunds"
        },
        {
          "sourceId": "source-363266151956e734",
          "locator": "Create a refund; Processing refund"
        },
        {
          "sourceId": "source-ba4dc8db91e16d53",
          "locator": "Bitcoin payments are irreversible; Unconfirmed transactions aren't secure; You are your own bank; Bitcoin is not anonymous"
        }
      ],
      "scope": {
        "collection": "bitcoin",
        "dataAsOf": "2026-10-02",
        "blockHeight": null
      },
      "qualification": "Educational explanation. Product-specific behavior is scoped to the cited documentation, checked 2026-10-02.",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T19:29:20.637Z",
        "reviewer": "Independent automated verification — Codex /root/verify_ethereum_100, separate from the Bitcoin drafting agent",
        "notes": [
          "Checked BTCPay refund creation/claim/approval/signing workflow and developer refund-address warning. A25,000sat refund is a new spend; the agreement can use original/current conversion choices, and an input address is not reliable refund authority."
        ]
      }
    },
    {
      "id": "bitcoin-payment-refunds-fact-ledger-effect",
      "articleSlug": "bitcoin-payment-refunds",
      "statement": "Ledger effect: Original payment remains in history",
      "sourceIds": [
        "source-b282fdecc069b74d"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-b282fdecc069b74d",
          "locator": "Introduction; Spending An Output; P2PKH Script Validation; Multisig; Transaction Fees And Change; Avoiding Key Reuse"
        }
      ],
      "scope": {
        "collection": "bitcoin",
        "dataAsOf": "2026-10-02",
        "blockHeight": null
      },
      "qualification": "",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T19:29:20.637Z",
        "reviewer": "Independent automated verification — Codex /root/verify_ethereum_100, separate from the Bitcoin drafting agent",
        "notes": [
          "Checked BTCPay refund creation/claim/approval/signing workflow and developer refund-address warning. A25,000sat refund is a new spend; the agreement can use original/current conversion choices, and an input address is not reliable refund authority."
        ]
      }
    },
    {
      "id": "bitcoin-payment-refunds-fact-destination",
      "articleSlug": "bitcoin-payment-refunds",
      "statement": "Destination: Use a confirmed refund destination",
      "sourceIds": [
        "source-5100780ba9c0cc55"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-5100780ba9c0cc55",
          "locator": "Requesting Payments; Verifying Payment; Issuing Refunds"
        }
      ],
      "scope": {
        "collection": "bitcoin",
        "dataAsOf": "2026-10-02",
        "blockHeight": null
      },
      "qualification": "",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T19:29:20.637Z",
        "reviewer": "Independent automated verification — Codex /root/verify_ethereum_100, separate from the Bitcoin drafting agent",
        "notes": [
          "Checked BTCPay refund creation/claim/approval/signing workflow and developer refund-address warning. A25,000sat refund is a new spend; the agreement can use original/current conversion choices, and an input address is not reliable refund authority."
        ]
      }
    },
    {
      "id": "bitcoin-payment-refunds-fact-costs",
      "articleSlug": "bitcoin-payment-refunds",
      "statement": "Costs: The refund has its own transaction fee",
      "sourceIds": [
        "source-b282fdecc069b74d"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-b282fdecc069b74d",
          "locator": "Introduction; Spending An Output; P2PKH Script Validation; Multisig; Transaction Fees And Change; Avoiding Key Reuse"
        }
      ],
      "scope": {
        "collection": "bitcoin",
        "dataAsOf": "2026-10-02",
        "blockHeight": null
      },
      "qualification": "",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T19:29:20.637Z",
        "reviewer": "Independent automated verification — Codex /root/verify_ethereum_100, separate from the Bitcoin drafting agent",
        "notes": [
          "Checked BTCPay refund creation/claim/approval/signing workflow and developer refund-address warning. A25,000sat refund is a new spend; the agreement can use original/current conversion choices, and an input address is not reliable refund authority."
        ]
      }
    }
  ],
  "sources": [
    {
      "id": "x425-btc-dev-payment-processing",
      "label": "Payment Processing",
      "publisher": "Bitcoin developer documentation",
      "url": "https://developer.bitcoin.org/devguide/payment_processing.html",
      "locator": "Requesting Payments; Verifying Payment; Issuing Refunds",
      "note": "Payment request interpretation, confirmation checks and refund destination risks; historical protocol sections are dated.",
      "version": "Developer guide; historical implementation details require qualification",
      "checkedAt": "2026-10-02T18:53:53.958Z",
      "contentSha256": "b65d66f9a2ea6dc98bfc010c0349afdb7a066b837f76248436322344dbb043f9",
      "recordId": "source-5100780ba9c0cc55"
    },
    {
      "id": "x425-btc-btcpay-refunds",
      "label": "Refunds",
      "publisher": "BTCPay Server",
      "url": "https://docs.btcpayserver.org/Refund/",
      "locator": "Create a refund; Processing refund",
      "note": "A refund creates a separate payout and requires a usable destination rather than reversing history.",
      "checkedAt": "2026-10-02T18:53:56.900Z",
      "contentSha256": "3cc8ecf3a795adf57e18d5495c54101072ff1af8ed3c21788e5c8c98ef1d9a77",
      "recordId": "source-363266151956e734",
      "version": null
    },
    {
      "id": "x425-btc-know",
      "label": "Some things you need to know",
      "publisher": "Bitcoin.org",
      "url": "https://bitcoin.org/en/you-need-to-know",
      "locator": "Bitcoin payments are irreversible; Unconfirmed transactions aren't secure; You are your own bank; Bitcoin is not anonymous",
      "note": "Payment reversibility, confirmation risk and visible transaction records.",
      "checkedAt": "2026-10-02T18:53:53.609Z",
      "contentSha256": "929c698d3e96a7886d6e701b8d55470e6a3586d7eb525325e8993f9c56feb6c0",
      "recordId": "source-ba4dc8db91e16d53",
      "version": null
    },
    {
      "id": "x425-btc-dev-transactions",
      "label": "Transactions",
      "publisher": "Bitcoin developer documentation",
      "url": "https://developer.bitcoin.org/devguide/transactions.html",
      "locator": "Introduction; Spending An Output; P2PKH Script Validation; Multisig; Transaction Fees And Change; Avoiding Key Reuse",
      "note": "Inputs, outputs, authorization, change, coinbase exceptions and fee accounting.",
      "version": "Developer guide; historical implementation details require qualification",
      "checkedAt": "2026-10-02T18:53:53.759Z",
      "contentSha256": "2f3fc474d51880e6c7fd4c25f747f8d8d8da49a493ab82af8ff4916fa490d6b8",
      "recordId": "source-b282fdecc069b74d"
    },
    {
      "id": "x425-btc-btcpay-invoices",
      "label": "Invoices",
      "publisher": "BTCPay Server",
      "url": "https://docs.btcpayserver.org/Users/invoices/",
      "locator": "Invoice statuses; Invoice details; Refunding an invoice; Archiving invoices",
      "note": "Checkout states, paid-late/over/partial exceptions and confirmations as distinct events.",
      "checkedAt": "2026-10-02T18:53:56.741Z",
      "contentSha256": "a11f17e7322f9808e32959ebdf197c53b99e62ba631fd8c29bf5ad84f72df3e1",
      "recordId": "source-c7252b1be610c37c",
      "version": null
    },
    {
      "id": "x425-btc-core-sendtoaddress",
      "label": "sendtoaddress RPC",
      "publisher": "Bitcoin Core",
      "url": "https://bitcoincore.org/en/doc/29.0.0/rpc/wallet/sendtoaddress/",
      "locator": "Description; Arguments: amount, comment, comment_to, subtractfeefromamount, fee_rate; Result",
      "note": "Fee subtraction changes recipient output; comments remain local metadata.",
      "version": "Bitcoin Core 29.0 RPC reference; not a recommendation to install an old release",
      "checkedAt": "2026-10-02T18:53:55.005Z",
      "contentSha256": "5a7533879c09df8fe7dac0c92fc30ef619b2c0ae9332ab6d388a9bde3e9a583b",
      "recordId": "source-34552f149068cb49"
    }
  ],
  "related": {
    "articles": [
      "double-spending",
      "bitcoin-confirmations",
      "bitcoin-change-addresses",
      "bitcoin-payment-requests-qr-codes",
      "bitcoin-payment-not-showing-in-wallet"
    ],
    "dossiers": [],
    "wallets": []
  },
  "revisionHistory": [
    {
      "date": "2026-10-02",
      "kind": "published",
      "summary": "First publication after primary-source research and separate automated verification."
    }
  ],
  "citation": "Degrees of Satoshi editorial project. “Bitcoin refunds: why returning a payment requires a new transaction.” Published 2026-10-02; updated 2026-10-02. https://degreesofsatoshi.com/encyclopedia/bitcoin-payment-refunds/"
}
