Arcdesk

Refund guarantee

If a trade does not complete, your money comes back. Not as a support ticket, as a function on the contract that nobody, including us, can switch off.

Last updated 1 September 2026

The guarantee

Every payment you escrow carries a deadline of at most 30 minutes. If the trade has not settled by then, refundPayment(orderId, payer) becomes callable by anyone and sends the full amount — price and fee — back to the address that paid it. There is no admin switch, no pause function, and no path by which the desk can keep escrowed funds.

When it applies

What happenedWhat you do
The counterparty never claimed your paymentRefund after the deadline. Your funds return in full.
The desk went offline mid-tradeSame. Settlement is on-chain, not dependent on our server staying up.
The counterparty claimed but delivery is slowNothing is lost: the preimage is public, and the delivery call stays open for at least an hour longer than your payment window. You or anyone can submit it.
You posted an order nobody tookCancel it any time and withdraw instantly; time-limited orders are returned automatically when they expire.

Claiming a refund

From the site: open Orders, connect the wallet that paid, and the Refund button appears once the countdown ends.

Without the site, from any wallet:

cast send $PAYMENT_ESCROW "refundPayment(bytes32,address)" $ORDER_ID $YOUR_ADDRESS \
  --rpc-url https://mainnet.base.org --private-key $YOUR_KEY

Your order id is in the PaymentLocked event your own transaction emitted, so you can always recover it from the chain even if this site disappears.

Why the windows are asymmetric

A payment can be locked for at most 30 minutes; a reservation must live at least 90. The contract enforces both. That gap is what guarantees there is always time to deliver after a preimage becomes public — it is the reason a half-finished trade cannot strand you.

What this does not cover

The guarantee is about settlement, not about price or about risks outside the contract. It does not protect you from a bug in unaudited code, from an address-level blocklist applied by the token issuer, or from sending funds to an address you control incorrectly. See Risk.