brc100.org

THE WALLET ↔ APP STANDARD

One interface.
An open world.

A common language for applications and BSV wallets. Build with payments, identity, and cryptography—while keeping wallet choice in the user’s hands.

Open specificationVendor-neutralPermission-aware
A COMMON LANGUAGE01 / 03
YOUR APPLICATION
wallet.getPublicKey({ identityKey: true })
BRC-100One standard interface
OPEN
Desktopwallet
Browserwallet
Your choiceof wallet

Your app requests. The wallet authorizes.
Interface illustration · no requests are sent.

LESS COUPLING. MORE POSSIBILITY.

Build for an interface.
Leave room for choice.

More than a wallet balance.

BRC-100 defines how an application asks a wallet to act. The wallet handles the keys, permissions, and implementation.

01

Payments & transactions

Create actions, accept incoming transactions, and organize outputs into baskets. Build the experience your application needs.

createActionlistOutputs
02

Keys & cryptography

Request public keys, sign data, and encrypt messages within a protocol context. Private key handling stays with the wallet.

getPublicKeyencrypt
03

Identity & certificates

Work with identity certificates and selectively reveal fields to a verifier. Ask for the information your application actually needs.

acquireCertificateproveCertificate

The interface is the agreement. Apps target a common API; wallets can have different user experiences, storage, and service choices. Check support and permission behavior in the implementations you target.

Explore the specification (opens in a new tab)

Small calls.
Big building blocks.

Get a feel for the interface. Choose an operation, edit the example, and copy the code into your project.

WALLET OPERATIONS Full API reference (opens in a new tab)
app.ts
import { WalletClient } from "@bsv/sdk";

const wallet = new WalletClient();

const { publicKey } = await wallet.getPublicKey({
  identityKey: true
});

Examples only. No wallet connection, transaction, or payment is made here.

Start with a few lines.
Build something useful.

Use the TypeScript SDK’s WalletClient to speak BRC-100. Pair your app with a compatible wallet, handle permissions and errors, then build outward.

Open the SDK docs (opens in a new tab)
01

Install the SDK

npm install @bsv/sdk
02

Connect through the interface

Create a WalletClient, then use the methods your app needs. Test the transport with your chosen wallet.

03

Keep the user in the loop

Make requests deliberate. Explain what your app needs, handle declined permissions, and confirm the network before transacting.

A common interface.
Evidence from real handoffs.

TPNIL, the Transaction Processing Network Interoperability Laboratory, connects exact software versions to shared requirements, controlled environments and retained experimental outcomes.

Connect a System Under Test

ITCVE-1 defines the component roles and environment. An ISI defines the evaluation. Your wallet, application, storage service or overlay enters as an exact artifact in a declared role, with supporting dependencies pinned.

Plan an integration ↗ (opens in a new tab)

Start with the app workflow

ISI-4 exercises initialization, encrypted ToDo creation, cold reload and redemption through supported wallet interfaces. Other programs target the complete transaction stack, overlay synchronization and remote wallet storage.

Explore all four programs ↗ (opens in a new tab)

Read the whole result

Yours Wallet 5.1.0 has two retained experimental runs: V001–V004 pass, V005–V006 fail and V007–V008 are blocked. Mainnet wallet configuration with controlled fixtures does not establish public-mainnet acceptance. Certification remains future work.

Use the evidence checklist ↗ (opens in a new tab)

Reviewed November 2, 2026. Laboratory result descriptions are source-reported; this page is not an independent test or endorsement of every listed wallet. P2PPSR operates TPNIL and maintains this site. Current implementation status (opens in a new tab) · Try the offline self-test (opens in a new tab) · Contribute a fixture, adapter or independent rerun (opens in a new tab)

A wallet of your choice.
Apps worth exploring.

Meet wallets and apps from across the BSV ecosystem. Integration labels help you find the right starting point for your project.

Wallets

Reference implementations first. Other wallets A–Z.

Apps to explore

A–Z. Follow each app’s guide to connect a wallet.

Help the directory grow.

Know an app or wallet that belongs here? Add its name, official link, and integration details in a pull request.

Add an app or wallet (opens in a new tab)

From the standard
to your first app.

Go straight to the sources: the specification, reference code, wallet implementations, and developer tools.

Before you build.

Where can I evaluate wallet interoperability?

The TPNIL testing section links to versioned programs, exact artifacts and experimental results. A passing application sequence applies to its declared scope; it does not certify every BRC-100 method, wallet, platform or recovery path.

Is BRC-100 a wallet, a token, or a company?

It’s an open wallet-to-application interface specification for BSV. Wallets implement it; applications use it. BRC-100 itself is not a wallet product or a token.

Do I need a wallet to use this explorer?

No. This explorer displays code and request shapes locally. To run that code in an application, use the SDK with a compatible wallet. The wallet may request user authorization.

Does one interface make every wallet identical?

The API gives applications a common contract. Wallet UX, supported transports, permission policies, storage, backup, and recovery can differ. Test against your target implementations rather than assuming identical behavior.

Where can I ask questions or contribute?

Start with the BRCs repository (opens in a new tab) for specification discussions. For an implementation issue, use that project’s repository and include a minimal reproducible example.

OPEN INTERFACES MAKE ROOM FOR IDEAS.

What will you build?

Start with BRC-100