Wallets in your admin sidebar lists every wallet a crypto payment was made to. It is there when Propper turned crypto payments on for your firm, and missing otherwise.
You need the view_wallets permission to open the screen. Setting up the
firm's wallet, adding and removing the keys that unlock it, and showing a
private key or the recovery phrase need manage_wallets. Somebody who may
only look sees every wallet and its balance, and none of those actions.
How the wallet works
Your firm has one wallet, made once, in the browser of whoever sets it up. Every crypto payment gets a fresh address from it, and the money stays on that address: nothing is swept or merged, and Propper never moves it. You move it yourself, from your own wallet app.
The wallet is a recovery phrase of 24 words. It is made in your browser and stored with us encrypted. We keep only that encrypted copy and the public keys from which new addresses are worked out. Without one of your keys or the phrase, nobody can open it, our team included.
A key is a passkey (Face ID, Touch ID, Windows Hello, a security key) or a signature from a MetaMask account. Each admin adds their own. A passkey only works on the domain it was made on. MetaMask works on any domain of your firm. The recovery phrase opens the wallet anywhere, and is also how an admin without a key of their own gets in to add one.
Addresses follow the paths MetaMask and TronLink use. Put the recovery phrase into either app and the same addresses appear there: each wallet on this screen says which account it is.
Setting it up
Until the wallet exists, the list says so and Set up wallet opens the setup beside it. It takes four steps:
- What is about to happen.
- The 24 words, shown this once, each numbered in a box of its own. Write them down in order and keep them offline. Anyone who has them can take every payment made to your firm. Copy and Download as text file give the same words numbered, four to a line.
- Three of the words, asked back: the phrase is shown again with every word hidden, and for each of three marked places you pick the right word out of three from the same phrase. A wrong pick is emptied and asked again.
- The first key: a passkey or MetaMask. A passkey is asked for twice, once to make it and once to check it opens the wallet. MetaMask asks you to sign the same text twice, to check it signs it the same way every time. It sends nothing and costs nothing.
While the passkey prompt or MetaMask is open, Stop waiting stops the screen from waiting for it, so a wallet window that was closed without an answer never leaves you stuck. With several wallet extensions in one browser (Brave Wallet next to MetaMask, for one), the screen asks MetaMask by name.
Nothing reaches us before the last step. Leaving the setup halfway asks first, and throws the phrase away.
Some passkeys cannot be a key
A passkey has to support the PRF extension. The passkeys of your device (iCloud Keychain, Google Password Manager, Windows Hello) and most security keys do. Password manager extensions, 1Password among them, often do not, and the screen says so when that happens. Use another passkey or MetaMask.
The list
The screen opens on the list alone, across its whole width.
Each row is a wallet: its address and whose payment it was, the network and coin the trader chose, what was asked, what arrived, when it was opened and its status. A shield next to the address means money arrived from an address on the OFAC sanctions list. Nothing is refused: what you do with it is your decision.
| Status | Meaning |
|---|---|
| Awaiting payment | The address was shown to the trader and nothing arrived yet |
| Confirming | A transfer arrived and is not final on the chain yet |
| Underpaid | Final, but less than asked. The trader can top up until the checkout runs out |
| Paid | Enough arrived and the account was made. The wallet is no longer watched |
| Paid late | Money arrived after the checkout ran out. You decide on the payment |
| Expired | The checkout ran out without money. Still watched for 7 days |
The head of the list counts the wallets still waiting for money, the ones paid late and the ones with a sanctions flag. Clicking a count narrows the list to them.
The list holds fifty wallets to a page. The search box finds a wallet by its
address, a transaction hash or the address that paid, its cwal_ id, the
pay_ id of its payment, or the name, email address or usr_ id of the
trader. The filter menu narrows by status, by network and to flagged wallets,
and sorts by newest, largest amount, most received, expiry or what needs
attention first.
J and K move through the list and Enter opens the wallet they rest on. A right click on a row opens the wallet, its payment or its trader, and copies the address, the wallet id, the payment id or a link.
A wallet
Picking a wallet folds the list to a column and opens the wallet beside it. Escape or the cross folds it back.
The head shows the full address (click to copy), its status, what the trader chose, and which account it is in MetaMask or TronLink. Below it: what was asked, what came in and how much over or short, the payment, when the wallet was opened and when its checkout runs out or was paid.
On chain now reads what the address holds right now on every network of its kind. An Ethereum address is the same on Base and Arbitrum, so a trader who sent USDC on Base instead of USDT on Ethereum shows up here, and that payment counts. Refresh reads it again. When a network does not answer, the screen says so instead of showing zero.
Transfers lists every incoming transfer we saw, with the amount, the network, the sender, whether it is final, and a link to the transaction on the explorer.
Showing a private key or the recovery phrase
Show private key on a wallet, and Export recovery phrase in the settings, first unlock the wallet in your browser: with one of your keys, or by typing the 24 words, or pasting them as copied or downloaded, numbers included. The key or the phrase is then shown with a copy button, and the phrase with a download as well. It is opened in your browser only, and closed again when you click Done.
A private key is shown as 64 hexadecimal characters. MetaMask imports it under Add account, Import account, and TronLink under Add wallet, Import, Private key. Before it is shown, the address is worked out again from the key and compared with the wallet's, so the key on screen is always the key of that address.
Every time a private key or the phrase is shown, the activity log records who did it and for which wallet. The key itself is never sent to us.
Settings
Settings in the head of the list opens the wallet's settings beside it: when it was set up and by whom, how many addresses it gave out, and every key that unlocks it, with its kind, its name, whose it is and when it was last used.
Add key unlocks the wallet and then adds a passkey on this domain or a
MetaMask account for you. A key is removed with the bin next to it, after a
question. Anyone with manage_wallets can remove anyone's key, so the key of
an admin who left can be taken off. The last key cannot be removed.
Errors
| Message | What happened |
|---|---|
| This passkey cannot be used as a wallet key | The passkey does not support PRF. Use a device passkey, a security key or MetaMask |
| This passkey gave a different answer the second time | The passkey cannot open the wallet reliably and was not saved |
| This wallet signed the same text differently twice | Hardware wallets and smart accounts often sign with randomness and cannot be a key |
| Switch MetaMask to the account | The key belongs to another MetaMask account than the one connected |
| Your wallet still has a request open | MetaMask still shows an earlier request. Close it there and try again |
| This key did not open the wallet | The passkey or signature is not the one this key was made with |
| This recovery phrase belongs to another wallet | The 24 words are valid but are not your firm's wallet |
| 403 forbidden | You lack view_wallets, or manage_wallets for the setup, the keys and exporting |
| 404 not found | Crypto payments are not turned on for your firm |