{
  "$schema": "https://degreesofsatoshi.com/encyclopedia/schemas/article-v1.json",
  "schemaVersion": "1.0.0",
  "id": "bitcoin-payment-batching",
  "canonical": "https://degreesofsatoshi.com/encyclopedia/bitcoin-payment-batching/",
  "collection": "bitcoin",
  "title": "Bitcoin payment batching: many recipients in one transaction",
  "description": "See how Bitcoin batching combines recipients, changes fee overhead and reveals payment relationships, with an illustrative size comparison.",
  "aliases": [
    "bitcoin batch payments",
    "bitcoin batch payments 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": "Bitcoin payment batching creates several recipient outputs in one transaction. It can reduce duplicated transaction overhead and input use compared with separate payments, but savings depend on the actual construction. Recipients share one transaction identifier and confirmation event, which also makes their outputs visibly related. Each amount, destination and fee-deduction rule still needs review.",
    "claimId": "bitcoin-payment-batching-quick-answer",
    "sourceIds": [
      "x425-btc-dev-transactions",
      "x425-btc-core-sendmany",
      "x425-btc-bip141"
    ]
  },
  "keyFacts": [
    {
      "label": "Structure",
      "value": "One transaction can create many outputs",
      "sourceIds": [
        "x425-btc-dev-transactions"
      ],
      "id": "structure",
      "claimId": "bitcoin-payment-batching-fact-structure"
    },
    {
      "label": "Identifier",
      "value": "A sendmany batch returns one transaction ID",
      "sourceIds": [
        "x425-btc-core-sendmany"
      ],
      "id": "identifier",
      "claimId": "bitcoin-payment-batching-fact-identifier"
    },
    {
      "label": "Fee",
      "value": "Paid for the whole transaction, not independently per recipient",
      "sourceIds": [
        "x425-btc-dev-transactions"
      ],
      "id": "fee",
      "claimId": "bitcoin-payment-batching-fact-fee"
    }
  ],
  "prerequisites": [
    "bitcoin-virtual-size",
    "bitcoin-coin-selection"
  ],
  "sections": [
    {
      "id": "construction",
      "heading": "One funding decision, several destinations",
      "sourceIds": [
        "x425-btc-core-sendmany",
        "x425-btc-dev-transactions"
      ],
      "paragraphs": [
        "A batch might pay 20,000, 30,000 and 40,000 satoshis to three recipients, create sender change and pay one miner fee. The output values total 90,000 satoshis before change. The transaction must fund all outputs and the fee together.",
        "Core’s sendmany documentation supports a destination-and-amount collection. If selected recipients bear a deducted fee, their delivered amounts shrink; the payer should not silently substitute this for promised invoice amounts."
      ]
    },
    {
      "id": "comparison",
      "heading": "Compare complete transactions at one fee rate",
      "sourceIds": [
        "x425-btc-bip141",
        "x425-btc-dev-transactions"
      ],
      "paragraphs": [
        "Assume three separate illustrative transactions would each be 140 vB, while a suitable combined transaction would be 230 vB. At 5 sat/vB, separate fees total 2,100 satoshis and the batch costs 1,150, a 950-satoshi difference.",
        "Those sizes are assumptions for the arithmetic. Different input scripts, additional funding inputs or a different change arrangement can alter the result. Batching is not a fixed percentage discount."
      ]
    },
    {
      "id": "tradeoff",
      "heading": "Batching links the outputs publicly",
      "sourceIds": [
        "x425-btc-dev-transactions",
        "x425-btc-core-sendmany"
      ],
      "paragraphs": [
        "Anyone reading the chain can see that the outputs were created together. One recipient may be able to identify another output using outside information. A batch also couples timing: replacing or delaying the transaction affects the group.",
        "Keep per-recipient records beside the shared transaction ID. A shared identifier alone does not distinguish which output paid a specific invoice."
      ]
    }
  ],
  "faq": [
    {
      "question": "Does each recipient pay the full miner fee?",
      "answer": "The chain records one fee for the entire transaction. A service can allocate costs under its own accounting policy, but there is no separate protocol fee attached to each recipient output.",
      "sourceIds": [
        "x425-btc-dev-transactions",
        "x425-btc-core-sendmany"
      ]
    },
    {
      "question": "Does batching make the payment private?",
      "answer": "No. It may be efficient, but it visibly groups recipients in one transaction. The ledger does not name those people; external records can still connect an output to a customer or invoice.",
      "sourceIds": [
        "x425-btc-dev-transactions"
      ]
    }
  ],
  "claims": [
    {
      "id": "bitcoin-payment-batching-quick-answer",
      "articleSlug": "bitcoin-payment-batching",
      "statement": "Bitcoin payment batching creates several recipient outputs in one transaction. It can reduce duplicated transaction overhead and input use compared with separate payments, but savings depend on the actual construction. Recipients share one transaction identifier and confirmation event, which also makes their outputs visibly related. Each amount, destination and fee-deduction rule still needs review.",
      "sourceIds": [
        "source-b282fdecc069b74d",
        "source-92ae850777eb59b9",
        "source-896e868816ad19d1"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-b282fdecc069b74d",
          "locator": "Introduction; Spending An Output; P2PKH Script Validation; Multisig; Transaction Fees And Change; Avoiding Key Reuse"
        },
        {
          "sourceId": "source-92ae850777eb59b9",
          "locator": "Arguments: amounts, subtractfeefrom"
        },
        {
          "sourceId": "source-896e868816ad19d1",
          "locator": "Transaction ID; Additional definitions; Transaction size calculations"
        }
      ],
      "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 multiple outputs in a single Core sendmany transaction and the public relationship among outputs. Recomputed all recipient totals and hypothetical size/fee comparison; stipulated sizes are not presented as universal transaction sizes."
        ]
      }
    },
    {
      "id": "bitcoin-payment-batching-fact-structure",
      "articleSlug": "bitcoin-payment-batching",
      "statement": "Structure: One transaction can create many outputs",
      "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 multiple outputs in a single Core sendmany transaction and the public relationship among outputs. Recomputed all recipient totals and hypothetical size/fee comparison; stipulated sizes are not presented as universal transaction sizes."
        ]
      }
    },
    {
      "id": "bitcoin-payment-batching-fact-identifier",
      "articleSlug": "bitcoin-payment-batching",
      "statement": "Identifier: A sendmany batch returns one transaction ID",
      "sourceIds": [
        "source-92ae850777eb59b9"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-92ae850777eb59b9",
          "locator": "Arguments: amounts, subtractfeefrom"
        }
      ],
      "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 multiple outputs in a single Core sendmany transaction and the public relationship among outputs. Recomputed all recipient totals and hypothetical size/fee comparison; stipulated sizes are not presented as universal transaction sizes."
        ]
      }
    },
    {
      "id": "bitcoin-payment-batching-fact-fee",
      "articleSlug": "bitcoin-payment-batching",
      "statement": "Fee: Paid for the whole transaction, not independently per recipient",
      "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 multiple outputs in a single Core sendmany transaction and the public relationship among outputs. Recomputed all recipient totals and hypothetical size/fee comparison; stipulated sizes are not presented as universal transaction sizes."
        ]
      }
    }
  ],
  "sources": [
    {
      "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-core-sendmany",
      "label": "sendmany RPC",
      "publisher": "Bitcoin Core",
      "url": "https://bitcoincore.org/en/doc/29.0.0/rpc/wallet/sendmany/",
      "locator": "Arguments: amounts, subtractfeefrom",
      "note": "Multiple recipient outputs and optional fee deduction behavior.",
      "version": "Bitcoin Core 29.0 RPC reference; not a recommendation to install an old release",
      "checkedAt": "2026-10-02T18:53:54.997Z",
      "contentSha256": "55626c9a328b8fc3ffd6dc770e8f283e9745a3a5de239e21193dd5c4dcbfc838",
      "recordId": "source-92ae850777eb59b9"
    },
    {
      "id": "x425-btc-bip141",
      "label": "Segregated Witness",
      "publisher": "Bitcoin Improvement Proposals",
      "url": "https://raw.githubusercontent.com/bitcoin/bips/927b6de9915c9262615a6399de51b200f81e5aa4/bip-0141.mediawiki",
      "locator": "Transaction ID; Additional definitions; Transaction size calculations",
      "note": "Transaction identifiers, weight and virtual size definitions.",
      "version": "Pinned BIPs revision",
      "checkedAt": "2026-10-02T18:53:54.098Z",
      "contentSha256": "d72409335872a32494f75e7547589abf4b3b23b6beebe6bc6999c7a84b135e2c",
      "recordId": "source-896e868816ad19d1"
    }
  ],
  "related": {
    "articles": [
      "bitcoin-virtual-size",
      "bitcoin-coin-selection",
      "bitcoin-address-reuse",
      "bitcoin-send-max",
      "bitcoin-exchange-withdrawal-fees"
    ],
    "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 payment batching: many recipients in one transaction.” Published 2026-10-02; updated 2026-10-02. https://degreesofsatoshi.com/encyclopedia/bitcoin-payment-batching/"
}
