Developers

Build on ArcFX

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.

API Reference
Full endpoint docs — authentication, request/response schemas, rate limits, and error codes.
View docs →

Introduction

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:

  • Authenticated API (/api/v1) — requires an API key. This is the developer surface for building integrations.
  • Public API (/v1) — no key required. Serves public on-chain protocol data (the same endpoints the ArcFX dashboard uses).

Base URL

https://arcfx-backend-production.up.railway.app
Core API status. ArcFX payment observation and receivables operate on Arc Mainnet (chain 5042). Amounts are returned as human-readable USDC values where documented.

Agent Evidence

Testnet-only / unavailable on Mainnet. Agent Evidence is not enabled for the current Arc Mainnet workspace. Its separate mandate and sealed-bundle flow remains available only on deliberate Testnet surfaces.

Agent payments (x402)

Testnet-only / unavailable on Mainnet. x402 is deliberately disabled under the active Arc Mainnet profile. Do not use these endpoints for a Mainnet integration.

  • GET /v1/x402/discovery — scheme, network, asset and the EIP-712 domain to sign against
  • GET /v1/x402/invoice/:number — returns 402 unpaid; returns the receipt once paid
  • POST /v1/x402/verify and POST /v1/x402/settle — facilitator-shaped endpoints
Development reference. The legacy agent payments page is a deliberate Testnet-only surface, not a Mainnet payment path.

Authentication

Authenticated endpoints require an API key, sent as a Bearer token in the Authorization header:

Authorization: Bearer arcfx_sk_...

Keep your key secret — treat it like a password, and never embed it in client-side code you ship to users.

Get an API key

Generate an integration key with your email (so we can reach you about your integration). It is shown once — copy it immediately. The historical test segment in a key format does not select the active network.


            
Tip. You can try the public endpoints below right now with no key. For the authenticated endpoints, paste your key into the "Try it" box and it'll be used only for that request (held in your browser, never sent anywhere except the API).

List payments

GET /api/v1/payments API key
Returns payments processed through ArcFX, newest first (full history).
ParameterTypeDescription
payerstringOptional. Filter to payments from a specific wallet address (0x…).
limitintegerOptional. Max results, 1–100. Default 20.

Example response

{
  "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://explorer.arc.io/tx/0x4ec3…"
    }
  ]
}
Try it

                

Invoice status

GET /api/v1/invoices/status API key
Check whether an invoice has been paid. Poll this to detect settlement.
ParameterTypeDescription
numberstringRequired. The invoice number you generated (e.g. INV-001).
recipientstringRequired. The recipient wallet address (0x…).

Example response (paid)

{
  "paid": true,
  "invoiceNumber": "INV-001",
  "recipient": "0x50E6…9c4F",
  "payment": {
    "txHash": "0x4ec3…d6bb",
    "token": "USDC",
    "gross": "1.000000",
    "blockTime": "2026-06-07T09:15:19.000Z"
  }
}
Try it

                

Protocol stats

GET /v1/stats Public
Aggregate protocol totals: settlements, volume, fees, and unique payers.

Example response

{
  "settlements": 8,
  "volume": "10.00",
  "fees": "0.01",
  "uniquePayers": 2
}
Try it — no key needed

                

Recipient breakdown

GET /v1/breakdown Public
For a given payer, totals grouped by recipient (who they've paid, and how much).
ParameterTypeDescription
payerstringRequired. Wallet address to break down (0x…).
limitintegerOptional. Max recipients returned.
Try it — no key needed

                

Public payments feed

GET /v1/payments Public
Recent payments across the protocol, newest first. Same shape as the authenticated endpoint.
ParameterTypeDescription
limitintegerOptional. Max results. Default 20.
Try it — no key needed

                

Errors

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.