Reference

Settle a payment

Submits the payer's EIP-3009 authorization on Arc. USDC moves directly from payer to payTo; the Arcus relayer only pays gas.

POST/settle

Request

Same body as /verify: x402Version, paymentPayload and paymentRequirements. Call it after your handler has produced its response.

Settlement lifecycle

  1. Arcus re-runs every verify check.
  2. It simulates transferWithAuthorization. A drained payer or a spent nonce fails here, without burning gas.
  3. The relayer broadcasts the transaction on Arc.
  4. Arcus waits up to 60 seconds for the receipt and returns the hash.
Nonces are single use
Each authorization carries a random nonce that the USDC contract records on-chain. Settling the same payload twice fails in simulation with a nonce error, so a retry after a successful settle is safe and never double-charges.

Response

200 OK
json
{
  "success": true,
  "payer": "0xPayer",
  "transaction": "0x5b1c…e9a2",
  "network": "eip155:5042"
}
200 OK (settlement failed)
json
{
  "success": false,
  "errorReason": "invalid_exact_evm_payload_authorization_valid_before",
  "errorMessage": "authorization has expired",
  "transaction": "",
  "network": "eip155:5042"
}
FieldMeaning
successtrue once the transaction is mined.
transactionTransaction hash on Arc. Empty when nothing was broadcast.
networkCAIP-2 identifier of the network settled on.
payerAddress recovered from the signature.
errorReasonPresent on failure. See Errors and limits.

If the receipt does not arrive inside the timeout, the SDK reports the settlement as pending with the broadcast hash. Check the hash on the explorer before retrying; a mined transaction cannot be settled again.