Skip to content
Bitrequest edited this page Jan 31, 2026 · 15 revisions

Bitrequest: Accept crypto anywhere

Over a decade after the creation of Bitcoin there are still very few places accepting cryptocurrencies.
Nobody accepts crypto, because nobody pays with crypto. Nobody pays with crypto, because nobody accepts crypto.
This is known as the chicken and egg problem.

The few places that accept cryptocurrencies often don't offer a very user-friendly experience.
Bitrequest's goal is to take the egg out of the equation, by making the process of accepting cryptocurrencies as easy and user-friendly as possible.


1. About

Bitrequest is an application for accepting cryptocurrencies.
The application generates payment requests which can be used as:

  • Point of Sale
  • Shared with WhatsApp, SMS, email, etc.
  • E-commerce checkouts

Supported Cryptocurrencies

Currency Address Formats Special Features
Bitcoin Legacy (1...), SegWit (bc1q...) xpub/zpub derivation
Lightning BOLT11 invoices LND, LNbits, Core Lightning REST, LNURL, Boltcard/NFC
Litecoin Legacy (L...), SegWit (ltc1q...) Ltub derivation
Ethereum EIP-55 checksum (0x...) ERC-20 tokens
Ethereum L2 Same as ETH Base, Arbitrum One, Polygon PoS, BSC
Monero Standard & subaddresses View key scanning, stealth addresses
Kaspa kaspa:q... (40-bit bech32) kpub derivation
Bitcoin Cash CashAddr (bitcoincash:q...)
Dogecoin Legacy (D...) dgub derivation
Dash Legacy (X...) InstantSend support
Nano nano_... Instant, feeless
Nimiq NQ... Browser-native

Bitrequest was built as a non-profit project by XpressZo with the goal of wider crypto adoption.
Donations are welcome.

Goals

  • Wider crypto adoption
  • Improving and maintaining Bitrequest

2. Payment Requests

Payment requests (bitrequests) consist of:

  • Cryptocurrency address input
  • Amount input (in fiat or crypto)
  • URI (Uniform Resource Identifier)
  • QR-code (encoded URI)

Amounts in fiat are converted to the equivalent in crypto in real-time.
The QR-code is an encoded URI consisting of app-protocol, address, and amount and can be scanned by most crypto wallet apps. Opening the URI or scanning the QR-code with a crypto wallet will autofill the wallet's send dialog with the corresponding address and amount (if supported).

Supported URI Schemes

Currency URI Scheme Example
Bitcoin bitcoin: bitcoin:bc1q...?amount=0.001
Lightning lightning: lightning:lnbc...
Ethereum ethereum: ethereum:0x...?value=1e18
Monero monero: monero:4...?tx_amount=0.1
Kaspa kaspa: kaspa:qp...?amount=100
Litecoin litecoin: litecoin:ltc1q...?amount=0.5

Supports Lightning invoices (BOLT11/LNURL) and NFC/Boltcard taps.


3. Request Feedback (Notifications)

When the QR-code is visible, a WebSocket connection is opened in the background that listens for incoming transactions on the request address. When incoming transactions are detected, the request status changes to 'paid' or 'pending', depending on the number of selected confirmations.

Monitoring Methods

Method Used For Providers
WebSocket Real-time notifications BlockCypher, mempool.space
Polling Fallback monitoring Various block explorers
Node RPC Direct scanning Electrum, personal nodes
View key scanning Monero privacy Remote nodes, LWS

Supports zero-conf and InstantSend for instant feedback on small payments.


4. Sharing Requests

Each request has a unique URL which can be shared with WhatsApp, SMS, email, etc.
Bitrequest has a built-in share function which opens your device's share dialog and automatically shortens the URL (optional).

Requests include metadata:

  • Title and description (BIP21)
  • Fiat amount and currency
  • Timestamp for rate locking

5. Crypto Addresses

Addresses can be added:

  • Manually — With QR scanning support
  • BIP39 seed phrase — 12 word mnemonics
  • Extended public keys — xpub, zpub, Ltub, dgub, kpub

HD Wallet Derivation Paths

Currency Path Extended Key
Bitcoin SegWit m/84'/0'/0'/0/ zpub
Bitcoin Legacy m/44'/0'/0'/0/ xpub
Litecoin SegWit m/84'/2'/0'/0/ zpub
Litecoin Legacy m/44'/2'/0'/0/ Ltub
Ethereum m/44'/60'/0'/0/ xpub
Kaspa m/44'/111111'/0'/0/ kpub
Dogecoin m/44'/3'/0'/0/ dgub
Dash m/44'/5'/0'/0/ xpub
Bitcoin Cash m/44'/145'/0'/0/ xpub

Multiple addresses can be added per cryptocurrency.
Priority can be set by dragging addresses or selecting randomly for enhanced privacy.

Special Address Features

  • Monero — View keys for scanning incoming transactions without spend capability
  • Lightning — LND/LNbits/Core Lightning REST node connections with invoice generation
  • Kaspa — Native kpub support with 40-bit bech32 checksum addresses

6. Request Overview and Status

Bitrequest saves all shared and received requests and monitors their status by scanning the blockchain.

Features include:

  • Transaction history with confirmations
  • Receipts (PDF/shareable)
  • Archive/unarchive functionality
  • Filtering by address, status, or date range
  • CSV export for accounting

7. Settings

7.1 Account Name

Set your name or company name. Recipients will see this name on their request.

7.2 Contact Form

When Bitrequest is integrated in a webshop, this form can be used to provide billing/shipping information.

7.3 Local Fiat Currency

Set your country's local currency or one of 170+ world currencies.

7.4 Cryptocurrency Price API

Choose where Bitrequest gets its crypto exchange rates from:

Automatic fallback between providers if one fails.

7.5 Fiat Price API

Choose where Bitrequest gets its fiat exchange rates from:

7.6 URL Shortener

When sharing a request, URLs can be shortened:

  • Bitly
  • Bitrequest's built-in URL shortener
  • Or disable URL shortening

See Bitrequest's Privacy Policy.

7.7 Backup

Bitrequest saves all data on your device. Clearing device storage will lose all data.

Backup options:

  • JSON file download — Manual backup
  • Google Drive sync — Automatic backup on every change

See Bitrequest's Privacy Policy.

7.8 Restore from Backup

Restore data from a previous backup or import from a different device.

7.9 Security

Mode Access Level
Admin Full access with PIN
Cashier View-only, create requests only

PIN protection prevents unauthorized address changes or viewing sensitive request details.

7.10 API Keys

Enter your own API keys for dedicated quotas. By default, Bitrequest's shared API keys are used, which may reach limits under heavy usage.


8. Technical Details

Bitrequest is a Progressive Web Application (PWA).
~98% of the code runs client-side in the browser.
Programming language: JavaScript (vanilla JS, minimal jQuery).
The source code is 100% open-source: GitHub.

8.1 Architecture

┌─────────────────────────────────────────────────────────┐
│                    Client (Browser/PWA)                  │
├─────────────────────────────────────────────────────────┤
│  UI Layer          │  Crypto Layer      │  Data Layer   │
│  - Request forms   │  - BIP39/BIP32     │  - IndexedDB  │
│  - QR generation   │  - Address gen     │  - LocalStorage│
│  - Status display  │  - Tx scanning     │  - Google Drive│
└────────┬───────────┴─────────┬──────────┴───────┬───────┘
         │                     │                  │
         ▼                     ▼                  ▼
┌─────────────────┐  ┌─────────────────┐  ┌──────────────┐
│   API Proxy     │  │  Block Explorers │  │ Personal     │
│ app.bitrequest  │  │  WebSocket APIs  │  │ Nodes        │
└─────────────────┘  └─────────────────┘  └──────────────┘

8.2 Pure JavaScript Crypto Implementations

Bitrequest implements complex cryptographic protocols in pure JavaScript to maintain a minimal footprint (~877KB zipped total):

Implementation Description Replaces
BIP39/BIP32 HD wallet derivation, mnemonic handling bitcoinjs-lib (~200KB)
secp256k1 Elliptic curve operations, key derivation elliptic.js (~100KB)
Monero Crypto Ed25519, view key scanning, stealth addresses monero-javascript (~7MB)
Kaspa Bech32 40-bit checksum variant, kpub encoding kaspa-wasm (~7MB)
Keccak256 Ethereum address derivation js-sha3 (~15KB)
CashAddr Bitcoin Cash address encoding

8.3 Standalone Libraries

These implementations are available as standalone libraries for other projects:

Library Description Link
bip39-utils-js BIP39/BIP32 HD wallet utilities GitHub
crypto-utils-js Low-level crypto (secp256k1, hashing, encoding) GitHub
xmr-utils-js Monero cryptographic utilities GitHub

8.4 API Proxy

A small PHP proxy handles caching and API calls: proxy source.

API calls are proxied through app.bitrequest.io by default, enabling out-of-the-box usage without personal API keys.

For self-hosting:

  1. Configure host in config.js
  2. Provide your own API keys in config.php

Proxy features:

  • Multi-API fallbacks
  • TOR support
  • Response caching to reduce rate limits

8.5 API Keys

All API keys in the GitHub repository are left blank to prevent misuse. Users can:

  • Use Bitrequest's shared keys (default, may hit rate limits)
  • Enter personal keys in app settings

9. Node Connections

Connect to remote or local nodes for direct transaction scanning and enhanced privacy.

Supported Node Types

Currency Node Type Protocol
Bitcoin/Litecoin Electrum TCP/SSL
Ethereum JSON-RPC HTTP/WebSocket
Ethereum L2 JSON-RPC HTTP/WebSocket
Monero Remote Node / LWS HTTP
Lightning LND REST API
Lightning LNbits REST API
Lightning Core Lightning REST API (CLNRest)

Lightning Configuration

Feature LND LNbits Core Lightning
Invoice generation
Payment monitoring
LNURL support
Boltcard/NFC

Ethereum RPC Providers

  • Infura
  • Alchemy — Includes enhanced APIs for L2 networks
  • Custom RPC endpoints

10. Coin Settings

10.1 Confirmations

For Proof-of-Work coins, set minimum confirmations before status changes to 'paid':

Risk Level Confirmations Use Case
High risk 0 (zero-conf) Coffee, small items
Medium 1-2 Standard purchases
Low risk 3-6 Large payments

Dash InstantSend and Nano provide instant finality without confirmation wait.

10.2 Monero View Keys

Monero requires a private view key to scan for incoming transactions while maintaining sender privacy. Bitrequest scans:

  • Standard addresses
  • Subaddresses
  • With view tag optimization for faster scanning

10.3 Kaspa Configuration

Kaspa uses a unique address format:

  • Derivation path: m/44'/111111'/0'/0/
  • Extended keys: kpub (0x038f332e) / kprv (0x038f2ef4)
  • Address format: kaspa:q... (67 characters)
  • Checksum: 8-character (40-bit) vs Bitcoin's 6-character

Compatible with KasWare and Kaspium wallets.


11. General Features

11.1 Historical Exchange Rates

When a request is sent in fiat currency, time passes between sending and payment. Due to crypto volatility, Bitrequest:

  1. Records the exchange rate at request creation
  2. Fetches the rate at payment time via CoinGecko/CoinPaprika historical APIs
  3. Compares received amount against original fiat value
  4. Displays any over/underpayment

Rates are cached client-side for efficiency.

11.2 Webshop Integration

Bitrequest can be used as a checkout for e-commerce websites.

Features:

  • Multi-chain support
  • Lightning payments
  • Real-time status callbacks
  • Customizable UI

12. Native Apps (iOS and Android)

Bitrequest is available on:

These native apps are wrappers for the PWA bitrequest.github.io, providing:

  • Consistent experience across browsers
  • Native sharing
  • App store discoverability

13. Test Suites

Interactive test suites for verifying crypto implementations:


14. Privacy / Disclaimer

Privacy / Disclaimer


15. Terms and Conditions

Terms and Conditions