---
title: "Get ACH Transfer"
method: GET
path: "/accounts/{account_id}/achs/{ach_transfer_id}"
tags: ["Transfers"]
---

# Get ACH Transfer

`GET /accounts/{account_id}/achs/{ach_transfer_id}`

## Request

- Base URL: `https://api.meow.com/v1`
- URL: `https://api.meow.com/v1/accounts/{account_id}/achs/{ach_transfer_id}`
- Auth: API key in header `x-api-key`
- TypeScript: <https://skmtc.dev/meow/apis/meow-api/docs/accounts/:account_id/achs/:ach_transfer_id/get.ts> (a function with typed inputs; its response is checked against the schema)

Returns details about an ACH transfer (incoming or outgoing) for the specified account by ACH transfer ID, including the status of an outgoing ACH transfer after it has been initiated.

## Path parameters

- `account_id` string, required: The ID of the account.
- `ach_transfer_id` string, required: The transaction group ID for the ACH transfer (e.g. `withdrawal_ach_...`), or the ACH ID returned when you created the transfer (e.g. `ach_...`).

## Headers

- `x-entity-id` string, uuid

## Response `200`

Successful Response

- AchTransferResponse
  - `amount` string, required: How much moved, in USD.
  - `status` 'pending' | 'pending_approval' | 'canceled' | 'processing' | 'error' | 'sent' | 'returned' | 'void', required
  - `direction` 'inbound' | 'outbound', required
  - `counterparty_id` string, uuid, nullable: The contact you sent to. Null on inbound transfers, which arrive from someone you never configured.
  - `counterparty_name` string, nullable: Who you sent to, or who sent to you on an inbound transfer.
  - `counterparty_account_number` string, nullable: The other side's account number, when the bank reports it. Often absent on inbound transfers.
  - `counterparty_routing_number` string, nullable: The other side's routing number, when the bank reports it. Often absent on inbound transfers.
  - `created_at` string, date-time, required: ISO 8601 date-time in the format `YYYY-MM-DDThh:mm:ss.nnn[Z|[+|-]hh:mm]` (per [IETF RFC 3339](https://xml2rfc.tools.ietf.org/public/rfc/html/rfc3339.html#anchor14)).
  - `updated_at` string, date-time, required: ISO 8601 date-time in the format `YYYY-MM-DDThh:mm:ss.nnn[Z|[+|-]hh:mm]` (per [IETF RFC 3339](https://xml2rfc.tools.ietf.org/public/rfc/html/rfc3339.html#anchor14)).
  - `internal_note` string, nullable: Your private note on this transfer. Never leaves Meow.
  - `metadata` object, nullable: The metadata attached when this object was created, unchanged. `null` when none was attached. Rarely, a `.created` webhook can be published before the create request finishes committing, and that one event reports `null`; every later event and every read of the object carries the metadata.
  - `id` string, required: Pass this back to Get ACH Transfer to check on the transfer.
  - `description` string, nullable: The description carried on the transfer.
  - `additional_details` string, nullable: Extra detail the bank returned about the transfer.
  - `trace_number` string, nullable: The ACH trace number, which the receiving bank uses to look the transfer up.
  - `payment_related_info` string, nullable: The addenda the sender attached, on inbound transfers. Use it to match a payment to an invoice or account on your side.

## Other responses

- `400`: The request could not be processed.
- `401`: Authentication failed.
- `403`: The API key is not authorized for this operation, or the user of a global API key is an admin or controller without approved KYC. The KYC case returns the message `KYC is required for controllers and admins.` until that user completes KYC in the Meow dashboard.
- `429`: Too many requests.

---

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