Skip to content
B3Pay
GitHubGet started

Open source · Internet Computer · since 2023

Infrastructure for apps that hold their own keys.

B3Pay builds open-source wallets and TypeScript libraries, plus workflow tooling, for the Internet Computer. No centralized backend sits between your users and their assets.

03
chains
04
projects
07
packages
03
open source
Order 4821 · 2 × b3forge seatRunning
pricing order · awaiting rate
0.0241 BTC
awaiting deposit address
0.0241 ckBTC
awaiting mint

Quote

get_exchange_raterate-oracle—
invoice_createmerchant—

Mint

get_btc_addressckbtc-minter—
bitcoin_get_utxosbtc-network—
check_transactionbtc-checker—
update_balanceckbtc-minter—

Pay

icrc2_approvewallet—
icrc2_transfer_fromckbtc-ledger—
settle_receiptbrowser—

Result


0.0000 ckBTCPending
Subtotal
—
Ledger fee
—
Net
—
awaiting settlement
What we build

Three open-source projects, one platform.

Users should keep custody. Developers should not have to give up type safety to make that happen. Our libraries and wallet are MIT-licensed and run on the Internet Computer. B3Forge is in private beta.

B3Forge

Candid-native workflow platform. Compose canister calls into typed workflows in a visual graph editor and run them in the browser.

Beta

B3Wallet

Self-custodial multi-chain, multi-owner wallet. Bitcoin, Ethereum and Internet Computer from one canister you control.

Live

IC Reactor

Type-safe Internet Computer integration for TypeScript and React. Seven packages, end-to-end types, TanStack Query caching.

MIT

B3Note

Anonymous note sharing with witness-like encryption. Notes and share links expire in an hour, then the canister timer deletes them.

Demo
How it works

No backend. No custody handover.

Every product here runs its logic on the client or inside a canister the user owns. That constraint shapes the whole stack.

01

Identity stays with the user

Internet Identity issues a delegated identity in the browser. B3Pay never holds a key, a seed phrase or a session on a server.

02

State lives in a canister

A B3Wallet is a canister the user controls. Upgrades, signers and thresholds are decisions they make on-chain, not requests to us.

03

Types survive the boundary

IC Reactor generates TypeScript from Candid, so a canister method signature is a compile error in your editor before it is a runtime failure.

For developers

One call wires the client, the cache and the hooks.

defineReactor creates the QueryClient, ClientManager, reactor and bound hooks — including useAuth and useUserPrincipal.

src/reactor.ts
import { defineReactor } from "@ic-reactor/react"
import { idlFactory, type _SERVICE } from "./declarations/backend"
export const {
reactor,
useActorQuery,
useActorMutation,
useAuth,
} = defineReactor<_SERVICE>({
name: "backend",
idlFactory,
canisterId: "rrkah-fqaaa-aaaaa-aaaaq-cai",
display: true,
})
From the blog

The wire keeps publishing.

Our blog is a machine-run technical wire: stories on AI, Web3 and the Internet Computer, researched and published by an AI pipeline with grounded sources on every one.