Skip to content

Guides

Wallets

Connect a public key from Ledger, Trezor, a file, or paste it. What it can and can't do.

Perly Pay makes a new address for every invoice from your wallet's public key. The money goes straight to that address — it's yours from the first second.

What a public key can and can't do

It canIt can't
Make your receiving addressesSpend, sign or move anything
Let us watch them for paymentsBe turned into your private key
Show the payments it receivedChange where money goes
We never ask for a seed phrase or a private key — no screen in Perly Pay has a field for one. Anyone who asks is not us.

A public key does show every address it makes and what they received. That's why we keep it sealed (AES-256) and never show it back in full.

Four ways to connect

FromHowKeys
LedgerPlug in, open the Bitcoin app (2.1.0 or newer — update it in Ledger Live) or the Ethereum app, press Read from Ledger. The browser reads the public key; you confirm on the device.BTC and EVM
TrezorSame, through Trezor's own connect window.BTC and EVM
FileExport watch-only from Sparrow, Electrum or your wallet and drop the file.BTC
PastePaste a zpub/xpub, or a list of addresses you own.BTC and EVM

Which keys

FamilyPathLooks like
Bitcoinm/84'/0'/0' (native SegWit)zpub6r… or xpub6C…
USDC, USDT, USDT0 (every EVM network)m/44'/60'/0'/0xpub6E…

One EVM key serves Base, Arbitrum, Optimism and Ethereum: an address is the same on all four.

Check the first address

After connecting, we show your first address. Find the same one in your wallet (Ledger Live, Trezor Suite, Sparrow). If they match, confirm — that proves the key is yours and the path is right.

Use a fresh account

Old payments to an address never pay a new invoice — only money that arrives after the invoice opens counts. Still, a fresh account keeps your books clean and your history private.

Seeing every payment in your wallet

Each invoice gets the next address of your key. Wallets list those addresses in their own ways.

Bitcoin

Invoices take receive addresses 0, 1, 2… of the native SegWit account m/84'/0'/0', and the dashboard names them that way. Ledger Live and Trezor Suite show it as a plain Native SegWit account — nothing to set up. For more control, open the same account in Sparrow: connect the device, pick Native SegWit, m/84'/0'/0'.

USDC and USDT

Invoices take m/44'/60'/0'/0/0, m/44'/60'/0'/0/1, m/44'/60'/0'/0/2…: the BIP44 standard path, with the number at the end. The dashboard calls them account 1, 2, 3. Trezor uses this path itself, so Trezor Suite, Rabby and MetaMask list them the same way.

Ledger Live shows only the first one. Ledger Live numbers its accounts in the third place instead: m/44'/60'/0'/0/0, m/44'/60'/1'/0/0… Account 1 is its first Ethereum account too. From account 2 on, it does not list them on Base, Arbitrum or Optimism, and on Ethereum it stops at the first address that never received anything. The money is there and your Ledger signs for it — open it in Rabby or MetaMask.
WalletTo see accounts 2, 3, … from a Ledger
RabbyAdd the Ledger, then Advanced Settings → Select HD path → BIP44. Not Ledger Live, not Legacy.
MetaMaskAdd a hardware wallet → Ledger, then Select HD path → BIP44 Standard (e.g. MetaMask, Trezor). Not Ledger Live, not Legacy (MEW / MyCrypto).

Both then list the addresses in order: account 2 in your dashboard is the second one there.

Unpaid invoices and the gap

Wallets look 20 empty addresses ahead. If many invoices go unpaid in a row, payments can sit past that gap. The dashboard tells you when; raise the gap limit in Sparrow or Electrum, or add the next accounts in Rabby or MetaMask.