---
title: "Retrieve a batch"
method: GET
path: "/v2/users/{userId}/orchestration-addresses/{orchestrationAddressId}/batches/{batchId}"
tags: ["Orchestration Address"]
---

# Retrieve a batch

`GET /v2/users/{userId}/orchestration-addresses/{orchestrationAddressId}/batches/{batchId}`

## Request

- Base URL: `https://production.hifibridge.com`
- URL: `https://production.hifibridge.com/v2/users/{userId}/orchestration-addresses/{orchestrationAddressId}/batches/{batchId}`
- Auth: HTTP bearer

Fetch a single batch by ID. Returns `404 RESOURCE_NOT_FOUND` if the batch
doesn't exist, doesn't belong to the named orchestration address, or the
orchestration address doesn't belong to the named user.

## Path parameters

- `userId` string, required
- `orchestrationAddressId` string, uuid, required
- `batchId` string, uuid, required

## Response `200`

A single batch record (with its included deposit IDs and the linked offramp).

- OrchestrationBatchObject: A batch of one or more deposits rolled up into a single offramp transaction.
  - `id` string, uuid
  - `orchestrationAddressId` string, uuid
  - `totalAmount` string: Sum of the included deposits' amounts, in the source `currency`.
  - `currency` 'usdc' | 'usdt'
  - `status` 'PENDING' | 'PROCESSING' | 'COMPLETED' | 'FAILED': Batch lifecycle. * `PENDING` — created; the worker has not yet picked it up. * `PROCESSING` — the linked offramp has been created and is in flight. * `COMPLETED` — the linked offramp reached `COMPLETED`. * `FAILED` — terminal failure. See `failureReason`.
  - `failureReason` 'ADDRESS_NOT_ACTIVE' | 'NOT_INITIATED' | 'QUOTE_FAILED' | 'CRYPTO_FAILED' | 'FIAT_FAILED' | 'EXPIRED' | 'REJECTED' | 'CANCELLED': Populated when `status=FAILED`. * `ADDRESS_NOT_ACTIVE` — the address was deactivated before the worker created the offramp. The only input condition that terminally fails a batch. * All other values are terminal statuses surfaced from the linked offramp transaction (e.g. lost product access → `NOT_INITIATED`, a rejected AML review → a terminal status). Internal inconsistencies (missing address, payout account lost its rail, a processor-validation bug) do **not** appear here — the worker pauses the batch (leaves it `PENDING`) and alerts ops instead of marking it `FAILED`.
  - `createdAt` string, date-time
  - `updatedAt` string, date-time
  - `depositIds` string[]: IDs of all deposits included in this batch.
  - `offrampTransactionId` string, uuid, nullable: ID of the offramp transaction produced from this batch. `null` while `status=PENDING` (the worker has not yet created the offramp). Call `GET /v2/offramps/{transferId}` for full offramp details.

## Other responses

- `401`: Unauthorized
- `404`: Resource not found
- `500`: Internal Server Error

---

[API](https://skmtc.dev/hifi/apis/hifi-api.md) - [All operations](https://skmtc.dev/hifi/apis/hifi-api/llms.txt) - [OpenAPI document](https://skmtc.dev/hifi/apis/hifi-api/revisions/319fa6bd5bc6?raw)
