Skip to main content

Prerequisites

1. Install Dependencies

npm install @x402r/helpers

2. Configure forwardToArbiter()

Add the forwardToArbiter() hook to your x402 resource server. After every payment settlement, it POSTs the HTTP response body to your arbiter service:
import { forwardToArbiter } from '@x402r/helpers'

const resourceServer = new x402ResourceServer(facilitatorConfig)
registerCommerceEvmScheme(resourceServer)

resourceServer.onAfterSettle(
  forwardToArbiter('http://your-arbiter:3001', {
    onError: (err) => console.error('Arbiter unreachable:', err),
  })
)
The hook POSTs to {arbiterUrl}/verify with:
{
  "responseBody": "the HTTP response body as a string",
  "transaction": "0xsettlement_tx_hash",
  "paymentPayload": {
    "x402Version": 1,
    "scheme": "commerce",
    "accepted": { "network": "eip155:84532", ... },
    "payload": { "paymentInfo": { ... }, ... }
  }
}
The arbiter uses parseForwardedPayload() from @x402r/helpers to extract paymentInfo and network from the nested structure.
forwardToArbiter() is fire-and-forget. If the arbiter service is unreachable, funds stay in escrow until timeout. Add monitoring for arbiter availability.

3. Share Addresses with the Arbiter

The arbiter service needs operatorAddress and escrowPeriodAddress from your deployment to create its SDK client. Share these via config, environment variables, or a shared registry.

Next Steps

Arbiter Setup

Build the service that evaluates responses and releases funds.

Deploy Operator

Full deployment config and condition slot details.