Introduction

Cron Protocol is non-custodial subscription payment infrastructure for EVM chains.

What is Cron Protocol?

Cron Protocol enables recurring on-chain payments without any custodial risk. Subscribers approve a token allowance once — their funds stay in their own wallet until a keeper executes the charge on schedule. No escrow, no intermediary, no custody.

It is designed for merchants, web3 apps, and AI agents that need programmable, automatic payment flows in USDC or any ERC-20 token.

Core Properties

  • Non-custodial — funds never leave the subscriber's wallet until charge time.
  • Immutable contracts — no admin keys, no upgradeable proxies. The registry is final.
  • Permissionless — anyone can create a plan or run a keeper. No KYC, no approval.
  • Multi-chain — identical contract addresses on Base and Arbitrum via CREATE2.
  • AI-agent ready — built-in budget manager lets agents subscribe and manage spending autonomously.
  • 1.5% total fees — 1% protocol fee + 0.5% keeper bounty. No other charges.

Components

PackagePurpose
@cron/sdkTypeScript SDK for merchants, subscribers, and agents
@cron/reactDrop-in <CronButton /> component
@cron/keeperReference keeper — discovers and charges due subscriptions
@cron/x402-apiHTTP 402 micropayment API (MPP)
Contracts (Foundry)6 immutable Solidity contracts deployed via CREATE2
SubgraphThe Graph indexer for plan/subscription/charge queries

Supported Chains

  • Base (mainnet)
  • Base Sepolia (testnet)
  • Arbitrum One (mainnet)
  • Arbitrum Sepolia (testnet)

[*] Same addresses everywhere

All contracts use CREATE2 with a fixed salt, so the registry address is identical on every chain. You can hardcode it once in your integration.

Supported Tokens

Any ERC-20 token can be used for a plan. The dashboard and reference implementation use USDC. Token decimals are resolved automatically by the SDK.