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
/settleRequest
Same body as /verify: x402Version, paymentPayload and paymentRequirements. Call it after your handler has produced its response.
Settlement lifecycle
- Arcus re-runs every verify check.
- It simulates
transferWithAuthorization. A drained payer or a spent nonce fails here, without burning gas. - The relayer broadcasts the transaction on Arc.
- 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"
}| Field | Meaning |
|---|---|
| success | true once the transaction is mined. |
| transaction | Transaction hash on Arc. Empty when nothing was broadcast. |
| network | CAIP-2 identifier of the network settled on. |
| payer | Address recovered from the signature. |
| errorReason | Present 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.