bitbaum Start a project
Package · MIT

paykit

Classify pasted Bitcoin receive strings and describe payment rails a site can show. It does not hold keys or verify settlement.

Why it exists

A site may need to tell a payer where to send money without becoming a wallet or custodian. paykit provides small, framework-free helpers for that boundary.

How it works

classifyPaste() recognizes supported Bitcoin URI, Lightning-address, and Nostr Wallet Connect forms; shownRail() describes a display-only rail and its supplied payload. The host app still renders the payment instructions, validates destinations before saving, and verifies payment itself. paykit does not check address checksums, create invoices, process payments, or confirm settlement.

Where it fits

Use it when an app needs to classify a pasted receive destination or represent a payment code supplied by the app. It is a published utility package, not a payment processor; the current fleet registry finds no app manifest adopting it yet.

LicenceMIT
Registry releasev0.1.1
Install
Sourcebitbaum/paykit
Fleet adoption0 repositories currently list this package as a dependency

API and examples

Documentation from source commit a7e45f0bdb06 · 2026-11-06. Source documentation can include work beyond the registry release.

Read the package documentation

Let a website get paid. The website does not hold the money.

pnpm add @bitbaum/paykit

Part of bitbaum. The same behavior ships in OrangeCat today.

Why this exists

A shop, a clinic, or a fundraiser should be able to take a payment without building a wallet, a balance, or a support desk for missing coins. You store where the money should land. The payer uses their own app.

Use

import { classifyPaste, shownRail } from '@bitbaum/paykit';

classifyPaste('bitcoin:bc1q…'); // 'onchain'
classifyPaste('you@coinos.io'); // 'lightning'
classifyPaste('nostr+walletconnect://…'); // 'nwc'

// A code to show. Twint, Monero, anything else. Their app pays it.
shownRail('Twint', qrPayload);

classifyPaste reads the shape of a Bitcoin receive string after stripping the bitcoin: wrapper a wallet copies. It does not check the checksum. A host that moves money still validates before it saves.

A settled rail (Lightning address, Bitcoin address, xpub, wallet-connect) is one the host can ask for a payment. A shown rail is only displayed. paykit does not store keys and does not keep a balance.

Licence

MIT

Changelog and releases

Read the repository changelog

This retrospective record was added on 2026-10-27 from the immutable sources linked below. Git commit dates are source dates, not inferred npm publication dates. A GitHub release does not itself establish npm publication. Application adoption and deployment evidence are tracked separately.

0.1.1

Recorded release notes

What's Changed

* ci(publish): tag-driven npm Trusted Publishing by @catomean in https://github.com/bitbaum/paykit/pull/1 * Handle malformed payment URI escapes safely by @catomean in https://github.com/bitbaum/paykit/pull/3 * build: ship verified Git releases without install scripts by @catomean in https://github.com/bitbaum/paykit/pull/4

New Contributors

* @catomean made their first contribution in https://github.com/bitbaum/paykit/pull/1

Full Changelog: https://github.com/bitbaum/paykit/commits/v0.1.1

  1. v0.1.1
    Release notes

    What's Changed

    * ci(publish): tag-driven npm Trusted Publishing by @catomean in https://github.com/bitbaum/paykit/pull/1 * Handle malformed payment URI escapes safely by @catomean in https://github.com/bitbaum/paykit/pull/3 * build: ship verified Git releases without install scripts by @catomean in https://github.com/bitbaum/paykit/pull/4

    New Contributors

    * @catomean made their first contribution in https://github.com/bitbaum/paykit/pull/1

    Full Changelog: https://github.com/bitbaum/paykit/commits/v0.1.1

Recent source changes

Repository activity can include unreleased work; it is not a list of deployed changes.

  1. docs(agents): the org rules block, generated from bitbaum/fleet (#14)
  2. build(deps-dev): bump @types/node from 26.6.5 to 26.6.6 in the dev group (#13)
  3. docs(agents): the org rules block, generated from bitbaum/fleet (#12)
  4. chore(deps): dependabot leaves TypeScript 7 alone until typescript-eslint supports it (#11)
  5. docs(agents): the org rules block, generated from bitbaum/fleet (#10)
  6. docs: record verified release history and its evidence limits (#9)
  7. ci: diagnose npm publisher binding without publishing (#8)
  8. fix(ci): align npm OIDC publishing with accountkit (#7)
All releases · All tags

Where it is declared

Linked products declare this package in their manifests. A declaration alone does not verify every feature, version or deployed integration.

No consumers are recorded in the registry.

Sources and verification

Install commands and declared consumers come from Fleet’s generated registry. Documentation and release notes come from the package repository. The catalogue does not certify production journey coverage.

Documentation from source commit a7e45f0bdb06 · 2026-11-06. Source documentation can include work beyond the registry release.

Package verification runs