Arc RPC, the USDC transfer feed, and settlement you can prove.

Full JSON-RPC with tracing, one USDC transfer feed across both emitters, and balances that never mix 18 decimals with 6. One API key, production-ready in minutes.

Archive on every plan · Plans from $49/mo · See why the others are wrong →

JSON-RPCtrace + debug + arc_gRPCstreamingWebhooksfinal on commitChain 5042mainnet & testnet
USDC decimals18 / 6native · ERC-20
Base fee floor20 Gweiguarded
FinalityOn commit
Block time0.5schain 5042
The difference

Your USDC balance is off by a trillion

Arc keeps one USDC balance behind two interfaces: 18 decimals natively, 6 on the ERC-20 view. At least one provider's published Arc reference gets that wrong, and every integration that follows it inherits the error.

The same question, two answers0x7c4e...09b1 · block 4,210,887

How much USDC does this account hold? One balance, two interfaces: eth_getBalance returns it at 18 decimals, the ERC-20 view at 6. Format the native number with the ERC-20 decimals and the answer is wrong by construction.

Following the published reference
eth_getBalance(0x7c4e...09b1, 4,210,887) / 10^6 ← 6 decimals, per one Arc reference

20,000,000,000,000,000.00 USDC

Treats native USDC as 6 decimals. The raw balance is right; the scale is not.

ArcRPC
arcrpc_getUsdcBalance(0x7c4e...09b1, 4,210,887) native18 / 10^18 erc20_6 / 10^6

20,000.00 USDC

Both representations returned together, already scaled, with a flag when the ERC-20 view truncates.

Error ×1012Cause native USDC is 18 decimals on Arc mainnet and testnet
How it works

How a USDC transfer gets from Arc to your app.

Our nodes watch Arc, reconcile what it emits into clean structured data, and stream it to your application. This is the journey of one transfer.

One transfer, fully detailed

{  : "4210887:3:0",  "kind": "ERC20_TRANSFER",  "from": "0x7c4e...09b1",  "to": "0x2d91...c3f0",  "amount_native": "1250000000000000000000",  : "1250.000000",  : "INV-2026-0914",  "block_number": 4210887,  : 0}
What you get

Four products. One API key.

Everything authenticates with the same key. Start with one product and add the others whenever you need them.

01

Real-time streams

Every USDC movement on Arc, de-duplicated across both emitters and delivered as the block commits, over gRPC, WebSocket, webhooks or straight into your warehouse.

  • Subscribe to only the addresses you need
  • Every transfer carries both decimal conventions and its Memo
  • Backfill from any block, then tail live on one stream

StreamTransfers · USDC

sample
  • 4,210,8800x5d69...c5ce → 0x8099...66f3ERC-206.68
  • 4,210,8800xba1b...9d01 → 0x907c...6fa2mint685.87
  • 4,210,8800xa573...75a8 → 0x0be8...0f42ERC-201.28
  • 4,210,8810x1107...75b2 → 0x6278...2032ERC-20memo456.96
  • 4,210,8810xff34...4c71 → 0x78a5...6ec9ERC-209.70
  • 4,210,8820x6ae3...51f2 → 0x4c58...707cnative51.11
  • 4,210,8830xa207...e7c0 → 0x8d61...c56eERC-206,603.16
  • 4,210,8840x6c1e...b64d → 0xad6b...99e0ERC-2066.64
filter by addressmemo attachedbackfill into livesigned gap report
02

Arc JSON-RPC

Mainnet 5042 and testnet 5042002 over HTTPS and WebSocket, with the full debug, trace and txpool surface and the arc_ namespace documented down to its error codes.

  • arc_getVersion and arc_getCertificate, documented
  • Sub-floor transactions rejected, not silently dropped at 20 Gwei
  • Works with viem, ethers, web3.py and Foundry unchanged

POSTrpc.arcrpc.com/v1/{API_KEY}

request

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "arc_getCertificate",
  "params": ["latest"]
}

responsefinal on commit

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "height": 21285725,
    "round": 0,
    "block_hash": "0x6414...9a21",
    "signatures": [
      { "address": "0x1e70...e716", "signature": "Xp5u...BA==" },
      { "address": "0x8c2d...41a0", "signature": "q3Lk...wg==" },
      "... 12 in total"
    ]
  }
}
03

Historical & archive

Every block since genesis on both networks, unpruned, queried through the same endpoint and billed at the same rate as the tip. Bulk exports on request.

  • Archive on every plan, never a multiplier
  • Testnet backfills handled across the Zero5 fork
  • Parquet, CSV and JSONL exports of any range

Where “archive” starts, 127 blocks behind the tip

Ethereum 12s blocks~25 min
Arc 0.5s blocks~64 s

On Arc almost every historical read is an archive read. We bill it at the same rate as a call against the tip.

from genesismainnet + testnetParquet exportrequest parity
04

Settlement proofs

Given a transaction hash, the receipt, the BFT commit certificate that finalised its block, and a verifier you can run without trusting us. The artefact an audit team actually needs.

  • Built on arc_getCertificate, cached and indexed by tx hash
  • Offline verification against the validator set
  • Signed exports of every certificate in a range

arcrpc_getSettlementProof

verified offline
transaction
0x9f2c...a41e
block
4,210,887
commit round
0
validator signatures
12
block hash signed
0x3b8e...77d2

The certificate is Arc’s own. Checking it needs the validator set, not trust in us.

The transfer preview shows sample records in the production feed schema. The archive comparison is arithmetic from published block times.

Historical data

Every block since genesis, at the price of the tip.

Unpruned archive on mainnet and testnet, queried through the same endpoint as the tip. At 0.5s blocks, anything older than about a minute is an archive read, so we do not charge a multiplier for it. Bulk exports of any range on request.

Chain 5042 · genesis to tip

What’s in the archive

  • Blocks and commit certificatesfrom genesis

    every block with the certificate that finalised it

  • Transactions and receiptsfrom genesis

    gas cost derived from the receipt, since Arc emits no log for it

  • USDC transfers, reconciledboth emitters

    one record per movement, both decimal conventions

  • Logsunpruned

    every log, orderable by block number and log index

  • Memo, blocklist and CCTPdecoded

    payment references, compliance state and cross-chain legs

  • Testnet before Zero5switched

    NativeCoinTransferred mapped onto EIP-7708 at the fork boundary

Protocol behaviour as documented at docs.arc.io, as of 2026-09-16. Export ranges are confirmed per request.

Getting started

Arc mainnet in three steps.

  1. 1

    Create an API key

    Pick a plan in about two minutes. Pro is $49 a month, and your first payment is half off with ACTIVATE50.

  2. 2

    Change one URL

    Any EVM library works unchanged: viem, ethers, web3.py, Foundry. Coming from another Arc provider, only the endpoint moves.

  3. 3

    Use what only Arc needs

    Read USDC without mixing decimals, stream reconciled transfers, and prove settlement with the commit certificate.

you@desk: ~

$ grpcurl -H 'x-api-key: ...' grpc.arcrpc.com:443 \

arcrpc.v1.Transfers/StreamTransfers

▌streaming

curl https://rpc.arcrpc.com/v1/YOUR_KEY \  -H 'content-type: application/json' \  -d '{"jsonrpc":"2.0","id":1,       "method":"arcrpc_getUsdcBalance",       "params":["0x7c4e...09b1","latest"]}'
Pricing

Two plans. The full platform on both.

Every plan includes full JSON-RPC, the archive and every Arc correctness API on one key. Scale adds gRPC streaming, full backfill and warehouse sinks. Annual billing saves 17%.

ACTIVATE5050% off your first RPC plan payment------Applied automatically at checkout · First payment only · Renewals at the standard price
Most popularPro
$24.50first month

Then $49/month

Production Arc RPC, and every correctness API, for one backend.

  • Complete JSON-RPC: eth, net, web3, txpool, debug, trace, arc
  • Unpruned archive from genesis, billed at request parity
  • Decimal-safe USDC balances and the Settlement Proof API
  • Unified USDC transfer feed · 250 RPS · 400M requests
  • 20 Gwei floor guard · 10 webhooks · 99.9% uptime target
Scale
$99.50first month

Then $199/month

gRPC streaming, full backfill, and every warehouse sink.

  • Everything in Pro
  • gRPC and gRPC-Web streaming, with a signed gap report per range
  • Compliance pre-flight against live blocklist state
  • Full history backfill · 1,500 RPS · 2,000M requests
  • Kafka, Postgres, ClickHouse and S3 sinks · 99.99% uptime target

Every gate (throughput, streaming, sinks, controls, SLA) is spelled out in the full feature matrix. Dedicated nodes and custom terms live on Enterprise.

Start building on Arc today.

One API key gets you JSON-RPC, the USDC transfer feed and settlement proofs on mainnet and testnet. Scale adds gRPC streaming and warehouse sinks.