Skip to main content

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.
{
  "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

This is a terminal state. No on-chain transfer occurred. The reserved balance has been released; you may submit a new payout.
1. Confirm the terminal state
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:
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
The transaction.failed event fires when the provider rejects the broadcast:
{
  "type": "transaction.failed",
  "data": {
    "transactionId": "txn_abc123",
    "failureCode": "PROVIDER_REJECTED"
  }
}