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"
}
}