Delivery payments
that can'tbe faked.
Funds are locked on-chain until your package arrives and you confirm it with a one-time code. No trust required — just cryptographic proof.
Contract0x0000…0000Four steps.
Zero trust needed.
Everything happens on-chain. Neither party can cheat — the contract enforces every rule.
Pick a seller and zone. The price is read straight from the contract — no manual input. Your payment is locked in escrow instantly.
Seller delivers and generates a one-time OTP. The hash is stored on-chain. The raw OTP goes to the buyer via SMS or app notification.
Enter the OTP to confirm receipt. You get 4 attempts. A 2-hour dispute window opens — raise a dispute before it closes if anything's wrong.
After 2 hours with no dispute, anyone can trigger the release. The frontend does this automatically — no extra transaction from the seller.
Raw code never touches the blockchain. Only its hash is stored — so the seller can't forge a “delivered” state without a real handoff.
0x7f3a…c91b
The contract hashes your input and checks it against the stored hash. 4 failed attempts freeze the order automatically.
Every on-chain state,
explained.
Your funds move through verifiable states. You always know exactly where your money is.
Raised within the 2-hour window, or triggered after 4 failed OTP attempts. The contract owner investigates and resolves on-chain. Note: this is a centralised step by design — a deliberate v1 tradeoff.
Dispute resolved in the buyer's favour, or buyer calls claimRefund() directly after 7 days of no delivery. No support ticket needed.
Set up in three
on-chain calls.
No dashboard, no approval process. Deploy your zones, go live, start receiving orders.
Call setPrice() once per zone you deliver to, with a USDC amount. Buyers see your prices on-chain — no manual conversion needed.
setPrice("vi", 10_000_000) // $10.00
setPrice("ikeja", 14_000_000) // $14.00
Call setAvailability(true) when you're open for orders. Toggle off during downtime — zone prices stay intact.
setAvailability(false) // pause
// zones stay priced while paused
Built for trust.
On both sides.
The contract enforces protections for buyers and sellers. No platform sitting in the middle.
After OTP confirmation, you have 2 full hours to raise a dispute. Funds stay locked in the contract — neither party can access them.
If the seller never delivers within 7 days, you call claimRefund() directly on the contract. No support ticket, no wait.
Only the seller can generate the valid OTP. The hash lives on-chain. Four failed attempts auto-trigger a dispute — no brute-force possible.
Disputes are resolved by the contract owner and settled in a single on-chain transaction. Verifiable by anyone.
Prices per zone live on-chain. The contract reads them directly when an order is placed — what you see is what's enforced.
DispatchPay never holds your funds. The smart contract does. Money only moves when on-chain conditions are satisfied.
Transparent,
on-chain prices.
Sellers register delivery prices per zone directly on the contract. All prices are in USDC — stable, no conversion needed.