Welcome to BEM - Bitcoin Ecash Mint

BEM is a proof-of-concept project that converts Cashu bearer tokens, also known as Ecash, into paper notes, also known as cash.

https://bem.taylorperron.com/scanner
Click above for the BEM Scanner. See the “Yes but how to these notes work?” question below for installation and usage instructions.

BEM Ecash notes look like this:
BEM 1000sats example
BEM 5000sats example

FAQ:

Here is an intro video to get you started.

“But wait, isn’t printing currency illegal?” Yes, printing currency is very illegal, and if we did that we’d go to jail for a very long time. Our process does not create currency at any point, it only converts Bitcoin from one medium to another. The Government of Canada (the jurisdiction in which we’re domiciled) does not recognize Bitcoin as currency. We never touch Canadian Dollars or any foreign currency. We also never touch your Bitcoin, only our own.

“How much are these notes worth? I have no idea what a “satoshi” is.” “Satoshis” are the smallest unit of Bitcoin possible, and are named after the original inventor of Bitcoin, Satoshi Nakamoto. They’re sometimes abbreviated to “sats”.
As of :
1000 satoshis is worth
5000 satoshis is worth
Obviously it would be a pain to have to check the CAD value any time someone wanted to use Bitcoin, so vendors are encouraged to post prices in Bitcoin, usually rounded to the nearest 1000 satoshis for convenience. Many will also offer a discount for paying with Bitcoin! For example, Standing Spoon charges 3000 satoshis for a 24oz cold-brew coffee which is currently a discount of !

“How do these notes work?” Use them exactly the same as you would fiat cash. Most people use them to buy things, pay for services, tip those who provide extra or excellent service, or as gifts.

“Yes but how do these notes work? I see QR codes but the only one my phone will scan is the one that takes me to this website!
Also, how do I know someone hasn’t exchanged the token and is trying to scam me?”
There are two functional parts; verification and exchanging. Both require the use of the BEM scanner app. On your phone, go to https://bem.taylorperron.com/scanner and “share” the page, then choose “Add to home screen” (Android and iOS). This will add a special shortcut to the scanner app without the need to install it. Open the shortcut and allow access to your camera.
Verification: Scan the “VERIFY” QR on your cash to make sure the Cashu token hasn’t been exchanged (which will render the cash note without Bitcoin value).
Exchange: If your cash has been damaged, or if you want to trade the token back in for digital Bitcoin, switch the scanner app to exchange mode and scan the “EXCHANGE 1” QR. When prompted, turn the cash over and scan the “EXCHANGE 2” QR. The token will be copied to your phone’s clipboard and can be pasted into a Cashu wallet of your choosing. (You’ll need to add the Coinos mint at mint.coinos.io to your wallet first as this is the mint we used to exchange Bitcoin for the Cashu tokens.) Once this is done the note will no longer have any Bitcoin value and should either be destroyed, or the QR codes written over / blacked out to indicate so.

Nerd stuff:

“Why a cash version of Bitcoin?” Many reasons. Your grandma will probably never run a hot wallet on her smartphone (if she even has a smartphone?). For small purchases in predominately offline spaces (like a coffee or snack at a farmers/street market). For gifts where physical form is part of the experience (like cash in a birthday card or money/gift box at a wedding). As a vehicle for art (a Madex series would go incredibly hard 👀). And also because I wanted to; “you can just do things”.

“Who’s going to run note mints? It’s costly and labour-intensive!” If this concept becomes popular, probably Lightning node and Cashu mint operators, exchanges, or other medium-to-large companies in the Bitcoin space. They won’t do it as a profitable standalone venture; aside from collector’s pieces most people won’t be willing to pay a fee for notes. It’ll be more of an advertising or goodwill program. Given the level of trust involved most strangers or vendors probably wouldn’t accept notes from “Honest Bob’s Totally Legit Ecash Mint” or your personal Uncle Jim without extra scrutiny, which they may not feel is worth the effort. Recognizable brands or companies will have more “social currency”.

“Why Cashu?” Paper Bitcoin wallets used to be a thing; I have a few that I made and used in 2016 framed on my wall. In theory you could split a private key into the EXCHANGE spots, the public into the VERIFY, and have on-chain cash. In today’s Bitcoin world the potential fees wouldn’t make sense for a 1000 satoshi (or smaller!) note. Higher layers and protocols are made for this. As far as I know Cashu is the only one that does bearer tokens. You could probably do something like claimable single-use receipts directly with Lightning, and maybe something similar with Liquid, but anything I was able to come up with felt hack-y in comparison.

“But Cashu isn’t real Bitcoin!” I agree, Cashu isn’t Bitcoin. In this debate I’d describe it as a custodial, offline-capable Lightning authorization transfer protocol. It adds a whole ‘nother layer on top of Lightning, which is already another layer on top of Bitcoin. In fact, I’ve seen some good arguments for Lightning not being “real” Bitcoin either.

“You said Cashu isn’t Bitcoin, so why are you calling these notes Bitcoin?” For the same reason we treat cheques as a form of money. A cheque is technically just a paper form authorizing the receiving bank to initiate a transfer from the sending bank. The base layer is the bank’s general ledgers, maintained by the bank’s core banking systems. If you want to go another layer of abstraction beyond, things like derivatives, asset-backed securities, and commercial paper or certificates of deposit are also considered money. Cashu is similar to this; the tokens authorize Lightning transfers from the mint, which are themselves entries in abstracted ledgers (Lightning nodes), which are used to authorize transactions on the Bitcoin blockchain. Cheques aren’t Dollars and Cashu tokens aren’t Bitcoin, but they’re denominated as such and can be walked down the layers to the base, so we call them the same out of convenience.

“I don’t trust Cashu and/or mints.” Lightning has some cool tech that lessens the trust involved in using it. But Cashu takes the trust required to a much higher level. Cashu mints have the undeniable ability to rug you at any time, and anyone minting these Ecash notes has the same ability. You’re also not just trusting their honesty, you also have to trust their technical abilities as a compromise of their systems (some of which may be live on the public internet 24/7! (see more on this below)) could lead to all their cash notes in circulation being stolen all at once. This is why Cashu tokens and these Ecash notes only make sense to use in small amounts; amounts so small that it’s not worth the effort it would take compromise the systems involved. At current exchange rates I don’t plan on issuing denominations larger than 5000 sats, and probably no more than 100,000 sats total across all notes.
Side note: As dollars approaches zero value it will make sense to phase those denominations out in favour of smaller ones, maybe even as little as 50, 20, or 10 sats. I picked 5000 sats as my largest denomination as a round number and what would get you a basic sandwich at a coffee shop. Any amount larger would push the trust boundaries (see the many retail locations that don’t accept $50 or $100 bills) and would make more sense to do with Lightning anyways. If 20 sats gets you the same sandwich in 2030, 20 sats will be the largest denomination I’ll print that year.

Technical Stuff:

Ecash note creation process There are two ways one could go about creating these notes; what I consider the “proper” way I imagine most mints will use if this concept becomes popular, and the shortcut or poverty way I used for this proof-of-concept. As noted below, DO NOT USE THE POVERTY WAY IN PRODUCTION. THIS IS PROOF-OF-CONCEPT ONLY.
Proper way: To minimize the external trust involved, run your own Bitcoin node, Lightning node, and Cashu mint. Create a scanner app and management server. Design note templates for different denominations and series. Mint Cashu tokens, generate QRs and serials, insert them into the templates, print, and distribute. The scanner app scans the VERIFY QR, contacts the management server with the hash, and the management server checks the melt status of the token with the Cashu mint (the management server has wallet-like, properly secured records of all tokens / notes in circulation). At a certain scale you’ll probably also build yourself a nice internal font-end portal for your management server and maybe even automate the creation of ready-to-print sheets of notes (probably encrypted PDFs?). See the following flow chart for a visualization:

proper way flowchart

Poverty way: When I first started working on this project my intention was to do the above, but ran into an issue setting up the Lightning node. The last time I self-hosted a Lightning node a channel could be opened with 100,000 sats, which at the time would have totalled less than $1000CAD for a reasonably well-connected personal node. The minimum now seems to be 1,000,000 sats per channel, which currently amounts to closer to $10,000CAD for a similarly functional node. I don’t have that kind of liquidity lying around for a proof-of-concept project like this, so I nuked the Bitcoin and Lightning nodes I’d spent weeks syncing and decided to cheat.
A side note: I see this restriction as a good thing. Anyone with the liquidity to self-host and fund these nodes isn’t going to try to rug the $1000-$5000 in Ecash notes they’ll most likely print. Even if they minted 9999 5000 sat notes (highly unlikely), that’s still only $75,000CAD at today’s exchange rates, and labour costs alone to mint and circulate that many notes would destroy most of their ill-gotten profits. I digress.
For BEM I used Coinos to send Ecash to my Macadamia wallet (connected to the Coinos Cashu mint), then minted tokens one-at-a-time, split them and created the EXCHANGE QRs for insertion into my templates. The scanner app contacts the management server to have it check the mint status, but not wanting to potentially bombard the Coinos service with requests from an experimental system they don’t own or control, I have the management server check a simple JSON list of hashes I manually manage. THIS IS VERY BAD AND YOU SHOULD NOT DO THIS. I REPEAT, DO NOT DO THIS IN PRODUCTION. THIS IS NOT VERIFICATION BY ANY DEFINITION, AND IF YOU DO THIS YOU WILL BE CHEATING AND LYING TO YOUR USERS. DO. NOT. DO. THIS. See the following flow chart for a visualization of my cheating and lying:

poverty way flowchart

Lifecycle of an Ecash note Here’s a high-level flow chart showing the lifecycle of an Ecash note from the Bitcoin blockchain to note and back again.

ecash lifecycle flowchart

Suggested Specifications I considered writing this section as a Cashu NUT and submitting it, but none of these things require changes to the protocol and don’t require anything special from the Cashu mint being used. Ecash notes will most likely remain a standalone product without any official specs.
Serial number format: Three letter mint abbreviation in upper-case, three digit series number, and four digit note number, separated by dashes. Example: BEM-001-0001
Ecash notes size: Notes should be the same physical size as your local fiat bank notes for convenient compatibility with wallets and other money-holding accessories and tools.
Token split: The Cashu token should be split evenly between the EXCHANGE 1 & 2 QRs for both security and to lower the density of the of the QRs. EXCHANGE 1 & 2 should be printed on opposite sides to combat malicious or “shoulder surfing” scanning.
QR size: The VERIFY and EXCHANGE QRs should be at least 30mm squared to make scanning as struggle-free as possible.
QR error correction: QRs should be generated using error correction Level H to combat data loss due to note damage.
Token version: Tokens should be V4 as they’re shorter and make for less-dense QRs.
VERIFY data: VERIFY QRs should used a hashed version of the serial number to combat enumeration attacks.
Ecash note elements:



Nostr iconYou can contact Taylor on Nostr @tnperron


© 2025 Taylor Perron