User Manual
Openloop Pay Mini Wallet
Contents
- Introduction
- Requirements
- Connecting a wallet
- Checking balances
- Manage tokens &
networks
- Sending
- Loading a payment from a
QR code
- Switching accounts
- History and CSV export
- dApp integration
(extension only)
- Security
- Troubleshooting
- Specifications
- Contact
1. Introduction
Openloop Pay is a mini wallet that makes stablecoins
easy to use. You can check balances and
send crypto assets. It runs as a browser extension on
your desktop and as a web app on your smartphone.
Supported tokens and networks are EVM chains
(Ethereum and EVM-compatible chains), Bitcoin (the
native BTC currency, §6.6), XRP Ledger,
Solana and TRON. Alongside the
built-in stablecoins (JPYC / USDC / USDT / TUSD / USDD / RLUSD), you can
add other tokens on the EVM chains. See §13 “Specifications” for the
full list.
Your private keys stay inside your Openloop hardware wallet (or the
wallet you connect); Openloop Pay never stores or accesses them
(non-custodial).
Openloop Pay is a companion wallet that holds no
keys of its own. The wallet itself (your keys) lives in your Openloop
device or the wallet you connect over WalletConnect; Openloop Pay only
shows balances and relays transactions for signing. So, unlike wallets
that keep an (encrypted) key in the browser, even if the web app or
extension were compromised, there are no secrets inside to steal.
1.1 Key features
| Feature |
Description |
| Wallet connection |
Connect Openloop over USB / Bluetooth, or connect a supported wallet
via WalletConnect |
| Balances |
View your token balances and your gas (fee) assets |
| Manage tokens & networks |
Choose which token × network to show and send; add and remove
them |
| Sending |
Enter a recipient and amount, then approve with the connected
wallet |
| QR scanning |
Read a payment-request QR code to pre-fill the send form |
| History |
Review send history and export it as CSV |
| dApp integration (extension only) |
Connect to dApps in your browser and approve requested signatures on
your Openloop device |
| Choose which chains to use |
Turn Bitcoin, XRP, Solana and TRON on or off in Settings (EVM is
always on) |
1.2 What you can connect
- Openloop hardware wallet — over USB on a desktop,
or Bluetooth on a smartphone. You review and approve signing on the
Openloop device itself.
- WalletConnect-compatible wallets — Openloop Connect
and other WalletConnect-compatible wallets.
- dApps (browser extension only) — decentralized apps
on the web can request signatures through Openloop Pay. See §10.

2. Requirements
Openloop Pay ships in two forms: a browser extension
(Chrome/Edge only) and a web app
(https://www.crypto.haudi.jp/openloop/pay/app/). Which
connection methods the web app can offer depends on the browser.
2.1 Web-app support matrix
| Environment |
USB (WebHID) |
Bluetooth (BLE) |
Safari-extension bridge |
WalletConnect |
| Desktop Chrome / Edge |
✓ |
– |
– |
✓ |
| Desktop Firefox |
– |
– |
– |
✓ |
| Desktop Safari (macOS) |
– |
– |
✓ (requires the macOS Openloop
Connect) |
✓ |
| Android Chrome / Samsung Internet |
– |
✓ |
– |
✓ |
| Android Firefox |
– |
– |
– |
✓ |
| iPhone / iPad Safari |
– |
– |
✓ (requires iOS Openloop Connect) |
✓ |
| iPhone / iPad Chrome / Firefox / Edge |
– |
– |
– |
✓ |
- ✓ = works / – = not usable
(browser API missing, etc.)
- WalletConnect works everywhere as long as you have a compatible
wallet (e.g. Openloop Connect) at hand.
- Firefox implements neither WebHID nor WebBluetooth, so device access
on Firefox is through WalletConnect.
- Android Chrome exposes a WebHID API in name, but USB-OTG for a
hardware wallet is essentially never available on Android — use BLE
instead.
- macOS Safari has no WebHID / WebBluetooth support,
but with the Safari extension bundled in the macOS Openloop
Connect enabled, it reaches an Openloop device over
USB through that extension (§2.3). WalletConnect remains
available as before (and you must allow pop-ups — see
the note in §3.3).
2.2 Extension version
- Runs on Chrome / Microsoft Edge (Chromium-based).
No Firefox or Safari extension version.
- The extension version connects to Openloop over USB (WebHID) and
also supports dApp integration (§10).
- Only one extension window is active at a time, across the
whole browser. Side panel or full tab, one at a time. Open
Openloop Pay in another window and that one takes over; the previous one
shows “Openloop Pay is open in another window.”
- A window showing a confirmation is never taken
over. While a transfer or signature confirmation is open, a
newly opened window shows “Another window is showing a
confirmation. This one takes over when it finishes.” and waits.
Once the confirmation is done, that window becomes usable
automatically.
- The web app has no such limit — open as many tabs as you like.
2.3 Using Openloop
Pay in Safari (iPhone / iPad / Mac)
Safari does not implement WebHID or WebBluetooth, so it cannot talk
to an Openloop device directly. Enabling the Safari extension bundled
with the Openloop Connect app bridges Safari to the
Openloop device.
| Device |
App to install |
Path to the Openloop device |
| iPhone / iPad |
iOS Openloop Connect |
Bluetooth |
| Mac |
macOS Openloop Connect |
USB |
This manual only covers what Openloop Pay does. For the Openloop
Connect app itself, see the Openloop Connect user manual.
The steps below are for iPhone / iPad.
Setup:
- Install “Openloop Connect” from the App Store
(iPhone / iPad).
- Open Settings → Safari → Extensions.
- Tap Openloop Connect and switch it
On.
- Set Permissions → All Websites to
Allow (recommended). Or grant only
crypto.haudi.jp from the “AA” button
next to Safari’s address bar → Website Settings when
you first open Openloop Pay.
- Reopen Openloop Pay. The connect screen will now
list your Openloop over Bluetooth.
Important — open Openloop Pay in Safari itself, not from a
Home Screen icon. If you use “Add to Home
Screen”, iOS runs the web app in a standalone window
that is isolated from Safari, and Safari extensions do not run
inside it — so the Openloop Connect bridge is unavailable and
Bluetooth appears greyed out. This is an iOS platform
limitation and cannot be fixed by any Safari extension setting. Always
open Openloop Pay from a normal Safari tab
(https://www.crypto.haudi.jp/openloop/pay/app/).
(WalletConnect, §3.3, still works from a Home Screen icon because it
does not need the extension.)
On a Mac the connection is over USB. With the Safari
extension bundled in the macOS Openloop Connect enabled, Safari can use
an Openloop device plugged in over USB (not Bluetooth).
Note that on a Mac without the extension enabled, USB cannot be selected
on the connect screen — use WalletConnect (QR code) instead (§3.3).
The iOS Openloop Connect app also works as a
WalletConnect-compatible wallet (§3.3), independently
of the Safari extension. WalletConnect works whether or not the Safari
extension is enabled.
2.4 QR code reading
- On both smartphone and desktop, the browser needs camera permission.
Some browsers may not support this (see §7).
3. Connecting a wallet
When you open the app, the “Connect a wallet” screen appears. Choose
how to connect.

3.1 Connect over USB (desktop)
- Connect Openloop to your desktop with USB.
- Choose Openloop (USB).
- In the browser’s device chooser, select your Openloop (first time
only).
- Once connected, that account’s balances appear.
▲ Plug in only one
Openloop. If two or more Openloop devices are connected over
USB, the app cannot choose which one to use — so it may show the address
and balances of a device you never picked (this can
happen if, say, a second one is plugged in just to charge). Leave only
the device you want to use plugged in, and unplug the rest.
The browser’s USB device chooser may not open inside the extension’s
side panel. In that case, connect from a full tab. Once you’ve granted
access, it reconnects without the chooser next time.
3.2 Connect over Bluetooth
(smartphone)
- Turn on Openloop and enable Bluetooth.
- Start connecting in the app and pick your Openloop from the
list.
- After pairing, that account’s balances appear.
The name in the list depends on your
environment.
| Environment |
Chooser |
Example |
| Android (Chrome) |
The browser’s own Bluetooth chooser |
Openloop (30:ED:A0:D4:BE:F6) |
| iPhone / iPad (Safari) |
Openloop Pay’s own list |
Openloop-BEF6 |
| (for reference) Openloop Connect app |
The app’s own list |
Openloop-BEF6 |
On Android the browser’s chooser is used, so the
device name appears simply as Openloop; when several are
found the browser appends the Bluetooth address to tell them apart. On
iPhone / iPad, Openloop Pay draws the list itself, so
you see the same Openloop-BEF6 form as in Openloop
Connect.
All of these are the same device. The last four
characters (BE:F6 → BEF6 in the example)
correspond. Use this to tell them apart if you own more than one
Openloop.
3.3 Connect via WalletConnect
- Choose WalletConnect.
- Pick the wallet you want to connect (e.g. Openloop Connect) from the
list, or scan the QR code.
- Approve the connection on the wallet’s side.
Right after connecting, the selected wallet may still be on the
network it used last. If the network isn’t switched
automatically when you send, set the network on the wallet’s side.
WalletConnect with
Bitcoin, Solana and TRON
If the wallet you connect supports Bitcoin, Solana or TRON, you can
send on those chains too, approving in that wallet.
Openloop Connect supports Solana and TRON.
- Only the chains you turned on in settings are
requested when connecting (§5.4).
- If you turn one on later, reconnect WalletConnect.
The set is fixed at connect time, so it does not apply to the current
session.
- Wallets without that support still connect for EVM, as before.
- The address is chosen by the connected wallet. No
account-switch button is shown (§8.6).
- Bitcoin is used with a Bitcoin account the
connected WalletConnect Bitcoin wallet gives Pay. The balance covers
only the addresses the wallet returned (Pay does not scan for
addresses).
- The list icon in the BTC row of the wallet card
shows the addresses the wallet returned. The Used and
Next unused marks are not shown. The address type is
chosen by the wallet.
- Right after you connect, the wallet card shows the session’s
address. The balance and the list are filled in after the wallet returns
its list of addresses (a few seconds to about ten or more). Until then
the list shows “Loading…”.
- To send Bitcoin, Pay builds the transaction, the connected wallet
signs it, and Pay broadcasts it. Pay checks that the transaction the
wallet returned matches what you approved before broadcasting. If it
does not, Pay stops without broadcasting and shows “The connected wallet
returned a different transaction from the one you approved. Nothing was
sent.”
- When you send over WalletConnect, the change goes back to an unused
receiving address from the list the connected wallet returned. When your
Openloop device is connected directly, it goes back to the internal
change address. The confirmation screen and the fee row are the same as
when your Openloop device is connected directly.
- If the connected wallet does not return a Bitcoin account, “This
connection has no Bitcoin. Reconnect WalletConnect to use it.” is shown
(the same message as for TRON and Solana; only the currency name
changes).
- XRP Ledger is not available over WalletConnect (no
address and no balance are shown). Connect your Openloop device to use
it (§6.5).

On macOS Safari you have to allow pop-ups. Safari
blocks pop-up windows by default. When you pick Desktop
(the Openloop Connect desktop app) from the WalletConnect list, Openloop
Pay only opens the app after finishing a round trip to the relay server
— and Safari treats a window opened that long after your click as a
pop-up and blocks it, so nothing happens when you choose
it. Open Safari’s Settings →
Websites → Pop-up Windows and set
crypto.haudi.jp to Allow. You do not
need this if you connect to Openloop Connect on your phone by scanning
the QR code, or if you use Chrome / Edge.
4. Checking balances
Once connected, the main screen shows:

- Wallet card — the connection badge
(Openloop for a connected device, WalletConnect
· wallet name over WalletConnect) and one address row
per chain (ETH / BTC /
XRP / SOL / TRX).
Each row has a copy icon and an account
switch icon on the right. The BTC row also shows the address
path (such as
m/84'/0'/0'/0/0) next to the symbol, and a
receiving addresses list icon to the left of the copy
icon (§8.5). The SOL row also shows the derivation path
in use next to the symbol (m/44'/501'/0' by default). The
Bitcoin, XRP, Solana and TRON rows appear when Use … is
on in settings and the address could be retrieved. They appear even if
you have not selected that currency in Manage tokens & networks
(just as the Ethereum row is always shown). A chain you turned off in
settings has no row (§5.4).
- Assets — the balances of the tokens you chose to
show. The heading has a Manage tokens & networks
button (the coins icon) and a reload button.
- When the same currency exists on several networks,
one grouped row is shown with a per-network breakdown
beneath it.
- The Total on the grouped row adds up
mainnet rows only (testnets are not added in). The
breakdown lists mainnets first.
- A currency on a single network is shown as one plain row, with no
total (it would just repeat the row).
- Gas (fee) assets — the native tokens used to pay
transaction fees (gas). These are used only for fees and appear
automatically based on the networks you use. If you
have selected every native token under “Assets”, this panel is not shown
at all — the same balances are already right above it.
When Use XRP is on, the wallet card shows an
XRP row. RLUSD appears under Assets
when you have selected it in Manage tokens & networks.

Your Bitcoin address appears in the BTC row of the
wallet card. The row shows the address number 0 of the
account you chose, in full, and it does not change each time you receive
(§8.5). The balance covers only the addresses of the address type you
chose.

You choose which tokens and networks appear under “Assets” in the
next chapter, “Manage tokens & networks.” Gas native tokens appear
automatically for the networks your assets are on, so you normally don’t
need to select them separately.
4.1 Showing testnets
Show testnets only changes what is displayed. When
it is on, the currencies you checked in Manage tokens & networks are
shown including their testnet versions; when it is off, only mainnet is
shown. Testnet tokens are not all shown automatically. The initial
selection has one testnet stablecoin per chain (JPYC on Sepolia for EVM,
tUSDT on Nile for TRON, tUSDC on Devnet for Solana, and RLUSD on Testnet
for XRP Ledger). Existing settings do not get them added later. This is
useful for testing. Leave it off for normal use.
5. Manage tokens & networks
This screen is where you choose which tokens — and on which networks
— to show and send. Open it from the Manage tokens &
networks link on the connect screen, or the manage button (coin
icon) on the balances screen.

The screen is divided into sections. The basic rule is:
built-in items (shipped with the app) can’t be removed; added
items (ones you brought in) can. Alternating sections have a
tinted background to keep them visually separate.
- Built-in tokens — JPYC, USDC, USDT, TUSD, USDD,
RLUSD. Use the per-network checkboxes to choose which currency × network
combinations to show and send. XRP Ledger, Solana and TRON appear here
too (with no number beside them — these chains have no
EVM-style chain ID). Checking RLUSD on XRP Ledger asks you to sign once
on your Openloop device to set up a trust line (§6.5).
- Native tokens (select when sending) — each
network’s gas coin (ETH, POL, AVAX, KAIA, BTC,
XRP, SOL, TRX, …).
Check these only when you want to send them. Even
unchecked, if you hold them they appear automatically under “Gas (fee)
assets.”
- Initial selection — Bitcoin (BTC)
is checked from the start. The Bitcoin network has no tokens and BTC
does not appear under Gas (fee) assets, so if you uncheck it, your
balance is not shown even if you hold some. Other native currencies
(such as ETH) start unchecked. For the testnet stablecoins in the
initial selection, see §4.1.
- Added tokens — tokens you’ve added. Remove each
with its trash icon. Add new ones from Add a
token.
- Built-in networks / Added networks — the networks
in use. Built-in ones can’t be removed (for XRP Ledger, Solana and TRON
only mainnet is built in; their testnets count as added
networks). Added ones can (removing a network also removes the tokens on
it).
Each screen has a breadcrumb at the top (e.g. Home ›
Manage tokens & networks › Add a token) so you can see where you
are. Tap any crumb to jump straight to that screen.
Back goes up one level.
5.1 Adding a token
- Press Add a token.
- Search by symbol or name.
- Pick a result to see the networks that token is
available on.
- Check the networks you want to add it on (you can pick several).
It’s added the moment you check it.


The network list also shows, dimmed, the networks
where that token is available as a built-in token. You
can see which of them are currently selected, but you can’t
change them here — change those in the “Built-in tokens”
section.
Networks this app has no RPC endpoint for can’t read balances or
broadcast, so they aren’t listed. For a token or network that isn’t
listed, use “Not found? Add manually” to enter a
contract address or RPC by hand (at your own risk — shown as
“unverified”).
5.2 Confirming a removal or
a deletion
Anything that takes an entry off your list asks first.
Removing and deleting are treated as different
things.
| Action |
What happens |
Confirmation title |
| Unchecking a box |
Only the selection goes. The definition stays, so
checking it again brings it back |
Remove from your list |
| 🗑 on an added token |
The definition itself is deleted. To use it again
you must re-enter its address and decimals |
Delete token |
| 🗑 on a network |
The network and the tokens on it are deleted |
Delete network |


5.3 Export / import settings
Buttons at the bottom let you export / import your
token and network settings (as a JSON file) — handy for moving your
setup to another device. Importing shows a confirmation that it will
overwrite your current settings, along with an
integrity check.
Anything that could not be imported is listed with the
reason (no endpoint could be determined / it has no name and
currency symbol / its explorer URL does not start with
https:// / it matches an entry in Openloop’s own table, and
so on). Nothing is dropped silently.
5.4 Choosing which chains to
use
Bitcoin, XRP, Solana and TRON can be turned on or off in Settings
(EVM is always on). The row of a chain that is on
appears on the wallet card even if you have not selected its currency in
Manage tokens & networks.
- Press the gear button at the top right to open
Settings.
- Toggle Use Bitcoin / Use XRP /
Use Solana / Use TRON.
A chain you turn off shows no address and no assets, and Openloop Pay
does not ask your device for its address.

6. Sending
6.1 Steps to send
- In the send panel, choose the
token (currency × network) you want to send.
- Enter the recipient (type an address, or pick one
from the address book).
- Enter the amount. You can only enter it down to
that token’s number of decimal places (USDC: 6, JPYC:
18). Anything finer leaves Send disabled.
- Press Send.
- A confirmation screen appears. Check the recipient
(shown in full), the amount, and the network.
- Press Approve and sign with the connected wallet
(e.g. the Openloop device).
- When the send completes, the transaction ID and a link to the block
explorer are shown.


6.2 About the confirmation
screen
- The recipient is shown in full — never abbreviated.
Always check it.
- A caution is shown when sending on mainnet.
- The confirmation screen shows an “Auto-closes in N
seconds” countdown. If left untouched, it closes automatically
for safety (nothing is sent). Pressing Approve stops the countdown.
- You can close the confirmation with Cancel. Cancel
stays usable during a WalletConnect send in case the wallet is slow to
respond.
6.3 Address book
You can save a recipient with a label of your choice. Next time, just
pick it from the address book to fill in the recipient.

6.4 About Solana
Solana transfers differ from the other chains in a few ways.
- Send with your Openloop device connected, or approve in a
WalletConnect wallet that supports Solana.
- A fixed fee in SOL — 0.000005 SOL per signature,
shown on the confirmation screen as Network fee.
- Recipient account setup — if the recipient has no
account for that token yet, you pay to create one (about 0.002 SOL). The
confirmation screen shows this as Recipient account
setup, on a row of its own, separate from the
fee. The amount is whatever the chain charges at the time.
- Recipient token account — for SPL tokens the actual
destination is not the recipient’s wallet address but their account for
that token. When the recipient already has that account, the
confirmation screen shows a Recipient token account row
with the full address.
- ▲ These two rows never
appear together. When the account is being
created, you see Recipient account
setup and no token-account row; when it already
exists, the reverse.
- Minimum balance — an account must keep a minimum
balance, so you cannot send all of your SOL.
- Token-2022 is not supported. Transfers of that
token type are refused.
- There is no checksum to catch a typo. Solana
addresses have no upper/lower-case checksum like EVM addresses. ▲ Always check the whole address.
- Wait for the result. After sending, the outcome is
not final until the chain confirms it.
- Explorer links are available on mainnet only.

If the recipient account changes while you are
approving, the transfer stops. Try again.
6.5 About XRP Ledger
XRP Ledger transfers (XRP and RLUSD) differ from the other chains in
a few ways.
- Send with your Openloop device connected. XRP
Ledger is not available over WalletConnect. Sending tokens such as RLUSD
and setting up trust lines are supported on device firmware
1.1.8 or later.
- Destination tag — when the network of the token you
are sending is XRP Ledger, the send panel shows a Destination
tag (required for exchanges) field. When sending to an
exchange, always enter the tag the exchange gives you. Leave it empty
when none is specified, such as for a personal wallet.


- Reserve — XRP Ledger locks a fixed amount of XRP as
a reserve to maintain your account, and that amount cannot be sent. If
you try to send your whole balance, the transfer stops and shows how
much you can send. The amount is whatever the chain requires at the
time.
- Recipients without an account — if the recipient
address has no XRP Ledger account yet, the first payment creates it, so
you must send at least the reserve amount in XRP. Tokens (RLUSD) cannot
be sent to an address without an account. Send XRP first.
- Recipients that cannot receive — if the recipient
has no RLUSD trust line set up, or has chosen not to accept incoming
payments, the transfer stops before sending.
- Enabling RLUSD — when you check RLUSD on XRP Ledger
in Manage tokens & networks, you sign once on your Openloop device
to set up an RLUSD trust line. This locks 0.2 XRP in your wallet as a
reserve (it is not spent; the amount is whatever the chain requires at
the time). If the reserve XRP is not available, the trust line cannot be
set up. Unchecking it later only removes RLUSD from your list; the trust
line stays on XRP Ledger, and the reserve XRP stays locked.

- Wait for the result. After sending, the outcome is
not final until the chain confirms it.
If the recipient’s state changes while you are
approving, the transfer stops. Try again.
6.6 About Bitcoin
Sending Bitcoin (BTC) differs from the other chains in a few
ways.
- Send with your Openloop device connected directly, or with a
Bitcoin wallet connected over WalletConnect (§3.3). Over
WalletConnect there is no address type choice and no Used / Next unused
marks.
- Only the one address type you choose is used — in
the account choice you pick Native SegWit, Nested SegWit or Legacy
(§8.5). A balance held at addresses of a type you have not chosen is not
shown and cannot be spent.
- Recipient — you can send to a Bitcoin address
(
bc1q…, 3…, 1…,
bc1p…), including a bc1p… (Taproot) address.
The amount is in BTC, up to 8 decimal places.


- The fee is automatic — one rate is chosen
automatically from current network conditions, and the amount appears in
the Fee row of the confirmation screen. You cannot
choose the rate, and you cannot raise the fee afterwards to speed a
payment up.
- Compare the confirmation with your Openloop device’s
screen — the device shows the recipient, the amount and the
fee. Change is not shown as a recipient. The Pay confirmation screen
also has a Fee row.
- Only confirmed deposits can be spent — a deposit
cannot be used until it has been included in a block (one confirmation).
Change returned by your own payment is also unusable until it is
confirmed. After you send, the part of your balance used by that payment
may look missing until it is confirmed.
- The balance does not refresh by itself — it
refreshes when you open the app, switch accounts, or after a
payment.
- History keeps only payments you sent from Pay —
deposits do not appear in the history (they appear in the balance). A
payment is recorded once, when the network accepts it, so use the
explorer link to see whether it has been confirmed.
- Wait for the result. After sending, the outcome is
not final until the chain confirms it.
You may stop at one of the following messages.
| Message |
Meaning and what to do |
| A network error occurred. Please try again. |
The request that checks your balance and deposits failed. Wait a
while and try again. |
| Insufficient balance or gas. |
The spendable balance does not cover the amount plus the fee. |
| Some incoming funds are not yet confirmed, so the available balance
is insufficient. Please wait for confirmation and try again. |
Deposits without a confirmation cannot be spent. Wait until they are
included in a block (one confirmation). |
| A payment is still being processed, so these funds are not available
yet. |
The funds used by your previous payment are held until it is
confirmed. Wait for the confirmation and try again. |
| The connected wallet returned a different transaction from the one
you approved. Nothing was sent. |
The wallet connected over WalletConnect returned a transaction that
differs from what you approved, so Pay stopped without broadcasting. No
funds moved. Check the wallet and the payment details, then try
again. |
| The wallet is on the wrong network for this transfer. Switch
networks and retry. |
The recipient address is not one for the Bitcoin network you have
selected. Check the network and the recipient. |
The transfer failed. (invalid_address) |
The recipient address is not valid. It has a typo or is of the wrong
kind. Check all of its characters. |
The transfer failed. (prev_tx_too_large) |
A deposit received at a Legacy address that is too large cannot be
used. Pay from another deposit, or switch the type. |
The transfer failed. (fee_rate_out_of_range /
fee_too_high / fee_exceeds_amount) |
The automatically chosen fee exceeded the limit. Wait a while and
try again. |
The transfer failed. (broadcast_rejected) |
The submission was rejected. No funds moved. Wait a while and try
again. |
The transfer failed. (bad_argument /
bad_psbt / psbt_too_large) |
A problem occurred while preparing the payment. Try again. If it
keeps appearing, please contact us. |
The English letters in parentheses are the name of the reason. They
are not translated.
If the state of your balance changes while you are
approving, the payment stops. Try again.
7. Loading a payment from a QR
code
When you read a payment-request QR code, the send panel’s fields
(token, recipient, amount) are filled in automatically. There are two
ways to read it.
7.1 Read with the in-app
scanner
- Press the QR button at the top right of the send
panel.
- The camera starts; point it at the QR code (it reads
automatically).
- If the camera isn’t available, you can paste the code instead.

7.2 Read with the stock
camera (printed QR)
A printed payment link posted by a store can be read with your
phone’s stock camera. It shows a link; tapping it opens
Openloop Pay with the payment pre-filled.
7.3 What happens after reading
- If everything needed (token, recipient, amount) is
present, the confirmation screen opens
directly. It shows “Loaded from a scanned code,” and you can review and
approve.
- If something is missing, you’re told what was loaded and prompted to
enter the missing fields.


A standard format (EIP-681) is used so printed paper QRs work. Split
QR formats like BBQr are not used.
8. Switching accounts
One Openloop device holds several accounts. Use the switch icon next
to each address in the wallet card (beside the copy icon) to pick the
account for that chain.
Each chain is independent. Changing the EVM account
does not change your Bitcoin, XRP Ledger, Solana or TRON account.

8.1 EVM (ETH)
Accounts are listed five at a time; “Show more” loads the next
five.
8.2 TRON (TRX)
The same list, with an index on each row.
8.3 Solana (SOL)
For Solana you first choose the derivation
depth.

- The choices are
m/44'/501' (2 levels),
m/44'/501'/* (3 levels) and m/44'/501'/*/0' (4
levels). The default is 3, and both the order
and the labels match the receive screen on your Openloop device.
- ▲ Match what the device is
set to. With a different depth, the same index gives a
different address. If an incoming transfer does not appear, check this
first.
- At 2 levels there is a single account. At 3 or 4 levels accounts are
listed five at a time.
- The SOL row in the wallet card shows the path currently in use.
8.4 XRP Ledger (XRP)
For XRP Ledger you first choose the key type
(curve).

- The choices are Ed25519 and
secp256k1. The default is Ed25519, and
the labels match the receive screen on your Openloop device.
- ▲ Match the key type
selected on the device’s receive screen. With a different type,
the same index gives a different address. If an incoming transfer does
not appear, check this first.
- Switching the key type reloads the address and balances.
- Accounts are then picked from the same kind of list, with an index
on each row.
8.5 Bitcoin (BTC)
For Bitcoin you choose the address type before the
account list.

- You can choose Native SegWit (
bc1q…), Nested
SegWit (3…) or Legacy (1…).
The default is Native SegWit.
- ▲ Match the type your
device uses. With a different type, the same index gives a
different address, with a separate balance. If a deposit does not show
up, check this first.
- An account uses one type only. The balances of the
three types are never added together.
- Taproot (
bc1p…) accounts and multisig accounts
are not supported.
- Switching the type returns you to account 0. Switching the type or
the account number reloads the address, balance and history.
- You choose an account from a list of five at a time. Each row shows
address number 0 of that account. Account numbers run
from 0 to 99.
Receiving addresses list

Press the list icon at the left of the BTC row on
the wallet card to see the receiving addresses of the selected account,
five at a time.
- When you open the list, it shows “Loading…” until Pay has finished
looking up the address history. The first page is then the page
that contains the next unused address.
- Each row is marked Used, Next
unused or Unused. The Next
unused address stands out.
- The list is view-only: you cannot select or save an
address. To receive on another address, copy that row with its
copy icon.
- Addresses you shared earlier still work.
- You can view up to 20 addresses past the ones you have received on.
To go further, receive once on an unused address.
- To build the list, Pay looks up the address history. If it cannot,
it shows “Address information could not be retrieved, so the list cannot
be shown.” and no list.
- The account switch icon appears only while Pay is
connected directly to your Openloop device. The list
also appears over WalletConnect, but it shows only the addresses the
wallet returned, without Used / Next unused marks (§3.3).
- The address on the wallet card does not change each time you receive
(it is always number 0). To check it on the device, choose the same
type, the same account and the same number on the device’s receive
screen.
8.6 How the choice is
remembered
- Your choice is remembered per Openloop device and
survives a browser restart.
- For the same device, every screen and every window shows the
same account.
- Over WalletConnect the wallet itself owns account selection, so this
switch is not shown. The address is chosen by that wallet, and the SOL
row shows no derivation path.
9. History and CSV export
Your send records appear in the History on the main
screen.

- From each transaction ID, you can view details in a block
explorer.
- Use the export button at the top right of the
history to export your records as a CSV file — handy
for accounting and bookkeeping.
History is stored only on your device (browser). It is never sent to
any external server.
10. dApp integration (extension
only)
The browser-extension build of Openloop Pay can
connect directly to dApps (decentralized apps) on the
web. Connection and signature requests from a dApp are relayed through
Openloop Pay to your Openloop device, where you always review and
approve the final action on-device.
The web app and the smartphone build do not integrate with dApps. To
connect to dApps, install the Openloop Pay extension in your desktop
browser.
10.1 How dApp connections work
- The extension exposes an EIP-1193 provider and announces itself via
EIP-6963. dApps see it in their wallet picker as “Openloop
Pay”.
- Access is granted per tab. Each tab where you open
a dApp is allowed and managed independently; opening the same site in
another tab creates a separate connection.
- Every send or signature request is shown in Openloop Pay and must
also be reviewed and approved on the Openloop device screen.
10.2 Which account a dApp sees
- Only EVM addresses are shared with dApps. XRP
Ledger, Solana and TRON addresses are never passed to a dApp.
- What a dApp sees is your EVM account, and that is
one per Openloop device (§8.6).
- A dApp keeps the address it was given when it
connected. Switching accounts in Openloop Pay afterwards is
not announced to dApps that are already connected, so
different dApps can be on different accounts at the same
time.
- The network is per tab. Switching the network in
one tab does not change a dApp in another tab.
- The account list appears only the first time you connect on
that device and when you switch on purpose.
After that, connections use the remembered account silently.
- If a dApp reconnects by itself, the remembered address is visible to
it even with no Openloop device attached. ▲ Signing still requires the device.
- Unplugging the device disconnects every dApp. Plug
it back in and each dApp reconnects silently with the remembered account
when it asks again.
10.3 See which sites are
connected
You can check the list of sites currently allowed to see your wallet
at any time.
- Press the gear button at the top right to open
Settings.
- Choose dApp management ›.
- Every connection is listed as one card: the
tab number and connect time on top, the site’s
host name in the middle, and a network
picker plus a Disconnect button at the
bottom.
- The connection belonging to the tab you are looking at is marked
Active and its card is highlighted.
Settings is a single screen: Language, Payment sound, Use
Bitcoin, Use XRP, Use Solana,
Use TRON and dApp management. The
dApp button at the top right opens dApp management
directly.


Connections are per browser tab. Opening and
connecting the same site in more than one tab creates a separate
connection on its own row (in the example above,
app.uniswap.org appears twice — as “Tab 1” and “Tab 3”).
Closing a tab automatically ends that tab’s connection, and
disconnecting is done per tab.
10.4 Disconnect one tab,
or disconnect all
- Press the Disconnect button (the power icon) on a
card to revoke just that connection (that tab). It can no longer see
your address; it must request access again next time. Other tabs and
other sites stay connected.
- Press Disconnect all at the bottom to revoke every
site (every tab) at once. This also disconnects Openloop Pay from the
Openloop device.
- The Disconnect button on the wallet card does the
same thing — disconnecting the device also disconnects every dApp (no
site can see an address that is no longer loaded).
Changing the network of one connection
The picker on each card sets the network that connection (that tab)
uses. The network is per tab, so changing it here does
not affect a dApp in another tab.
- The list holds the networks you actually use in Manage tokens &
networks, plus any you added by hand (§5). It follows your testnet
setting too.
- Networks outside that list are reachable through
Other…. A network picked there is not
added to the ones whose balances are shown — a dApp’s choice stays
inside its tab.
10.5 When the side panel is
closed
If a dApp requests an action (signing, switching accounts, …) while
the Openloop Pay side panel is closed, a small hint popup appears. Press
Open to open the side panel, then retry the action in
the dApp.

11. Security
Openloop Pay is built to help you send safely.
- A companion wallet with no keys of its own —
Openloop Pay stores no private key or seed phrase and holds no wallet
itself. Your keys live only inside the Openloop device (or your wallet).
Unlike wallets that keep an (encrypted) key in the browser, even if the
web app or extension were compromised, there are no secrets inside to
steal.
- Non-custodial — private keys stay inside the
Openloop device (or your wallet). Openloop Pay never stores or accesses
them.
- Review before signing — you always review the
details (recipient, amount, network) on the confirmation screen before
approving. When signing with Openloop, you can also check the details on
the device screen.
- Connected-device verification — before signing, it
checks that the connected device matches the account on screen. If a
different device is connected, it shows an error and prevents sending
from the wrong account.
- Confirmation auto-close — if you leave the
confirmation screen open, it closes automatically for safety.
- A window showing a confirmation is never taken over
(extension only) — while a transfer or signature confirmation is open,
opening Openloop Pay in another window does not close it; the new window
waits (§2.2).
- Full recipient address — the recipient address is
always shown in full, never abbreviated.
- Per-tab dApp access (extension only) — dApp
connections are granted per tab. Opening the same site in another tab
creates a separate, independent connection. You can disconnect any
connection — or all of them at once — from the gear icon → Settings →
dApp connections (§10).
11.1 Precautions
- Crypto transactions cannot be undone. Always check
the recipient and amount.
- Never share your recovery phrase. Openloop Pay will never ask for
it.
- Always check the contents of a scanned QR code or payment request
before sending.
12. Troubleshooting
- The camera isn’t available / permission is
denied
-
Allow camera use in your browser settings. You may be able to allow it
from the camera icon in the address bar. Some browsers (such as an
extension side panel) can’t use the camera; in that case, paste the code
instead.
- An address or balance I don’t recognise is shown
(USB)
-
Check whether two or more Openloop devices are
connected over USB. With more than one connected, the app cannot choose
which to use and may show the one you didn’t pick. Leave only the device
you want to use plugged in, unplug the rest, and connect again.
- The USB Openloop doesn’t appear in the chooser
(extension)
-
The USB chooser may not open in the extension side panel. Try connecting
from a full tab. Also, if Openloop Connect or similar is using the same
device, USB may be occupied and unavailable.
- A network I want to add isn’t listed
-
Networks this app has no RPC endpoint for can’t read balances or
broadcast, so they aren’t listed. If you know the RPC, add it by hand
from “Not found? Add manually.”
- WalletConnect shows “cannot connect”
-
The connection may be taking time to establish. Wait a moment and try
again.
- The send confirmation won’t close / there’s no
response
-
It’s waiting for a response from the connected wallet. Close it with
Cancel and try again.
- It says “This connection has no TRON. Reconnect
WalletConnect to use it.”
-
The wallet you connected did not accept TRON when the connection was
made. Reconnect WalletConnect, or connect your Openloop device. Bitcoin
and Solana show the same kind of message (only the currency name
changes).
- It says “The connected wallet cannot sign TRON
transactions.”
-
The connection is fine, but that wallet cannot handle the signing
request. Reconnect with another wallet, or connect your Openloop device.
Bitcoin and Solana show the same kind of message.
- It says “The connected wallet’s TRON address changed. Please
reconnect.”
-
The address on screen and the address the current connection returns are
different. Reconnect WalletConnect. Bitcoin and Solana show the same
kind of message.
- I turned a chain on, but Bitcoin / Solana / TRON still isn’t
there over WalletConnect
-
The requested chains are fixed at connect time.
Settings shows “Your current WalletConnect session has no TRON.
Reconnect to use it.” right under that chain’s checkbox.
Reconnect WalletConnect (§3.3).
- The network doesn’t match
-
The WalletConnect wallet may be on a different network than the one you
want to send on. Set the network on the wallet’s side.
- It says “Openloop Pay is open in another window.”
(extension)
-
Only one extension window is active at a time across the whole browser
(§2.2). The one you opened in another window has taken over. Open this
one again and it comes back.
- It says “Another window is showing a confirmation…” and
nothing responds (extension)
-
A transfer or signature confirmation is open in another window. A window
showing a confirmation is never taken over. Approve or cancel that
confirmation and this window becomes usable automatically.
- No Bitcoin, XRP, Solana or TRON address or balance
appears
-
If Use Bitcoin / Use XRP / Use
Solana / Use TRON is off in settings, that
chain shows no address and no assets, and the Openloop device is never
asked for its address (§5.4).
- A balance in the Assets list shows “—”
-
Pay could not read that currency’s balance. Hover over the “—” to see
“Could not read this balance. (reason)”. It happens when the network’s
endpoint is temporarily not responding. Wait a while, then press the
refresh button to load it again. If no balance could be
read at all, “Could not load balances. (reason)” is shown.
- A Solana transfer deducts SOL beyond the amount I’m
sending
-
If the recipient has no account for that token yet, you pay to create
one (about 0.002 SOL). It appears on the confirmation screen on a row of
its own, separate from the fee (§6.4).
- An XRP transfer stops with “R XRP is locked as a reserve and
a fee is needed, so you can send up to N XRP.”
-
XRP Ledger locks a fixed amount of XRP as a reserve to maintain your
account, and that amount cannot be sent. Send no more than the limit
shown (§6.5). When the reserve amount could not be confirmed, the
message reads “A reserve and a fee are needed, so you can send up to N
XRP (the reserve amount could not be confirmed).”
- XRP sent to an exchange has not been credited
-
Payments to an exchange need the destination tag the
exchange gives you. Enter it in the Destination tag
field of the send panel (§6.5). If you already sent without a tag,
contact the exchange you sent to.
- A dApp is still on my old account
-
A dApp keeps the address it was given when it connected. Switching
accounts in Openloop Pay is not announced to dApps already connected
(§10.2). To change it, disconnect that dApp (§10.4) and let it connect
again.
- Unplugging the device disconnected my dApps
-
That is by design. Unplugging disconnects every dApp. Plug it back in
and each dApp reconnects with the remembered account the next time it
asks (§10.2).
13. Specifications
13.1 Supported tokens (built-in)
Openloop Pay supports tokens on EVM chains (Ethereum
and EVM-compatible chains), on XRP Ledger, on
Solana and on TRON. The stablecoins
below ship built in and are ready to send and receive without any
setup.
| Token |
Supported mainnets |
| JPYC |
Ethereum / Polygon / Avalanche C-Chain / Kaia (4 chains) |
| USDC |
Ethereum / Polygon / Avalanche C-Chain / Base / Arbitrum One / OP
Mainnet / Solana / TRON (8 chains; on
the EVM chains this is Circle-issued native USDC) |
| USDT |
Ethereum / Polygon / Solana / TRON
(4 chains) |
| TUSD |
TRON (1 chain) |
| USDD |
TRON (1 chain) |
| RLUSD |
XRP Ledger (1 chain) |
Testnet JPYC ships on Sepolia / Polygon Amoy / Avalanche Fuji / Kaia
Kairos (4 chains — select it in Manage tokens & networks and turn on
Show testnets, §4.1), plus the Circle-deployed USDC on
Sepolia. On XRP Ledger Testnet a test RLUSD is
provided, on Solana Devnet a test tUSDC, and on the
TRON testnets (Shasta / Nile) a test tUSDT.
RLUSD needs one signature on your Openloop device to set up a
trust line before you use it (§6.5).
XRP Ledger, Solana and TRON tokens cannot be added.
The built-in entries above are the full set; the dictionary search and
manual add described in §13.3 are for the EVM chains only.
Solana Token-2022 is not supported. Transfers of
that token type are refused (§6.4).
13.2 Supported networks
(built-in)
| Type |
Networks |
| Mainnets (11) |
Ethereum / Polygon / Avalanche C-Chain / Base / Arbitrum One / OP
Mainnet / Kaia / Bitcoin / XRP Ledger
/ Solana / TRON |
| Testnets (3) |
Sepolia / Polygon Amoy / Base Sepolia |
The XRP Ledger testnet (XRP Ledger Testnet), the
Solana testnets (Solana Devnet / Solana Testnet) and
the TRON testnets (TRON Shasta / TRON Nile) are treated
as added networks, the same as Avalanche Fuji.
Selecting them in a built-in token’s network column enables them.
Each EVM network ships with a public RPC endpoint (publicnode family)
and a block-explorer URL.
The Bitcoin endpoints, the XRP Ledger endpoints, the Solana endpoints
and the TronGrid endpoints for TRON ship with the app and cannot be
changed.
13.3 Added tokens and networks
- Search dictionary — the same token dictionary as
the Openloop device (924 symbols / 2,587 contracts),
searchable by symbol or name. The dictionary covers the EVM chains only,
and the built-in JPYC / USDC / USDT are excluded so they are not listed
twice (TUSD / USDD are TRON-only and were never in it).
- Manual add (token) — tokens not in the dictionary
can be added by contract address + network (shown as “unverified”).
- Add a network — any EVM chain outside the built-in
set can be added by name, RPC URL and explorer URL.
This whole section is EVM-only. On XRP Ledger,
Solana and TRON you can neither add tokens nor change the endpoint
(§13.1, §13.2).
13.4 dApp integration
(extension only)
The browser-extension build talks to dApps over the following
standards.
| Item |
Supported |
| Provider API |
EIP-1193 (the window.ethereum
interface) |
| Provider discovery |
EIP-6963 (Multi Injected Provider Discovery —
coexists with other wallets) |
| Chain ID |
EIP-155 / CAIP-2 |
| RPC methods |
eth_requestAccounts / eth_accounts /
eth_chainId / eth_sendTransaction
(EIP-1559 type-2 tx) / personal_sign /
eth_sign (blind-signing of an opaque hash — a strong red
warning is shown if requested) / eth_signTypedData_v3 /
eth_signTypedData_v4 (EIP-712) /
wallet_switchEthereumChain (EIP-3326) /
wallet_addEthereumChain (EIP-3085) |
| Not supported |
eth_signTypedData_v1 (legacy — dropped, no type
info) |
| Access grants |
Granted and revoked per tab (the tab where a dApp
is open) (§10) |
| Addresses shared |
EVM only. XRP Ledger, Solana and TRON addresses are
never passed to a dApp |
| Account |
One per Openloop device. A dApp keeps the address it got
when it connected (§10.2) |
13.5 WalletConnect
- WalletConnect v2 — supported as the
wallet-connection client (Openloop Pay itself is the companion / dApp
side, not the wallet).
- Connect by scanning a QR code or picking from the wallet list
(Openloop Connect and any WalletConnect v2-compatible wallet).
- Sends are broadcast on the connected wallet’s current
network. To send on a different network, switch it on the
wallet’s side.
- Bitcoin, Solana and TRON — supported when the
connected wallet supports them. Only the chains turned on in settings
are requested at connect time (§3.3, §5.4).
- XRP Ledger — not available over WalletConnect.
Connect your Openloop device to use it (§6.5).
13.6 Payment-request QR
- EIP-681 — the standard
ethereum: URI
format (contract address / transfer function / chain ID /
amount). Printed paper QRs can be opened from your phone’s stock camera
(§7).
- Split-QR formats such as BBQr are not used.
13.7 Web app vs. browser
extension
| Item |
Web app |
Browser extension (Chrome / Edge) |
| Runs on |
Desktop and smartphone |
Desktop only |
| Openloop (USB) |
Yes (WebHID-capable browser) |
Yes (may need full-tab consent) |
| Openloop (Bluetooth) |
Yes (supported smartphones) |
No (blocked by extension permissions) |
| WalletConnect |
Yes |
Yes |
| dApp integration (EIP-6963 / EIP-1193) |
No |
Yes |
| Camera QR scan |
Yes |
Limited (may not work in the side panel) |
| Open from payment link |
Yes |
Yes |
| Storage for history / address book |
In the browser |
In the extension storage |
| Windows open at once |
As many as you like |
One across the whole browser (§2.2) |
If you have any questions or trouble, please contact us.
Haudi Crypto, Inc. Email:
support@crypto.haudi.jp
You can also open the version, links to each document, and every
setting (Language, Payment sound, Use Bitcoin, Use XRP, Use Solana, Use
TRON, dApp management) from the in-app gear (Settings)
button.

Related documents: Terms of
Service / Privacy
Policy / Licenses