Skip to main content

Introduction

Kleros Escrow enables secure transactions with built-in dispute resolution through Kleros Court. This page covers both V1 (Ethereum Mainnet) and V2 (Arbitrum).

Smart Contracts

Core contract interfaces and data structures

V1 (Ethereum Mainnet)

Escrow V1 is a two-party escrow on Ethereum Mainnet, with Kleros Court available for dispute resolution. V1 integration is fully supported. The V1 interface enforces token compatibility: unsupported tokens are blacklisted with toast notifications, and the token selector modal warns about non-standard ERC20 tokens (such as USDT) that V1 does not support. The application at escrow.kleros.io is whitelisted on Reown for WalletConnect sessions. For V1 contract addresses, see Deployment Addresses V1.

V2 (Arbitrum)

Kleros Escrow V2 is in production and supports both native ETH and ERC20 tokens, with settlement negotiations, partial payments, and deadline-based automatic execution. The sections below document V2 technical details. Technical notes for integrators:
  • Token decimals: the contract handles tokens with non-18 decimals correctly (USDC and USDT are supported; both are whitelisted, USDT being a V2-only addition since V1 does not support it)
  • Dispute policy: the General Escrow dispute policy document is finalized and stored on IPFS
  • Subgraph: version 2.2.1 runs on Goldsky and exposes transactionHash fields, which power block explorer links in the transaction timeline
  • File storage: uploads go through the Atlas SIWE flow to IPFS
  • Frontend stack: the interface uses kleros-app 3.0.1 (including unsubscribe-from-notifications support) and the shared UI Components Library, including the shared file viewer

Contract Addresses


Architecture

Escrow V2 consists of three main components:
1

Smart Contracts

Core escrow logic supporting ETH and ERC20 tokens with settlement negotiations and dispute integration.
2

Web Application

React-based frontend for creating and managing transactions at escrow.kleros.io.
3

Dispute Resolution

Integration with Kleros Court for decentralized arbitration when parties cannot agree.

Contract Components


Transaction Lifecycle


Key Features

Create escrow transactions with any ERC20 token or native ETH. Per-token amount caps can be set by governance to manage risk.
Buyers can release partial payments and sellers can issue partial refunds, enabling flexible resolution without disputes.
Either party can propose settlements. The alternating proposal system prevents unfair rushing to arbitration.
Transactions can be automatically executed after their deadline, releasing funds to the seller.
Full dispute resolution through Kleros Court with appeal support and evidence submission.

Resources

GitHub Repository

Smart contracts and web application source code

Live Application

Production Escrow interface

Discord Community

Get help from the community