Skip to content
bitcoinsv.design

Search the guide

Search the guide

Custody as a product decision

Who holds the keys in your product: the user's own wallet, the product holding funds, or an arrangement in between, compared as onboarding, support, recovery and responsibility trade-offs.

Whoever holds the keys can move the money, and nobody can reverse the payment. So who holds them decides your onboarding, your support load, what happens when a user loses a phone, and what happens to your users if your company stops. Decide it on purpose, early, and tell users plainly.

Holding other people's money also has legal consequences that differ by jurisdiction and need advice there. This page treats custody as product risk only.

Three arrangements

The user holds the keys, the app connects

The user has their own wallet. Your app asks it to make payments, sign or prove something, and the wallet decides whether to allow it. Your app never sees a key. This is how the guide recommends apps work. See Connecting a wallet.

For the user: their money stays theirs if you disappear, and they can revoke your app in one tap. They also need a wallet before they can use you, and they are responsible for its backup.

For the team: no funds to secure, and no recovery to run. You depend on the user having, or getting, a , and your support cannot fix a problem inside it.

The product holds the funds

Your service holds the keys, or holds funds on the user's behalf. This includes a prepaid balance kept inside your app, which the guide calls "a custody problem you created" in Charging per use.

For the user: the familiar model. A password reset works, and there is someone to call. Their money is only as safe as your company, and only reachable while it exists.

For the team: the easiest onboarding and the heaviest responsibility. Every key you hold is a target, every account recovery is a chance to hand money to the wrong person, and your users' funds depend on your security and your survival.

Arrangements in between

The guide describes several, each giving the service part of the control, not all of it. See Private key management.

  • A share held by a service. The user's key is split, and your service holds one share or an encrypted backup it cannot read. Your service alone cannot move the money. See Automatic cloud backup.
  • Co-signing and shared control. A set number of keys must sign, held by the user, other people or a service. The rule is enforced by the network, not your database. See Multi-key and Shared wallet.
  • Delegated spending. An or a feature gets its own wallet with a fixed budget, and the agent cannot reach the user's main funds. See Wallet setups.

For the user: help with recovery without handing over the money. More parts to understand, and a recovery path that can fail if any part was only on the lost device.

For the team: you run a service users depend on for recovery, without holding funds you could lose. You inherit the job of making that service survive, and of testing that recovery works.

Comparing them

User's own walletProduct holds fundsIn between
OnboardingNeeds a wallet firstEasiestA setup step, often deferrable
SupportMostly about connectingAccount recovery and disputesRecovery help
Lost phoneThe user's backupYour reset processYour share plus theirs
If you shut downTheir money is unaffectedUsers depend on your wind-downUsers need a way out without you
What you can loseNothing of theirsAll of itAvailability of recovery

Recommendation

Start from the user's own wallet and move along the scale only for a reason you can name, such as a user group that will not keep a backup. Each step towards holding funds buys easier onboarding with a responsibility you cannot hand back.

Rules for any arrangement

These apply whichever arrangement you choose. Your exposure statement, mentioned below, is the short public list of what your app asks for and keeps.

Do

Write down which arrangement your product uses, in one sentence a user could understand, and put that sentence in the product before the user holds money with you.

Don't

Call an arrangement self-custody if your service can move the user's money or decrypt their key. Say what it is.

Do

Make sure users can move their funds out without your service, and say how in your exposure statement. See Disclose what you use.

Do

Plan what happens to users' money if your company stops, before launch. The plan is part of the product, and users of a service holding a share need it as much as users of a one.

Do

Run a recovery drill on a wiped device before launch, whichever arrangement you choose, and repeat it after any to backup or key handling.

Do

Train support on the one thing they cannot do. If you do not hold the keys, support must never imply it can recover funds, because that sentence is what impersonators say next.

Don't

Keep a balance on users' behalf just to make many small payments smoother. An allowance in the user's own wallet does that job without the custody.

Holding money for users

Holding a balance on the user's behalf

  • OK: no balance at all. Payments go from the user's wallet to yours as they happen.
  • Grey area: a small prepaid balance, shown as the user's money, that they can withdraw to their own wallet at any time, kept for a reason you can name, not to smooth small payments.
  • Not OK: a balance the user cannot withdraw, or one described as their wallet when it is your account.

Open questions

  • Do users understand a key share held by a service as different from the service holding their money? No published research tests this for BSV products.
  • What is the clearest one-sentence description of each arrangement for somebody who has never heard the word custody?
  • How should a product move a user from a held balance to their own wallet without losing them in the step?

Written from: /guide/patterns/connecting-a-wallet/, /guide/how-it-works/private-key-management/overview/, /guide/how-it-works/private-key-management/cloud-backup/, /guide/how-it-works/private-key-management/multi-key/, /guide/how-it-works/wallet-setups/, /guide/how-it-works/backups/, /guide/wallet-patterns/shared-wallet/, /guide/patterns/charging-per-use/.

Checklist

The rules on this page, in a form you can work through.

8 rules