DuckyPayDocs

DuckyPay documentation

Accept stablecoin payments that settle straight to your own wallet. No custody, no KYC to start, integrated in minutes.

What is DuckyPay?#

DuckyPay is a non-custodial payment gateway for standard stablecoins (USDT, USDC). You create a charge through the API, your buyer pays on the hosted checkout, and the funds land in your wallet — DuckyPay never holds your money at any point.

  • Non-custodial by construction. Funds move payer → merchant and payer → treasury in one atomic on-chain transaction. There is no pooled balance and no withdrawal step.
  • Fees are capped on-chain. The protocol fee is enforced by an EIP-712 signature and can never exceed 1% — the cap is compiled into the smart contract, not a policy promise.
  • 1,000 free transactions per month. Fees only apply beyond the monthly free tier — see Pricing & fees.

How a payment works#

Payerpays 100 USDTYour walletreceives ≥ 99 USDTProtocol treasuryfee ≤ 1 USDTone atomic transactionfee enforced by signature, capped on-chain

Every charge is a signed PaymentIntent: the DuckyPay backend decides the fee off-chain, signs it, and the on-chain PaymentRouter verifies that signature before splitting the payment. Buyers can pay by connecting a wallet (wallet mode) or by sending a plain transfer to a per-invoice deposit address — which works from exchange withdrawals (transfer mode). See Payment modes.

What integration looks like#

One server-side call creates a charge; the response includes a hosted checkout URL you redirect the buyer to. A signed invoice.paid webhook confirms payment.

server.ts
import { DuckyPay } from '@duckypay/node';

const duckypay = new DuckyPay(process.env.DUCKYPAY_API_KEY!);

const charge = await duckypay.charges.create({
  chainId: 137,                              // Polygon
  fiat: { currency: 'USD', amount: '25' },   // priced in fiat, paid in USDT
  reference: order.id,                       // echoed back in the webhook
});

// Send the buyer to the hosted checkout:
res.redirect(charge.checkoutUrl!);

Prefer not to write code? Payment links from the dashboard create the same hosted checkout with zero integration.

Explore the docs#

Get started

Payments

API reference

SDKs & tools