Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 1,000,000+ packages pre-installed, including stellar-qr with all npm packages installed. Try it out:

var stellarQr = require("stellar-qr")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

stellar-qr v0.0.5

QR code generation rules for different stellar wallets

Stellar QR generator

This package is intended to fill current vacuum in the area of payment link generation and QR codes.

There were multiple attempts to come up with standard way of generating payment links and QR codes:

But decision have never been made and as a result nobody is really using Stellar for payments (it's hard and inconvenient for users to enter manually address + memo) and many services in Stellar ecosystem ask user for secret key, which is a very bad practice and must be eradicated.

How it works

Require this package into your project

npm i --save stellar-qr

Then use it in your code

const StellarQr = require('stellar-qr');

const wallets = StellarQr.wallets(); 
// returns list of wallets with support for QR codes

Currently returns:

  • Centaurus (QR code doesn't support memo, simply encodes public address)
  • Stargazer (QR code contains JSON structure with required fields)
  • Papaya (uses Stargazer format)
  • StellarKey (Builds transaction envelope, which is ready to be signed, but requires sourceAccount parameter, so you must ask user for his address first)

Then you offer user to choose wallet they are using and generate QR code for it:

const StellarQr = require('stellar-qr');
const link = StellarQr.getStellarLink({
  wallet: 'stargazer',
  accountId: '',
  amount: '0.01',
  assetCode: 'BTC',
  memoType: 'text',
  memo: 'KAUOsC3bTU2+V2LwT18vDg=='  
const svgString = StellarQr.getStellarQR(link);

And use svgString to show QR on your payment page


  • wallet - one from the list
  • networkHash - first 8 chars of sha256 hash of stellar network passphrase (7ac33997 - default, for public stellar network, cee0302d for testnet)
  • networkPassphrase - can be provided directly to derive networkHash
  • accountId - required, destination account for payment to be sent to
  • amount - amount of assets to send (optional for stargazer format, useless for centaurus format)
  • memoType - one of id, text, hash, return
  • memo - memo value
  • assetCode - asset code, default is XLM
  • assetIssuer - asset issuer, required if assetCode != XLM
  • sourceAccount - sender account, required for Stellarkey to prepare transaction envelope

You can also use it as frontend widget

<div id="stellar-qr"></div>
<link rel="stylesheet" href="">
<script src=""></script>
    container: document.getElementById('stellar-qr'), 
    sourceAddress: userStellarAccount, // needed only for StellarKey 
    amount: 123, 
    currency: 'XLM', 
    destinationAddress: yourStellarAccount, 
    memoType: 'TEXT', 
    memo: 'orderNumber'


RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free