Skip to main content

Network & Contract Addresses

Deployed Testnets

Contracts are deployed on multiple testnets. Choose one that fits your needs:

  • Arbitrum Sepolia (421614) — Uses real EAS and Chainlink ETH/USD oracle
  • 0G Galileo (16602) — Full contract deployment with all features

See the sections below for network details and contract addresses.

Deploying to Your Own Network

To deploy to a new network, use the Hardhat Ignition module at packages/contracts/ignition/modules/PayID.ts, then fill in the addresses below.


Arbitrum Sepolia (Chain ID: 421614)

✅ Deployed & Active

All contracts are live on Arbitrum Sepolia. Uses real EAS and Chainlink ETH/USD oracle.

ContractAddress
AgentPayID0xC031901680128b1419E6D00Fd7e29c734cE2f311
AIAgentRegistry0x76E829f48BD5e3c5380f5c77Fe1a3EFBD9AC5a44
AIAgentRuleManager0xd5eA6ABe9727061c18fa65Fcd75bd7dAc7E7e7f5
AttestationVerifier0x524130A6974B3075eb6DB32afA89AE4315bf7b2d
CombinedRuleStorage0x486a6d305742B0b5847770BF421114161440E79b
EscrowMilestone0xA8C4f9a19B2F0a87f6BAaF4EdeB72E2C2fD60504
MockAgentRegistry0xFFA2c4bB8075dA83c45698B7489AdC9Cee2f8045
MockEAS0x170BdFe8495d3c9e331fF2d412Cb7E96303CC4A0
MockOracle0x49fF785E85e5cA564E8bc1EE7EF5548E41500C12
PayIDVerifier0xE2FfE1037b996B8F66dE7cba0398A411850Ecd91
PayWithPayID0x04eEAF2dc4Ee22E7362a60dd652E1DF450697dbb
PayWithPayIDBatch0xC24618Bc5E3E46398FB2845DA71496505AD30e86
RecurringPayments0x60d010483B9B9f263923f73ebd7F7F7bA6c0E91b
RuleAuthority0x3d2F9441c589a24A524c36892268f35C6467bFF6
RuleItemERC7210xc22fE6CbeE7fA5A35DAf40B30D91d5D3bFfa2fD8
TimeLockVesting0xa4CA030991ab75F852c017abe6Cc5322e98FCd02
VindexRegistry0x3F6ba46650f78AcAeebf906306987994555a8CCb

Network Info:

RPChttps://sepolia-rollup.arbitrum.io/rpc
Chain ID421614
CurrencyETH
Explorersepolia.arbiscan.io
Faucetfaucet.triangleplatform.com/arbitrum/sepolia
EAS0xaEF4103A04090071165F78D45D83A0C0782c2B2
Chainlink ETH/USD0xd30e2101a97dcbAeBCBC04F14C3f624E67A35165

0G Galileo Testnet (Chain ID: 16602)

✅ Deployed & Active

All contracts are live on 0G Galileo Testnet.

ContractAddress
AIAgentRegistry0xf5cf5cb577118e1a0993e69eb373C47A242C01D3
AIAgentRuleManager0x45024b9dB494C66f1B2E43F910664D6f4E261D6C
AgentPayID0xa0c23E005f5D627dB73024385828c5682e63F364
AttestationVerifier0x0a83AEbdEeb392328F133b056b63946a3212FB60
CombinedRuleStorage0xF674A5738D4f70006a9d3C541A0CF149E284a182
EscrowMilestone0xC3c33B616A77Ee8f63D5f65F6Ff8fc248F7b7A16
PayIDVerifier0x8FeCc22437Ab5Bc53805B2ebe8b861A2F3177737
PayWithPayID0x73c8B8f359AC2A16a8962e16842B8e7A1773024f
PayWithPayIDBatch0x7031d36feeE7022cE7563b88bAc16698c73eAF02
RecurringPayments0x432dBA247F2F61fEc5DEe1F84E3855d44e9925D6
RuleAuthority0x44a50e4B7051C7155C28271bA9eacFd71ee571a8
RuleItemERC7210xD3897D0ba0F219835b000992B21e56e8C44C7715
TimeLockVesting0xEc74D41FaDe9E100804fdda8876cA8Aeb85a0902
VindexRegistry0xa7448AEc914074e19C0bC2259E6e1FAe695aCb0f

Network Info:

RPChttps://evmrpc-testnet.0g.ai
Chain ID16602
CurrencyA0GI
Explorerchainscan-galileo.0g.ai
Faucetfaucet.0g.ai

Other Networks

Contracts have not been deployed to these networks yet. To deploy to a new network, use the Hardhat Ignition module at packages/contracts/ignition/modules/PayID.ts, then configure payid-react with your addresses via <PayIDProvider contracts={...}>.

NetworkChain IDStatus
Lisk Sepolia4202Not deployed
Monad Testnet10143Not deployed
Moonbase Alpha1287Not deployed
Polygon Amoy80002Not deployed

Configuring payid-react with Your Addresses

Pass your deployed addresses to <PayIDProvider>:

import { PayIDProvider } from 'payid-react'
import type { PayIDContracts } from 'payid-react'

// Your deployed addresses
const MY_CONTRACTS: PayIDContracts = {
ruleAuthority: '0x...', // RuleAuthority
ruleItemERC721: '0x...', // RuleItemERC721
combinedRuleStorage: '0x...', // CombinedRuleStorage
payIDVerifier: '0x...', // PayIDVerifier
payWithPayID: '0x...', // PayWithPayID
vindexRegistry: '0x...', // VindexRegistry
aiAgentRegistry: '0x...', // AIAgentRegistry (optional)
aiAgentRuleManager: '0x...', // AIAgentRuleManager (optional)
attestationVerifier: '0x...', // AttestationVerifier (optional)
}

export default function App() {
return (
<PayIDProvider contracts={{ [YOUR_CHAIN_ID]: MY_CONTRACTS }}>
<YourApp />
</PayIDProvider>
)
}

Permission Model

✅ Permissionless

ActionContract
SubscribeRuleItemERC721.subscribe()
Create Rule NFTcreateRule() + activateRule()
Extend Rule expiryextendRuleExpiry(tokenId, newExpiry)
Register rule setCombinedRuleStorage.registerCombinedRule()
Deactivate rule setCombinedRuleStorage.deactivateMyCombinedRule()
Read active rulesCombinedRuleStorage.getActiveRuleOf()
Send ETH paymentPayWithPayID.payETH()
Send ERC20 paymentPayWithPayID.payERC20()
Verify proofPayIDVerifier.verifyDecision()

🔐 Admin Only

ActionDescription
PayIDVerifier.setTrustedAuthority(addr, bool)Whitelist or remove a rule authority
RuleItemERC721.pause()Emergency pause
RuleItemERC721.setSubscriptionUsdCents(n)Change subscription price
MockEthUsdOracle.setPrice(n)Update oracle price (test only, owner-gated)

Subscription & Fees

Detail
Subscription feeCalculated from oracle ETH/USD price × subscriptionUsdCents
Fallback price0.0001 ETH (if oracle is stale > 1 hour or reverts)
Subscription duration30 days per payment
Rule slots without subscription1
Rule slots with subscription3 (MAX_SLOT)
Rule expirySet explicitly via extendRuleExpiry(tokenId, timestamp)