I am building a payment processing service where a single payment may be split among multiple individuals. While it would be possible for me to write the service in such a manner that a customer pays to a single address, and then an secondary process creates the single-input-many-output transaction, it would be preferable if I could simply request that the transaction signed by the customer directly produce the desired outputs.

Is there any standard way to create such a payment request? Bitcoin URLs allow only a single address (and single amount) to be specified. Is there a way to create a partially complete transaction (specifying multiple outputs) in such a way that a customer's wallet software can correctly choose and fill in the appropriate UTXOs for inputs, and add an another output for the change?

Barring that, is there any precedent (and convenient method) for asking customers to provide UTXOs to use as inputs, and then generate the transaction for them to sign? I know that all this would be achievable if I were to provide custom wallet software, but that's certainly something I wish to avoid if possible.


I've found https://github.com/bitcoin/bips/blob/master/bip-0070.mediawiki, which seems to be close to what I want; how widely supported is this protocol?


It appears that the Payment Protocol is, indeed, what I want, and it is relatively widely supported according to this comparison page: https://bitpay.com/docs/wallets

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.