How a private order is created
- 01Create a normal Base contract deposit in Sell for your amount, payment method, and currency.
- 02From Deposits, lock that deposit to the buyer's wallet: an address, ENS .eth, or PNS .peer name.
- 03The app attaches the WhitelistPreIntentHook onchain, so the contract rejects every other wallet.
- 04You get a link at usdctofiat.xyz/d/<escrow>/<depositId> to send the approved buyer.
Why it takes more than one transaction
EscrowV2's createDeposit does not take a whitelist parameter, so the app attaches the hook in a follow-up transaction after the deposit exists. The restriction is enforced onchain, not in the UI.
| Contract | Address |
|---|---|
| EscrowV2 | 0x777777779d229cdF3110e9de47943791c26300Ef |
| WhitelistPreIntentHook | 0xda023Ea0d789A41BcF5866F7B6BBd2CaDF9b79B8 |
Cost model on a private fill
A private order has the same seller cost model as a public delegated deposit: no platform fee to create the order, Base gas for onchain actions, and no deduction from the fiat you receive in the payment app. Buyer-side fee configuration can vary by route.