# ERC20 Transfer Logs Decoder

> ERC20 Transfer Logs Decoder is a paid API for AI agents from skills.onesource.io, paid per call via x402, $0.005/call, status unknown (last checked 2026-09-13).

Fetches and decodes ERC20 Transfer event logs via eth_getLogs, returning sender, recipient, and amount for a given token contract or wallet address across multiple EVM networks

## Facts

- Endpoint: GET https://skills.onesource.io/api/chain/erc20-transfers
- Price: $0.005/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-13
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/skills-onesource-io-924686a9
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_DEtI4qrI5_gRgzGuWDtS_

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability skills-onesource-io-924686a9
```

Example prompt: Pull all decoded ERC20 transfer logs for USDC (0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48) on Ethereum from block 19000000 up to the latest block — I need the sender, recipient, and amount for each transfer.

## When to prefer this

Use this endpoint when you need decoded ERC20 Transfer event history (sender, recipient, amount) for a specific token contract or wallet across Ethereum mainnet, Base, Avalanche, or testnets. Prefer this over raw transaction lookups when you specifically want token movement logs rather than native ETH transfers or general transaction data.

## Known failure modes

- Neither token nor wallet address provided — at least one is required
- Invalid Ethereum address format (must be 0x-prefixed 40 hex chars)
- Unsupported network value — must be one of: ethereum, sepolia, avax, megaeth, megaeth-testnet, base
- Block range too wide resulting in log overflow or RPC timeout
- from_block greater than to_block producing empty or error response
- Payment failure (402) if x402 micropayment not completed
- Token address is not an ERC20 contract — no Transfer events emitted

## How this service works

ERC20 Transfer logs via eth_getLogs - decoded sender, recipient, and amount for a token or wallet

## Output

A list of decoded ERC20 Transfer events including the sender address, recipient address, transferred token amount, transaction hash, and block number for each matching event within the queried block range on the specified network.

## Example request

```json
{
 "token": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
 "network": "ethereum",
 "to_block": "latest",
 "from_block": "latest"
}
```

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "token": {
   "type": "string",
   "pattern": "^0x[a-fA-F0-9]{40}$"
  },
  "wallet": {
   "type": "string",
   "pattern": "^0x[a-fA-F0-9]{40}$"
  },
  "network": {
   "enum": [
    "ethereum",
    "sepolia",
    "avax",
    "megaeth",
    "megaeth-testnet",
    "base"
   ],
   "type": "string",
   "default": "ethereum"
  },
  "to_block": {
   "oneOf": [
    {
     "type": "integer",
     "minimum": 0
    },
    {
     "enum": [
      "latest",
      "pending",
      "earliest",
      "safe",
      "finalized"
     ],
     "type": "string"
    },
    {
     "type": "string",
     "pattern": "^0x[a-fA-F0-9]+$"
    }
   ]
  },
  "from_block": {
   "oneOf": [
    {
     "type": "integer",
     "minimum": 0
    },
    {
     "enum": [
      "latest",
      "pending",
      "earliest",
      "safe",
      "finalized"
     ],
     "type": "string"
    },
    {
     "type": "string",
     "pattern": "^0x[a-fA-F0-9]+$"
    }
   ]
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/skills-onesource-io-924686a9/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from skills.onesource.io](https://www.zero.xyz/host/skills.onesource.io/llms.txt)
