> ## Documentation Index
> Fetch the complete documentation index at: https://kleros-mintlify-6ebc7975.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Escrow

> Developer overview of Kleros Escrow V1 (Mainnet) and V2 (Arbitrum), covering transaction contracts, dispute flow, and integration patterns.

## Introduction

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

<Card title="Smart Contracts" icon="file-contract" href="/developers/products/escrow/smart-contracts">
  Core contract interfaces and data structures
</Card>

***

## 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](/reference/contracts/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

<Tabs>
  <Tab title="Arbitrum One (Production)">
    | Contract        | Address                                      |
    | --------------- | -------------------------------------------- |
    | EscrowUniversal | `0x79530E7Bb3950A3a4b5a167816154715681F2f6c` |
    | EscrowView      | `0x3Fed94ee4FA1B5665DB84489f913E2c7e1290459` |
  </Tab>

  <Tab title="Arbitrum Sepolia (Testnet)">
    | Contract        | Address                                      |
    | --------------- | -------------------------------------------- |
    | EscrowUniversal | `0x5ef185810BCe41c03c9E5ca271B8C91F1024F953` |
    | EscrowView      | `0x6451046caB9291a919FCba045bf6Bb8E0Bb71467` |
  </Tab>
</Tabs>

***

## Architecture

Escrow V2 consists of three main components:

<Steps>
  <Step title="Smart Contracts">
    Core escrow logic supporting ETH and ERC20 tokens with settlement negotiations and dispute integration.
  </Step>

  <Step title="Web Application">
    React-based frontend for creating and managing transactions at [escrow.kleros.io](https://escrow.kleros.io).
  </Step>

  <Step title="Dispute Resolution">
    Integration with Kleros Court for decentralized arbitration when parties cannot agree.
  </Step>
</Steps>

### Contract Components

| Contract                | Purpose                                                                                     |
| ----------------------- | ------------------------------------------------------------------------------------------- |
| **EscrowUniversal.sol** | Main contract handling transaction creation, payments, settlements, and dispute arbitration |
| **EscrowView\.sol**     | View-only contract providing formatted ruling options and payout calculations               |

***

## Transaction Lifecycle

```mermaid theme={null}
stateDiagram-v2
    [*] --> NoDispute: Transaction Created
    NoDispute --> TransactionResolved: Full Payment/Reimbursement
    NoDispute --> TransactionResolved: Execute After Deadline
    NoDispute --> WaitingSettlement: Settlement Proposed
    WaitingSettlement --> TransactionResolved: Settlement Accepted
    WaitingSettlement --> WaitingFees: Settlement Timeout
    WaitingFees --> DisputeCreated: Both Fees Paid
    WaitingFees --> TransactionResolved: Timeout (One Party Wins)
    DisputeCreated --> TransactionResolved: Ruling Enforced
```

***

## Key Features

<AccordionGroup>
  <Accordion title="Native ETH & ERC20 Support">
    Create escrow transactions with any ERC20 token or native ETH. Per-token amount caps can be set by governance to manage risk.
  </Accordion>

  <Accordion title="Partial Payments & Reimbursements">
    Buyers can release partial payments and sellers can issue partial refunds, enabling flexible resolution without disputes.
  </Accordion>

  <Accordion title="Settlement Negotiations">
    Either party can propose settlements. The alternating proposal system prevents unfair rushing to arbitration.
  </Accordion>

  <Accordion title="Deadline-Based Execution">
    Transactions can be automatically executed after their deadline, releasing funds to the seller.
  </Accordion>

  <Accordion title="Kleros Court Integration">
    Full dispute resolution through Kleros Court with appeal support and evidence submission.
  </Accordion>
</AccordionGroup>

***

## Resources

<CardGroup cols={2}>
  <Card title="GitHub Repository" icon="github" href="https://github.com/kleros/escrow-v2">
    Smart contracts and web application source code
  </Card>

  <Card title="Live Application" icon="rocket" href="https://escrow.kleros.io">
    Production Escrow interface
  </Card>

  <Card title="Discord Community" icon="discord" href="https://discord.gg/kleros">
    Get help from the community
  </Card>
</CardGroup>
