Closed beta opens September 1, 2026
Non-custodialAPI-firstMulti-chain

Crypto payments that never touch our hands.

You create a charge, we generate a deterministic on-chain address, and your customer pays straight into it. We just detect and route — we never touch the funds.

See the integrationRead the docs →

Not built like the rest of the market

Most crypto payment processors still behave like a bank: they hold your money before passing it on. Klappay holds nothing.

Custody
Klappay —Never. Funds go straight to the on-chain split address.
Others —Funds pass through the provider’s account before reaching you.
Integration
Klappay —Pure API. Your checkout, your design, your UX.
Others —Hosted widget/iframe — you adapt your product to it.
Split payments
Klappay —Native: a multi-recipient address ships with every charge.
Others —Bolted-on feature, usually gated or priced separately.
Real-time status
Klappay —SSE + webhooks + charge.waitForConfirmation() in the SDK.
Others —Manual polling or a single webhook, no native stream.
Sandbox
Klappay —Simulate any charge event without touching a real chain.
Others —Testnet-only when it exists — slow, brittle setup.
Types
Klappay —API and SDK share the same Zod schema. Never drifts.
Others —Types maintained by hand, tend to drift from the real API.
Refunds
Klappay —No automatic reversal — it settles on-chain and the payer is never a split recipient. You decide the remedy: partial delivery, manual refund, or credit.
Others —A chargeback exists, but only because your funds sat in the processor’s custody first.

No on-chain chargebacks — but also no processor standing between you and your funds. They're yours the moment they land.

Audit it yourself: the Node SDK and the shared types package are open source (MIT) on GitHub — read exactly what runs in your backend before you trust it with a single charge.

One API, a growing suite of products

The Core API is the foundation — everything above it ships as a standalone product.

LIVE

Klappay Core

The non-custodial payments API — charges, distributions, and webhooks for any crypto checkout.

BUILDING

Klappay Link

Shareable payment links and product pages — create one from a dashboard, get paid non-custodially, no API integration required.

COMING SOON

Klappay Fund

Pooled fundraising with on-chain, non-custodial escrow.

COMING SOON

Klappay Give

Tipping and donations, split and settled non-custodially.

COMING SOON

Klappay Recurring

Subscription and recurring billing on crypto rails.

COMING SOON

Klappay One

One button, one wallet for every payment address you own — approve from a push notification, wherever you are.

And much more

A few examples of what's next:

  • Klappay CommerceEmbeddable checkout widget for your site or app.
  • Klappay PayrollPay your team globally in USDC, on a schedule.
  • Klappay StreamsPay by the second — continuous money flow.

How it works

From a charge to a payout — the flow, and the code behind it.

Charge createdAddress computedPayer sends directlyDetected & paid out
STEP 01 / 05

Install the SDK

One package, zero blockchain plumbing on your side.

terminal
npm install @klappay/node

Before you ask: the edge cases

The questions that actually decide whether an integration ships. Full detail in the docs.

Sent more? The charge still confirms — charge.isOverpaid and amountReceived tell you exactly how much extra arrived, no separate status to branch on. Sent less? It sits partially_paid until the rest arrives or the charge expires.

The charge moves to expired, but the address keeps working — a late transfer is still credited and the charge resolves to underpaid with the real amountReceived, never silently dropped.

Yes. A charge paid in installments sits in partially_paid, summing every transfer against the total, until it either clears (confirmed) or the deadline passes.

No — and it's structural, not a missing feature. The on-chain split address is frozen to [merchant, treasury] at creation; the payer is never one of its recipients, so there's no contract call that can send funds back to them. You decide the remedy from your own side: partial delivery, manual refund, or credit toward a future charge.

Every webhook and SSE event carries the exact (token, network) pair that paid — acceptedPayments lists what the charge was configured to accept, paidWith lists what actually arrived. Your handler never has to guess which chain to reconcile against.

Built for developers

Everything you'd expect from a modern payments API — plus the docs to back it up.

Non-custodial by design. Every charge gets its own deterministic split address. Funds never sit in a Klappay-controlled wallet.

Type-safe SDK. The Node SDK and the API share the same Zod schemas — no hand-written types drifting out of sync.

Webhooks + realtime SSE. Get notified the moment a charge is confirmed, partially paid, or settled — push, not poll.

Sandbox testing. Simulate any charge event end-to-end, no real on-chain activity or testnet faucet required.

Multi-network, multi-token. A live capability matrix tells you which (token, network) pairs are accepted — build the picker, don’t hardcode it.

Precise settlement. Overpay, underpay, partial payments — handled as an exact decimal state machine, never floating-point guesswork.

Ship your first non-custodial charge today.

No custody, no hosted checkout lock-in, no dashboard required to get started.

Read the docs

Free during the closed beta. Pricing will be simple and per-transaction, announced before general availability.