Library to parse and generate Bitcoin payments URI.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Build Status Carthage Compatible

BitcoinPaymentURISwift is an open source library to handle the Bitcoin payment URI based on the BIT 21. The purpose of this library is to provide a simpler way to the developers to integrate in their applications support for this URI Scheme to easily make payments.


Carthage is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks.

You can install Carthage with Homebrew using the following command:

$ brew update
$ brew install carthage

To integrate BitcoinPaymentURISwift into your Xcode project using Carthage, specify it in your Cartfile:

github "SandroMachado/BitcoinPaymentURISwift" ~> 1.0.0

Run carthage update to build the framework and drag the built BitcoinPaymentURI.framework into your Xcode project.



Parse the URI bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=50&label=Luke-Jr&message=Donation%20for%20project%20xyz.

guard let bpuri = BitcoinPaymentURI.parse("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=50&label=Luke-Jr&message=Donation%20for%20project%20xyz") else {

bpuri.address? \\ 175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W
bpuri.amount? \\ 50
bpuri.label? \\ "Luke-Jr"
bpuri.message? \\ "Donation for project xyz"
bpuri.parameters?.count \\ 0

Generate the following URI bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?label=Luke-Jr&foo=bar&amount=50.0&message=Donation%20for%20project%20xyz&req-fiz=biz

let bpuri: BitcoinPaymentURI = BitcoinPaymentURI(build: {
            $0.address = "175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W"
            $0.amount = 50.0
            $0.label = "Luke-Jr"
            $0.message = "Donation for project xyz"

            var newParameters: [String: Parameter] = [:]

            newParameters["foo"] = Parameter(value: "bar", required: false)
            newParameters["fiz"] = Parameter(value: "biz", required: true)

            $0.parameters = newParameters