> ## Documentation Index
> Fetch the complete documentation index at: https://v2.docs.conduit.financial/llms.txt
> Use this file to discover all available pages before exploring further.

# USER_SIGNATURE_REJECTED_BY_PROVIDER error

> A non-custodial payout failed because the custody provider could not accept the user's signature payload

## What happened

A non-custodial payout reached the signing step and the user attempted to approve it, but the custody provider rejected the signature payload before the on-chain broadcast. No funds were moved. The payout is in a terminal failed state with `failureCode: user_signature_rejected_by_provider`.

This is distinct from a user-driven decline ([USER\_SIGNATURE\_DECLINED](/errors/user-signature-declined)): the user attempted to approve, but the provider's validation of the signature failed.

```json theme={null}
{
  "type": "USER_SIGNATURE_REJECTED_BY_PROVIDER",
  "title": "Customer signature could not be accepted",
  "status": 422,
  "detail": "The customer's passkey approval could not be accepted. No funds were moved.",
  "resolution": "Submit a new payout. If the same customer or wallet hits this repeatedly, contact support.",
  "docs": "/errors#user-signature-rejected-by-provider",
  "instance": "/v2/payouts/txn_abc123",
  "correlationId": "corr_xyz789",
  "timestamp": "2026-01-15T09:30:00.000Z"
}
```

## 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

<Warning>
  This is a terminal state for the current payout. A new payout must be
  submitted.
</Warning>

**1. Confirm the terminal state**

```bash theme={null}
curl -X GET https://api.conduit.financial/v2/payouts/txn_abc123 \
  -H "x-api-key: YOUR_API_KEY"
```

**2. Submit a new payout**

A single occurrence is usually a transient provider issue. Submit a new payout with a fresh idempotency key:

```bash theme={null}
curl -X POST https://api.conduit.financial/v2/payouts \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Idempotency-Key: idem_NEW_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "customerId": "cus_abc123",
    "assetAmount": {"code": "USDC", "amount": "50.000000", "chain": "ethereum"},
    "destination": {
      "recipient": {
        "rail": "crypto",
        "chain": "ethereum",
        "address": "0xabc..."
      }
    }
  }'
```

**3. Escalate if it recurs**

If the same customer or wallet consistently hits this error, the wallet's key configuration may need to be investigated. Contact support with the affected wallet ID and the correlation IDs from the failed payouts.

## Prevention

* **Handle `transaction.failed` with this code** -- branch on `failureCode === '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

The `transaction.failed` event fires when the payout terminates:

```json theme={null}
{
  "type": "transaction.failed",
  "data": {
    "transactionId": "txn_abc123",
    "failureCode": "user_signature_rejected_by_provider"
  }
}
```

## Related endpoints

* [GET /v2/payouts/:id](/api-reference/payouts/retrieve-a-payout) -- read payout state
* [POST /v2/payouts](/api-reference/payouts/create-a-payout) -- submit a new payout
