It’s a reasonable thing to wonder about. QR codes look like black-and-white noise — how do you know what’s actually encoded in one? Could someone tamper with it? Could a bug in the app redirect your customer’s payment to a different wallet?

These are good questions, and the answers are reassuring. Here’s exactly how OrangeTill’s QR codes work — from the moment you tap “Generate” to the moment a payment lands in your wallet.

Hodl says
A QR code is just a picture of text. The address encoded in it comes directly from your Settings — no server in the middle, no one else touching it. If your Settings show the right address, the QR code shows the right address. Every single time.

What a QR code actually is

A QR code is not a link to a server. It’s not a live request that gets processed somewhere in the cloud. It’s simply a visual encoding of a text string — like a barcode, but two-dimensional and capable of holding more information.

When OrangeTill generates a Bitcoin QR code for a $10.00 payment, the QR code encodes a string that looks exactly like this:

Example Bitcoin payment URI

bitcoin:bc1qYOURADDRESS?amount=0.00014165

This is called a BIP21 payment URI — a standard format that every Bitcoin wallet app understands. It tells the customer’s wallet: here is the address to send to, here is the amount. The customer’s wallet reads it, pre-fills the send screen, and the customer confirms.

For Ethereum and other coins, similar URI standards exist. For Lightning Network, the Lightning address or LNURL is encoded directly. All of them follow open, publicly documented standards.

Where does the address in the QR code come from?

This is the most important part. The wallet address encoded in every OrangeTill QR code comes from one place only: your Settings.

When you save your wallet address in OrangeTill Settings, it is stored locally on your device — in your browser’s localStorage, which is private to your device and your account. When you tap “Generate QR Code,” OrangeTill reads that saved address and encodes it directly into the QR image. The entire process happens on your device. No address travels to a server to be “processed” or “approved.” No third party touches it.

There is no OrangeTill wallet that sits between you and your customer. There is no address substitution. What you saved is what gets encoded. What gets encoded is what the customer’s wallet sees. What the customer’s wallet sees is where the payment goes.

How a QR code gets generated — step by step
1
You save your wallet address in Settings
Stored locally on your device in localStorage — private to you
2
You enter an amount and tap "Generate QR Code"
OrangeTill reads your saved address and the amount you entered
3
OrangeTill builds a payment URI on your device
e.g. bitcoin:YOUR_ADDRESS?amount=0.00014 — entirely local, no server involved
4
A QR code image is rendered from that URI
Using an open-source QR library — the image is generated on your screen
5
Customer scans the QR code with their wallet app
Their wallet reads the URI, pre-fills your address and the amount
6
Customer confirms and sends
Payment travels directly on the blockchain to your wallet — OrangeTill never touches it

Can the QR code be tampered with?

For a QR code generated by OrangeTill to contain the wrong address, one of the following would have to be true:

What cannot happen: a random person intercepts the QR code generation process and substitutes their address. There is no network request during QR generation that could be intercepted. The code is built entirely on your device from your locally stored data.

The wallet address shown below the QR code is your safeguard. OrangeTill always displays your wallet address as readable text directly below the QR code. Before every transaction, you — and the customer, if they wish — can visually confirm that the address matches what you have saved. If it looks right, it is right.

How to verify a QR code yourself

You don’t have to take our word for it. You can verify exactly what any QR code encodes using any free QR scanner app — just point it at the code and read the text. It will show you the exact URI that the customer’s wallet will receive.

For extra confidence when setting up OrangeTill for the first time:

  1. Save your wallet address in Settings
  2. Generate a test QR code for a small amount — $0.01 works
  3. Scan the QR code yourself with a separate QR reader app
  4. Confirm the address in the decoded text matches your wallet address exactly

If it matches — and it will — you have independently verified that OrangeTill is encoding your address correctly. This one-time check takes about 60 seconds and gives you complete confidence going forward.

Hodl says
“Don’t trust, verify” is a Bitcoin principle that applies here too. The 60-second self-verification test isn’t paranoia — it’s just good practice when you’re setting up any new payment system. Do it once, sleep easy forever.

What about QR code scams in general?

QR code fraud does exist in the wild — but it works very differently from what most people imagine. The common attack is called QR code replacement: a bad actor physically sticks a printed QR code sticker over a legitimate one in a public place — a parking meter, a restaurant table, a poster. The fake QR code points to a phishing site or a fraudulent wallet address.

This has nothing to do with the software generating the QR code — it’s a physical attack on a printed or displayed code. The defense is the same as it is for OrangeTill: look at the wallet address displayed alongside the code. If the address is visible and matches what you expect, the code is legitimate.

For OrangeTill specifically, this attack vector doesn’t apply because:

“The address is always visible. If it looks right, it is right.”

The bottom line

OrangeTill QR codes are generated locally on your device, from your saved wallet address, with no server in the middle. The address encoded in the QR code is the address in your Settings — nothing more, nothing less. The wallet address is always displayed in plain text alongside the code so you and your customer can verify it at a glance.

The risk of an erroneous QR code is not zero — but the risks that exist are the same ones that apply to any digital tool: saving the wrong address in the first place, or having a compromised device. Both of those risks are fully within your control, and both have simple mitigations.

Common questions

Does OrangeTill ever have access to the funds being sent? ▼
Never. OrangeTill displays QR codes and wallet addresses. It has no wallet of its own, no ability to receive or hold funds, and no involvement in the actual transaction. The payment travels directly on the blockchain from the customer’s wallet to yours. OrangeTill is never in that path.
What happens if I accidentally save the wrong wallet address? ▼
Every QR code generated until you correct it will encode the wrong address. Any payments made to that address go to wherever the wrong address leads — potentially an address you don’t own, in which case those funds are unrecoverable. This is why verifying your wallet address carefully when setting up OrangeTill is essential. Always paste directly from your wallet app rather than typing manually, and do the 60-second QR verification test described above.
Can my customer see what address they’re sending to before they confirm? ▼
Yes — every modern wallet app displays the destination address on the send confirmation screen before the customer finalizes the transaction. The customer can verify it matches the address shown in OrangeTill. This is a natural double-check built into the payment flow at the customer’s end.
Is the QR code different every time I generate one? ▼
The wallet address portion stays the same — it’s always your saved address. The amount portion changes based on what you enter. So two QR codes for different amounts will look visually different even though they point to the same wallet. This is expected and correct behavior.
What if a customer says the QR code sent their payment somewhere else? ▼
Ask them to show you the transaction in their wallet app. It will display the destination address. You can compare that address to the one in your OrangeTill Settings. If they match, the QR code was correct — the issue is elsewhere (possibly the customer sent from the wrong wallet or to an old address). If they don’t match, check your Settings immediately and correct the address. You can also use a blockchain explorer to trace where the transaction actually went.

Simple, transparent, secure.

OrangeTill never touches your funds. Your wallet address, your Bitcoin, your business.

Try OrangeTill Free →