What happened
A non-custodial payout reached the signing step and the user attempted to approve it, but the signing provider rejected the signature payload before the on-chain broadcast. No funds were moved. The payout is in a terminal failed state withfailureCode: user_signature_rejected_by_provider.
This is distinct from a user-driven decline (USER_SIGNATURE_DECLINED): the user attempted to approve, but the provider’s validation of the signature failed.
Common causes
- Malformed signature — the passkey response from the user’s device was incomplete or could not be parsed
- Policy violation on the provider’s side — the signing request did not match the provider’s registered key policy for this wallet
- Provider connectivity issue — the provider could not validate the signature due to a transient internal error
Recovery
1. Confirm the terminal statePrevention
- Handle
transaction.failedwith this code — branch onfailureCode === 'user_signature_rejected_by_provider'and surface a clear “your signature could not be processed” message with a retry option - Alert on repeated failures — if the same wallet fails more than once with this code, escalate rather than allowing silent retry loops
Related webhooks
Thetransaction.failed event fires when the payout terminates:
Related endpoints
- GET /v2/payouts/:id — read payout state
- POST /v2/payouts — submit a new payout