> ## Documentation Index
> Fetch the complete documentation index at: https://docs.x402r.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Periphery Overview

> Supporting contracts that extend the PaymentOperator: escrow, refund requests, token collectors, and more

## What are periphery contracts

Periphery contracts support the [PaymentOperator](/contracts/payment-operator) without being the operator itself. They handle escrow storage, token collection, refund workflows, and evidence submission.

## Contract Map

| Contract                                                                  | Role                                                                               | Type      |
| ------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | --------- |
| [Commerce Payments](/contracts/periphery/auth-capture-escrow)             | AuthCaptureEscrow + ERC3009PaymentCollector + Permit2PaymentCollector (base layer) | Singleton |
| [RefundRequestEvidence](/contracts/periphery/refund-request-evidence)     | On-chain evidence submission tied to RefundRequest                                 | Singleton |
| [ReceiverRefundCollector](/contracts/periphery/receiver-refund-collector) | Pulls funds from receiver for refunds (after capture)                              | Singleton |

<Note>
  **RefundRequest** is a hook plugin, see [Hooks: RefundRequest](/contracts/hooks/refund-request).
</Note>

## Contract Addresses

All periphery contracts use **universal CREATE2 addresses**: the same address on every supported chain.

| Contract                | Address                                      |
| ----------------------- | -------------------------------------------- |
| AuthCaptureEscrow       | `0xBdEA0D1bcC5966192B070Fdf62aB4EF5b4420cff` |
| ERC3009PaymentCollector | `0x0E3dF9510de65469C4518D7843919c0b8C7A7757` |
| Permit2PaymentCollector | `0x992476B9Ee81d52a5BdA0622C333938D0Af0aB26` |
| ProtocolFeeConfig       | `0xBe2d24614F339a1eB103A399F93AA2a39Ca815Bc` |
| ReceiverRefundCollector | `0x88C9826dFA17Ad9d3a726015C667dD995394D341` |
| RefundRequestEvidence   | `0x4089A5A853e9eF35f504B842795fB272dF69c739` |

### Factories

| Factory                       | Address                                      |
| ----------------------------- | -------------------------------------------- |
| PaymentOperatorFactory        | `0xa0d4734842df1690a5B33Cb21828c946e39D55a2` |
| EscrowPeriodFactory           | `0xe72D2014ebC48F1d92521e8629574918E8030548` |
| FreezeFactory                 | `0xeC092cf1215DB44af0Abe87c1157E304FEa5d0Eb` |
| StaticFeeCalculatorFactory    | `0x97F99AB01F86b480f751B7b81166Dbe1F113e6C3` |
| StaticAddressConditionFactory | `0x77B379390750E1d3F802cC220926694D2454903E` |
| AndConditionFactory           | `0x2B07d750C639b65a26e43F1FDCE404b21DCf16D9` |
| OrConditionFactory            | `0x0519a37c0A996DD5F1e81e07b4aD3B24C257BC90` |
| NotConditionFactory           | `0xb9c3223D059C3cAbD482bB54f3d7cD52DE70A9ae` |
| HookCombinatorFactory         | `0x30B5373FD791D2d7b28C3B8020EB68b032f3f960` |

### Condition Singletons

| Condition           | Address                                      |
| ------------------- | -------------------------------------------- |
| PayerCondition      | `0x586486394C38A2a7d36B16a3FDaF366cd202d823` |
| ReceiverCondition   | `0x321651df4593DA57C413579c5b611D1A90168a3A` |
| AlwaysTrueCondition | `0x2ef2A6162aEF9Df1022ff51c011af94D99AB4904` |

<Note>
  All addresses are available programmatically via `@x402r/core`'s `getChainConfig(chainId)`. See [SDK Overview](/sdk/overview) for details.
</Note>

## Next Steps

<CardGroup cols={2}>
  <Card title="Commerce Payments" icon="vault" href="/contracts/periphery/auth-capture-escrow">
    AuthCaptureEscrow and ERC3009PaymentCollector.
  </Card>

  <Card title="RefundRequest (hook)" icon="rotate-left" href="/contracts/hooks/refund-request">
    Refund request lifecycle and approvals.
  </Card>

  <Card title="PaymentOperator" icon="file-contract" href="/contracts/payment-operator">
    The core operator contract.
  </Card>
</CardGroup>
