A REST API for stablecoin payments on Arc. Query payments, poll invoice status, and read on-chain settlement data — backed by live event tracking via Circle's Smart Contract Platform.
The ArcFX API lets you read payment and settlement data from the ArcFX protocol on Arc. All responses are JSON. The API has two surfaces:
/api/v1) — requires an API key. This is the developer surface for building integrations./v1) — no key required. Serves public on-chain protocol data (the same endpoints the ArcFX dashboard uses).1.000000 USDC).ArcFX also speaks x402, the HTTP 402 payment standard. An agent requests an invoice, receives 402 Payment Required with the payment requirements, signs a gasless EIP-3009 authorization, and repeats the request with a PAYMENT-SIGNATURE header. No API key is involved — the signature is the authorization.
GET /v1/x402/discovery — scheme, network, asset and the EIP-712 domain to sign againstGET /v1/x402/invoice/:number — returns 402 unpaid; returns the receipt once paidPOST /v1/x402/verify and POST /v1/x402/settle — facilitator-shaped endpointsAuthenticated endpoints require an API key, sent as a Bearer token in the Authorization header:
Authorization: Bearer arcfx_sk_test_...
Keep your key secret — treat it like a password, and never embed it in client-side code you ship to users.
Generate a testnet key instantly. Enter your email (so we can reach you about your integration), and we'll issue a key. It's shown once — copy it immediately.
| Parameter | Type | Description |
|---|---|---|
| payer | string | Optional. Filter to payments from a specific wallet address (0x…). |
| limit | integer | Optional. Max results, 1–100. Default 20. |
{
"count": 1,
"payments": [
{
"txHash": "0x4ec3…d6bb",
"payer": "0x63c3…c897",
"recipient": "0x50E6…9c4F",
"token": "USDC",
"gross": "1.000000",
"fee": "0.001500",
"net": "0.998500",
"blockNumber": 45944963,
"blockTime": "2026-06-07T09:15:19.000Z",
"explorer": "https://testnet.arcscan.app/tx/0x4ec3…"
}
]
}
| Parameter | Type | Description |
|---|---|---|
| number | string | Required. The invoice number you generated (e.g. INV-001). |
| recipient | string | Required. The recipient wallet address (0x…). |
{
"paid": true,
"invoiceNumber": "INV-001",
"recipient": "0x50E6…9c4F",
"payment": {
"txHash": "0x4ec3…d6bb",
"token": "USDC",
"gross": "1.000000",
"blockTime": "2026-06-07T09:15:19.000Z"
}
}
{
"settlements": 8,
"volume": "10.00",
"fees": "0.01",
"uniquePayers": 2
}
| Parameter | Type | Description |
|---|---|---|
| payer | string | Required. Wallet address to break down (0x…). |
| limit | integer | Optional. Max recipients returned. |
| Parameter | Type | Description |
|---|---|---|
| limit | integer | Optional. Max results. Default 20. |
Authenticated endpoints return 401 when the key is missing, malformed, or invalid:
{
"error": "missing_api_key",
"message": "Provide your key as:Authorization: Bearer <key>"
}
Other error codes: invalid_api_key (bad or revoked key), 400 for missing required parameters.