Pricing & fees
You should see every unit that can be deducted before it happens — not discover it at reconciliation. There are exactly two: the platform fee (0% on your first 1,000 transactions each month) and, on transfer mode only, a network-cost pass-through.
What a payment costs#
Per project, the first 1,000 transactions each month carry no platform fee (the allowance resets on the 5th, 00:00 UTC). Beyond that, your account plan’s rate applies.
| Per payment | Within free tier | Beyond free tier |
|---|---|---|
| Wallet mode buyer connects a wallet | 0 — nothing deducted | fee 0.5% (Scale 0.4%) |
| Transfer mode buyer sends to a deposit address | network fee ~0.015 USDT | fee 0.5% (Scale 0.4%) + ~0.015 USDT |
A worked example#
A 25 USDT invoice, in all four cases:
| 25 USDT invoice | Within free tier | Beyond free tier (0.5%) |
|---|---|---|
| Wallet mode — you receive | 25.000000 | 24.875000 |
| Transfer mode — you receive | ≈ 24.985000 | ≈ 24.860000 |
The fee is computed in basis points and rounded down; rounding dust always goes to you, and the parts always sum exactly to the invoice amount.
The transfer-mode network fee#
Plans#
| Free | Pro $5/mo | Scale $25/mo | |
|---|---|---|---|
| Fee beyond free tier | 0.5% | 0.5% | 0.4% |
| Projects | 1 | 3 | 10 |
| Webhook endpoints / project | 2 | 5 | Unlimited |
| API rate limit | 30 req/min | 60 req/min | 120 req/min |
| Charge creations / month | 8,000 | Unlimited | Unlimited |
| White-label checkout | — | — | Yes |
Subscriptions are prepaid in stablecoin on DuckyPay’s own rails (1, 3, or 12 months) from the dashboard’s Billing page. If a plan lapses, already-created charges keep settling — plan gates only ever block creating new charges.
Cashback#
On paid plans, every transaction that actually incurs a platform fee earns 0.1% of the gross amount back, funded from DuckyPay’s own fee. Cashback accrues in an off-chain ledger (visible in the dashboard) and is withdrawable from 100 USDC.
The 1% hard cap#
The fee on any payment is technically incapable of exceeding 1%: the router contract enforces MAX_FEE_BPS on-chain regardless of what any signature says. Even a fully compromised DuckyPay could not take more than 1% of a payment — and could never touch funds already in your wallet. This bound is compiled into the contracts; raising it would require deploying new ones.
FAQ#
Is “0%” really 0%?
In wallet mode, yes — within the monthly free tier nothing at all is deducted, and the buyer pays their own gas. In transfer mode the network-cost pass-through (~0.015 USDT) still applies, because the settle transaction is real gas someone has to pay.
Why was ~0.5 THB deducted from this row?
That is the transfer-mode network fee expressed in THB. It appears only on transfer-rail payments, once per settled payment.
Why does a tiny invoice show a 1% network fee?
The pass-through is capped at 1% of the amount. On invoices below roughly 1.5 USDT the real gas cost would exceed 1%, so the cap binds and DuckyPay absorbs the difference.
Where do these numbers come from?
This page renders its constants from the same shared module the signer and contracts test against (@duckypay/shared) — see Chains & tokens for the equivalent guarantee on addresses.