{"id":20987424,"url":"https://github.com/stacks-network/send-many-stx-cli","last_synced_at":"2025-05-14T17:33:57.433Z","repository":{"id":44077795,"uuid":"341605379","full_name":"stacks-network/send-many-stx-cli","owner":"stacks-network","description":"A simple CLI for making a bulk STX transfer in one command.","archived":false,"fork":false,"pushed_at":"2023-09-10T16:11:51.000Z","size":766,"stargazers_count":6,"open_issues_count":3,"forks_count":6,"subscribers_count":6,"default_branch":"main","last_synced_at":"2024-04-14T11:50:54.738Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stacks-network.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-02-23T15:47:38.000Z","updated_at":"2024-03-09T22:51:47.000Z","dependencies_parsed_at":"2022-09-22T10:10:35.345Z","dependency_job_id":null,"html_url":"https://github.com/stacks-network/send-many-stx-cli","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stacks-network%2Fsend-many-stx-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stacks-network%2Fsend-many-stx-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stacks-network%2Fsend-many-stx-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stacks-network%2Fsend-many-stx-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stacks-network","download_url":"https://codeload.github.com/stacks-network/send-many-stx-cli/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225303944,"owners_count":17453037,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-19T06:16:55.379Z","updated_at":"2025-05-14T17:33:57.421Z","avatar_url":"https://github.com/stacks-network.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# `@stacks/send-many-stx-cli`\n\nA simple CLI for making a bulk STX transfer in one command.\n\nIt uses a Clarity contract to enable transfering STX to multiple recipients in one transaction.\n\nDefault contracts used:\n\nTestnet: https://explorer.hiro.so/txid/STR8P3RD1EHA8AA37ERSSSZSWKS9T2GYQFGXNA4C.send-many?chain=testnet\n\nMainnet: https://explorer.hiro.so/txid/SP3FBR2AGK5H9QBDH3EEN6DF8EK8JY7RX8QJ5SVTE.send-many?chain=mainnet\n\n# Usage\n\u003c!-- usage --\u003e\n```sh-session\n$ npm install -g @stacks/send-many-stx-cli\n$ stx-bulk-transfer COMMAND\nrunning command...\n$ stx-bulk-transfer (--version)\n@stacks/send-many-stx-cli/3.0.0 linux-x64 node-v20.18.2\n$ stx-bulk-transfer --help [COMMAND]\nUSAGE\n  $ stx-bulk-transfer COMMAND\n...\n```\n\u003c!-- usagestop --\u003e\n# Commands\n\u003c!-- commands --\u003e\n* [`stx-bulk-transfer deploy-contract [CONTRACT]`](#stx-bulk-transfer-deploy-contract-contract)\n* [`stx-bulk-transfer help [COMMAND]`](#stx-bulk-transfer-help-command)\n* [`stx-bulk-transfer send-many [RECIPIENTS]`](#stx-bulk-transfer-send-many-recipients)\n* [`stx-bulk-transfer send-many-memo [RECIPIENTS]`](#stx-bulk-transfer-send-many-memo-recipients)\n* [`stx-bulk-transfer send-many-memo-safe [RECIPIENTS]`](#stx-bulk-transfer-send-many-memo-safe-recipients)\n* [`stx-bulk-transfer validate-address [ADDRESS]`](#stx-bulk-transfer-validate-address-address)\n\n## `stx-bulk-transfer deploy-contract [CONTRACT]`\n\nDeploy `send-many`, `send-many-memo`, `memo-expected`.\n\n```\nUSAGE\n  $ stx-bulk-transfer deploy-contract [CONTRACT] -k \u003cvalue\u003e [-b] [-n mocknet|testnet|mainnet] [-u \u003cvalue\u003e] [--nonce\n    \u003cvalue\u003e] [-q]\n\nARGUMENTS\n  CONTRACT  The contract to deploy\n\nFLAGS\n  -b, --broadcast           Whether to broadcast this transaction. Omitting this flag will not broadcast the\n                            transaction.\n  -k, --privateKey=\u003cvalue\u003e  (required) Your private key\n  -n, --network=\u003coption\u003e    [default: testnet] Which network to broadcast this to\n                            \u003coptions: mocknet|testnet|mainnet\u003e\n  -q, --quiet               Reduce logging from this command. If this flag is passed with the broadcast (-b) flag,\n                            only the transaction ID will be logged. If the quiet flagged is passed without broadcast,\n                            only the raw transaction hex will be logged.\n  -u, --nodeUrl=\u003cvalue\u003e     A default node URL will be used based on the `network` option. Use this flag to manually\n                            override.\n      --nonce=\u003cvalue\u003e       Optionally specify a nonce for this transaction\n\nDESCRIPTION\n  Deploy `send-many`, `send-many-memo`, `memo-expected`.\n  A utility to simplify deploying contracts related to the STX bulk transfer tool. It deploys\n  the contract on the address of the provided private key.\n\n  Valid choices are: send-many, send-many-memo, and memo-expected.\n\n  The memo-expected contract is an empty contract that is checked by the `send-many-memo-safe`\n  command. If a contract called 'memo-expected' is deployed on a principal, and no memo is passed,\n  the send-many will be aborted before it reaches the chain.\n\n\nEXAMPLES\n  $ stx-bulk-transfer deploy-contract memo-expected -k my_private_key -n testnet -b\n```\n\n_See code: [src/commands/deploy-contract.ts](https://github.com/stacks-network/send-many-stx-cli/blob/v3.0.0/src/commands/deploy-contract.ts)_\n\n## `stx-bulk-transfer help [COMMAND]`\n\nDisplay help for stx-bulk-transfer.\n\n```\nUSAGE\n  $ stx-bulk-transfer help [COMMAND...] [-n]\n\nARGUMENTS\n  COMMAND...  Command to show help for.\n\nFLAGS\n  -n, --nested-commands  Include all nested commands in the output.\n\nDESCRIPTION\n  Display help for stx-bulk-transfer.\n```\n\n_See code: [@oclif/plugin-help](https://github.com/oclif/plugin-help/blob/v6.2.24/src/commands/help.ts)_\n\n## `stx-bulk-transfer send-many [RECIPIENTS]`\n\nExecute a bulk STX transfer.\n\n```\nUSAGE\n  $ stx-bulk-transfer send-many [RECIPIENTS...] -k \u003cvalue\u003e [-a] [-b] [-c \u003cvalue\u003e] [-m \u003cvalue\u003e] [-n\n    mocknet|testnet|mainnet] [-u \u003cvalue\u003e] [--nonce \u003cvalue\u003e] [-q]\n\nARGUMENTS\n  RECIPIENTS...  A set of recipients in the format of \"address,amount_ustx\"\n                 Example: STADMRP577SC3MCNP7T3PRSTZBJ75FJ59JGABZTW,100 ST2WPFYAW85A0YK9ACJR8JGWPM19VWYF90J8P5ZTH,50\n\nFLAGS\n  -a, --allowSingleStxTransfer   If enabled and only a single recipient is specified, a STX-transfer transaction type\n                                 will be used rather than a contract-call transaction.\n                                 If omitted, a contract-call will always be used, which can be less efficient.\n  -b, --broadcast                Whether to broadcast this transaction. Omitting this flag will not broadcast the\n                                 transaction.\n  -c, --contractAddress=\u003cvalue\u003e  Manually specify the contract address for send-many. If omitted, default contracts will\n                                 be used.\n  -k, --privateKey=\u003cvalue\u003e       (required) Your private key\n  -m, --feeMultiplier=\u003cvalue\u003e    Optionally specify a fee multiplier. If passed, the tx fee will be (estimated fee +\n                                 (estimated fee * multiplier)).\n                                 For example, a fee multiplier of 15 for a tx with an estimated fee of 200 would result\n                                 in a tx with the fee of 230.\n  -n, --network=\u003coption\u003e         [default: testnet] Which network to broadcast this to\n                                 \u003coptions: mocknet|testnet|mainnet\u003e\n  -q, --quiet                    Reduce logging from this command. If this flag is passed with the broadcast (-b) flag,\n                                 only the transaction ID will be logged. If the quiet flagged is passed without\n                                 broadcast,\n                                 only the raw transaction hex will be logged.\n  -u, --nodeUrl=\u003cvalue\u003e          A default node URL will be used based on the `network` option. Use this flag to\n                                 manually override.\n      --nonce=\u003cvalue\u003e            Optionally specify a nonce for this transaction\n\nDESCRIPTION\n  Execute a bulk STX transfer.\n  The bulk transfer is executed in a single transaction by invoking a `contract-call` on the \"send-many\" contract.\n\n  The default contracts can be found below:\n\n  Testnet: https://explorer.hiro.so/txid/ST3F1X4QGV2SM8XD96X45M6RTQXKA1PZJZZCQAB4B.send-many?chain=testnet\n  Mainnet: https://explorer.hiro.so/txid/SP3FBR2AGK5H9QBDH3EEN6DF8EK8JY7RX8QJ5SVTE.send-many?chain=mainnet\n\nEXAMPLES\n  $ stx-bulk-transfer send-many STADMRP577SC3MCNP7T3PRSTZBJ75FJ59JGABZTW,100 ST2WPFYAW85A0YK9ACJR8JGWPM19VWYF90J8P5ZTH,50 -k my_private_key -n testnet -b\n```\n\n_See code: [src/commands/send-many.ts](https://github.com/stacks-network/send-many-stx-cli/blob/v3.0.0/src/commands/send-many.ts)_\n\n## `stx-bulk-transfer send-many-memo [RECIPIENTS]`\n\nExecute a bulk STX transfer, with memos attached.\n\n```\nUSAGE\n  $ stx-bulk-transfer send-many-memo [RECIPIENTS...] -k \u003cvalue\u003e [-a] [-b] [-c \u003cvalue\u003e] [-m \u003cvalue\u003e] [-j] [-n\n    mocknet|testnet|mainnet] [-u \u003cvalue\u003e] [--nonce \u003cvalue\u003e] [-q]\n\nARGUMENTS\n  RECIPIENTS...  A set of recipients in the format of \"address,amount_ustx,memo\". Memo is optional.\n                 Example: STADMRP577SC3MCNP7T3PRSTZBJ75FJ59JGABZTW,100,memo ST2WPFYAW85A0YK9ACJR8JGWPM19VWYF90J8P5ZTH,50\n\nFLAGS\n  -a, --allowSingleStxTransfer   If enabled and only a single recipient is specified, a STX-transfer transaction type\n                                 will be used rather than a contract-call transaction.\n                                 If omitted, a contract-call will always be used, which can be less efficient.\n  -b, --broadcast                Whether to broadcast this transaction. Omitting this flag will not broadcast the\n                                 transaction.\n  -c, --contractAddress=\u003cvalue\u003e  Manually specify the contract address for send-many-memo. If omitted, default contracts\n                                 will be used.\n  -j, --jsonOutput               Output data in JSON format\n  -k, --privateKey=\u003cvalue\u003e       (required) Your private key\n  -m, --feeMultiplier=\u003cvalue\u003e    Optionally specify a fee multiplier. If passed, the tx fee will be (estimated fee +\n                                 (estimated fee * multiplier)).\n                                 For example, a fee multiplier of 15 for a tx with an estimated fee of 200 would result\n                                 in a tx with the fee of 230.\n  -n, --network=\u003coption\u003e         [default: testnet] Which network to broadcast this to\n                                 \u003coptions: mocknet|testnet|mainnet\u003e\n  -q, --quiet                    Reduce logging from this command. If this flag is passed with the broadcast (-b) flag,\n                                 only the transaction ID will be logged. If the quiet flagged is passed without\n                                 broadcast,\n                                 only the raw transaction hex will be logged.\n  -u, --nodeUrl=\u003cvalue\u003e          A default node URL will be used based on the `network` option. Use this flag to\n                                 manually override.\n      --nonce=\u003cvalue\u003e            Optionally specify a nonce for this transaction\n\nDESCRIPTION\n  Execute a bulk STX transfer, with memos attached.\n  The bulk transfer is executed in a single transaction by invoking a `contract-call` on the \"send-many-memo\" contract.\n\n  The default contracts can be found below:\n\n  Testnet: https://explorer.hiro.so/txid/ST3F1X4QGV2SM8XD96X45M6RTQXKA1PZJZZCQAB4B.send-many-memo?chain=testnet\n  Mainnet: https://explorer.hiro.so/txid/SP3FBR2AGK5H9QBDH3EEN6DF8EK8JY7RX8QJ5SVTE.send-many-memo?chain=mainnet\n\nEXAMPLES\n  $ stx-bulk-transfer send-many-memo STADMRP577SC3MCNP7T3PRSTZBJ75FJ59JGABZTW,100,hello ST2WPFYAW85A0YK9ACJR8JGWPM19VWYF90J8P5ZTH,50,memo2 -k my_private_key -n testnet -b\n```\n\n_See code: [src/commands/send-many-memo.ts](https://github.com/stacks-network/send-many-stx-cli/blob/v3.0.0/src/commands/send-many-memo.ts)_\n\n## `stx-bulk-transfer send-many-memo-safe [RECIPIENTS]`\n\nExecute a bulk STX transfer, with memos attached, checking if the transfer is safe to send.\n\n```\nUSAGE\n  $ stx-bulk-transfer send-many-memo-safe [RECIPIENTS...] -k \u003cvalue\u003e [-a] [-b] [-c \u003cvalue\u003e] [-m \u003cvalue\u003e] [-j] [-n\n    mocknet|testnet|mainnet] [-u \u003cvalue\u003e] [--nonce \u003cvalue\u003e] [-q]\n\nARGUMENTS\n  RECIPIENTS...  A set of recipients in the format of \"address,amount_ustx,memo\". Memo is optional.\n                 Example: STADMRP577SC3MCNP7T3PRSTZBJ75FJ59JGABZTW,100,memo ST2WPFYAW85A0YK9ACJR8JGWPM19VWYF90J8P5ZTH,50\n\nFLAGS\n  -a, --allowSingleStxTransfer   If enabled and only a single recipient is specified, a STX-transfer transaction type\n                                 will be used rather than a contract-call transaction.\n                                 If omitted, a contract-call will always be used, which can be less efficient.\n  -b, --broadcast                Whether to broadcast this transaction. Omitting this flag will not broadcast the\n                                 transaction.\n  -c, --contractAddress=\u003cvalue\u003e  Manually specify the contract address for send-many-memo. If omitted, default contracts\n                                 will be used.\n  -j, --jsonOutput               Output data in JSON format\n  -k, --privateKey=\u003cvalue\u003e       (required) Your private key\n  -m, --feeMultiplier=\u003cvalue\u003e    Optionally specify a fee multiplier. If passed, the tx fee will be (estimated fee +\n                                 (estimated fee * multiplier)).\n                                 For example, a fee multiplier of 15 for a tx with an estimated fee of 200 would result\n                                 in a tx with the fee of 230.\n  -n, --network=\u003coption\u003e         [default: testnet] Which network to broadcast this to\n                                 \u003coptions: mocknet|testnet|mainnet\u003e\n  -q, --quiet                    Reduce logging from this command. If this flag is passed with the broadcast (-b) flag,\n                                 only the transaction ID will be logged. If the quiet flagged is passed without\n                                 broadcast,\n                                 only the raw transaction hex will be logged.\n  -u, --nodeUrl=\u003cvalue\u003e          A default node URL will be used based on the `network` option. Use this flag to\n                                 manually override.\n      --nonce=\u003cvalue\u003e            Optionally specify a nonce for this transaction\n\nDESCRIPTION\n  Execute a bulk STX transfer, with memos attached, checking if the transfer is safe to send.\n  The bulk transfer is executed in a single transaction by invoking a `contract-call` on the \"send-many-memo\" contract.\n\n  The 'safe' counterpart of send-many-memo checks for the existence of a `memo-expected` contract for each recipient.\n  If it exists, the transfer will be aborted if the corresponding memo is empty or missing. A utility command to deploy\n  this contract is part of this tool: stx-bulk-transfer deploy-contract memo-expected.\n\n  The default contracts can be found below:\n\n  Testnet: https://explorer.hiro.so/txid/ST3F1X4QGV2SM8XD96X45M6RTQXKA1PZJZZCQAB4B.send-many-memo?chain=testnet\n  Mainnet: https://explorer.hiro.so/txid/SP3FBR2AGK5H9QBDH3EEN6DF8EK8JY7RX8QJ5SVTE.send-many-memo?chain=mainnet\n\nEXAMPLES\n  $ stx-bulk-transfer send-many-memo-safe STADMRP577SC3MCNP7T3PRSTZBJ75FJ59JGABZTW,100,hello ST2WPFYAW85A0YK9ACJR8JGWPM19VWYF90J8P5ZTH,50,memo2 -k my_private_key -n testnet -b\n```\n\n_See code: [src/commands/send-many-memo-safe.ts](https://github.com/stacks-network/send-many-stx-cli/blob/v3.0.0/src/commands/send-many-memo-safe.ts)_\n\n## `stx-bulk-transfer validate-address [ADDRESS]`\n\nValidates whether the input is a valid STX address for the provided network.\n\n```\nUSAGE\n  $ stx-bulk-transfer validate-address [ADDRESS] [-n mocknet|testnet|mainnet] [-v]\n\nARGUMENTS\n  ADDRESS  The address to validate\n\nFLAGS\n  -n, --network=\u003coption\u003e  [default: mainnet] Which network to check for\n                          \u003coptions: mocknet|testnet|mainnet\u003e\n  -v, --verbose           Print error information for invalid addresses\n\nDESCRIPTION\n  Validates whether the input is a valid STX address for the provided network.\n\nEXAMPLES\n  $ stx-bulk-transfer validate-address SP000000000000000000002Q6VF78 -n mainnet\n```\n\n_See code: [src/commands/validate-address.ts](https://github.com/stacks-network/send-many-stx-cli/blob/v3.0.0/src/commands/validate-address.ts)_\n\u003c!-- commandsstop --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstacks-network%2Fsend-many-stx-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstacks-network%2Fsend-many-stx-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstacks-network%2Fsend-many-stx-cli/lists"}