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

# PROVIDER_REJECTED error

> The crypto outbound provider declined the broadcast request before the transaction was submitted to the chain

## What happened

The crypto outbound provider declined the broadcast request before the transaction was submitted to the chain. The transaction is in a terminal failed state with `failureCode: provider_rejected`. No on-chain transfer occurred; the reserved balance has been released back to the customer's available balance.

```json theme={null}
{
  "type": "PROVIDER_REJECTED",
  "title": "Crypto provider rejected the broadcast",
  "status": 422,
  "detail": "The outbound provider declined to broadcast the transaction.",
  "resolution": "Retry the payout. If the issue persists, contact support with the transaction ID.",
  "docs": "/errors#provider-rejected",
  "instance": "/v2/transactions/txn_abc123",
  "correlationId": "corr_xyz789",
  "timestamp": "2026-01-15T09:30:00.000Z"
}
```

## Common causes

* **Provider-side validation failure** -- the broadcast request failed the outbound provider's pre-submission checks (for example, invalid gas parameters, nonce conflict, or payload format error)
* **Transient provider error** -- the provider's infrastructure returned an error that prevented the broadcast from being accepted

## Recovery

<Warning>
  This is a terminal state. No on-chain transfer occurred. The reserved balance
  has been released; you may submit a new payout.
</Warning>

**1. Confirm the terminal state**

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

The response will show `status: "failed"` and `failureCode: "provider_rejected"`. Confirm that no `txHash` is present -- a missing `txHash` confirms no on-chain transfer occurred.

**2. Retry the payout**

The reserved balance has been released. You may submit a new payout immediately:

```bash theme={null}
curl -X POST https://api.conduit.financial/v2/payouts \
  -H "x-api-key: YOUR_API_KEY" \
  -H "idempotency-key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "customerId": "cus_abc123",
    "assetAmount": {"code": "USDC", "amount": "100.000000", "chain": "ethereum"},
    "destination": {
      "recipient": {
        "rail": "crypto",
        "chain": "ethereum",
        "address": "0xaa11aa11aa11aa11aa11aa11aa11aa11a55ee99c"
      }
    }
  }'
```

**3. Contact support if the issue persists**

If retries consistently fail with `PROVIDER_REJECTED`, contact support with the transaction IDs and the destination address. There may be a provider-level configuration issue affecting the corridor.

## Sandbox simulation

Use the `CHAIN_BROADCAST_FAIL` scenario suffix (`BAD8CA57`) to force this failure in sandbox. Append it to the last 8 characters of the destination address.

## Prevention

* **Handle `transaction.failed` with this code** -- branch on `failureCode === 'provider_rejected'` to surface a "transfer could not be sent; your balance has been restored" message with a retry option
* **Use idempotency keys** -- ensure each retry uses a fresh idempotency key so retries are not deduplicated against the failed attempt

## Related webhooks

The `transaction.failed` event fires when the provider rejects the broadcast:

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

## Related endpoints

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