NULL.
Services
Read the integration guide →
🧾

Accept NULL Pay

Get paid without a processor in the middle. No account, no KYC, no fees, no one holding your money.

The customer pays from their own wallet to a one-time address only you can find and spend. You run ten lines of Node; there is no payment processor and no NULL endpoint holding funds.

no processor no fees on-chain confirmed kit ready

A checkout with nobody in the middle

Card rails and crypto processors both put a company between you and your money — taking a cut, holding funds, and logging every sale to an identity. @null/pay-merchant is a library that runs in your process: createRequest makes a link/QR bound to your stealth meta, the customer’s NULL pays a one-time address only you can detect with your view key, and watchInbox reconciles their sealed receipt and confirms the transfer on-chain before onPaid fires. No processor, no held funds, zero fees.

You hold it

No custodian

Funds go straight from the customer’s wallet to a one-time address you alone can spend. NULL never touches the money.

Unlinkable

One-time addresses

Every payment lands on a fresh stealth address; the payment graph doesn’t sit on-chain tied to your shopfront.

Confirmed

Proof, not a promise

onPaid fires only after the sealed receipt matches a request AND the transfer is confirmed on-chain — a forged receipt settles nothing.

How it works

Make a request

createRequest({ chain, asset, amount, ref }) → renderRequest gives you a link, a QR, and an embed button.

Customer pays their way

They scan or click; their NULL derives a one-time address from your meta, pays, and seals a receipt straight to your mailbox.

You reconcile + confirm

watchInbox proves the address is yours, matches the receipt to the order (by amount today; by order id once the app ships pm.ref), confirms the tx on-chain, and calls your webhook once.

Honest scope: on-chain funds use classical stealth addressing (secp256k1) — the post-quantum seal protects your messages and the payment notice, not the coins themselves. Treat a stealth balance as cash in transit and sweep it to your own wallet.
For developers: @null/pay-merchant, Node ESM. Ten lines to your first payment; a mock counter demo runs request → QR → receipt → PAID. 516 tests incl. byte-parity with the live app and every audit regression. Refunds go to a fresh address the customer supplies — never the sender.
🧾

Payments you actually own

No processor, no fees, no custodian, no KYC — just a library and your own identity. The money never leaves your control.

Read the integration guide →