Skip to content

URI Scheme

The Algorand URI specification defines a standardized format for applications and websites to encode transaction requests and wallet information in URIs. These URIs can be used in deeplinks, QR codes, and other interfaces. The specification is based on Bitcoin’s BIP-0021 to maintain familiarity and compatibility with existing systems.

Specifications

General format

Algorand URIs follow the general format for URIs specified in RFC 3986. The path component consists of an Algorand address, and the query component provides additional payment options.

Elements of the query component may contain characters outside the valid range. These must first be encoded according to UTF-8, and then each octet of the corresponding UTF-8 sequence must be percent-encoded as described in RFC 3986.

ABNF Grammar

algorandurn = "algorand://" algorandaddress [ "?" algorandparams ]
algorandaddress = *base32
algorandparams = algorandparam [ "&" algorandparams ]
algorandparam = [ amountparam / labelparam / noteparam / assetparam / otherparam ]
amountparam = "amount=" *digit
labelparam = "label=" *qchar
assetparam = "asset=" *digit
noteparam = (xnote | note)
xnote = "xnote=" *qchar
note = "note=" *qchar
otherparam = qchar *qchar [ "=" *qchar ]

Here, qchar corresponds to valid characters of an RFC 3986 URI query component, excluding the = and & characters, which this specification takes as separators.

The scheme component algorand: is case-insensitive, and implementations must accept any combination of uppercase and lowercase letters. The rest of the URI is case-sensitive, including the query parameter keys.

Query Keys

  • label: Label for that address (e.g. name of receiver)

  • address: Algorand address (if missing, sender address will be used as receiver.)

  • xnote: A URL-encoded notes field value that must not be modifiable by the user when displayed to users.

  • note: A URL-encoded default notes field value that the the user interface may optionally make editable by the user.

  • amount: microAlgo or smallest unit of asset

  • asset: The asset id this request refers to (if Algo, simply omit this parameter)

  • otherparam: optional, for future extensions

Transfer Amount/Size

If an amount is provided, it MUST be specified in the basic unit of the asset. For example, if it’s Algo (Algorand’s native token), the amount MUST be specified in microAlgo. All amounts MUST be non-negative integers and MUST NOT contain commas or decimal points.

Examples:

  • 100 Algo = 100000000 microAlgo
  • 54.1354 Algo = 54135400 microAlgo

Algorand clients should display amounts in whole Algo by default. When needed, microAlgo can be shown as well, but the units must always be clearly indicated to the user.

Appendix

This section contains several examples

  • Address

    algorand://TMTAD6N22HCS2LKH7677L2KFLT3PAQWY6M4JFQFXQS32ECBFC23F57RYX4
  • Address with label

    algorand://TMTAD6N22HCS2LKH7677L2KFLT3PAQWY6M4JFQFXQS32ECBFC23F57RYX4?label=Silvio
  • Request 150.5 Algo from an address

    algorand://TMTAD6N22HCS2LKH7677L2KFLT3PAQWY6M4JFQFXQS32ECBFC23F57RYX4?amount=150500000
  • Request 150 units of Asset ID 45 from an address

    algorand://TMTAD6N22HCS2LKH7677L2KFLT3PAQWY6M4JFQFXQS32ECBFC23F57RYX4?amount=150&asset=45
  • Opt-in request for Asset ID 37

    algorand://?amount=0&asset=37