No custodian
Funds go straight from the customer’s wallet to a one-time address you alone can spend. NULL never touches the money.
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.
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.
Funds go straight from the customer’s wallet to a one-time address you alone can spend. NULL never touches the money.
Every payment lands on a fresh stealth address; the payment graph doesn’t sit on-chain tied to your shopfront.
onPaid fires only after the sealed receipt matches a request AND the transfer is confirmed on-chain — a forged receipt settles nothing.
createRequest({ chain, asset, amount, ref }) → renderRequest gives you a link, a QR, and an embed button.
They scan or click; their NULL derives a one-time address from your meta, pays, and seals a receipt straight to your mailbox.
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.
@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.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 →