Using DeFiEscrow

How DeFiEscrow Works

Create a DeFiEscrow, fund it, approve it, release it, and withdraw. A plain-language walkthrough of the app and the contract behind it.

· 4 min read · DeFiEscrow

DeFiEscrow is a non-custodial escrow on Ethereum and a web app that helps you build the transactions. The app does not take custody between those transactions. Your wallet signs them. The contract holds the tokens and applies the rules. This is the path from an empty form to a withdrawn payout, and the path when the deal stops instead.

Confirm the network in the app and in the wallet before you do any of this with value. A test network is the right place to rehearse. Tokens on a test network are not the ETH, USDC, or USDT that trade on mainnet, even when the ticker looks the same.

Create the escrow

Open the app and connect a wallet. MetaMask is the wallet the interface is built around; the connection is the standard injected-wallet request, and the wallet still has to be on the network the app expects.

You choose a simple deal or a multi-party deal.

A two-party deal asks for the asset (ETH, USDC, or USDT), the amount, the depositor's address, the withdrawer's address, and whether the depositor or the withdrawer pays the protocol fee. The app turns that into deposit and payout numbers, including the fee line.

A multi-party deal asks you to add parties one at a time. Each party is a depositor, a withdrawer, or an acknowledger. A depositor sends tokens. A withdrawer receives tokens if the deal completes. An acknowledger neither sends nor receives, but must still approve before release. You can mark which parties bear the fee. The app will refuse to continue if the numbers cannot be made to balance.

You then set two deadlines. The funding deadline is the last moment to finish deposits. The approval deadline must be later. It is the last moment to finish approvals. Pick them from the real calendar of the deal, not from a default you did not read. Deadline behavior is precise, and it surprises people who think every escrow "expires."

On the review step, read the on-chain amounts after fees. When you sign, the wallet is asked to send createEscrow. The contract stores the parties, the amounts, the token, and the deadlines, checks that the fee allocation is large enough, and emits a creation event. You get an escrow id. Share it with the other parties so they can open the same deal. Sharing the id does not give them your keys. It lets them find the record. They should still confirm every address on the screen before they deposit.

Fund it

Each party who owes a deposit sends exactly that amount before the funding deadline.

For ETH, the deposit is the value of the transaction. For USDC or USDT, you approve the contract to spend the tokens and then deposit. Approve the amount you intend to deposit when the wallet lets you choose, rather than an unlimited allowance you do not need. USDT on Ethereum sometimes requires the allowance to be set back to zero before a new non-zero allowance is accepted. If an approval fails for that reason, that is the usual fix.

Only the party address can deposit. A transfer from a different wallet is not counted, even if you meant well. When the sum of deposits reaches the required total, the state becomes Funded. Partial funding does not start the approval phase.

Approve, release, withdraw

Approvals open only after the escrow is Funded, and only until the approval deadline. Every participant except the fee recipient has to approve. The fee recipient is skipped so a fee address cannot veto a deal the humans already accepted. When the last required approval is in, the state is Approved.

Release is a separate transaction. Anyone can send it once the state is Approved. It credits payouts. It does not, by itself, push the tokens into wallets. Each party then withdraws their credited balance. A party can withdraw to their own address or to another address they name in that transaction. Read that destination in the wallet before you sign. The wallet checklist is short because the expensive mistakes are short too.

After release, the funding and approval deadlines no longer unwind the deal. The tokens sit as withdrawable balances until the parties take them.

If the deal stops

If the funding deadline passes before the escrow is fully funded, anyone can terminate it. Whoever deposited can withdraw that deposit back. Whoever never deposited has nothing to withdraw.

If the escrow is Funded but someone will not approve before the approval deadline, anyone can terminate it the same way: deposits back to depositors, not payouts to recipients.

If the deal is Funded or Approved and a party raises a dispute, release freezes. The raiser can remove the dispute. If nobody does, then 30 days after the dispute a termination refunds deposits. Disputes are worth reading before you need them, because a dispute near a deadline has timing consequences.

There is no screen where support "pushes the deal through." The protocol fee is automatic arithmetic, not a concierge fee.

What you leave outside the app

Write down, in the agreement the humans actually sign, what must be true before each person approves: a deed signed, a shipment received, a milestone demonstrated, a closing statement agreed. The app will not ask. The contract will treat the approval as the whole condition.

That is how DeFiEscrow works when it is used on purpose. The states are few. The amounts are fixed at creation. The exits are refunds of deposits, not a negotiated split.