What are periphery contracts
Periphery contracts support the PaymentOperator without being the operator itself. They handle escrow storage, token collection, refund workflows, and evidence submission.Contract Map
| Contract | Role | Type |
|---|---|---|
| Commerce Payments | AuthCaptureEscrow + ERC3009PaymentCollector + Permit2PaymentCollector (base layer) | Singleton |
| RefundRequestEvidence | On-chain evidence submission tied to RefundRequest | Singleton |
| ReceiverRefundCollector | Pulls funds from receiver for refunds (after capture) | Singleton |
RefundRequest is a hook plugin, see Hooks: RefundRequest.
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 |
All addresses are available programmatically via
@x402r/core’s getChainConfig(chainId). See SDK Overview for details.Next Steps
Commerce Payments
AuthCaptureEscrow and ERC3009PaymentCollector.
RefundRequest (hook)
Refund request lifecycle and approvals.
PaymentOperator
The core operator contract.
