Introducing chainkit: accept Bitcoin without giving up custody
chainkit is a non-custodial Bitcoin payment processor — fiat-priced invoices that settle on-chain straight to your own wallet, plus a Go SDK that routes blockchain RPC across nine providers.
Today we're opening chainkit to everyone: a non-custodial Bitcoin payment processor for merchants who want to accept Bitcoin without handing their money to a middleman — plus the Go SDK for multi-provider blockchain RPC that the whole thing is built on.
The problem with "accepting Bitcoin" today
Most hosted Bitcoin payment services are custodial: the customer pays the processor, the processor credits your account, and you withdraw later — trusting them with your funds, your cash flow, and your continued access to the account. The non-custodial alternatives mostly ask you to run infrastructure yourself: a node, a database, upgrades, backups, monitoring. Excellent software, real operational cost.
We wanted the middle that neither side offered: hosted convenience with self-custody. You keep the keys; we do the bookkeeping.
How chainkit works
You register an xpub — an extended public key. It can derive receiving
addresses, but it cannot spend; private keys never leave your wallet, and the API and the
console both reject anything that looks like an xprv outright.
- Every invoice gets a fresh address, derived from your xpub. No address reuse means no trivial clustering of your customers' payments — privacy by default.
- Invoices are fiat-priced. Price in euros or dollars; chainkit locks the BTC amount at issuance so neither side carries rate ambiguity, and the rate snapshot is printed on the receipt.
- Receipts are immutable PDFs carrying your business identity, VAT id, and tax breakdown — snapshotted at issue time, so editing your profile never rewrites an old receipt.
- Webhooks are HMAC-signed and verified in one SDK call. Invoice creation is idempotent, so retries are safe.
- On-chain settlement is final. No chargebacks, no card-network reversals, no 120-day holds. The customer pays, the chain confirms, the money is in your wallet — it was never anywhere else.
- Quarter-end is covered: CSV/JSON exports and a bulk receipts ZIP for your accountant, plus a customer-PII redaction endpoint for GDPR "forget" requests. EU-hosted.
The RPC layer underneath
chainkit started as an SDK problem: every Bitcoin app eventually hard-codes one RPC provider's API, then learns about rate limits, outages, and pricing changes the hard way. The chainkit Go SDK (MIT, free forever) talks to nine providers behind one interface, with per-call failover, circuit breakers, and scoring. The cloud adds observability and live routing configuration on top — and every chainkit account includes it.
That's also why the payments product can promise what it promises: payment detection runs on the same multi-provider routing, so one provider having a bad day doesn't mean your invoices stop confirming. You can watch the fleet we route against on the live scoreboard.
Pricing that follows your revenue
There's a free tier for trying it on real invoices, and paid plans bill a small percentage of settled volume (under 1%) against a monthly minimum — you pay the greater, and the numbers live on one config-driven pricing page so what you see is what bills. No per-transaction card fees, no chargeback reserve, no withdrawal step.
Where we are, honestly
chainkit is young. The invoice → settle → receipt spine is solid and tested end-to-end (mainnet and testnets), the console is fast, and the SDK has been routing RPC in production for a while. What we don't have yet: a decade of history, a big-name customer list, or every feature you can imagine. If you want to check how we compare with the incumbents, we wrote a line-by-line comparison with Blockonomics — including the places where their call is a fine call.
If non-custodial matters to you, create an account, register an xpub, and issue a test invoice — the whole loop takes a few minutes, and there's a plain-language explainer you can hand your customers.