---
title: batch_not_retryable — Batch has no retryable rows
description: "HTTP 409 batch_not_retryable: Batch is in status status and has no retryable rows."
canonical_url: "https://cascades.crscreditapi.com/docs/api/errors/batch_not_retryable"
doc_version: "1.0.0"
last_updated: "2026-10-09T18:04:24Z"
http_status: 409
source: config/api_error_codes.yml
---

# `batch_not_retryable` — Batch has no retryable rows

**HTTP 409 Conflict**

Message: "Batch is in status <status> and has no retryable rows."

Envelope schema: `ErrorEnvelope` in [openapi.json](https://cascades.crscreditapi.com/openapi.json#/components/schemas/ErrorEnvelope) ([YAML](https://cascades.crscreditapi.com/openapi.yaml)).

## What causes it
- The batch is not `completed` or `interrupted`, or it has no `failed` rows under the retry limit (3 attempts per row) and no `skipped` rows.

## How to fix it
1. Inspect `GET /batches/{id}/executions?filter[status]=failed` — rows that exhausted their retries stay failed and should be resubmitted in a new batch.
2. Wait for a running batch to finish before retrying.

## Operations that return it
- [POST /batches/{id}/retry_failed](/docs/api/batches/retry-failed-batch) — Retry failed and skipped rows

## Example response

```http
HTTP/1.1 409 Conflict
Content-Type: application/json
```

```json
{
  "error": {
    "code": "batch_not_retryable",
    "message": "Batch is in status <status> and has no retryable rows.",
    "details": [],
    "request_id": "6f1c2a3e-8d4b-4c5e-9f0a-1b2c3d4e5f60",
    "doc_url": "https://cascades.crscreditapi.com/docs/api/errors/batch_not_retryable"
  }
}
```

## Related
- [/docs/concepts/batches](/docs/concepts/batches)

[All error codes](https://cascades.crscreditapi.com/docs/api/errors.md)

## Sitemap

See the full [sitemap](https://cascades.crscreditapi.com/sitemap.md) for all pages.
